goldengate OGG参数规范
如果goldengate安装在unix或者linux操作系统下,则建议以oracle系统用户进行安装。如果使用其他用户进行安装,则需要确保该用户在dba组中,以确保该用户具备读取redo和归档日志的系统权限;
注:
1) Goldengate软件建议安装在服务器Server的/goldengate路径下,该目录的属主为oracle:dba,权限为775;
2)/goldengate目录一般是建立在共享存储上,这样实际上goldengate的软件和相应的文件如参数文件,队列文件等都是在共享存储上的。这样做的好处是,例如在RAC环境下,如果一台服务区宕机,则可以将/goldengate mount到另外一个正常的rac节点上,启动goldengate各个进程就可以了,不需要做任何其他的动作。
3. 附录2—开启DDL复制(在实施DML复制之后)
如果系统当前已经完成了Goldengate的DML复制实施(请确保DML实施遵循了本实施规范,打开的是数据库一级的PK,UI,FK,而不是在表一级实行add trandata的操作),并且正在运行,想在此基础上打开DDL复制,则需要按照本节介绍的步骤进行相应的操作。
3.1. 准备工作
1) 明确在配置DML时所创建的golengate的用户名,密码,表空间以及权限等信息;参考本文档的2.3.4小节部分内容。 2) 在配置DDL时,停止目前正在运行的goldengate所有进程,如mgr,extract,datapump,以及目标端的replicat进程 3) 在配置DDL时,生产端的数据库所有的session连接都应该退出(强烈建议);
3.2. 卸载DDL配置(可选)
如果之前曾经安装过ddl,需要重新进行安装,则需要先将ddl的一些组件卸载掉,然后再重新安装:
依次在OGG的根目录执行
1) 切换到Goldengate安装目录下,并且按照顺序以SYS用户依次执行以下脚本: 2) SQLPLUS SYS/ORACLE@ORCL @./ddl_disable.sql 3) SQL>/goldengate/ddl_remove.sql 4) SQL>/goldengate/marker_remove.sql 注:在执行上述脚本的时候,会提示输入安装时所指定的schema名称。
3.3. 配置数据库级别的附加日志
以下脚本用以查询和开启数据库级别的附加日志信息,
conn /as sysdba
SQL>Select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FKfrom v$database;
SQL>alterdatabase add supplemental log data;
SQL>alterdatabase add supplemental log data (PRIMARY KEY,FOREIGN KEY,UNIQUE) columns;
--附加日志打开以后,正常需要执行一次归档操作,以使附加日志即时生效:
SQL>ALTERSYSTEM ARCHIVE LOG CURRENT;
--ALL COLUMNS的附加日志不建议开启:
SQL>alter database add supplemental log data (ALL) columns;
--以下为取消数据库级别附加日志的方法:
SQL>alter database drop supplemental log data;
SQL>alter database drop supplemental log data(PRIMARY KEY,FOREIGN KEY,UNIQUE) columns;
SQL>alter database drop supplemental log data(ALL) columns;
注:正常需要切换一次redo,以确保附加日志即时生效
3.4. 删除表级别的附加日志
如果在实施DML操作时,曾经添加过表级别的附加日志信息,如:
--在ggsci的界面中运行:
Ggsci>addtrandata scott.table1;
--或者在sql界面中执行以下sql语句:
SQL>alter tablescott.t1 add supplemental log data (primary key, unique, foreign key) columns;
都是在表一级打开的附加日志信息。
因为已经开启了数据库级别的附加日志信息,所以对表级别的附加日志配置进行清除,使用以下脚本可以生成批量可执行的sql语句:
Conn / as sysdba
Sql>set line200
Sql>set headoff
Sql>Spooldroptrandata.sql
Sql>select'alter table '||owner|| '.' ||table_name|| ' drop supplemental log group '||log_group_name||';' from dba_log_groups where dba_log_groups.owner in (’SAPSR3’,’xxx’);
Sql>spool off
--确认脚本保存路径,如/home/oracle
--在sys用户下运行droptrandata.sql脚本,清除表级别的附加日志信息:
Sql>@/home/oracle/droptrandata.sql
3.5. 编辑GLOBALS参数文件
这里直接建立在goldengate用户下:
Ggsci>EDITPARAMS ./GLOBALS
GGSCHEMAgoldengate
3.6. 关闭数据库的recyclebin
SQL> showparameter recyclebin
NAME TYPE VALUE
----------------------------------------------- ------------------------------
recyclebin string OFF
--如不是off,需要关闭recyclebin:
SQL>altersystem set recyclebin=off scope=both;
3.7. 停止数据库的所有Session
OGG的DDL对象安装时不能有运行的sessoin存在,请DBA执行停机清理或者杀死所有数据库中的Session。
建议有条件先执行停止业务,并关闭Oracle的Listener。
3.8. 建立OGG的DDL对象
sqlplus "/ assysdba"
SQL>@marker_setup.sql
Enter GoldenGateschema name:goldengate
SQL>@ddl_setup.sql
Enter GoldenGateschema name:goldengate
SQL>@role_setup.sql
Grant this role toeach user assigned to the Extract, Replicat, GGSCI, and Manager processes, byusing the following SQL command:
GRANTGGS_GGSUSER_ROLE TO <loggedUser>
where<loggedUser> is the user assigned to the GoldenGate processes.
注意这里的提示:它需要你手工将这个GGS_GGSUSER_ROLE指定给你的extract所使用的数据库用户(即参数文件里面通过userid指定的用户),可以到sqlplus下执行类似的sql:
GRANT GGS_GGSUSER_ROLETO goldengate;
这里的goldengate是extract使用的用户。如果你有多个extract,使用不同的数据库用户,则需要重述以上过程全部赋予GGS_GGSUSER_ROLE权限。
3.9. 安装提升性能工具
本步骤为可选步骤。
为了提供OGG的DDL复制的性能,可以将ddl_pin脚本加入到数据库启动的脚本后面,该脚本需要带一个OGG的DDL用户(即安装DDL对象的用户,本例中是goldengate)的参数:
SQL> @ddl_pin<DDL_user>
3.10. 配置OGG进程中DDL参数
GoldenGate的data pump进程和replicat的ddl开关默认是打开的,只有主extract是默认关闭的,所以DDL的配置要在extract进程中配置;同时因为replicat进程默认是所有DDL都复制,如果有多个replicat进程,如果在参数中不进行复制范围限制,必然引起DDL的重复复制,所以在replicat进程中也需要进行配置。
Extract中需要添加的配置参数:
DDL &
INCLUDE MAPPEDOBJTYPE 'table' &
INCLUDE MAPPED OBJTYPE'index' &
EXCLUDE OPTYPECOMMENT
DDLOPTIONS NOCROSSRENAME REPORT
Replicat中需要添加的配置参数:
DDL include mapped
DDLOPTIONS report
3.11. MGR的配置(只需配置源端)
另外,在mgr里面加入自动purge ddl中间表的参数:
PURGEDDLHISTORYMINKEEPDAYS 3, MAXKEEPDAYS 7
PURGEMARKERHISTORYMINKEEPDAYS 3, MAXKEEPDAYS 7
3.12. 删除系统已有的OGG进程和队列,重新添加
GGSCI>delete er*
进入dirdat目录,删除里面的所有队列文件,进入dirrpt目录,删除里面的所有日志文件
GGSCI>add extextea,tranlog ,begin now
GGSCI>addexttrail ./dirdat/ea,ext extea,megabytes 200
GGSCI>add extdpeea,exttrailsource ./dirdat/ea
GGSCI>add rmttrail./dirdat/ea,ext dpeea,megabytes 200
GGSCI>alterrepea,extseqno 0,extrba 0
GGSCI>alterrepeb,extseqno 0,extrba 0
GGSCI>alterrepec,extseqno 0,extrba 0
3.13. 启动OGG DDL捕捉的trigger
在sqlplus里面执行ddl_enable.sql脚本启用ddl捕捉的trigger。
说明:ddl捕捉的trigger与OGG的extract进程是相互独立的,它并不依赖于extract进程存在。即使OGG的extract进程不存在或者没有启动,但是trigger已经启用了,那么捕捉ddl的动作就一直延续下去。如想彻底停止捕捉DDL捕捉,需要禁用ddl的trigger,此时需要执行ddl_disable.sql
1) 启动OGG的ext数据抽取进程,等抽取进程开始工作后,进行系统数据库热备份,具体方法参考数据库热备方案。 2) 在容灾中心的数据库上禁用外键、触发器、级联删除、带有dml操作的JOB,参考本文档的2.5.4部分。 3) 启动OGG所有进程 注意:启动容灾中心的REP进程的时候,使用如下的启动命令
GGSCI>startrepea,aftercsn <recover时候指定的SCN>
GGSCI>startrepeB,aftercsn <recover时候指定的SCN>
GGSCI>startrepeC,aftercsn <recover时候指定的SCN>
GGSCI>startrepeD,aftercsn <recover时候指定的SCN>
|