真实环境的OracleGoldenGate配置参数详解

来源:互联网 发布:淘宝特步 编辑:程序博客网 时间:2024/06/06 18:08

-- 生产端 

原文地址:真实环境的OracleGoldenGate配置参数详解 -- 生产端 作者:snowdba

很多刚开始学习OGG的同学在学会基本配置后,想要进一步提高的阶段必不可少的要跟各种配置参数打交道。比如管理进程的参数、抽取进程的参数、投递进程的参数和复制进程的参数。这些参数文件中样式繁多的参数都是什么作用,怎样使用,真正的企业应用会怎样配置一定是初学者渴望了解的。

本文分为两篇,第一篇介绍生产端的管理进程配置参数、抽取进程配置参数、投递进程配置参数;第二篇介绍灾备端管理进程配置参数和复制进程配置参数。

本文来自一个真实的企业应用,生产端和灾备端位于不同的城市。让我们走出实验室看看真实的生产环境的OGG配置吧。


OGG的版本为:11.2.1.0.4

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.4 14636914 OGGCORE_11.2.1.0.4_PLATFORMS_121007.2020
HP/UX, IA64, 64bit (optimized), Oracle 10g on Oct  8 2012 02:26:37

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.


启动的进程
GGSCI> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     DPEYA       00:00:00      00:00:02
EXTRACT     RUNNING     EXTYA       00:00:02      00:00:05
EXTYA为抽取进程,DPEYA为投递进程


管理进程配置
GGSCI> view params mgr

PORT 7839
DYNAMICPORTLIST  7840-7914
--AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 7
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45PORT 7839
通信端口7839。 生产端和灾备端需要保持一致。

DYNAMICPORTLIST  7840-7914
动态端口列表的范围从7840到7914。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。

--AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 7
当提取进程中断后尝试自动重启,每隔7分钟尝试启动一次,尝试5次。OGG运维人员通常会注释掉这条配置,更喜欢用手工重启的方式来控制。

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10
定期清理dirdat路径下的本地队列(local trail)。保留期限10天,过期后自动删除。从而控制队列文件的目录不会增长过大。

LAGREPORTHOURS 1
每隔一小时检查一次传输延迟情况

LAGINFOMINUTES 30
传输延时超过30分钟将写入错误日志

LAGCRITICALMINUTES 45
传输延时超过45分钟将写入警告日志

通常在一些海量数据的分区表中容易出现传输延时的现象。建议在灾备端启动多个复制进程(replicat),为这些大表单独的开启专用通道。


抽取进程配置
GGSCI 3> view params extya

EXTRACT extya
SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")
USERID goldengate, PASSWORD AACAAAAAAAAAAAJAPJYATHVIMGMAOFHIUCUEPFYGGJBFJGIH, ENCRYPTKEY default
REPORTCOUNT EVERY 30 MINUTES, RATE
DISCARDFILE ./dirrpt/extya.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 3:00
WARNLONGTRANS 2h, CHECKINTERVAL 3m
EXTTRAIL ./dirdat/ya
DYNAMICRESOLUTION
DBOPTIONS  ALLOWUNUSEDCOLUMN
FETCHOPTIONS NOUSESNAPSHOT
FETCHOPTIONS FETCHPKUPDATECOLS
--CACHEMGR CACHESIZE 8000MB, CACHEDIRECTORY  /goldengate/temp, CACHEDIRECTORY /goldengate/temp2
TRANLOGOPTIONS  CONVERTUCS2CLOBS
--tranlogoptions asmuser sys@asm, asmpassword  AACAAAAAAAAAAGAIF, ENCRYPTKEY default
TRANLOGOPTIONS altarchivelogdest primary instance sgpmdb1 /sgpmdb/arch altarchivelogdest  instance  sgpmdb2 /sgpmdb/arch
THREADOPTIONS   MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000

—Schema名称涉及敏感字符,在此统一使用Schema来代替
—table名称涉及敏感字符,在此统一使用table来代替
mapexclude Schema1.table1;
mapexclude Schema1.table2;
mapexclude Schema2.table1;
mapexclude Schema2.table1;

TABLE Schema1.*;
TABLE Schema2.*;
TABLE Schema3.*;
TABLE Schema4.*;
TABLE Schema5.*;

sequence Schema1.*;
sequence Schema2.*;
sequence Schema3.*;
sequence Schema4.*;
sequence Schema5.*;

SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")
设置字符集环境变量为UTF8
如果系统中存在多个数据库有时候会用参数SETENV设置ORACLE_HOME、ORACLE_SID等,例如:
SETENV (ORACLE_HOME = “/home/oracle/product/10.2.0/db)
SETENV (ORACLE_SID = “PROD”)

REPORTCOUNT EVERY 30 MINUTES, RATE
每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息

