在连接错误的情况下,有没有办法在Oracle中重试INSERT over DB链接?

时间:2018-06-07 03:41:16

标签: oracle oracle11g dblink

尝试使用DB链接插入另一个Oracle数据库的DB过程由于连接错误而无法执行活动。有没有办法重试(比如重试3次)INSERT over Oracle中的DB链接?

错误文字:

Error in INSERT in ITEM table....
ORA-03113: end-of-file on communication channel 
ORA-02063: preceding line from HRDBLINK

1 个答案:

答案 0 :(得分:1)

  

有没有办法重试(比如重试3次)INSERT

这可能是一种方式。在循环中运行INSERT并在插入至少一行时跳过循环,否则重试3次。但要记住的一件事是,如果没有插入行,这将插入3次。如果是这种情况,您可以在运行插入之前通过检查来缓解它。

SET SERVEROUTPUT ON;
DECLARE
dblink_err EXCEPTION;
PRAGMA EXCEPTION_INIT(dblink_err, -3113);

BEGIN
    FOR i IN 1..3 LOOP
        BEGIN
            INSERT INTO tst@urdblink ( id ) VALUES ( 3 );
            EXIT WHEN SQL%rowcount > 0;
        EXCEPTION
            WHEN dblink_err THEN
                dbms_output.put_line(sqlcode || ' ERROR occured: Retrying');
        END;
    END LOOP;
END;
/