Вы можете проверить ссылку на БД, выполнив:
select * from dual@my_db_link;
To может создать функцию, которая проверяет связь БД:
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;
Наконец, вы можете создать таблицу my_db_links (id, name, status (0,1)) и обновить ее:
update
my_db_links mdl
set
mdl.status = is_link_active(mdl.name);