如果我只有 DB_LINK,USERNAME和主机,如何ping数据库链接?任何帮助都感激不尽。提前致谢
答案 0 :(得分:1)
您可以通过在其中发出查询来查看链接是否有效且可用;我通常使用一个简单的:
select * from dual@db_link
因为远程dual
表应始终对所有用户可见。如果返回一排,那么一切都很顺利。否则,您将收到可以调查的错误。
由于您引用了all_db_links
视图中的列,因此您可以对列出的所有链接进行简单测试,例如:
set serveroutput on
-- or equivalent for your client
declare
l_dummy dual.dummy%type;
begin
for r in (select db_link from all_db_links) loop
begin
execute immediate 'select dummy from dual@' || r.db_link into l_dummy;
dbms_output.put_line('Link ' || r.db_link || ' is OK.');
-- release undo locks and link
rollback work;
execute immediate 'alter session close database link ' || r.db_link;
exception
when others then
dbms_output.put_line('Link ' || r.db_link || ' is not OK: ' || sqlerrm);
end;
end loop;
end;
/
我通常不会主张诱捕when others
,但在这种情况下它很有用。从那里你可能会看到输出:
Link MY_LINK_1 is not OK: ORA-12170: TNS:Connect timeout occurred
Link MY_LINK_2 is OK.
Link MY_LINK_3 is not OK: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Link MY_LINK_4 is OK.
等