DISCARDFILE ./dirrpt/extya.dsc, APPEND, MEGABYTES 1024
将执行失败的记录保存在discard file中,该文件位于./dirrpt/extya.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。 

DISCARDROLLOVER AT 3:00
为了防止discard file被写满,每天3:00做一次文件过期设定

WARNLONGTRANS 2h, CHECKINTERVAL 3m
每隔3分钟检查一下大事务,超过2小时还没结束的进行报告

EXTTRAIL ./dirdat/ya
队列文件路径

DYNAMICRESOLUTION
有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。

DBOPTIONS  ALLOWUNUSEDCOLUMN
当抽取进程遇到一个没有使用的字段时只生成一个警告,进程会继续执行而不会被异常终止(abend)

FETCHOPTIONS NOUSESNAPSHOT
不会从闪回日志中获取数据

FETCHOPTIONS FETCHPKUPDATECOLS
当使用了HANDLECOLLISIONS时,请使用该参数。
复制进程出现丢失update记录(missing update)并且更新的是主键,update将转换成insert。由于插入的记录可能不是完整的行,若要保证完整需要加入此参数

--CACHEMGR CACHESIZE 8000MB, CACHEDIRECTORY  /goldengate/temp, CACHEDIRECTORY /goldengate/temp2
在/goldengate/temp,/goldengate/temp2 目录设置虚拟内存

TRANLOGOPTIONS  CONVERTUCS2CLOBS
指定在解析数据库日志时所需要的特殊参数
本参数只用在extract端 UTF字符类型,并且11.1.1前处理CLOB才需要。

TRANLOGOPTIONS altarchivelogdest primary instance rac1 /arch altarchivelogdest  instance  rac2 /arch
指定RAC环境下每个节点的归档日志地址

THREADOPTIONS   MAXCOMMITPROPAGATIONDELAY 60000 IOLATENCY 60000
RAC集群中的所有节点必须同步系统时钟。GoldenGate通过比较本地系统的时间和事务提交的时间点来做出关键决策。可以通过NTP来不同系统时间。所有节点上的COMPATIBLE参数设置也必须相同。
这个参数在Oracle11.2版本后就不在使用了。


投递进程配置
GGSCI 6> view params dpeya

EXTRACT dpeya
RMTHOST 10.10.10.1, MGRPORT 7839, COMPRESS
PASSTHRU
NUMFILES 5000
RMTTRAIL ./dirdat/yb
DYNAMICRESOLUTION

—要复制的表清单
TABLE Schema1.*;
TABLE Schema2.*;
TABLE Schema3.*;
TABLE Schema4.*;
TABLE Schema5.*;
RMTHOST 10.10.10.1, MGRPORT 7839, COMPRESS
灾备端主机IP,管理进程端口号,投递前压缩队列文件

NUMFILES 5000
最多处理5000张表

RMTTRAIL ./dirdat/yb
灾备端保存队列文件的目录

PASSTHRU
采用pass-through模式处理表

DYNAMICRESOLUTION
动态解析表名


关于参数的定义我们可以查阅OGG的官方文档《Oracle GoldenGate Windows and UNIX Reference Guide》,该文档详尽的描述了各个参数的概念和用法。

灾备端 

原文地址:真实环境的OracleGoldenGate配置参数详解 -- 灾备端 作者:snowdba

本文分为两篇,第一篇介绍生产端的管理进程配置参数、抽取进程配置参数、投递进程配置参数;
http://blog.itpub.net/29047826/viewspace-1271830/

本篇为第二篇,介绍灾备端管理进程配置参数和复制进程配置参数。以下列出的所有配置文件都属于灾备端,


启动的进程
GGSCI 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     REPSA       00:00:00      00:00:09
REPLICAT    RUNNING     REPSB       00:00:00      00:00:08
REPLICAT    RUNNING     REPSC       00:00:00      00:00:08
REPLICAT    RUNNING     REPSD       00:00:00      00:00:09
REPLICAT    RUNNING     REPSE       00:00:00      00:00:08
REPLICAT    RUNNING     REPSF       00:00:00      00:00:08
REPLICAT    RUNNING     REPSG       00:00:00      00:00:08
REPLICAT    RUNNING     REPSH       00:00:00      00:00:08
REPLICAT    RUNNING     REPSI       00:00:00      00:00:09
REPLICAT    RUNNING     REPSJ       00:00:00      00:00:09
REPLICAT    RUNNING     REPSK       00:00:00      00:00:08
REPLICAT    RUNNING     REPSL       00:00:00      00:00:09
REPLICAT    RUNNING     REPSM       00:00:00      00:00:09
REPLICAT    RUNNING     REPSN       00:00:00      00:00:08
REPLICAT    RUNNING     REPSO       00:01:24      00:00:01
REPLICAT    RUNNING     REPSP       00:00:00      00:00:08
REPLICAT    RUNNING     REPSQ       00:00:00      00:00:09
REPLICAT    RUNNING     REPSR       00:00:00      00:00:09REPSA-R一共18个进程都是灾备端复制进程。开启多个复制进程可以缓解生产端表过多所带来的压力。

