的安装与配置
配置GoldenGate 进行数据复制,主要包括如下环节:
n 对源端和目标端GoldenGate 工作环境的检查
n 在源和目标环境分别安装GoldenGate 软件
n 配置源端
n 目标库的初始化
n 配置目标端
n 启动GoldenGate ,执行数据复制
下文将对这些部分详细说明。
环境介绍:
源端:AIX 5.3 、oracle 10.2.0.4 、2 节点RAC
目标端: Linux X86 64bit 、oracle 11.2.0.4 、2 节点RAC
ogg 进程配置:
对于数据变化量不大的系统(每天生成归档量小于500G ),通常源端只配置一个extract 进程即可满足要求。目标端配置replicat 进程的多少依赖于复制效率,可以根据具体情况进行拆分。
复制的表
对于静态表,不建议通过OGG 复制。
无法通过OGG 或者不需要通过OGG 进行复制的表,将在割接期间采用传统的expdp & impdp 的方式实现。
需要从以下方面保证OGG 在同步过程中的数据一致性:
n 需要逐表检查所复制的表的附加日志已经打开
n 保证初始化数据的完整性。
n 对于目标库:
n 必须避免后台的Job, 包括:Crontab Job ,数据库内部的 job ;华为TaskMon 工具等。
n 避免人为修改目标端表中的数据
n 监视触发器的状态(最好导入时在目标库drop 触发器)、避免有级联触发器等。
n 对于所复制的表,在同步期间(即开始同步到上线割接)避免修改表的主键或者索引字段。
n 可以在执行数据同步期间把数据库中其它数据库用户的账号lock 。
如果在OGG 同步期间发现个别表的同步出现问题,可以参照以下的步骤处理:
1. 将出现问题的表从复制进程中去掉
stop rep1
edit param rep1
删除或者注视出现问题的表的一行配置,比如去除tbcs.ogg_test表的复制,为其增加注释:
-- MAP tbcs.ogg_test, TARGET tbcs.ogg_test;
start rep1
2. 重新初始化出现问题的表的数据
在目标端:
truncate table tbcs.ogg_test;
使用Data Pump导入问题表的数据:
选择一个系统负载低的时刻,首先从生产库查询出一个当前的SCN,比如:
col current_scn for 99999999999999999999
select current_scn from v$database;
12872889897855
使用这个SCN作为flashback_scn值进行导出&导入:
flashback_scn = 12872889897855
注意:仅导入数据,不要导入触发器
记录该SCN对应的时间点以及在目标端的trail文件的序号:
cd $GG_HOME/dirdat01
ls –ltr
数据导入完成后在目标端新建一个复制进程,主要步骤参见“3.8.8 配置OGG的复制进程Replicat”小节。
不同之处如下:
在启动新建的复制进程之前,需要增加一个操作:
alter r_tbcs_01 extseqno xx, extrba 0
GSCI (kdyyb1) 2> info r_tbcs
REPLICAT R_TBCS Last Started 2015-03-04 18:45 Status RUNNING
Checkpoint Lag 00:00:02 (updated 00:00:00 ago)
Log Read Checkpoint File ./dirdat01/tb000179
2015-03-05 14:54:38.002275 RBA 58679836
注意新建的复制进程的“Log Read Checkpoint”是刚修改的文件序号,并且RBA为0。
在使用前面步骤的SCN启动新建的复制进程。
如果需要重新对目标库重建,可以参考如下步骤:
1. 停止目标端的复制进程(不要停止manager 进程),源端不作处理(即保持数据抽取的状态)
ggsci
stop *
2. 删除所有目标端的抽取进程
dblogin userid ggadmin, password AACAAAAAAAAAAAIAKBWGTCOFUEPDSFQH , encryptkey default
delete recpliat r_tbcs
……
3. truncate 所有OGG 复制的表
剩下的步骤参见本文“3.6 源端配置”小节。
不同之处如下:
在增加了新建的复制进程之前,需要增加一个操作:
alter rep1 extseqno xx, extrba 0
这个trail 文件的序号使用数据初始化时的SCN 对应的时间点,可以再往前一些。
复制的效率
作为一种准实时的数据同步工具,OGG 的同步有三个方面的延迟:
n 抽取,即Extract 进程
n 传输或者分发,即Data Pump 进程
n 复制,即Replicat 进程
需要察看这三个环节分别的延迟(即lag ),命令是:
登录的源或者目标端主机:
cd $GG_HOME
./ggsci
info all
-- 注意观察每个进程的lag值
更的方式是使用lag命令,即
lag ext1
lag dp1
lag rep1
在配置好OGG 的同步后,需要监视lag ,如果发现lag 逐渐变长则需要处理。
文件的管理
OGG 通过manager 进程实现对trail 文件的自动清除操作。有两种清除策略:时间或者文件的数量。
分别通过如下参数配置:
n MinKeepDays 或者MinKeepHours
MinKeepFiles :通过这种方式可以限制trail文件占用空间的总体大小(在复制正常的时刻)。
现在Oracle工程师将源端配置为
MinKeepHours 12
目标端:
MinKeepDays 1
客户可以根据需要进行调整。
在割接当天要特别注意避免长交易,因为如果需要重起抽取进程的话,抽取进程在启动后需要花一些时间才能追上,这样可能会影响割接进度
说明:正常情况下仅需要停止抽取进程而不需要再启动,则这方面没有关系。
在重起抽取进程后OGG 需要从最早事务开始时刻的redo 中读取数据,因此需要访问一定量的归档文件,如果因为备份已经将最近的归档文件成功备份后删除,抽取进程就会出错,为此可以对备份策略进行调整,比如备份8 个小时之前的归档(这样可以保留最近8 个小时的归档文件):
backup
archivelog until time 'sysdate-1/12'
的监控
对OGG 的监控主要包括以下方面:
n 对进程的监控,即使用info all 命令查看源端和目标端的相关进程,其状态为“RUNNING ”
n 对Trail 文件占用磁盘空间的监控
n 对lag 的监控:参见前文。
工作环境的检查
对xlC 和libpthreads 版本要求
本节内容适用于源和目标端。
根据MOS 文档“Oracle GoldenGate GGSCI fails with "0509-036 Cannot load program ggsci because of the following errors:" (Doc ID 1108601.1) ”, GoldenGate 从版本V10 开始在AIX 5.3 平台上对xlC 库有如下的最小版本要求:
xlC.aix50.rte 10.1.0.0 COMMITTED XL C/C++ Runtime for AIX 5.3
xlC.msg.en_US.rte 10.1.0.0 COMMITTED XL C/C++ Runtime
xlC.rte 10.1.0.0 COMMITTED XL C/C++ Runtime
还要求libpthreads 库具有5.3.0.51 或以上版本。
可以通过以下命令查看xlC 和libpthreads 版本:
查看xlC 版本:
# lslpp -l | grep -i xlc
查看libpthreads 版本:
lslpp -h bos.rte.libpthreads
如果发现当前Aix 平台下的xlC 或者libpthreads 版本低于规定版本则必须首先升级,然后才能安装GoldenGate 软件。
由于受到GoldenGate 工作机制的限制,源库数据库必须满足一定的条件,才能保证GoldenGate 可以工作正常,这些条件包括:
n 数据库运行于归档日志模式下。
n 在数据库级别打开了Force Logging 。
n 在数据库级别打开了最小附加日志(supplemental log min )。
检查数据库是否处于归档模式:
select log_mode from v$database;
使用以下SQL 语句检查数据库Force Logging 和附加日志的打开状况:
select supplemental_log_data_min, force_logging
from v$database;
确定需要复制的表。
不能配置防火墙来阻止源端主机和目标端主机之间GoldenGate 使用的端口。具体端口是在源端和目标端mgr 进程配置中指定的端口,当前配置环境下使用的端口是: 7809 - 7820
软件安装
首先要为GoldenGate 软件划分适当的集群文件系统(比如GPFS 等),以/arch 为例。Goldengate 最好安装在共享文件系统上,但不是必须。
登录RAC 的节点1 主机,使用操作系统oracle 用户(即Oracle 数据库软件的安装和运行用户)来安装GoldenGate 。所使用的GoldenGate 软件版本为11.2.1.0.18 。
GoldenGate for 10g : p18307056_1121018_AIX64-5L.zip
将安装介质p18307056_1121018_AIX64-5L.zip 文件上传到数据库服务器/ogg 目录,使用unzip 命令解压缩,会出现ggs_AIX_ppc_ora10.2_64bit.tar 文件,再使用tar 对该文件解报。解压缩/ 解包的过程就是安装过程。
cd /arch/ogg
unzip p18307056_1121018_AIX64-5L.zip
tar xvf ggs_AIX_ppc_ora10.2_64bit.tar
解压后,创建 GoldenGate 需要的子目录(使用create subdirs 命令):
cd /arch/ogg
./ggsci
Oracle GoldenGate Command Interpreter for Oracle
… …
GGSCI (aaopdb2) 1> create subdirs
Creating subdirectories under current directory /arch/ogg
Parameter files /arch/ogg/dirprm: already exists
Report files /arch/ogg/dirrpt: created
Checkpoint files /arch/ogg/dirchk: created
Process status files /arch/ogg/dirpcs: created
SQL script files /arch/ogg/dirsql: created
Database definitions files /arch/ogg/dirdef: created
Extract data files /arch/ogg/dirdat1: created
Temporary files /arch/ogg/dirtmp: created
Stdout files /arch/ogg/dirout: created
编辑oracle 用户主目录下的.profile 文件,在文件末尾追加以下内容:
export GG_HOME=/arch/ogg
export LIBPATH=$LIBPATH:$GG_HOME:$ORACLE_HOME/lib
的数据库用户
在旧营业系统库创建GoldenGate 运行所需要的数据库用户。
使用下面的SQL 创建GoldenGate 的数据库用户ggadmin :
-- 源端数据库:
create tablespace goldengate datafile 'xxx' size 10g autoextend on;
/* 配置DDL同步,必须为goldengate用户分配单独的表空间,且自动扩展 */
create user ggadmin identified by ggadmin default tablespace ogg temporary tablespace temp;
grant dba to ggadmin;
为满足GoldenGate 的工作条件,必须对源端数据库进行如下的配置:
$ sqlplus / as sysdba
-- 检查foce logging当前是否启用:
SQL> set linesize 80
SQL> col name format a20
SQL> col force_logging format a20
SQL>
SQL> select d.name, d.force_logging from v$database d;
-- 如果“force_logging”字段的返回值为“YES”,则已经启用,不需要执行下面的SQL;否则执行:
SQL> alter database force logging;
-- 重新执行上面的检查SQL,确认返回值为“YES”。
如果需要进行回退,关闭强制日志模式,请使用以下 sql :
alter database no force logging;
根据MOS 文档“How To Turn On Supplemental Logging At The Database Or The Table Level (Oracle Specific) (Doc ID 1059352.1) ”,GoldenGate 必须要求打开附加日志并同时切换日志:
$ sqlplus / as sysdba
-- 检查数据库级别的 Logging是否打开:
SQL> set linesize 80
SQL> col supplemental_log_data_min format a30
SQL>
-- 如果“supplemental_log_data_min”字段的返回值为“YES”,则已经启用,不需要执行下面的SQL;--- 否则执行:
SQL> alter database add supplemental log data;
-- 重新执行上面的检查SQL,确认返回值为“YES”。
-- 执行日志文件的切换(This change to add supplemental logging will not take effect until the -- current redo log -- is switched, so the following command must also be executed):
SQL> alter system switch logfile;
回退操作:如果出现问题,可以通过以下语句进行回退:
SQL> alter database drop supplemental log data ;
选取一个schema 创建一个名为ogg_test 的测试表,创建脚本如下:
create table SCHEMA .ogg_test(id number, in_date date);
为所有需要进行复制的表生成add trandata 命令:
由于每个schema 包含的表较多,执行该步骤会花费很长时间,可以多开几个窗口并行执行。
GGSCI > dblogin userid ggadmin, password ggadmin
add trandata SI_INFORMTN_SCHEMA.*
add trandata ORDPLUGINS.*
add trandata PRDXIVMILC.*
add trandata PRDABPPSZVMIREAD.*
add trandata PRDABPPWHVMIREAD.*
add trandata PRDABPPXMVMIREAD.*
add trandata PRDABPPWHBSVMIREAD.*
add trandata PRDHKFGVMIREAD.*
add trandata PRDXIVMI1.*
add trandata PRDXIVMIBRP.*
add trandata SHARING.*
add trandata PRDSPUSERVMI2READ.*
add trandata PRDVMIBRPREAD.*
add trandata PRDSPUSERVMI1READ.*
add trandata PRDHKFGSPVMI.*
add trandata PRDINFOVMIK2.*
add trandata PRDINFREPVMI.*
add trandata PRDSPUSERVMI3.*
add trandata PRDSPVMIBRP.*
add trandata PRDSPUSERVMI2.*
add trandata CSETRACK.*
add trandata PRDCSE.*
add trandata PRDCSEVMI3.*
add trandata PRDCSEVMI2.*
add trandata PRDCSEVMIBRP.*
add trandata PRDCSEVMI1.*
add trandata PRDABPPCDVMIREAD.*
add trandata PRDABPPSHVMIREAD.*
add trandata PRDABPPBSVMIREAD.*
add trandata PRDSPUSERVMI1.*
add trandata PRDABPPWHBSVMI.*
add trandata PRDABPPSZVMI.*
add trandata PRDABPPWHVMI.*
add trandata PRDABPPXMVMI.*
add trandata PRDABPPSHVMI.*
add trandata PRDABPPCDVMI.*
add trandata PRDHKFGVMI.*
add trandata PRDABPPVMI3.*
add trandata PRDABPPVMIBRP.*
add trandata PRDABPPVMI1.*
add trandata PRDABPPVMI2.*
add trandata PRDABPPBSVMI.*
add trandata PUBLIC.*
检查表的SUPPLEMENTAL_LOG是否开启:
/* 出现如下信息说明开启supplemental log,若出现disable 说明未开启
Logging of supplemental redo log data is enabled for table PRDABPPVMI1.AGGLVLCRITERIA_NC.
对未开启supplemental log的表需要单独添加,执行:
add trandata username.TABLE_NAME
info trandata SI_INFORMTN_SCHEMA.*
info trandata ORDPLUGINS.*
info trandata PRDXIVMILC.*
info trandata PRDABPPSZVMIREAD.*
info trandata PRDABPPWHVMIREAD.*
info trandata PRDABPPXMVMIREAD.*
info trandata PRDABPPWHBSVMIREAD.*
info trandata PRDHKFGVMIREAD.*
info trandata PRDXIVMI1.*
info trandata PRDXIVMIBRP.*
info trandata SHARING.*
info trandata PRDSPUSERVMI2READ.*
info trandata PRDVMIBRPREAD.*
info trandata PRDSPUSERVMI1READ.*
info trandata PRDHKFGSPVMI.*
info trandata PRDINFOVMIK2.*
info trandata PRDINFREPVMI.*
info trandata PRDSPUSERVMI3.*
info trandata PRDSPVMIBRP.*
info trandata PRDSPUSERVMI2.*
info trandata CSETRACK.*
info trandata PRDCSE.*
info trandata PRDCSEVMI3.*
info trandata PRDCSEVMI2.*
info trandata PRDCSEVMIBRP.*
info trandata PRDCSEVMI1.*
info trandata PRDABPPCDVMIREAD.*
info trandata PRDABPPSHVMIREAD.*
info trandata PRDABPPBSVMIREAD.*
info trandata PRDSPUSERVMI1.*
info trandata PRDABPPWHBSVMI.*
info trandata PRDABPPSZVMI.*
info trandata PRDABPPWHVMI.*
info trandata PRDABPPXMVMI.*
info trandata PRDABPPSHVMI.*
info trandata PRDABPPCDVMI.*
info trandata PRDHKFGVMI.*
info trandata PRDABPPVMI3.*
info trandata PRDABPPVMIBRP.*
info trandata PRDABPPVMI1.*
info trandata PRDABPPVMI2.*
info trandata PRDABPPBSVMI.*
info trandata PUBLIC.*
管理进程mgr
在旧营业系统执行该配置任务。
$ cd /arch/ogg
$ ./ggsci
编辑mgr 进程配置参数,配置信息将保存于./dirprm/mgr.prm 文件中。
ggsci> edit params mgr
运行后将进入vi 编辑模式,输入以下内容。
在源端:
Port 7809
DynamicPortList
DynamicPortReassignDelay 5
-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60
LagReportHours 1
LagInfoMinutes 3
LagCriticalMinutes 5
保存并退出vi 编辑。启动源端的mgr 管理进程:
ggsci> start mgr
的DDL 复制
关闭回收站功能( 重启数据库生效)
alter system set recyclebin=off scope=spfile;
EDIT PARAMS ./GLOBALS
输入以下内容
GGSCHEMA ggadmin
执行一系列同步DLL 语句要用到的GoldenGate 脚本,这些脚本存放在GG 的安装目录下:
停止所有数据库连接( sqlplus 、 goldengate 以及所有应用连接),执行过程中不要有新的连接 。
以SYSDBA 身份登录
sqlplus / as sysdba
SQL> GRANT EXECUTE ON utl_file TO GGADMIN;
SQL> @marker_setup ggadmin
SQL> @ddl_setup
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to GGADMIN;
SQL> @ddl_enable
SQL> @?/rdbms/admin/dbmspool
SQL> @ddl_pin
复制支持
在主端和备端都执行sequence.sql
SQL> @sequence.sql ggadmin
在主端执行下面的命令
GRANT EXECUTE on ggadmin.updateSequence TO ggadmin;
在目标端端执行
GRANT EXECUTE on ggadmin.replicateSequence TO ggadmin;
在源端执行下面的命令
alter table sys.seq$ add supplemental log data (primary key) columns;
的数据抽取进程Extract
Extract 抽取进程 ext1
ADD EXTRACT ext1, TRANLOG, THREADS 2, BEGIN NOW
创建ext1 进程的数据队列文件:
ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1, Megabytes 200
检查配置是否正确:
GGSCI> INFO EXTRACT *
编辑ext1 进程参数设置,配置信息将保存于./dirprm/ext1.prm 文件中。
ggsci> edit params ext1
ext1 抽取进程参数配置如下:(包含所有schema )
SETENV (NLS_LANG=American_America.UTF8)
UserID ggadmin, Password ggadmin
DiscardFile ./dirrpt/ext1.dsc, append, Megabytes 200
Extract ext1
SETENV (NLS_LANG=American_America.UTF8)
UserID ggadmin@netdb, Password ggadmin
ExtTrail ./dirdat/lt
--TranlogOptions RawDeviceOffset 0
DynamicResolution
GETTRUNCATES
DDL INCLUDE OBJNAME I_INFORMTN_SCHEMA.* &
INCLUDE OBJNAME ORDPLUGINS.* &
INCLUDE OBJNAME PRDXIVMILC.* &
INCLUDE OBJNAME PRDABPPSZVMIREAD.* &
INCLUDE OBJNAME PRDABPPWHVMIREAD.* &
INCLUDE OBJNAME PRDABPPXMVMIREAD.* &
INCLUDE OBJNAME PRDABPPWHBSVMIREAD.* &
INCLUDE OBJNAME PRDHKFGVMIREAD.* &
INCLUDE OBJNAME PRDXIVMI1.* &
INCLUDE OBJNAME PRDXIVMIBRP.* &
INCLUDE OBJNAME SHARING.* &
INCLUDE OBJNAME PRDSPUSERVMI2READ.* &
INCLUDE OBJNAME PRDVMIBRPREAD.* &
INCLUDE OBJNAME PRDSPUSERVMI1READ.* &
INCLUDE OBJNAME PRDHKFGSPVMI.* &
INCLUDE OBJNAME PRDINFOVMIK2.* &
INCLUDE OBJNAME PRDINFREPVMI.* &
INCLUDE OBJNAME PRDSPUSERVMI3.* &
INCLUDE OBJNAME PRDSPVMIBRP.* &
INCLUDE OBJNAME PRDSPUSERVMI2.* &
INCLUDE OBJNAME CSETRACK.* &
INCLUDE OBJNAME PRDCSE.* &
INCLUDE OBJNAME PRDCSEVMI3.* &
INCLUDE OBJNAME PRDCSEVMI2.* &
INCLUDE OBJNAME PRDCSEVMIBRP.* &
INCLUDE OBJNAME PRDCSEVMI1.* &
INCLUDE OBJNAME PRDABPPCDVMIREAD.* &
INCLUDE OBJNAME PRDABPPSHVMIREAD.* &
INCLUDE OBJNAME PRDABPPBSVMIREAD.* &
INCLUDE OBJNAME PRDSPUSERVMI1.* &
INCLUDE OBJNAME PRDABPPWHBSVMI.* &
INCLUDE OBJNAME PRDABPPSZVMI.* &
INCLUDE OBJNAME PRDABPPWHVMI.* &
INCLUDE OBJNAME PRDABPPXMVMI.* &
INCLUDE OBJNAME PRDABPPSHVMI.* &
INCLUDE OBJNAME PRDABPPCDVMI.* &
INCLUDE OBJNAME PRDHKFGVMI.* &
INCLUDE OBJNAME PRDABPPVMI3.* &
INCLUDE OBJNAME PRDABPPVMIBRP.* &
INCLUDE OBJNAME PRDABPPVMI1.* &
INCLUDE OBJNAME PRDABPPVMI2.* &
INCLUDE OBJNAME PRDABPPBSVMI.* &
INCLUDE OBJNAME PUBLIC'.*
DDLOPTIONS REPORT
--DDLOPTIONS UPDATEMETADATA, REPORT
DDLOPTIONS ADDTRANDATA, REPORT
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
TRANLOGOPTIONS EXCLUDEUSER ggadmin
TABLEEXCLUDE PRDABPPVMI2.RUPD$*;
TABLEEXCLUDE PRDABPPVMI3.RUPD$*;
TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;
TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;
TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;
TABLEEXCLUDE PRDABPPVMI1.RUPD$*;
TABLEEXCLUDE PRDHKFGVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMI2.MLOG$*;
TABLEEXCLUDE PRDABPPVMI3.MLOG$*;
TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;
TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;
TABLEEXCLUDE PRDABPPVMI1.MLOG$*;
TABLEEXCLUDE PRDHKFGVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;
TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;
TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;
TABLE SI_INFORMTN_SCHEMA.*;
TABLE ORDPLUGINS.*;
TABLE PRDXIVMILC.*;
TABLE PRDABPPSZVMIREAD.*;
TABLE PRDABPPWHVMIREAD.*;
TABLE PRDABPPXMVMIREAD.*;
TABLE PRDABPPWHBSVMIREAD.*;
TABLE PRDHKFGVMIREAD.*;
TABLE PRDXIVMI1.*;
TABLE PRDXIVMIBRP.*;
TABLE SHARING.*;
TABLE PRDSPUSERVMI2READ.*;
TABLE PRDVMIBRPREAD.*;
TABLE PRDSPUSERVMI1READ.*;
TABLE PRDHKFGSPVMI.*;
TABLE PRDINFOVMIK2.*;
TABLE PRDINFREPVMI.*;
TABLE PRDSPUSERVMI3.*;
TABLE PRDSPVMIBRP.*;
TABLE PRDSPUSERVMI2.*;
TABLE CSETRACK.*;
TABLE PRDCSE.*;
TABLE PRDCSEVMI3.*;
TABLE PRDCSEVMI2.*;
TABLE PRDCSEVMIBRP.*;
TABLE PRDCSEVMI1.*;
TABLE PRDABPPCDVMIREAD.*;
TABLE PRDABPPSHVMIREAD.*;
TABLE PRDABPPBSVMIREAD.*;
TABLE PRDSPUSERVMI1.*;
TABLE PRDABPPWHBSVMI.*;
TABLE PRDABPPSZVMI.*;
TABLE PRDABPPWHVMI.*;
TABLE PRDABPPXMVMI.*;
TABLE PRDABPPSHVMI.*;
TABLE PRDABPPCDVMI.*;
TABLE PRDHKFGVMI.*;
TABLE PRDABPPVMI3.*;
TABLE PRDABPPVMIBRP.*;
TABLE PRDABPPVMI1.*;
TABLE PRDABPPVMI2.*;
TABLE PRDABPPBSVMI.*;
TABLE PUBLIC.*;
SEQUENCE PRDABPPVMI2.*;
SEQUENCE PRDABPPVMI3.*;
SEQUENCE PRDABPPWHVMI.*;
SEQUENCE PRDSPUSERVMI1.*;
SEQUENCE PRDSPUSERVMI2.*;
SEQUENCE PRDHKFGSPVMI.*;
SEQUENCE PRDABPPCDVMI.*;
SEQUENCE PRDSPVMIBRP.*;
SEQUENCE PRDABPPBSVMI.*;
SEQUENCE PRDABPPXMVMI.*;
SEQUENCE PRDABPPSZVMI.*;
SEQUENCE PRDABPPWHBSVMI.*;
SEQUENCE PRDABPPVMIBRP.*;
SEQUENCE SHARING.*;
SEQUENCE PRDABPPVMI1.*;
SEQUENCE PRDHKFGVMI.*;
SEQUENCE PRDSPUSERVMI3.*;
SEQUENCE PRDABPPSHVMI.*;
的数据传输进程Datapump
dp1 :
ADD EXTRACT dp1, exttrailsource ./dirdat/lt, begin now
创建远程队列文件:
ADD RMTTRAIL ./dirdat/rt, EXTRACT dp1, Megabytes 200
编辑dp1 进程参数设置,配置信息将保存于./dirprm/dp1.prm 文件中。
ggsci> edit params dp1
dp1 传输进程参数配置如下:
Extract dp1
RmtHost 10.99.205.76, MgrPort 7809, timeout 30, Compress
RmtTrail ./dirdat/rt
Passthru
TABLEEXCLUDE PRDABPPVMI2.RUPD$*;
TABLEEXCLUDE PRDABPPVMI3.RUPD$*;
TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;
TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;
TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;
TABLEEXCLUDE PRDABPPVMI1.RUPD$*;
TABLEEXCLUDE PRDHKFGVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMI2.MLOG$*;
TABLEEXCLUDE PRDABPPVMI3.MLOG$*;
TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;
TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;
TABLEEXCLUDE PRDABPPVMI1.MLOG$*;
TABLEEXCLUDE PRDHKFGVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;
TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;
TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;
TABLE SI_INFORMTN_SCHEMA.*;
TABLE ORDPLUGINS.*;
TABLE PRDXIVMILC.*;
TABLE PRDABPPSZVMIREAD.*;
TABLE PRDABPPWHVMIREAD.*;
TABLE PRDABPPXMVMIREAD.*;
TABLE PRDABPPWHBSVMIREAD.*;
TABLE PRDHKFGVMIREAD.*;
TABLE PRDXIVMI1.*;
TABLE PRDXIVMIBRP.*;
TABLE SHARING.*;
TABLE PRDSPUSERVMI2READ.*;
TABLE PRDVMIBRPREAD.*;
TABLE PRDSPUSERVMI1READ.*;
TABLE PRDHKFGSPVMI.*;
TABLE PRDINFOVMIK2.*;
TABLE PRDINFREPVMI.*;
TABLE PRDSPUSERVMI3.*;
TABLE PRDSPVMIBRP.*;
TABLE PRDSPUSERVMI2.*;
TABLE CSETRACK.*;
TABLE PRDCSE.*;
TABLE PRDCSEVMI3.*;
TABLE PRDCSEVMI2.*;
TABLE PRDCSEVMIBRP.*;
TABLE PRDCSEVMI1.*;
TABLE PRDABPPCDVMIREAD.*;
TABLE PRDABPPSHVMIREAD.*;
TABLE PRDABPPBSVMIREAD.*;
TABLE PRDSPUSERVMI1.*;
TABLE PRDABPPWHBSVMI.*;
TABLE PRDABPPSZVMI.*;
TABLE PRDABPPWHVMI.*;
TABLE PRDABPPXMVMI.*;
TABLE PRDABPPSHVMI.*;
TABLE PRDABPPCDVMI.*;
TABLE PRDHKFGVMI.*;
TABLE PRDABPPVMI3.*;
TABLE PRDABPPVMIBRP.*;
TABLE PRDABPPVMI1.*;
TABLE PRDABPPVMI2.*;
TABLE PRDABPPBSVMI.*;
TABLE PUBLIC.*;
SEQUENCE PRDABPPVMI2.*;
SEQUENCE PRDABPPVMI3.*;
SEQUENCE PRDABPPWHVMI.*;
SEQUENCE PRDSPUSERVMI1.*;
SEQUENCE PRDSPUSERVMI2.*;
SEQUENCE PRDHKFGSPVMI.*;
SEQUENCE PRDABPPCDVMI.*;
源端启动数据抽取进程
ggsci> start ext1
人工记录抽取进程启动的时间点,例如:“ 2015-01-06 11:20:55 ” ,将此时间点作为在下一步中查找长事务的一个判断条件。
可以使用info all 检查extract 进程状态是否为RUNNING
如果状态不是RUNNING ,则可以使用以下命令查看报错原因,再根据错误原因具体分析和处理:
ggsci> view report ext1
使用stats 命令对抽取和传输进行进行检查:
stats ext1
通常使用的初始化方法有以下几种:
l 对于数据量不大的数据库可以采用数据泵的方式进行初始化。
l 对于数据量较大的数据库,可以采用RMAN 的方式。
l 对于数据量较大且不能采用RMAN 的数据库,建议找一个中间环境,将数据RMAN 恢复到中间环境,再采用数据泵导数。
长事务处理:在V$TRANSACTION 中查找当前正在运行的事务(RAC 环境下,查看gv$transaction ),并找出相应的长事务。在执行数据同步之前,确保这些长事务已经完成,或者被kill 掉(需要得到dba 或者相关管理人员的确认)。
Select start_time from gv$transaction
where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss')<to_date('2015-01-06 11:20:55', 'yyyy-mm-dd hh24:mi:ss');
注:通过上面的SQL语句查找到比3.6.9歩中记录下的时间点早的事务,需要等到该事务结束,然后执行数据同步;
同步开始时确保数据库中长事务已完成或者被kill 掉。
SCN 号
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
使用expdp 导出生产库数据,flashback_scn 为上一步骤获取的scn ,并行数可适当调整。
( 并行度参数parallel 的值根据数据量大小和系统负载调整
由于指定了flashback_scn ,当数据量较大时可能会出现ORA-01555 报错,建议在数据库空闲时进行。)
expdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=exp_PRDABPPVMI1.log schemas=PRDABPPVMI1 parallel=4 FLASHBACK_SCN= 359963860636
使用impdp 导入,并行数可适当调整。
impdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=imp_PRDABPPVMI1.log full=y parallel=4 cluster=n
查看日志确认数据导入正常。
进行初始化
源库做RMAN 备份;
在目标库做restore ;
在源库获取当前SCN 号
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
将备份以来的所有归档copy 到目标库,目标库recover 到上一步获取的SCN
注意用来启动OGG 复制进程的SCN 为“从生产获取的SCN ” - 1 ,因为”recover untial scn” 只恢复到指定SCN 之前的数据,不包括指定SCN 。
假如从生产获取的 SCN 是 14245600463106 ,则启动 OGG 复制进程的 SCN:
start_SCN = 14245600463106 - 1 = 14245600463105
软件安装
首先要为GoldenGate 软件划分适当的共享文件系统,这里假设使用/arch 。
登录RAC 的节点1 主机,使用操作系统oracle 用户(即Oracle 数据库软件的安装和运行用户)来安装GoldenGate 。所使用的GoldenGate 软件版本为11.2.1.0.25 。
GoldenGate for 11g : p19269552_1121025_Linux-x86-64.zip
将安装介质p19269552_1121025_Linux-x86-64.zip 文件上传到数据库服务器/arch/ogg 目录,使用unzip 命令解压缩,会出现fbo_ggs_Linux_x64_ora11g_64bit.tar 文件,再使用tar 对该文件解报。解压缩/ 解包的过程就是安装过程。
cd /arch/ogg
unzip p19269552_1121025_Linux-x86-64.zip
tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
解压后,创建 GoldenGate 需要的子目录(使用create subdirs 命令):
cd /arch/ogg
./ggsci
Oracle GoldenGate Command Interpreter for Oracle
… …
GGSCI (aaopdb2) 1> create subdirs
Creating subdirectories under current directory /arch/ogg
Parameter files /arch/ogg/dirprm: already exists
Report files /arch/ogg/dirrpt: created
Checkpoint files /arch/ogg/dirchk: created
Process status files /arch/ogg/dirpcs: created
SQL script files /arch/ogg/dirsql: created
Database definitions files /arch/ogg/dirdef: created
Extract data files /arch/ogg/dirdat1: created
Temporary files /arch/ogg/dirtmp: created
Stdout files /arch/ogg/dirout: created
编辑oracle 用户主目录下的.profile 文件,在文件末尾追加以下内容:
export GG_HOME=/arch/ogg
export SHLIB_PATH =$ SHLIB_PATH:$GG_HOME:$ORACLE_HOME/lib
管理进程mgr
在新系统执行该配置任务。
$ cd /arch/ogg
$ ./ggsci
编辑mgr 进程配置参数,配置信息将保存于./dirprm/mgr.prm 文件中。
ggsci> edit params mgr
运行后将进入vi 编辑模式,输入以下内容。
Port 7809
DynamicPortList 7810-7820
DynamicPortReassignDelay 5
PurgeOldExtracts ./dirdat/rt*, UseCheckpoints, MinKeepDays 5
-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60
LagReportHours 1
LagInfoMinutes 3
LagCriticalMinutes 5
保存并退出vi 编辑。启动源端的mgr 管理进程:
ggsci> start mgr
的数据库用户
在目标数据库创建GoldenGate 运行所需要的数据库用户。
使用下面的SQL 创建GoldenGate 的数据库用户ggadmin :
目标端数据库:
create tablespace goldengate datafile 'xxx' size 10g autoextend on; /* 创建单独的表空间*/
create user ggadmin identified by gadmin
default tablespace users
temporary tablespace temp;
grant dba to ggadmin;
数据初始化完成后,在启动复制进程前,还需要如下的检查与配置工作。
在源端由于主外键约束和级联删除约束所产生的DML 本身已经被GoldenGate 捕获并且投递到目标端,如果在目标端启用了外键约束和级联删除,则可能造成重复记录等数据不一致的问题。为了防止此类问题,需要在目标库上禁用外键约束和级联删除约束。
通过下面的方法禁用这些约束:
在 执行下面的SQL ,生成用于禁用外键约束的脚本文件:
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_foreign_constraints.sql
select 'alter table '||owner||'.'||table_name|| ' disable constraint '||constraint_name||';'
from dba_constraints
where constraint_type = 'R'
and owner 'PRDABPPVMI1','PRDSPUSERVMI1' );
spool off
在新系统数据库执行disable_foreign_constraints.sql 脚本禁用外键约束。
然后执行以下语句确认所有的外键约束都已经禁用:
Col owner for a10
Col table_name for a30
Col constraint_name for a30
select owner, table_name, constraint_name, status
from dba_constraints
where constraint_type='R' and owner in('PRDABPPVMI1','PRDSPUSERVMI1');
在新系统执行下面的SQL ,生成用于禁用级联删除的脚本文件:
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_cascade_delete_constraints.sql
select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';'
from dba_constraints
where owner in('PRDABPPVMI1','PRDSPUSERVMI1') and constraint_type = 'R' and delete_rule = 'CASCADE';
spool off
在新系统数据库执行disable_cascade_delete_constraints.sql 脚本禁用级联删除。
然后执行以下语句确认所有的级联删除都已经禁用:
select owner, table_name, constraint_name, status
from dba_constraints
where delete_rule = 'CASCADE'and owner in('PRDABPPVMI1','PRDSPUSERVMI1');
在源端执行的job 会生成对应的DML 被GoldenGate 的extract 进程捕获并且投递到目标端,如果目标端同时也开启了job 则有可能造成数据的不一致,例如重复记录等。为了防止目标端数据库系统的job 对复制产生干扰,在启动目标端的GoldenGate 进程之前,需要禁用目标端数据库的job 。
使用以下命令将新系统数据库的job 队列修改为0 ,从而达到禁用目标库job 的目的:
修改为以后使用以下命令确认当前的修改已经生效,job 队列为0 :
show parameter job;
在数据库源端触发器产生的DML 已经被GoldenGate 的extract 进程捕获,并且通过pump 投递到目标端。如果目标端的触发器启用,则可能造成目标端数据的不一致,最典型的一种场景是在目标端没有主键索引的表上产生重复数据。为了防止上述情况的出现,需要在目标端数据库禁用触发器。
在新系统执行下面的语句,生成禁用触发器的脚本文件disable_triggers.sql :
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_triggers.sql
select 'alter trigger '||owner||'.'||trigger_name|| ' disable;'
from dba_triggers
where owner in('PRDABPPVMI1','PRDSPUSERVMI1') and status = 'ENABLED';
spool off
在新系统执行脚本disable_triggers.sql 禁用触发器。然后执行以下语句确认所有的触发器都已经被禁用:
sqlplus / as sysdba
@ disable_triggers.sql
select owner, status, count(*)
from dba_triggers
where owner in('PRDABPPVMI1','PRDSPUSERVMI1')
group by owner, status;
表
在目标端创建Checkpoint 表,表名为ggadmin.ggchkpt :
$ cd /arch/ogg
$./ggsci
ggsci> DBLOGIN USERID ggadmin, PASSWORD ggadmin
Successfully logged into database.
ggsci> add checkpointtable ggadmin.ggchkpt
Successfully created checkpoint table GGADMIN.GGCHKPT.
编辑GLOBALS 参数配置文件:
ggsci> EDIT PARAMS ./GLOBALS
CheckpointTable ggadmin.ggchkpt
GGSCHEMA ggadmin
的复制进程Replicat
目标端配置
分别为两个schema 创建一个复制进程。
创建复制进程 rep1
ADD REPLICAT rep1, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt
编辑Rep1 的参数,自动保存于./dirprm/repl.prm 文件中:
edit params rep1
Replicat rep1
SETENV (NLS_LANG=American_America.AL32UTF8)
USERID ggadmin, PASSWORD ggadmin
DiscardFile ./dirrpt/rep1.dsc, Purge, Megabytes 200
MaxDiscardRecs 10
REPERROR DEFAULT ABEND
DBOPTIONS DEFERREFCONST
DBOPTIONS SUPPRESSTRIGGERS
GetUpdateBefores
--AllowNoopUpdates
ASSUMETARGETDEFS
CHECKSEQUENCEVALUE
-- HandleCollisions
GETTRUNCATES
DDL
--DDL INCLUDE OBJNAME bocnet.*
DDLOPTIONS REPORT
DDLOPTIONS UPDATEMETADATA, REPORT
DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter
DDLERROR DEFAULT ABEND
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
-- To increase replicat speed
BatchSQL
MAP PRDABPPVMI1.*, TARGET PRDABPPVMI1.*;
创建复制进程 rep2
ADD REPLICAT rep2, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt
编辑Rep2 的参数,自动保存于./dirprm/rep2.prm 文件中:
edit params rep2
Replicat rep2
SETENV (NLS_LANG=American_America.AL32UTF8)
USERID ggadmin, PASSWORD ggadmin
DiscardFile ./dirrpt/rep2.dsc, Purge, Megabytes 200
MaxDiscardRecs 10
REPERROR DEFAULT ABEND
DBOPTIONS DEFERREFCONST
DBOPTIONS SUPPRESSTRIGGERS
GetUpdateBefores
--AllowNoopUpdates
ASSUMETARGETDEFS
CHECKSEQUENCEVALUE
-- HandleCollisions
GETTRUNCATES
DDL
--DDL INCLUDE OBJNAME bocnet.*
DDLOPTIONS REPORT
DDLOPTIONS UPDATEMETADATA, REPORT
DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter
DDLERROR DEFAULT ABEND
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
-- To increase replicat speed
BatchSQL
--MAPEXCLUDE bocnet.mlog$_bocorg_admin;
MAP PRDSPUSERVMI1.*, TARGET PRDSPUSERVMI1.*;
启动复制进程前需要登录源端启动 dp1 进程
登录源端系统
GGSCI> start dp1
务必确认新生产库中需要同步表上的外键约束、级联删除、 job 、触发器已经禁用
在检查确认没有问题后,使用下面的命令启动复制进程:
SCN
start rep2 aftercsn SCN
若采用数据泵初始化,SCN为“3.7.2”小节中获取的SCN。
若采用RMAN初始化,SCN为“3.7.3”小节中获取的SCN-1。
可以使用info all 检查replicat 进程状态是否为RUNNING ;如果状态不是RUNNING ,则可以使用以下命令查看报错原因:
ggsci>view report rep1
然后再根据错误原因具体分析和处理。