Oracle 19C OGG基础运维-05DDL操作同步

来源:这里教程网 时间:2026-03-03 15:29:39 作者:

Oracle 19C OGG基础运维-05DDL操作同步 一 源端和目标端:停止同步进程 二 源端:修改抽取进程ext_01 三 目标端:修改应用进程rep_0l 四 启动进程  五 DDL操作同步测试 六 查看日志 七 常见问题 一 源端和目标端:停止同步进程 源端: stop pump_01  stop ext_01 stop mgr  目标端: stop rep_01 stop mgr 二 源端:修改抽取进程ext_01 红色部分为新添加DDL相关部分 GGSCI (cjcos01 as c##ogg@cjcdb/CDB$ROOT) 2> edit param ext_01 extract ext_01 userid c##ogg@cjcdb,password oracle GETUPDATEBEFORES GETTRUNCATES BR BRINTERVAL 2H CACHEMGR CACHESIZE 500MB WARNLONGTRANS 2H,CHECKINTERVAL 5M NUMFILES 4000 EOFDELAYCSECS 10 LOGALLSUPCOLS TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 200, parallelism 2) discardfile ./dirrpt/jcms.dsc,append, megabytes 200 exttrail ./dirdat/ex ---添加DDL DDL INCLUDE ALL DDLOPTIONS ADDTRANDATA, REPORT ---添加DDL  TABLE cjcpdb.cjc.emp; TABLE cjcpdb.cjc.dept; TABLE cjcpdb.cjc.bonus; TABLE cjcpdb.cjc.salgrade; TABLE cjcpdb.cjc.dummy; 三 目标端:修改应用进程rep_0l 红色部分为新添加DDL相关部分 GGSCI (cjcos02 as chen@chendb/CHENPDB) 44> view param rep_0l replicat rep_01 setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) userid ogg@chenpdb,password oracle assumetargetdefs reperror default,discard discardfile ./dirrpt/replzl.dsc,append,megabytes 50 ---添加DDL  DDL INCLUDE MAPPED DDLOPTIONS REPORT ---添加DDL  MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp; MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept; MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus; MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade; MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy; 四 启动进程  源端:  start mgr  start extract ext_01  start extract pump_01  目标端:  start mgr  start replicat rep_01  五 DDL操作同步测试 源端: DDL操作1:创建索引 SQL> conn cjc/cjc@cjcpdb Connected. SQL> select index_name from user_indexes; no rows selected SQL> create index i_dept_01 on dept(LOC); Index created. 目标端: SQL> conn chen/chen@chenpdb Connected. SQL> select index_name from user_indexes; INDEX_NAME -------------------------------------------------------------------------------- I_DEPT_01 DDL操作2:增加列  源端:  SQL> conn cjc/cjc@cjcpdb SQL> alter table dept add col01 varchar2(200); SQL> desc dept  Name    Null?    Type  ----------------------------------------- -------- ----------------------------  DEPTNO      NUMBER(2)  DNAME     VARCHAR2(14)  LOC     VARCHAR2(13)  COL01     VARCHAR2(200) 目标端: SQL> conn chen/chen@chenpdb  SQL> desc dept  Name    Null?    Type  ----------------------------------------- -------- ----------------------------  DEPTNO      NUMBER(2)  DNAME     VARCHAR2(14)  LOC     VARCHAR2(13)  COL01     VARCHAR2(200) DDL操作3:更改字段长度 源端: SQL> conn cjc/cjc@cjcpdb  SQL> alter table dept modify (col01 varchar2(300)); 目标端: SQL> conn chen/chen@chenpdb  SQL> desc dept  Name    Null?    Type  ----------------------------------------- -------- ----------------------------  DEPTNO      NUMBER(2)  DNAME     VARCHAR2(14)  LOC     VARCHAR2(13)  COL01     VARCHAR2(300) DDL操作4:删除字段  源端: SQL> conn cjc/cjc@cjcpdb  SQL> alter table dept drop column col01; 目标端: SQL> conn chen/chen@chenpdb  SQL> desc dept  Name    Null?    Type  ----------------------------------------- -------- ----------------------------  DEPTNO      NUMBER(2)  DNAME     VARCHAR2(14)  LOC     VARCHAR2(13) DDL操作5:清空表 源端: SQL> conn cjc/cjc@cjcpdb  ---create table dept_bak as select * from dept;  SQL> truncate table dept;  SQL> select * from dept;  no rows selected 目标端: SQL> conn chen/chen@chenpdb  SQL> select * from dept;  no rows selected 恢复dept数据 (DML操作) 源端: SQL> conn cjc/cjc@cjcpdb  SQL> insert into dept select * from dept_bak; SQL> commit;  目标端: SQL> select * from dept;     DEPTNO DNAME   LOC ---------- -------------- ------------- 10 ACCOUNTING   NEW YORK 20 RESEARCH   DALLAS 30 SALES   CHICAGO 40 OPERATIONS   BOSTON 50 DBA   DUNHUA 60 CJC   DAPUCHAI 6 rows selected. 六 查看日志 1 create index 对应日志: 源端:  [oracle@cjcos01 ogg]$ tail -f ggserr.log  2020-04-10T11:19:21.912+0800  INFO    OGG-01971  Oracle GoldenGate Capture for Oracle, ext_01.prm:  The previous message, 'INFO OGG-00497', repeated 1 times. 2020-04-10T11:19:21.912+0800  INFO    OGG-01487  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL found, operation [create index i_dept_01 on dept(LOC) (size 35)], start SCN [3595308], commit SCN [3595317] instance [ (1)], DDL seqno [0], marker seqno [0]. 2020-04-10T11:19:21.912+0800  INFO    OGG-10451  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL operation included [INCLUDE ALL], optype [CREATE], objtype [INDEX], catalog "CJCPDB", objowner "CJC", objname "DEPT". 2020-04-10T11:19:22.006+0800  INFO    OGG-00497  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Writing DDL operation to extract trail file. 目标端:   [oracle@cjcos02 ogg]$ tail -f ggserr.log  2020-04-10T11:19:24.767+0800  INFO    OGG-00482  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  DDL found, operation [create index i_dept_01 on dept(LOC) (size 35)]. 2020-04-10T11:19:24.977+0800  INFO    OGG-00489  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  DDL is of mapped scope, after mapping new operation [create index i_dept_01 on "CHEN"."DEPT"(LOC) (size 44)]. 2020-04-10T11:19:24.977+0800  INFO    OGG-10451  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  DDL operation included [INCLUDE MAPPED], optype [CREATE], objtype [INDEX], catalog "CJCPDB", objowner "CHEN", objname "DEPT". 2020-04-10T11:19:26.289+0800  INFO    OGG-01407  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Setting current schema for DDL operation to CHEN. 2020-04-10T11:19:26.296+0800  INFO    OGG-00484  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Executing DDL operation. 2020-04-10T11:19:27.919+0800  INFO    OGG-00483  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  DDL operation successful. 2020-04-10T11:19:27.940+0800  INFO    OGG-01408  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Restoring current schema for DDL operation to OGG. 2 源端:增加列对应日志 [oracle@cjcos01 ogg]$ tail -f ggserr.log  2020-04-10T11:28:46.670+0800  INFO    OGG-01487  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL found, operation [alter table dept add col01 varchar2(200) (size 40)], start SCN [3597146], commit SCN [3597171] instance [ (1)], DDL seqno [0], marker seqno [0]. 2020-04-10T11:28:46.727+0800  INFO    OGG-10451  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL operation included [INCLUDE ALL], optype [ALTER], objtype [TABLE], catalog "CJCPDB", objowner "CJC", objname "DEPT". 2020-04-10T11:28:46.855+0800  INFO    OGG-00497  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Writing DDL operation to extract trail file. 3 源端truncate操作对应日志 [oracle@cjcos01 ogg]$ tail -f ggserr.log  2020-04-10T12:53:48.884+0800  INFO    OGG-10458  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Metadata not invalidated for "CJC".DEPT because of TRUNCATE, catalog CJCPDB. 2020-04-10T12:53:48.884+0800  INFO    OGG-01487  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL found, operation [truncate table dept (size 19)], start SCN [3609971], commit SCN [3609995] instance [ (1)], DDL seqno [0], marker seqno [0]. 2020-04-10T12:53:48.884+0800  INFO    OGG-10451  Oracle GoldenGate Capture for Oracle, ext_01.prm:  DDL operation included [INCLUDE ALL], optype [TRUNCATE], objtype [TABLE], catalog "CJCPDB", objowner "CJC", objname "DEPT". 2020-04-10T12:53:48.921+0800  INFO    OGG-10458  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Metadata not invalidated for "CJC".DEPT because of TRUNCATE, catalog CJCPDB. 2020-04-10T12:53:48.921+0800  INFO    OGG-00497  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Writing DDL operation to extract trail file. 4 源端恢复数据 SQL> insert into dept select * from dept_bak; SQL> commit;  日志: 2020-04-10T12:55:26.856+0800  INFO    OGG-06507  Oracle GoldenGate Capture for Oracle, ext_01.prm:  MAP (TABLE) resolved (entry cjcpdb.cjc.dept): TABLE "CJCPDB"."CJC"."DEPT". 2020-04-10T12:55:26.935+0800  WARNING OGG-02180  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Table CJCPDB.CJC.DEPT will use legacy trail format to support parameter LOGALLSUPCOLS. 2020-04-10T12:55:27.748+0800  WARNING OGG-06439  Oracle GoldenGate Capture for Oracle, ext_01.prm:  No unique key is defined for table DEPT. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key. 2020-04-10T12:55:27.748+0800  INFO    OGG-06509  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Using the following key columns for source table CJCPDB.CJC.DEPT: DEPTNO, DNAME, LOC. 2020-04-10T12:55:28.112+0800  INFO    OGG-06507  Oracle GoldenGate Capture for Oracle, ext_01.prm:  MAP (TABLE) resolved (entry cjcpdb.cjc.dept): TABLE "CJCPDB"."CJC"."DEPT". 2020-04-10T12:55:28.112+0800  WARNING OGG-02180  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Table CJCPDB.CJC.DEPT will use legacy trail format to support parameter LOGALLSUPCOLS. 2020-04-10T12:55:28.112+0800  WARNING OGG-06439  Oracle GoldenGate Capture for Oracle, ext_01.prm:  No unique key is defined for table DEPT. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key. 2020-04-10T12:55:28.112+0800  INFO    OGG-06509  Oracle GoldenGate Capture for Oracle, ext_01.prm:  Using the following key columns for source table CJCPDB.CJC.DEPT: DEPTNO, DNAME, LOC. 2020-04-10T12:55:28.955+0800  INFO    OGG-02263  Oracle GoldenGate Capture for Oracle, pump_01.prm:  Passthru MAP (TABLE) resolved (entry cjcpdb.cjc.dept): TABLE "CJCPDB"."CJC"."DEPT". 七 常见问题 问题一: 11g之前版本配置DDL需要关闭recyclebin show parameter recyclebin  alter system set recyclebin=off scope=both;  11g以后版本不在需要关闭recyclebin 问题二: 源端执行DDL相关脚本 SQL> @marker_setup.sql SQL> @ddl_setup.sql SQL> @role_setup.sql SQL> @ddl_enable.sql SQL> @marker_status.sql 在19C环境下,只有marker_setup.sql执行成功,后面脚本不支持cdb模式,测试不执行也可以进行DDL同步。 在执行脚本是碰到如下问题: 1 执行marker_setup.sql脚本hang住1小时没结果 SQL> @/ogg/marker_setup.sql 解决方案:  先切换到ogg目录,在执行脚本 [oracle@cjcos01 ~]$ cd /ogg [oracle@cjcos01 ogg]$ sqlplus c##ogg/oracle  SQL> @marker_setup.sql 2 ddl_setup.sql脚本执行的用户需要有sysdba权限 [oracle@cjcos01 ogg]$ sqlplus c##ogg/oracle  SQL> @ddl_setup.sql ERROR at line 1: ORA-20783: Oracle GoldenGate DDL Replication setup: *** Currently logged user does not have SYSDBA privileges, or not logged AS SYSDBA! *** Please login as SYSDBA. ORA-06512: at line 14 3 ddl_setup.sql不在支持多租户环境 [oracle@cjcos01 ogg]$ sqlplus / as sysdba SQL> @ddl_setup.sql ORA-20783: Oracle GoldenGate DDL Replication setup: *** Trigger based DDL Replication is not supported on a Multitenant database. ORA-06512: at line 14 对于源端cdb模式,goldengate官档明确说明只支持integrated capture,而对于integrated capture 有native ddl模式可用。 欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

相关推荐