Oracle的goldengate异常处理

异常处理一(异常表通用型)

新建异常处理表

create table ogg.exception_log

( replicat_name varchar2(10),

table_name varchar2(100),

errno number,

dberrmsg varchar2(4000),

optype varchar2(20),

errtype varchar2(20),

logrba number,

logposition number,

committimestamp timestamp,

primary key(logrba,logposition,committimestamp)

);

REPLICAT添加异常处理

REPERROR (DEFAULT, EXCEPTION)

REPERROR (DEFAULT2,discard)---abend根据需求

map chf.a_t_1, target chf.a_t_1;

map chf.a_t_1, target ogg.exception_log,

EXCEPTIONSONLY,

INSERTALLRECORDS,

COLMAP (   replicat_name = "repl"

, table_name = @GETENV ("GGHEADER", "TABLENAME")

, errno = @GETENV ("LASTERR", "DBERRNUM")

, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")

, optype = @GETENV ("LASTERR", "OPTYPE")

, errtype = @GETENV ("LASTERR", "ERRTYPE")

, logrba = @GETENV ("GGHEADER", "LOGRBA")

, logposition = @GETENV ("GGHEADER", "LOGPOSITION")

, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"));

--实例中只处理chf.a_t_1表

异常处理二(异常表需要定制)

新建表(正常表和异常表)

--正常表

create table fei_1_1(id number , name varchar2(1000));

--异常表

create table ogg.exception_fei_1

( id number,

name varchar2(1000),

table_name varchar2(100),

errno number,

dberrmsg varchar2(4000),

optype varchar2(20),

errtype varchar2(20),

logrba number,

logposition number,

committimestamp timestamp,

primary key(logrba,logposition,committimestamp)

);

异常处理程序

map chf.fei_1, target chf.fei_1_1;

map chf.fei_1, target ogg.exception_fei_1,

EXCEPTIONSONLY,

INSERTALLRECORDS,

COLMAP ( USEDEFAULTS

, table_name = @GETENV ("GGHEADER", "TABLENAME")

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

, errno = @GETENV ("LASTERR", "DBERRNUM")

, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")

, optype = @GETENV ("LASTERR", "OPTYPE")

, errtype = @GETENV ("LASTERR", "ERRTYPE")

, logrba = @GETENV ("GGHEADER", "LOGRBA")

, logposition = @GETENV ("GGHEADER", "LOGPOSITION")

, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"));

异常处理三(通配符MAPEXCEPTION)

新建异常表

create table ogg.exception_fei_all

( replicat_name varchar2(10),

table_name varchar2(100),

errno number,

dberrmsg varchar2(4000),

optype varchar2(20),

errtype varchar2(20),

logrba number,

logposition number,

committimestamp timestamp,

primary key(logrba,logposition,committimestamp)

);

异常处理程序

MAP chf.fei_*, TARGET chf.*,

MAPEXCEPTION (TARGET ogg.exception_fei_all,

COLMAP (   replicat_name = "repl"

, table_name = @GETENV ("GGHEADER", "TABLENAME")

, errno = @GETENV ("LASTERR", "DBERRNUM")

, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")

, optype = @GETENV ("LASTERR", "OPTYPE")

, errtype = @GETENV ("LASTERR", "ERRTYPE")

, logrba = @GETENV ("GGHEADER", "LOGRBA")

, logposition = @GETENV ("GGHEADER", "LOGPOSITION")

, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP")));

处理说明:

REPERROR参数用以控制Replicat进程如何响应映射过程中发生的错误

DEFAULT参数代表一种全局错误类型,即除去所有已明确指定的错误外的一切错误

DEFAULT2参数代表当DEFAULT错误以Exception方式响应时,所有MAP映射中未定义Exception部分出现的所有错误

EXCEPTIONSONLY只能用于确定表的异常处理

MAPEXCEPTION可以用于通配符的表异常处理

作者:51cto Oracle小混子

时间: 2024-10-02 21:14:34

Oracle的goldengate异常处理的相关文章

C#.Net开发基于Oracle数据库系统常见异常处理

oracle|数据|数据库|异常处理 注意:先用单步调试,找出出错程序语句<1>未注册XXX动态链接库 (未注册动态链接库文件或者该方法所在的类库不存在) <2>未将对象设置引用到对象实例  (没有给对象正确赋值,可检查参数值,引用了未初始化的变量) <3> "myDelegate"是不明确的引用  (同等级别的名字空间节点上出现同名委托) <4>不支持并行的事务 (新事务未提交或者事务执行不完整,注意,如果提交事务之前存在return语

全面解析Oracle developer的异常处理机制

Oracle developer以其快速的数据处理开发而闻名,其异常处理机制也是比较完善,不可小觑. 1. 异常的优点 如果没有异常,在程序中,应当检查每个命令的成功还是失败,如 BEGIN SELECT ... -- check for 'no data found' error SELECT ... -- check for 'no data found' error SELECT ... -- check for 'no data found' error 这种实现的方法缺点在于错误处理没

Oracle 12c undo异常处理—root pdb undo异常解决办法

在12c pdb环境中如果root pdb的undo文件异常,数据库该如何恢复呢?这篇文章模拟undo丢失的情况下进行恢复 模拟环境 三个会话,其中第一个会话对pdb1中的表进行操作,并且有事务未提交,第二个会话对pdb2进行操作,也未提交事务:第三个会话直接abort库,模拟突然库异常,然后删除root pdb下面的undo文件 --会话1 [oracle@ora1221 oradata]$ sqlplus  / as sysdba   SQL*Plus: Release 12.2.0.0.3

Creating a GoldenGate Exception Handler to Trap and Log Oracle Errors

Creating a GoldenGate Exception Handler to Trap and Log Oracle Errors   GoldenGate does not provide a standard exceptions handler. By default, a Replicat process will abend should any operational failure occur, and will rollback the transaction to th

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

集群概念介绍 集群术语须知 服务硬件:指提供计算服务的硬件,比如 PC 机.PC 服务器. 服务实体:服务实体通常指服务软体和服务硬体. 节点(node):运行 Heartbeat 进程的一个独立主机称为节点,节点是 HA 的核心组成部分,每个节点上运行着操作系统和Heartbeat 软件服务. 资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管.如: 磁盘分区.文件系统.IP 地址.应用程序服务.共享存储 事件(event):事件也就是集群中可

[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆)       继上三篇:ORACLE PL/SQL编程之八:把触发器说透               ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)               [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)  得到了大家的强力支持与建议,万分感谢.

oracle-Oracle PL/SQL 外键关联的异常处理

问题描述 Oracle PL/SQL 外键关联的异常处理 删除父表记录后, 若不写异常处理器,则会报错,并自动回滚所有被删除的数据. 若写了异常处理器,则在异常处理中回滚,只能恢复父表记录, 而子表中对应的记录被删除仍无法恢复. 预期结果应该是在回滚之后被删除的所有记录都恢复. 解决方案 外键关联肯定不能直接删除父表啊 可以这么做, 方法一:先删除外键关联,再去删除父表 方法二:先删除子表,再去删除父表 解决方案二: Oracle:pl/sql 异常处理 解决方案三: 同意1楼说的,删子,再删父

[20140114]从禁用触发器看goldengate.txt

  昨天看了两篇blog http://www.pythian.com/blog/disabling-triggers-in-oracle-11-2-0-4/ http://www.pythian.com/blog/disabling-triggers-per-session/ 我现在的测试环境是11.2.0.3,无法测试第1篇帖子的内容,不过第2篇的内容倒是可以测试. 重复blog的测试看看: 1.建立测试环境: SCOTT@test> @ver BANNER ----------------

oracle同步软件技术实现对比

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术.Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和一款叫做GoldenGate的数据同步软件.第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync.下面对这些技术逐一进行介绍. 一.DataGuard数据同步技术 DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文