create or replace procedure test
as
  v varchar2(20);
begin
  select user into v from dual@omf1;  ///omf1 是 db link
exception
   when others then
   dbms_output.put_line('db link error');
end;
/

解决方案 »

  1.   

    begin
       sqlcmd.....
     exception
       when others then
         RAISE_APPLICATION_ERROR( -20100,'连接错误'||SQLERRM);
     end ;
      

  2.   

    回复一下楼上,
    我在exception前面就一条插入语句,用到db link,也用了和你一样的exception语句来处理错误,结果呢,我故意将远程服务器网线断开,结果我怎么插入都不行,死等,一直不会报错,你说是怎么回事?
      

  3.   

    程序中作不可以
    在oracle\ora92\network\sqlnet.ora
       文件中改 SQLNET.EXPIRE_TIME = 10   连接10分钟没有操作自动断开
    或者给用户建 profile 中有类似的限制选项
      

  4.   

    啊,问题是,我的sqlnet.ora中没有这个参数,我查了范例,说默认就是0分钟,那就奇怪了,难道这个db link作远程登陆和一个用户登陆会话有区别?oracle不是用这个来限制db link的连接?
      

  5.   

    上面各位大哥的方法都不行,有没有好的解决办法啊?
    重新提一下我的目的:就是为了及时的发现db link不通,使得触发器不要进行远程操作.
    就这样!大家还有办法么?
      

  6.   

    通常: Oracle 断开后,程序还会等连 30 秒;直接连接的话,默认值是 10 秒.其实可以在程序上在对oracle 操作时,试着重新连接.