【原创】利用AUTOMATIC_ERROR存储…

本文介绍了一种通过存储过程自动处理数据库流复制错误的方法。该方法可通过调用manual_error存储过程来自动处理所有错误,无需单独处理每个事务的错误。支持输出SQL语句、执行错误修复及删除错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在博客中http://blog.sina.com.cn/s/blog_62defbef0101o7uy.html,讲述了如何利用存储过程解决流复制的错误。以下为升级版,通过调用manual_error可以自动处理所有错误,而非单个local_transaction的错误。

版本  v1.3

(MXDB版)

CREATE OR REPLACE PROCEDURE AUTOMATIC_ERROR(p_output_sql  in varchar2, --是否输出检查和改错SQL语句
                                            p_deal_error      in varchar2, --是否执行改错
                                            p_delete_errormsg in varchar2) --是否删除错误信息
 is
  --edit by leiyao   v1.3   2013-12-5
  --***************说明**************************
  --1.p_output_sql=1,则输出不同步记录的检查和改错SQL语句。
  --2.p_deal_error=1,则执行改错SQL语句。
  --3.p_delete_errormsg=1,则删除dba_apply_error里的错误信息。
  --*********************************************
  v_local_transaction_id varchar2(40);
  v_content              varchar2(100);
  --建立游标取local_transaction_id
  cursor c_transaction_id is
    select distinct local_transaction_id from dba_apply_error;
BEGIN
  DBMS_OUTPUT.ENABLE(400000);
  OPEN c_transaction_id;
  LOOP
    FETCH c_transaction_id
      INTO v_local_transaction_id;
    EXIT WHEN c_transaction_id%NOTFOUND;
    v_content := '当前处理TRANSACTION_ID为:' || v_local_transaction_id;
    DBMS_OUTPUT.PUT_LINE(v_content);
    --调用manual_error存储过程
    manual_error(v_local_transaction_id,
                 p_output_sql,
                 p_deal_error,
                 p_delete_errormsg);
  END LOOP;
  CLOSE c_transaction_id;
END AUTOMATIC_ERROR;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值