Oracle GoldenGate 之 Oracle ->
新手安装配置请参考:在Windows中 基于Oracle GoldenGate (OGG)进行Oracle->Oracle数据库同步配置(超详细)
一、【源端】
1、配置MGR管理器进程:EDIT PARAMS MGR
GGSCI (custom04) 1> EDIT PARAMS MGR
2、填写内容
port 2000
dynamicportlist 2001-2005
autorestart extract *,waitminutes 2,retries 5
3、启动MGR管理器进程:start mgr
GGSCI (custom04) 2> start mgr
Manager started.
4、查看MGR管理器进程:info mgr
GGSCI (custom04) 3> info mgr
Manager is running (IP port Win10.2000, Process ID 13820).
5、创建采集投递进程:ADD EXTRACT EJWINIT, SOURCEISTABLE
GGSCI (custom04) 4> ADD EXTRACT EJWINIT, SOURCEISTABLE
6、查看创建的进程:INFO EXTRACT *, TASKS
GGSCI (custom04) 5> INFO EXTRACT *, TASKS
EXTRACT EJWINIT Last Started 2019-01-31 12:37 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Table JW_USER.T_USERINFO
2019-01-31 12:37:15 Record 5
Task SOURCEISTABLE
7、编辑配置文件:EDIT PARAMS EJWINIT
GGSCI (custom04) 6> EDIT PARAMS EJWINIT
8、填写内容【注意:1.根据数据库字符集修改NLS_LANG参数
,2.修改用户名、密码
,3.新增表T_USERINFO并添加10条数据
】
EXTRACT EJWINIT
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid 用户名,password 密码
RMTHOST 202.11.11.11, MGRPORT 2000
RMTTASK REPLICAT, GROUP RJWINIT
TABLE JW_USER.T_USERINFO;
9、启动进程【注意:需在配置完目标端的接收进程后在执行
】:START EXTRACT EJWINIT
GGSCI (custom04) 7> START EXTRACT EJWINIT
10、查看运行情况 :VIEW REPORT EJWINIT
GGSCI (custom04) 8> VIEW REPORT EJWINIT
....略
2019-01-31 12:37:15 INFO OGG-02911 Processing table JW_USER.T_USERINFO.
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2019-01-31 12:37:16 (activity since 2019-01-31 12:37:04)
Output to RJWINIT:
From Table JW_USER.T_USERINFO:
# inserts: 5
# updates: 0
# deletes: 0
# discards: 0
REDO Log Statistics
Bytes parsed 0
Bytes output 741
二、【目标端】
1、配置MGR管理器进程:EDIT PARAMS MGR
GGSCI (custom04) 1> EDIT PARAMS MGR
2、填写内容,注意修改IP(源端的IP地址)
port 2000
dynamicportlist 2001-2005
autorestart extract *,waitminutes 2,retries 5
ACCESSRULE, PROG *, IPADDR 202.11.11.11, ALLOW
3、启动MGR管理器进程:start mgr
GGSCI (custom04) 2> start mgr
Manager started.
4、查看MGR管理器进程:info mgr
GGSCI (custom04) 3> info mgr
Manager is running (IP port Win10.2000, Process ID 13820).
5、创建接收进程:add replicat RJWINIT,specialrun
GGSCI (custom04) 4> add replicat RJWINIT,specialrun
6、查看创建的进程:INFO REPLICAT *, TASKS
GGSCI (custom04) 5> INFO REPLICAT *, TASKS
REPLICAT RJWINIT Initialized 2019-01-31 12:38 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:42:44 ago)
Log Read Checkpoint Not Available
Task SPECIALRUN
7、编辑配置文件:edit params RJWINIT
GGSCI (custom04) 6> edit params RJWINIT
8、填写内容【注意:1.根据数据库字符集修改NLS_LANG参数
,2.修改用户名、密码
,3.新增表T_USERINFO
】
REPLICAT RJWINIT
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
ASSUMETARGETDEFS
userid 用户名,password 密码
DISCARDFILE ./dirrpt/RJWINIT.dsc, PURGE
MAP JW_USER.T_USERINFO, target JWUSER.T_USERINFO;
9、启动进程:START REPLICAT RJWINIT
GGSCI (custom04) 7> START REPLICAT RJWINIT
10、查看运行情况 :VIEW REPORT RJWINIT
GGSCI (custom04) 8> VIEW REPORT RJWINIT
....略
2019-01-31 12:37:14 INFO OGG-03522 Setting session time zone to source database time zone 'GMT'.
2019-01-31 12:37:14 WARNING OGG-02760 ASSUMETARGETDEFS is ignored because trail file contains table definitions.
2019-01-31 12:37:14 INFO OGG-06505 MAP resolved (entry JW_USER.T_USERINFO): MAP "JW_USER"."T_USERINFO", target JWUSER.T_USERINFO.
2019-01-31 12:37:14 INFO OGG-02756 The definition for table JW_USER.T_USERINFO is obtained from the trail file.
2019-01-31 12:37:14 INFO OGG-06511 Using following columns in default map by name: id, name.
2019-01-31 12:37:14 INFO OGG-06510 Using the following key columns for target table JWUSER.T_USERINFO: id.
2019-01-31 12:37:14 INFO OGG-03010 Performing implicit conversion of column data from character set zhs16gbk to UTF-8.
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
Report at 2019-01-31 12:37:19 (activity since 2019-01-31 12:37:14)
From Table JW_USER.T_USERINFO to JWUSER.T_USERINFO:
# inserts: 5
# updates: 0
# deletes: 0
# discards: 0
CACHE OBJECT MANAGER statistics
....略
三、注意事项
1、 在大量数据初始化的时候,注意目标端的归档日志空间大小。如果数据源为100G,理论上目标端的归档日志空间也至少大于100G才行。
如果归档日志满了将会报错:ORA-00257: archiver error. Connect internal only, until freed
,解决方法:
https://blog.csdn.net/cw370008359/article/details/51023794
https://jingyan.baidu.com/article/29697b911dde4bab21de3c4d.html
2、在大量数据初始化的时候,需要注意目标端的表空间时候足够。修改表空间大小:
第一步:查看所有表空间及表空间大小:
SQL > select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
第二步:查看所有表空间对应的数据文件:
SQL > select tablespace_name,file_name from dba_data_files;
第三步:修改数据文件大小
SQL > alter database datafile 'H:\ORACLE\PRODUCT\10.1.0\ORADATA\ORACLE\USERS01.DBF' RESIZE 10240M;
3、需要注意的是目标端与源端的OGG版本最后保持一致。如何查看OGG版本?进入ggsci即可查看:
image.png4、数据表中无主键需要在目标端设置:APPLYNOOPUPDATES。
该参数的含义就是不忽略出现的NO-OP操作,而是在目标数据库强制执行UPDATE修改操作,且只更新键值数据(主键或KEYCOLS指定的键值),如果表没有主键,也没有使用KEYCOLS关键字指定字段,那么将更新表数据的所有字段,如果没有相应记录,将INSERT新插入一条。
5、在操作ggsci时,一定要注意权限组是否一致,否则导致mgr等进程无法查看正常的运行状态,也不能启动停止。
ERROR:opening port for MGR MGR (Connection refused).
相关解释:http://blog.itpub.net/29047826/viewspace-1808538/
6、ORACLE在初始化数据中使用通配符的时候,居然存在将视图中的数据进行同步,导致发生错误。
image.png解决方式:不使用通配符,指定表清单。但是问题又来了,我们有1000多张表如果快速生成?
image.png
(1).利用SQL先查询出所有的表名并通过||
连接想要格式的字符串
【源端】
SQL > select 'TABLE UserName.'||t.table_name||';' from user_tables t ORDER BY t.table_name ASC;
TABLE UserName.CHECKPOINT;
TABLE UserName.CHECKPOINT_LOX;
TABLE UserName.CHG_HRM;
TABLE UserName.DC_BYXWSH_TJB;
TABLE UserName.BYGL_BYQKDCGSB;
TABLE UserName.BYGL_BYSFZXXB;
...
【目标端】
SQL > select 'MAP UserName.'||t.table_name||', target UserName.'||t.table_name||';' from user_tables t ORDER BY t.table_name ASC;
MAP UserName.CHECKPOINT, target UserName.CHECKPOINT;
MAP UserName.CHECKPOINT_LOX, target UserName.CHECKPOINT_LOX;
MAP UserName.CHG_HRM, target UserName.CHG_HRM;
MAP UserName.DC_BYXWSH_TJB, target UserName.DC_BYXWSH_TJB;
MAP UserName.JW_BYGL_BYQKDCGSB, target UserName.BYGL_BYQKDCGSB;
MAP UserName.JW_BYGL_BYSFZXXB, target UserName.BYGL_BYSFZXXB;
(2).排除视图/删除复制表的步骤
停止Extract/Data Pump/Replicat进程
注意停止Extract时检查长交易和归档日志
修改Extract/Data Pump/Replicat参数中复制范围排除该表
如使用通配符时,Extract/Data Pump可通过tableexclude排除表?
tableexclude UserName.KJ_*;
tableexclude UserName.DJ_YZCWSBQC;
table UserName.*;
如使用通配符时,Replicat可通过mapexclude排除表
MAPEXCLUDE UserName.TEST
MAP UserName.*, TARGET UserName.*;
重启Extract/Data Pump/Replicat进程
说明:在一个复制链路的任何一个环节去掉该表即可排除该表复制,但建议
在主Extract进行排除,可以避免各进程做不必要的工作;同时,在各个进程
参数均明确去掉该表可以保持前后的逻辑统一性和易读性
7、OGG-01194 Oracle GoldenGate Capture for Oracle, ext_sc0.prm: EXTRACT task REP_SC0 abended : File InitialLoad, with compatibility level 6, is not compatible with the current software version's compatibility level of 5. Modify the file writer's parameter file to generate the appropriate format using the FORMAT LEVEL 5 option.
在抽取进程中设置:
RMTTASK REPLICAT, GROUP REP_SC0,FORMAT LEVEL 5
或
EXTTRAIL /OGG/dirdat/e1,FORMAT LEVEL 5
还有一种情况,如果目标端是低版本,将不会支持FORMAT
。所有你还是将版本更换一致最佳。
四、辅助工具校验数据
1、统计每张表的数据行数
SQL > select t.table_name,t.num_rows from user_tables t ORDER BY num_rows desc;
2、统计用户下所有表的数据行数
在统计之前最好先执行指定表分析,执行下面查询sql,将结果再次执行。
SQL > select 'analyze table '||S.TABLE_NAME||' compute statistics;' from user_tables s;
image.png
统计所有表的数据行数
SQL > select sum(t.num_rows) from user_tables t;