管理进程
GGSCI 4> view params mgr

PORT 7839

USERID goldengate, PASSWORD AACAAAAAAAAAAAJAPJYATHVIMGMAOFHIUCUEPFYGGJBFJGIH, ENCRYPTKEY default
DYNAMICPORTLIST 7840-7914
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 5

--PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
--PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45PORT 7839
通信端口7839。 生产端和灾备端需要保持一致。

DYNAMICPORTLIST  7840-7914
动态端口列表的范围从7840到7914。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
当提取进程中断后尝试自动重启,每隔7分钟尝试启动一次,尝试5次。OGG运维人员通常会注释掉这条配置,更喜欢用手工重启的方式来控制。

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5
定期清理dirdat路径下的远程队列(remote trail)。保留期限5天,过期后自动删除。从而控制队列文件的目录不会增长过大。

--PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
删除DDL历史表,最小保存7天,最大保存10天。由于此项目没有开启DDL,所以该参数被注释。

--PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10
删除MARKER历史表,最小保存7天,最大保存10天。此项目没有使用该参数,所以该参数被注释。

LAGREPORTHOURS 1
每隔一小时检查一次传输延迟情况

LAGINFOMINUTES 30
传输延时超过30分钟将写入错误日志

LAGCRITICALMINUTES 45
传输延时超过45分钟将写入警告日志

复制进程
GGSCI 6> view params repsa

REPLICAT repsa
SETENV (NLS_LANG = "American_America.UTF8")
SETENV (ORACLE_SID = "xxxx" )
USERID goldengate, PASSWORD AACAAAAAAAAAAAJAPJYATHVIMGMAOFHIUCUEPFYGGJBFJGIH, ENCRYPTKEY default
--SQLEXEC "ALTER SESSION SET CONSTRAINTS=DEFERRED"
DBOPTIONS DEFERREFCONST6>
GETTRUNCATES
REPORT AT 06:00
REPORTCOUNT EVERY 30 MINUTES, RATE
REPORTROLLOVER AT 02:00
REPERROR DEFAULT, ABEND
--HANDLECOLLISIONS
ALLOWNOOPUPDATES
assumetargetdefs
DISCARDFILE ./dirrpt/repsa.dsc, APPEND, MEGABYTES 1024M
DISCARDROLLOVER AT 02:00
—Schema名称涉及敏感字符,在此统一使用Schema来代替
—table名称涉及敏感字符,在此统一使用table来代替
map Schema1.table1, target Schema1.table1;
map Schema1.table2, target Schema1.table2;
map Schema2.table1, target Schema2.table1;
map Schema2.table2, target Schema2.table2;
SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")
设置字符集环境变量为UTF8
如果系统中存在多个数据库有时候会用参数SETENV设置ORACLE_HOME、ORACLE_SID等,例如:
SETENV (ORACLE_HOME = “/home/oracle/product/10.2.0/db)
SETENV (ORACLE_SID = “PROD”)

DBOPTIONS DEFERREFCONST
约束延迟设置。在复制进程的事物被提交之前,延迟级联删除、级联更新时的校验和实施。

GETTRUNCATES
不捕获生产端truncate table的操作。

REPORT AT 06:00
每天早上6点报告

REPORTCOUNT EVERY 30 MINUTES, RATE
每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息

REPORTROLLOVER AT 02:00
为了防止report file被写满,每天2:00做一次文件过期设定

REPERROR DEFAULT, ABEND
除了特殊指定的REPERROR语句,报告所有复制期间出现的错误,回滚非正常中断的事物和进程。

—HANDLECOLLISIONS
当灾备端已经存在数据的情况下,解决复制过程中出现的冲突。如果要重新做初始化,可以删除drop灾备端数据库后再rman恢复,这样做的话就不需要该参数了。

ALLOWNOOPUPDATES
当生产端有某些列但是目标表却没有,或者复制进程中配置了COLSEXCEPT 参数 在这些情况下,当生产端对那些列进行更新,目标表将不发生任何变化

assumetargetdefs
使用ASSUMETARGETDEFS参数时,用MAP语句中指定的生产库源表和灾备端目标表具有相同的列结构。它指示的Oracle GoldenGate不在生产端查找源表的结构定义。

DISCARDFILE ./dirrpt/repsa.dsc, APPEND, MEGABYTES 1024M
将执行失败的记录保存在discard file中,该文件位于./dirrpt/extya.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。

DISCARDROLLOVER AT 02:00
为了防止discard file被写满,每天2:00做一次文件过期设定

全文完