
配置步骤
此方案为某客户的配置方案,具体参数可以不考虑,请根据自己的实际情况修改。
GoldenGate部署方案
为GoldenGate阵列上为GoldenGate划分27G存储空间,目录为”/export/home/oracle/ggs”以保存7-10天GoldenGate队列文件,保留目标数据库初始化期间的增量数据,在目标数据库初始化完成后,追加增量数据,使主备端数据库数据同步。
1GoldenGate软件安装配置步骤
1.1实施前准备
a.阵列上为GoldenGate软件划分100G左右的存储空间,并创建文件系统。
也可在现有文件系统中建立一个目录,GoldenGate对于安装目录没有任
何。
b.源数据库应当处于归档模式,并且建议保留3天以上的归档日志;
c.源数据库是RAC环境,GoldenGate可以只运行于单个节点,需要将其
它节点归档日志目录通过NFS共享出来,并装载到GoldenGate运行节
d.GoldenGate要求RAC各节点之间配置时钟同步,必须为各个节点配置
时钟同步服务(如NTP服务)。
e.关于C++编辑器xlc runtime 9.0 version.和Oracle用户的环境变量设置.
setenv PATH ◆Sun Solaris LD_LIBRARY_PATH Example LD_LIBRARY_PATH=/lib路径/;export LD_LIBRARY_PATH f.由双方工程师共同确定所需要复制的表以及划分复制通道。 1.2源端数据库及系统配置 a.在源端,创建GoldenGate系统用户,设置该用户环境变量,也可以采用 oracle用户运行GoldenGate。建议采用oracle用户运行GoldenGate,无 需建立新用户。 b.创建GoldenGate数据库用户goldengate CREATE USER goldengate IDENTIFIED BY goldengate; GRANT dba TO goldengate; c.检查源端数据库是否为归档模式,若为非归档模式,将其改为归档模式 SQL>archive log list; d.检查源端数据库附加日志是否打开 SQL>select supplemental_log_data_min from v$database; 将数据库附加日志打开 SQL>alter database add supplemental log data; 切换日志以使附加日志生效: SQL〉ALTER SYSTEM ARCHIVE LOG CURRENT; 1.3 源端GoldenGate软件配置 a.在指定位置建立GoldenGate安装目录,并确认该目录属于oracle用户(或 新建的GoldenGate运行用户)。 b.通过ftp上传GoldenGate软件包道安装目录,并解压缩 gzip –d *.gz tar xvf *.tar c.通过ftp上传GoldenGate许可文件pw d.在安装目录下执行./ggsci命令进入命令行界面,如能顺利进入,则证明 许可可用; e.在ggsci环境下创建GoldenGate子目录 GGSCI>create subdirs f.Mgr进程配置 编辑mgr进程参数 GGSCI>edit param mgr port 7809 启动Mgr进程 GGSCI>start mgr Mgr is running! g.在GGSCI命令行中登陆数据库,为需要复制的数据表添加trandata 1〉生成所有要复制表的增加附加日志的脚本 Sqlplus …/ as sysdba‟ spool trandata.txt set head off set linesize 1000 set pagesize 1000 select 'add trandata '|| owner || '.' || table_name from dba_tables where owner='EOMS' spool off 2〉执行trandata.txt脚本,为要复制的表增加附加日志 Ggsci>dblogin userid goldengate,password goldengate Ggsci> obey ./dirsql/addtran.txt 执行完毕通过下列sql检查,发现尚有部分表遗漏: select table_name from all_tables where owner=' ' and table_name not in (select distinct table_name from dba_log_group_columns where owner='EOMS');通过以下sql生成对这些遗漏表的添加附加日志语句: set head off set linesize 1000 set pagesize 1000 select 'add trandata '|| owner || '.' || table_name from all_tables where owner=' ' and table_name not in (select distinct table_name from dba_log_group_columns where owner=' EOMS '); 将结果重新在ggsci中执行,再次通过前面语句查询,确认除去部分大表(超过32列并无主键)外已经全部添加成功。 3〉.对特殊的大于32列的无主键表进行二次处理 对于列长超过32列,无法直接添加trandata的数据表,根据脚本‟大于32列表生成添加附加日志脚本_getAddTrandataImp.txt‟中的提示执行1-4步,以获取添加trandata的sql。然后通过手工排除其中不复制的表(包括tmp_和bak_开头以及物化试图日志)。 通过sqlplus “/ as sysdba”登陆到oracle,执行获得的sql语句。 4〉检查db_log_groups,看是否还有没有加上的附加日志 select table_name from all_tables where owner='' and t table_name not in (select distinct table_name from dba_log_group_columns where owner=' EOMS '); 确认所有需复制表添加附加日志完毕。 h.抓取进程配置 添加extbj进程,从数据库日志中抓取有效数据 GGSCI>add ext extbj, tranlog, begin now 添加本地队列b j、extbj进程捕捉到的有效数据将写入本地队列GGSCI>add exttrail /export/home/oracle/ggs/dirdat/bj, ext extbj, megabytes 200 为extbj进程配置参数 GGSCI>edit param extbj extract extbj userid goldengate, password ********tranlogoptions altarchivelogdest instance ctais1 /oralog1 exttrail /export/home/oracle/ggs/dirdat/bj dynamicresolution table EOMS.*; i.启动extbj抽取进程,抽取有效数据,写入本地队列,保存数据 GGSCI>start ext* j.配置dpebj进程 添加dpebj进程,将本地队列的数据抽取出来 GGSCI>add ext dpebj, exttrailsource /export/home/oracle/ggs/dirdat/bj 添加远端队列,将dpebj进程捕捉到的数据将写入该队列 GGSCI>add rmttrail /export/home/oracle/ggs/dirdat/bj, ext dpebj, megabytes 200 为dpebj进程配置参数 GGSCI>edit param dpebj extract dpebj passthru REPORT AT 01:59 reportrollover at 02:00 rmthost 10.224.144.8,mgrport 7809, compress rmttrail /export/home/oracle/ggs/dirdat/bj dynamicresolution table EOMS.*; k.确认网络连通和目标mgr已经启动后启动dpesz/dpekj进程开始数据传输GGSCI>start dpe* 1.4 目标端数据库初始化 本次目标端数据库初始化由oracle的工程师完成。 在oracle工程师执行冷备份的同时,GoldenGate工程师清除抽取进程并重新执行配置,删除所有试运行期间的队列: GGSCI>delete ext * GGSCI>add ext extbj, tranlog, begin now GGSCI>add exttrail /export/home/oracle/ggs/dirdat/bj, ext extbj, megabytes 200 Ggsci>quit Cd dirdat Rm –rf * 待备份执行完毕,数据库重新打开后立即执行如下命令启动抽取,进入正常复制: GGSCI>alter extbj, begin now GGSCI>start ext* Ggsci>info all 确认抽取进程运行正常。 1.5目标端系统及数据库配置 a.目标端系统在/下建立goldengate目录。 b.目标端系统使用oracle用户作为运行GoldenGate用户,未再建立新用户。 c.创建GoldenGate数据库用户goldengate 由于一重集团使用冷备份初始化目标端,因此使用与源端相同的用户即可。 d.目标端禁止外键和触发器: 对一些cascade delete和trigger 操作进行关闭处理,上传执行操作的sql 脚本到/oradata/goldengate/dirsql目录下,在当前目录sysdba用户登录。 禁止外键: cd /oradata/goldengate/dirsql sqlplus sql> spool disableFKOut.sql sql> @disableFK.sql sql> spool off sql> exit vi disableFKOut.sql 去掉spool off等无关语句,只留下alter 语句 sqlplus sql>spool disableFK.out sql>@disableFKOut.sql sql>spool off vi disableFK.out 验证各操作成功。 禁止trigger操作 cd /oradata/goldengate/dirsql sqlplus sql> spool disableTrOut.sql sql> @disableTriggers.sql sql> spool off sql> exit vi disableTrOut.sql 去掉spool off等无关语句,只留下alter trigger disable。 sqlplus sql>spool disableTr.out sql>@disableTrOut.sql sql>spool off vi disableTr.out 验证各操作成功。 1.6目标端GoldenGate配置 a.通过ftp上传GoldenGate软件包,并解压缩。大连灾备中心的目录路径 为/oradata/goldengate/。 Gzip –d *.gz Tar xvf *.tar b.通过ftp上传GoldenGate许可文件pw c.运行./ggsci,进入GGSCI命令行界面。证明许可正常。 d.创建子目录 GGSCI>create subdirs e.Mgr进程配置 编辑mgr进程参数 GGSCI>edit param mgr port 7809 DYNAMICPORTLIST 7840-7850--autostart er * autorestart er *, retries 5, waitminutes 3 purgeoldextracts /oradata/goldengate/dirdat/*,usecheckpoints, minkeepdays 7 启动Mgr进程 GGSCI>start mgr Mgr is running! f.投递进程配置 添加repsz/repkj进程,从数据库日志中抓取有效数据。 GGSCI>add rep repsz, exttrail /oradata/goldengate/dirdat/sz, nodbcheckpoint GGSCI>add rep repkj, exttrail /oradata/goldengate/dirdat/kj, nodbcheckpoint 编辑repsz进程参数 GGSCI>edit param repsz replicat repsz setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) userid goldengate, password ******** sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 --handlecollisions reperror default,discard discardfile /oradata/goldengate/dirrpt/repsz.dsc,append, megabytes 10 --grouptransops 100 --batchsql assumetargetdefs allownoopupdates dynamicresolution numfiles 3000 --mapexclude CTAIS2.SHOULIXINXI --mapexclude CTAIS2.JC_GY_SWWSWH--map CTAIS2.SHOULIXINXI, target CTAIS2.SHOULIXINXI, keycols ( SHOULIBIANHAO ); MAP ctais2.* ,TARGET ctais2.*; GGSCI>edit param repkj replicat repkj setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK ) userid goldengate, password ****** sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 handlecollisions --reperror default,discard --discardfile /oradata/goldengate/repkj.dsc,append,megabytes 100m --ddlerror default discard discardfile /oradata/goldengate/dirrpt/repkj.dsc,append assumetargetdefs allownoopupdates dynamicresolution numfiles 3000 MAP ctais2.* ,TARGET ctais2.*; g.启动repsz/repkj投递进程,将本地队列中的有效数据投递到目标数据库 GGSCI>start repsz GGSCI>start repkj h.检查运行状态 GGSCI>info all 如果是running证明正在运行。 使用lag rep*查看延迟信息,等待延迟为0时两个rep进程追平数据,GGS 进入正常复制状态
