GoldenGate 12c 在原有同步程式中新增同步表的操作步驟
在原有同步程式裡新增同步表的時候,考慮到源端表上可能會有事務,資料是實時變化的,不能單純的使用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匯出時這段時間內的所有資料,這種方法只適用於新增同步程式裡新增表的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982136/viewspace-2716898/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Goldengate單表新增同步Go
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- GoldenGate單向表DML同步Go
- goldengate對oracle臨時表的同步GoOracle
- 配置支援DML和DDL操作同步的GoldenGateGo
- GoldenGate重新同步個別表流程Go
- goldengate同步中更改資料表結構維護Go
- goldengate同步中文表名列名的測試Go
- pg 用ogg 同步大概步驟
- 配置GoldenGate啟動DDL支援同步DDL操作Go
- 利用goldengate進行同步操作測試Go
- goldengate同步中文表名列名的測試 --續Go
- 模擬一下goldengate中斷後,重新同步操作Go
- Promise-在Java中以同步的方式非同步程式設計PromiseJava非同步程式設計
- GoldenGate無法同步壓縮表問題Go
- goldengate 刪除複製程式步驟Go
- OGG實施操作步驟(包括操作過程中的所有步驟)
- ogg 同步pg資料到oracle--步驟Oracle
- Win10便箋如何同步 Win10便籤同步的設定步驟Win10
- 微信小程式的同步操作微信小程式
- 【GoldenGate】Oracle GoldenGate(三) DDL同步配置GoOracle
- goldengate同步資料的同步速度測試記錄Go
- GoldenGate雙向同步配置Go
- GoldenGate同步初始化Go
- 可以中斷的非同步操作非同步
- goldengate 目的端同步無主鍵無索引表時的rpt日誌(做update操作)Go索引
- Oracle GoldenGate系統之----單向同步資料表OracleGo
- Oracle GoldenGate系統之----雙向同步資料表OracleGo
- 【GoldenGate】Oracle GoldenGate(二) 雙向同步配置GoOracle
- 操作步驟
- 12c中新增PDB後GoldenGate的配置Go
- JS中的非同步操作總結JS非同步
- Oracle Dataguard + Goldengate資料同步OracleGo
- mysql goldengate同步 簡單配置MySqlGo
- GoldenGate同步DML功能測試Go
- DKHhadoop叢集新增節點管理功能的操作步驟Hadoop
- Oracle GoldenGate系統之----單向同步資料表(續)OracleGo
- GoldenGate軟體升級步驟Go