如果DB_LINK,USERNAME和HOST可用,则Ping DBLink

时间:2018-06-19 10:03:33

标签: oracle oracle-sqldeveloper sqlplus

如果我只有 DB_LINK,USERNAME和主机,如何ping数据库链接?任何帮助都感激不尽。提前致谢

1 个答案:

答案 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.

相关问题