Goldengate没有例外处理机制,如果复制进程出错,就会Abend,并Rollbak事务到上一个Checkpoint.这在生产环境中是不理想的做法.
HANDLECOLLISIONS 和 NOHANDLECOLLISIONS 这两个参数用来控制复制进程是否尝试解决重复记录和丢失记录的错误.但是,这类错误仅仅是忽略是不行的.
需要有一个记录,记下有错误发生,哪个复制进程出错,是由什么数据引起的,这可以通过创建例外句柄来记录下这些信息,但不影响复制进程继续进行.
步骤
1.创建例外表:
create table ggs_admin.exceptions
( rep_name varchar2(8)
, table_name varchar2(61)
, errno number
, dberrmsg varchar2(4000)
, optype varchar2(20)
, errtype varchar2(20)
, logrba number
, logposition number
, committimestamp timestamp
);

ALTER TABLE ggs_admin.exceptions ADD ( 
  CONSTRAINT PK_CTS 
 PRIMARY KEY 
 (logrba, logposition, committimestamp) USING INDEX PCTFREE 0 TABLESPACE MY_INDEXES);

表要创建在Goldengate的管理用户下,并且能记下所有复制进程的例外数据.

2.编写复制进程的采纳书文件,增加例外处理的宏代码
[oracle@linuxserver1 ggs]$ ggsci

GGSCI (linuxserver1) 1> edit params RTARGET1

-- This starts the macro
MACRO #exception_handler
BEGIN
, TARGET ggs_admin.exceptions
, COLMAP ( rep_name = "RTARGET1"
, 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"))
, INSERTALLRECORDS
, EXCEPTIONSONLY;
END;
-- This ends the macro
3.在复制进程的参数文件中增家MAP部分,对于每个表增加#exception_handler(),用REPERROR (-1, EXCEPTION)参数说明需要记录Oracle Error.

REPERROR (DEFAULT, EXCEPTION)
REPERROR (DEFAULT2, ABEND)
REPERROR (-1, EXCEPTION)
MAP SRC.ORDERS, TARGET TGT.ORDERS;
MAP SRC.ORDERS #exception_handler()
MAP SRC.ORDER_ITEMS, TARGET TGT.ORDER_ITEMS;
MAP SRC.ORDER_ITEMS #exception_handler()
MAP SRC.PRODUCTS, TARGET TGT.PRODUCTS;
MAP SRC.PRODUCTS #exception_handler()
REPERROR:控制复制进程在执行MAP语句时如何处理错误
DEFAULT:参数设置处理指定的错误以外,对错误的全局响应
Default2:参数指定要捕获可能会发生的所有的未想到的Error,并使进程Abend

4.停止并重启复制进程
GGSCI (linuxserver1) 3> stop REPLICAT RTARGET1
GGSCI (linuxserver1) 4> start replicat RTARGET1

info all

创建Goldengate例外句丙记录跟踪Oracle错误相关推荐

  1. new失败跟踪函数_WinDbg预览时间线:调试器中的时间线可以允许用户记录跟踪

    时间旅行调试(TTD)允许用户记录跟踪,这些跟踪是对程序执行的记录.时间线是执行过程中发生的事件的直观表示,这些事件可以是包括断点,内存读/写,函数调用和返回以及异常. 使用时间线窗口可以快速查看重要 ...

  2. 2021实施工程师面试记录(一) oracle,tomcat,Linux

    实施工程师面试记录(一) oracle,tomcat,Linux oracle 1.叙述一下oracle数据库的安装流程 windows: 下载后解压运行可执行文件,创建和配置数据库 系统类 选择桌面 ...

  3. oracle数据库日志记录内容,oracle日志记录方式

    oracle日志记录模式 oracle 日志记录模式(LOGGING.FORCE LOGGING.NOLOGGING) 1.LOGGING(默认):当创建一个数据库对象时将记录日志信息到联机重做日志文 ...

  4. 【大数据实时数据同步】超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(中)

    系列文章目录 [大数据实时数据同步]超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(上) [大数据实时数据同步]超级详细的生产环境OGG(GoldenGa ...

  5. 记录安装oracle的那些事(二)之双系统安装

    今天电脑恢复了前几天的模样,依旧是仅有的win7,胆颤心惊的依然决定用easybcd装. 首先,资源的需要: 1 两个centos的镜像.bin-dvd的,这个是全的,不用在线下载了. 2 easyB ...

  6. strace分析mysql_使用Strace跟踪oracle读取数据块

    使用Strace跟踪oracle读取数据块 oracle是一个C语言程序,通过调用系统的io函数来实现io的过程,在linux下可以通过strace工具来 很方便查看进程对io函数的调用过程. 测试场 ...

  7. 【SQL练习】创建表格,并添加记录

    1.创建表格结构  2.添加记录  代码: 1.创建表格: drop table work; drop table employee; drop table department;create tab ...

  8. iCloud之创建一个数据库通过保存记录

    Creating a Database Schema by Saving Records 通过保存记录创建一个数据库模式 在开发过程中,可以很容易地创建一个使用CloudKit API的模式.当您保存 ...

  9. ORACLE错误一览表(转)

    ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最 ...

最新文章

  1. python iter 迭代函数 简介
  2. B+树索引和哈希索引的区别——我在想全文搜索引擎为啥不用hash索引而非得使用B+呢?...
  3. 在创业公司,不懂运维的程序员如何兼顾公司的运维工作
  4. 样式图片_中式门窗花格图片大全样式全面选择多
  5. Aligning Plots in a Column作图列对齐
  6. 机器学习SVD【二】
  7. C++ 通讯录管理系统实验报告
  8. MobileNet论文笔记
  9. weka分类器怎么设置样本类别_NeurIPS 2019 少样本学习研究亮点全解析
  10. ehd边缘直方图描述子 matlab,一种新的图像空间特征提取方法
  11. linux shutdown 命令
  12. MVVM 实战之计算器
  13. 总结 | 四篇图网络综述文章提出的Future Directions
  14. JVM上篇:内存与垃圾回收
  15. mysql数据库分页查询,limit语句用法
  16. linux运行魔力宝贝,魔力宝贝私服架设详细简易教程
  17. java 本地连接状态_本地连接受限制
  18. 有的放矢-电气工程师的工作重心
  19. hexo部署到云服务器
  20. 算法之排序算法(冒泡法和选择法)

热门文章

  1. leetcode-237-删除链表中的节点
  2. 性能测试入门(二)转:JMeter基础之一 一个简单的性能测试
  3. 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
  4. Laravel-Action 对代码的改造
  5. 普通图片在字模软件中的提取方法
  6. HDU 4121 Xiangqi (算是模拟吧)
  7. Android编译笔记之五
  8. 03 | SRE切入点:选择SLI,设定SLO
  9. 第七章 DevOps工具链
  10. scala list 接受java string_「软帝学院」Java零基础学习详解