goldengate复制同步单表修复
在oracle-oracle goldengate的復制環境中,有時候會碰到一些緊急的問題一時無法修復,為了避免影響整個復制環境的復制進度,采取跳過錯誤事務或者跳過特定對象的辦法使得goldengate繼續同步;如果后續某個表不得不需要重新同步,而且應用是不間斷進行事務操作的,在不停止應用和重建整個復制環境的情況下,為了保證數據的一致性,如何在線對特定的問題對象重新初始化和繼續同步呢?
處理的辦法還是不少的,下面給出一個在replicat端過濾SCN事務的辦法,來實現數據的一致同步。
處理的思路就是首先在target上獲得該表上某個特定SCN版本上的數據(比如使用導入導出或者數據泵),然后通過filter功能來篩選出該表上大于該commit scn的事務,從而確保事務的一致性。在goldengate v10之后,可以通過@GETENV函數直接獲得事務的CSN。
簡單看一下處理步驟,假設目前gg環境中hr.translog表需要重新初始化,由source端hr用戶同步到target端hr2用戶下。
1.停止target上的replicat進程
GGSCI (sh) 44> stop rep_hr2
Sending STOP request to REPLICAT REP_HR2 …?
Request processed.
2.獲得source上hr.translog表的特定SCN一致性版本
SQL> select dbms_flashback.get_system_change_number from dual;
9543774
使用exp進行一致性版本導出
[oracle@gz ~]$ exp hr/hr tables=translog file=translog.dmp?flashback_scn=9543774
Export: Release 10.2.0.1.0 – Production on Tue Aug 9 00:27:42 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.?
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production?
With the Partitioning, OLAP and Data Mining options?
Export done in US7ASCII character set and AL16UTF16 NCHAR character set?
server uses ZHS16GBK character set (possible charset conversion)
About to export specified tables via Conventional Path …?
. . exporting table TRANSLOG 5062409 rows exported?
EXP-00091: Exporting questionable statistics.?
Export terminated successfully with warnings.
3. target上導入一致性版本
[oracle@gz ~]$ imp hr2/hr2@sh tables=translog file=translog.dmp ignore=y
Import: Release 10.2.0.1.0 – Production on Tue Aug 9 00:28:36 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production?
With the Partitioning, OLAP and Data Mining options
Export file created by EXPORT:V10.02.01 via conventional path
Warning: the objects were exported by HR, not by you
import done in US7ASCII character set and AL16UTF16 NCHAR character set?
import server uses ZHS16GBK character set (possible charset conversion)?
. importing HR’s objects into HR2?
. importing HR’s objects into HR2?
. . importing table "TRANSLOG" 50624 rows imported?
IMP-00017: following statement failed with ORACLE error 30567:?
"ALTER TABLE "TRANSLOG" ADD SUPPLEMENTAL LOG GROUP "GGS_TRANSLOG_56459" ("OB"?
"JECT_ID") ALWAYS"?
IMP-00003: ORACLE error 30567 encountered?
ORA-30567: name already used by an existing log group?
Import terminated successfully with warnings.
4. 修改replicat參數,過濾hr.translog上小于SCN 9543774上的事務。
GGSCI (sh) 43> view param rep_hr2
replicat rep_hr2?
USERID gg, PASSWORD AACAAAAAAAAAAACANJPHHDSJCIYCFCZB,ENCRYPTKEY DEFAULT?
assumetargetdefs?
map hr.translog, target hr2.translog,?filter (@GETENV ("transaction", "csn") > 9?
543774);?
map hr.org, target hr2.org;
map hr.unp_file, target hr.unp_file;
5. 啟動replicat進程
GGSCI (sh) 2> start rep_hr2
Sending START request to MANAGER …?
REPLICAT REP_HR2 starting
采用這種辦法,即使source上hr.translog表不斷被DML,因為SCN過濾的存在,保證了復制過程中的數據一致性。對source上的應用來講,也無須額外的停機時間。在初始化過程中,因為target上復制進程的暫停,會影響到復制的實時性, 為減少target上replicat的暫停時間,可以采用分割datapump和replicate group的方法,也可實現特定對象的在線初始化,具體參考goldengate–split replicat group在線重新初始化指定的table
總結
以上是生活随笔為你收集整理的goldengate复制同步单表修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle constraint_ty
- 下一篇: goldengate源端意外宕机,传输进