Kha*_*led 5 architecture oracle dblink
我有一个主数据库,总部只有设置数据,不同分支有几个数据库.我为每个分支服务器创建了一个数据库链接.
在某些情况下,我想查询所有有效的链接(因为一些链接可能由于连接问题或其他任何原因无效),所以我的问题是如何检查数据库链接是否有效而不会出现连接超时问题.是否有一个SQL语句让oracle主服务器执行检查并仅返回有效的数据库链接?
小智 7
您可以通过执行以下命令验证db链接
select * from dual@my_db_link;
Run Code Online (Sandbox Code Playgroud)
要创建验证db链接的函数,请执行以下操作:
function is_link_active(
p_link_name varchar2
) return number is
v_query_link varchar2(100) := 'select count(*) alive from dual@'||p_link_name;
type db_link_cur is REF CURSOR;
cur db_link_cur;
v_status number;
begin
open cur FOR v_query_link;
loop
fetch cur INTO v_status;
exit when cur%notfound;
dbms_output.put_line('v_status='||v_status);
return v_status;
end loop;
close cur;
exception when others then
close cur;
return 0;
end is_link_active;
Run Code Online (Sandbox Code Playgroud)
最后,您可以创建表my_db_links(id,name,status(0,1))并更新它:
update
my_db_links mdl
set
mdl.status = is_link_active(mdl.name);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
71599 次 |
最近记录: |