在原有同步进程里新增同步表的时候,考虑到源端表上可能会有事务,数据是实时变化的,不能单纯的使用expdp直接导出再导入,这样可能会导致丢失数据或者数据重复冲突。针对这种情况,有两种方法可以实现在原有同步进程里添加新表并且可以保证数据一致性,一种是基于SCN的expdp导出,还有一种是基于SCN的flashback query和dblink远程插入(适用于表数据量不大的情况)。
示例:
1.使用基于SCN的expdp导出方法新增表的同步:
1.1 在登录主库,添加该表的附加日志
GGSCI (ngppdg) 4> info credentialstore Reading from ./dircrd/: Default domain: OracleGoldenGate Alias: NGPDBDG Userid: ogg@ngppdg Alias: NGPDB Userid: ogg@NGPDB GGSCI (ngppdg) 5> dblogin useridalias NGPDB Successfully logged into database. GGSCI (ngppdg as ogg@ngpdb2) 6> ADD TRANDATA,ZYNGPRD.PRODUCT_YPDX_GEO;
查看附加日志是否添加成功:
GGSCI (ngppdg as ogg@ngpdb2) 7> INFO TRANDATA,ZYNGPRD.PRODUCT_YPDX_GEO Logging of supplemental redo log data is enabled for table ZYNGPRD.PRODUCT_YPDX_GEO. Columns supplementally logged for table ZYNGPRD.PRODUCT_YPDX_GEO: GEO_ID, PRODUCT_ID, SALE_PRODUCT_ID. Prepared CSN for table ZYNGPRD.PRODUCT_YPDX_GEO: 33731391784
1.2 编辑抽取进程添加该表,重启抽取进程
GGSCI (ngppdg as ogg@ngpdb2) 8> edit params ngp_e01 GGSCI (ngppdg as ogg@ngpdb2) 9> view params ngp_e01 EXTRACT NGP_E01 SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8") USERIDALIAS NGPDBDG FETCHOPTIONS USESNAPSHOT FETCHOPTIONS USELATESTVERSION LOGALLSUPCOLS UPDATERECORDFORMAT FULL TRANLOGOPTIONS MINEFROMACTIVEDG EXTTRAIL /u01/app/OGG12_2/dirdat/ng TABLE ZYNGPRD.PRODUCT_SHIPMENT_BOX_TYPE; TABLE ZYNGPRD.E_PRODUCT_STORE_ADDRESS; TABLE ZYNGPRD.STORE_STATUS; TABLE ZYNGPRD.PARTY_TYPE; TABLE ZYNGPRD.PARTY_GROUP; TABLE ZYNGPRD.GEO; TABLE ZYNGPRD.PRODUCT_STORE_TYPE; TABLE ZYNGPRD.PRODUCT_STORE; TABLE ZYNGPRD.PRODUCT; TABLE ZYNGPRD.PRODUCT_TYPE; TABLE ZYNGPRD.ZDEV_PARAM_CONTENT; TABLE ZYNGPRD.UOM; TABLE ZYNGPRD.GOOD_IDENTIFICATION; --20200821 TABLE ZYNGPRD.PRODUCT_YPDX_GEO; GGSCI (ngppdg as ogg@ngpdb2) 10> stop ngp_e01 Sending STOP request to EXTRACT NGP_E01 ... STOP request pending end-of-transaction (1 records so far).. GGSCI (ngppdg as ogg@ngpdb2) 11> start ngp_e01 Sending START request to MANAGER ... EXTRACT NGP_E01 starting
1.3编辑pump进程,添加该表
GGSCI (ngppdg as ogg@ngpdb2) 13> edit params ngp_p01 GGSCI (ngppdg as ogg@ngpdb2) 14> stop ngp_p01 Sending STOP request to EXTRACT NGP_P01 ... Request processed. GGSCI (ngppdg as ogg@ngpdb2) 15> start ngp_p01 Sending START request to MANAGER ... EXTRACT NGP_P01 starting GGSCI (ngppdg as ogg@ngpdb2) 16> view params ngp_p01
1.4 查看当前复制进程状态,确认无延迟后,停止复制进程,查询主库当前的SCN
GGSCI (zysf as ogg@crmngpsd) 8> lag ngp_r01 Sending GETLAG request to REPLICAT NGP_R01 ... Last record lag 5 seconds. Low watermark lag: 6. High watermark lag: 6. Low watermark position: 37244483463. High watermark position: 37244483468. At EOF, no more records to process. GGSCI (zysf as ogg@crmngpsd) 9> stop ngp_r01 Sending STOP request to REPLICAT NGP_R01 ... Request processed. [oracle@NGPDB01 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu Sep 3 14:54:38 2020 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> select to_char(current_scn) from v$database; TO_CHAR(CURRENT_SCN) ---------------------------------------- 33731759127
1.5 在主库执行基于SCN的expdp导出,并上传到目标数据库服务器上进行导入
expdp \'/ as sysdba\' directory=dmpdir dumpfile=T.dmp tables=ZYNGPRD.PRODUCT_YPDX_GEO compression=all flashback_scn=33731759127 impdp \'/ as sysdba\' directory=dumpdir dumpfile=T.dmp
1.6 编辑复制经常,添加同步表的映射关系
GGSCI (zysf as ogg@crmngpsd) 12> edit params ngp_r01
--添加如下内容,注意标红的部份,添加导出时的SCN号,这样启动进程后,该表会从该SCN往后应用trail日志,实现数据的一致性
MAP ZYNGPRD.PRODUCT_YPDX_GEO, TARGET ZYNGPRD.PRODUCT_YPDX_GEO,
FILTER ( @GETENV ('TRANSACTION', 'CSN') >33731759127);
1.7 启动复制进程
GGSCI (zysf as ogg@crmngpsd) 13> start ngp_r01 Sending START request to MANAGER ... REPLICAT NGP_R01 starting
2.使用基于SCN的flashback query +dblink远程插入
和第一种方式相比,该方式除了上面1.5的步骤不一样,其他步骤基本上是一致的。这里就不重复把全部步骤写出,只写出和第一种方式不同的步骤,之前的操作参考1.1-1.4
2.1 源端导出表结构建表语句.sql的文件,并去目标端数据库执行创建表
CREATE TABLE "ZYNGPRD"."PRODUCT_YPDX_GEO"
("GEO_ID" VARCHAR2(20),
"SALE_PRODUCT_ID" VARCHAR2(20),
"PRODUCT_ID" VARCHAR2(20),
"MEMO" VARCHAR2(200),
"UDP1" VARCHAR2(200),
"USER_ID" VARCHAR2(25),
"UPDATE_USER_ID" VARCHAR2(25),
"LAST_UPDATED_STAMP" TIMESTAMP (6),
"LAST_UPDATED_TX_STAMP" TIMESTAMP (6),
"CREATED_STAMP" TIMESTAMP (6),
"CREATED_TX_STAMP" TIMESTAMP (6),
CONSTRAINT "PK_PRODUCT_YPDX_GEO" PRIMARY KEY ("GEO_ID", "SALE_PRODUCT_ID", "PRODUCT_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "ZYNGPRD_TBS"
2.2 进行基于flashback query和dblink的远程插入操作
--目标端数据库执行下面插入,其中 NGPDBDG 是源端数据库的dblink
INSERT INTO ZYNGPRD.PRODUCT_YPDX_GEO SELECT * FROM ZYNGPRD.PRODUCT_YPDX_GEO@NGPDBDG AS OF SCN 33731759127;
后续操作参考1.6-1.7
总结:这两种在原有进程里新增表同步的方法实质上都是基于SCN的导出操作,如果时从备库抽取数据,并且主库有一定限制不方便使用expdp进行导出,那么就可以使用第二种方法,否则可以在大量数据的情况下,第一种方法的效率更高。需要注意的两点就是:1.执行scn的导出或者闪回查询远程插入之前,
一定要停止复制进程,这样防止丢失导出到停止复制进程这段时间的事务变化的数据。2.最后启动复制进程的时候,
不能执行start XXX,aftercsn xxxxxxxx这样去启动,否则会丢失除了这张表以外该进程所有表在停止复制进程和开始基于SCN导出时这段时间内的所有数据,这种方法只适用于新增同步进程里添加表的操作。
编辑推荐:
- GoldenGate 12c 在原有同步进程中新增同步表的操作步骤03-03
- 显示日期格式03-03
- Oracle 11GR2 DG部署03-03
- rac日志收集方法03-03
- Oracle12C查询自建用户(非系统自带)03-03
- ORA-0155 表空间的添加、修改、删除03-03
- 快速检查数据库一致性03-03
- [20200904]12c invisible column impdp segment_column_id.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- ORA-0155 表空间的添加、修改、删除
ORA-0155 表空间的添加、修改、删除
26-03-03 - Oracle EMCC 12c emcli命令行工具安装以及使用介绍
Oracle EMCC 12c emcli命令行工具安装以及使用介绍
26-03-03 - 三星显示 MWC 进行高尔夫推杆、篮球投篮测试,展示可折叠 OLED 耐用性
- 云原生冷知识大挑战,答对一半算你赢!
云原生冷知识大挑战,答对一半算你赢!
26-03-03 - 19c 增加mgmt
19c 增加mgmt
26-03-03 - 互联网短视频平台,
互联网短视频平台,
26-03-03 - TrendForce:2025Q4 五大 NAND 闪存原厂相关营收环比增长 23.8%
- BI Publisher(rtf)模板开发语法大全
BI Publisher(rtf)模板开发语法大全
26-03-03 - 批量复制新浪微博相册图片及视频,你都是怎么操作的呢?
批量复制新浪微博相册图片及视频,你都是怎么操作的呢?
26-03-03 - 一句话一张图概括群控
一句话一张图概括群控
26-03-03
