GoldenGate中如何使用reperror进行错误处理 - 面向对象网,数据库,oracle,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > 数据库 > ORACLE > 正文

GoldenGate中如何使用reperror进行错误处理

来源: www.bianceng.cn 阅读:

对于Replicat进程处理DML操作过程中报错时,GoldenGate提供了一个参数用来控制如何处理Replicat进程的报错。这就是本节内容要介绍的reperror参数。这个参数能控制大部分的GoldenGate错误处理的手段。

如某案例的Replicat进程参数如图1所示。

\

图1

1、reperror处理类型与含义

Reperror在GoldenGate11版本中共提供了7类处理错误方式,分别如下。

(1)abend:Replicat遇到不能处理的记录时,回滚事务,然后停止处理,Replicat进程状态转为abend。

(2)discard:将不能处理记录的错误信息放到discard文件而Replicat进程继续处理下面的记录。

(3)exception:将错误按照预先定义好的方式处理。

(4)ignore:将不能处理的记录忽略掉,然后继续处理下面的记录。

(5)retryop [maxretries <n>]:遇到不能处理的记录时,重试n次。

(6)transabort [,maxretries <n>][, delay[c]sesc<n>];终止事务处理,将rba号指到该事务的开头,也可以指定重试几次。

(7)reset:清除掉所有的reperror规则,然后将reperror的规则默认为abend。

在Replicat进程的参数中,可以将任意一个处理类型设置为默认,如reperror、default、abend。

通常,为了保证数据的一致性,都将reperror的默认规则设置为abend。

2、复制进程常见数据库错误类型与处理方法

在实际的GoldenGate系统中,很大一部分Replicat错误信息都类似于ORA开头的数据库错误(这里以Oracle数据库为例)。虽然,通常对于ORA错误,需要手动查找数据库的原因,但可以用reperror处理一些预知的错误类型,然后再在数据库层面找到错误的原因,手动排除,而不至于导致该进程处理其他正常的表而abend掉。

例如:可以忽略掉重复数据的插入而其他类型的报错则abend。

示例11:

Reperror (default, abend)

Reperror (-1, ignore)

当然,也可以只针对某张表的忽略掉重复数据的插入而abend掉其他类型的报错。

示例12:

REPERROR (-1, IGNORE)

MAP sales.product, TARGET sales.product;

REPERROR RESET

MAP sales.account, TARGET sales.account;

查看本栏目更多精彩内容:http://www.bianceng.cn/database/Oracle/

Tags:
相关文章列表: