Проверка db links

В цикле проверяем ссылки подключений с удаленными базами данных.

--PL/SQL Developer Test script 3.0
declare
sTEMP varchar2(1000);
begin
for cur in(select t.db_link from dba_db_links t) loop
begin
execute immediate 'select ''ok'' from v$version@'||cur.db_link||' where rownum=1' INTO sTEMP;
exception when others then
sTEMP:=SQLERRM;
end;
rollback;
dbms_output.put_line(cur.db_link||': '||sTEMP);
if sTEMP='ok' then
DBMS_SESSION.CLOSE_DATABASE_LINK(cur.db_link);
end if;
end loop;
end;

Результат будет примерно таким:

LINK_1: ok
LINK_2: ORA-12547: TNS:контакт потерян
LINK_3: ok
LINK_4: ok
LINK_5: ok
LINK_6: ok
LINK_7: ok
LINK_8: ok
LINK_9: ORA-12541: TNS:нет прослушивателя
LINK_10: ok
LINK_11: ok
LINK_12: ok
LINK_13: ok
LINK_14: ORA-12170: TNS:истекло время ожидания соединения
LINK_15: ORA-12170: TNS:истекло время ожидания соединения
LINK_17: ORA-12547: TNS:контакт потерян
LINK_18: ok