OGG資料庫遷移方案(三)
的安裝與配置
配置GoldenGate 進行資料複製,主要包括如下環節:
n 對源端和目標端GoldenGate 工作環境的檢查
n 在源和目標環境分別安裝GoldenGate 軟體
n 配置源端
n 目標庫的初始化
n 配置目標端
n 啟動GoldenGate ,執行資料複製
下文將對這些部分詳細說明。
環境介紹:
源端:AIX 5.3 、oracle 10.2.0.4 、2 節點RAC
目標端: Linux X86 64bit 、oracle 11.2.0.4 、2 節點RAC
ogg 程式配置:
對於資料變化量不大的系統(每天生成歸檔量小於500G ),通常源端只配置一個extract 程式即可滿足要求。目標端配置replicat 程式的多少依賴於複製效率,可以根據具體情況進行拆分。
複製的表
對於靜態表,不建議透過OGG 複製。
無法透過OGG 或者不需要透過OGG 進行復制的表,將在割接期間採用傳統的expdp & impdp 的方式實現。
需要從以下方面保證OGG 在同步過程中的資料一致性:
n 需要逐表檢查所複製的表的附加日誌已經開啟
n 保證初始化資料的完整性。
n 對於目標庫:
n 必須避免後臺的Job, 包括:Crontab Job ,資料庫內部的 job ;華為TaskMon 工具等。
n 避免人為修改目標端表中的資料
n 監視觸發器的狀態(最好匯入時在目標庫drop 觸發器)、避免有級聯觸發器等。
n 對於所複製的表,在同步期間(即開始同步到上線割接)避免修改表的主鍵或者索引欄位。
n 可以在執行資料同步期間把資料庫中其它資料庫使用者的賬號lock 。
如果在OGG 同步期間發現個別表的同步出現問題,可以參照以下的步驟處理:
1. 將出現問題的表從複製程式中去掉
stop rep1
edit param rep1
刪除或者注視出現問題的表的一行配置,比如去除tbcs.ogg_test表的複製,為其增加註釋:
-- MAP tbcs.ogg_test, TARGET tbcs.ogg_test;
start rep1
2. 重新初始化出現問題的表的資料
在目標端:
truncate table tbcs.ogg_test;
使用Data Pump匯入問題表的資料:
選擇一個系統負載低的時刻,首先從生產庫查詢出一個當前的SCN,比如:
col current_scn for 99999999999999999999
select current_scn from v$database;
12872889897855
使用這個SCN作為flashback_scn值進行匯出&匯入:
flashback_scn = 12872889897855
注意:僅匯入資料,不要匯入觸發器
記錄該SCN對應的時間點以及在目標端的trail檔案的序號:
cd $GG_HOME/dirdat01
ls –ltr
資料匯入完成後在目標端新建一個複製程式,主要步驟參見“3.8.8 配置OGG的複製程式Replicat”小節。
不同之處如下:
在啟動新建的複製程式之前,需要增加一個操作:
alter r_tbcs_01 extseqno xx, extrba 0
GSCI (kdyyb1) 2> info r_tbcs
REPLICAT R_TBCS Last Started 2015-03-04 18:45 Status RUNNING
Checkpoint Lag 00:00:02 (updated 00:00:00 ago)
Log Read Checkpoint File ./dirdat01/tb000179
2015-03-05 14:54:38.002275 RBA 58679836
注意新建的複製程式的“Log Read Checkpoint”是剛修改的檔案序號,並且RBA為0。
在使用前面步驟的SCN啟動新建的複製程式。
如果需要重新對目標庫重建,可以參考如下步驟:
1. 停止目標端的複製程式(不要停止manager 程式),源端不作處理(即保持資料抽取的狀態)
ggsci
stop *
2. 刪除所有目標端的抽取程式
dblogin userid ggadmin, password AACAAAAAAAAAAAIAKBWGTCOFUEPDSFQH , encryptkey default
delete recpliat r_tbcs
……
3. truncate 所有OGG 複製的表
剩下的步驟參見本文“3.6 源端配置”小節。
不同之處如下:
在增加了新建的複製程式之前,需要增加一個操作:
alter rep1 extseqno xx, extrba 0
這個trail 檔案的序號使用資料初始化時的SCN 對應的時間點,可以再往前一些。
複製的效率
作為一種準實時的資料同步工具,OGG 的同步有三個方面的延遲:
n 抽取,即Extract 程式
n 傳輸或者分發,即Data Pump 程式
n 複製,即Replicat 程式
需要察看這三個環節分別的延遲(即lag ),命令是:
登入的源或者目標端主機:
cd $GG_HOME
./ggsci
info all
-- 注意觀察每個程式的lag值
更的方式是使用lag命令,即
lag ext1
lag dp1
lag rep1
在配置好OGG 的同步後,需要監視lag ,如果發現lag 逐漸變長則需要處理。
檔案的管理
OGG 透過manager 程式實現對trail 檔案的自動清除操作。有兩種清除策略:時間或者檔案的數量。
分別透過如下引數配置:
n MinKeepDays 或者MinKeepHours
MinKeepFiles :透過這種方式可以限制trail檔案佔用空間的總體大小(在複製正常的時刻)。
現在Oracle工程師將源端配置為
MinKeepHours 12
目標端:
MinKeepDays 1
客戶可以根據需要進行調整。
在割接當天要特別注意避免長交易,因為如果需要重起抽取程式的話,抽取程式在啟動後需要花一些時間才能追上,這樣可能會影響割接進度
說明:正常情況下僅需要停止抽取程式而不需要再啟動,則這方面沒有關係。
在重起抽取程式後OGG 需要從最早事務開始時刻的redo 中讀取資料,因此需要訪問一定量的歸檔檔案,如果因為備份已經將最近的歸檔檔案成功備份後刪除,抽取程式就會出錯,為此可以對備份策略進行調整,比如備份8 個小時之前的歸檔(這樣可以保留最近8 個小時的歸檔檔案):
backup
archivelog until time 'sysdate-1/12'
的監控
對OGG 的監控主要包括以下方面:
n 對程式的監控,即使用info all 命令檢視源端和目標端的相關程式,其狀態為“RUNNING ”
n 對Trail 檔案佔用磁碟空間的監控
n 對lag 的監控:參見前文。
工作環境的檢查
對xlC 和libpthreads 版本要求
本節內容適用於源和目標端。
根據MOS 文件“Oracle GoldenGate GGSCI fails with "0509-036 Cannot load program ggsci because of the following errors:" (Doc ID 1108601.1) ”, GoldenGate 從版本V10 開始在AIX 5.3 平臺上對xlC 庫有如下的最小版本要求:
xlC.aix50.rte 10.1.0.0 COMMITTED XL C/C++ Runtime for AIX 5.3
xlC.msg.en_US.rte 10.1.0.0 COMMITTED XL C/C++ Runtime
xlC.rte 10.1.0.0 COMMITTED XL C/C++ Runtime
還要求libpthreads 庫具有5.3.0.51 或以上版本。
可以透過以下命令檢視xlC 和libpthreads 版本:
檢視xlC 版本:
# lslpp -l | grep -i xlc
檢視libpthreads 版本:
lslpp -h bos.rte.libpthreads
如果發現當前Aix 平臺下的xlC 或者libpthreads 版本低於規定版本則必須首先升級,然後才能安裝GoldenGate 軟體。
由於受到GoldenGate 工作機制的限制,源庫資料庫必須滿足一定的條件,才能保證GoldenGate 可以工作正常,這些條件包括:
n 資料庫執行於歸檔日誌模式下。
n 在資料庫級別開啟了Force Logging 。
n 在資料庫級別開啟了最小附加日誌(supplemental log min )。
檢查資料庫是否處於歸檔模式:
select log_mode from v$database;
使用以下SQL 語句檢查資料庫Force Logging 和附加日誌的開啟狀況:
select supplemental_log_data_min, force_logging
from v$database;
確定需要複製的表。
不能配置防火牆來阻止源端主機和目標端主機之間GoldenGate 使用的埠。具體埠是在源端和目標端mgr 程式配置中指定的埠,當前配置環境下使用的埠是: 7809 - 7820
軟體安裝
首先要為GoldenGate 軟體劃分適當的叢集檔案系統(比如GPFS 等),以/arch 為例。Goldengate 最好安裝在共享檔案系統上,但不是必須。
登入RAC 的節點1 主機,使用作業系統oracle 使用者(即Oracle 資料庫軟體的安裝和執行使用者)來安裝GoldenGate 。所使用的GoldenGate 軟體版本為11.2.1.0.18 。
GoldenGate for 10g : p18307056_1121018_AIX64-5L.zip
將安裝介質p18307056_1121018_AIX64-5L.zip 檔案上傳到資料庫伺服器/ogg 目錄,使用unzip 命令解壓縮,會出現ggs_AIX_ppc_ora10.2_64bit.tar 檔案,再使用tar 對該檔案解報。解壓縮/ 解包的過程就是安裝過程。
cd /arch/ogg
unzip p18307056_1121018_AIX64-5L.zip
tar xvf ggs_AIX_ppc_ora10.2_64bit.tar
解壓後,建立 GoldenGate 需要的子目錄(使用create subdirs 命令):
cd /arch/ogg
./ggsci
Oracle GoldenGate Command Interpreter for Oracle
… …
GGSCI (aaopdb2) 1> create subdirs
Creating subdirectories under current directory /arch/ogg
Parameter files /arch/ogg/dirprm: already exists
Report files /arch/ogg/dirrpt: created
Checkpoint files /arch/ogg/dirchk: created
Process status files /arch/ogg/dirpcs: created
SQL script files /arch/ogg/dirsql: created
Database definitions files /arch/ogg/dirdef: created
Extract data files /arch/ogg/dirdat1: created
Temporary files /arch/ogg/dirtmp: created
Stdout files /arch/ogg/dirout: created
編輯oracle 使用者主目錄下的.profile 檔案,在檔案末尾追加以下內容:
export GG_HOME=/arch/ogg
export LIBPATH=$LIBPATH:$GG_HOME:$ORACLE_HOME/lib
的資料庫使用者
在舊營業系統庫建立GoldenGate 執行所需要的資料庫使用者。
使用下面的SQL 建立GoldenGate 的資料庫使用者ggadmin :
-- 源端資料庫:
create tablespace goldengate datafile 'xxx' size 10g autoextend on;
/* 配置DDL同步,必須為goldengate使用者分配單獨的表空間,且自動擴充套件 */
create user ggadmin identified by ggadmin default tablespace ogg temporary tablespace temp;
grant dba to ggadmin;
為滿足GoldenGate 的工作條件,必須對源端資料庫進行如下的配置:
$ sqlplus / as sysdba
-- 檢查foce logging當前是否啟用:
SQL> set linesize 80
SQL> col name format a20
SQL> col force_logging format a20
SQL>
SQL> select d.name, d.force_logging from v$database d;
-- 如果“force_logging”欄位的返回值為“YES”,則已經啟用,不需要執行下面的SQL;否則執行:
SQL> alter database force logging;
-- 重新執行上面的檢查SQL,確認返回值為“YES”。
如果需要進行回退,關閉強制日誌模式,請使用以下 sql :
alter database no force logging;
根據MOS 文件“How To Turn On Supplemental Logging At The Database Or The Table Level (Oracle Specific) (Doc ID 1059352.1) ”,GoldenGate 必須要求開啟附加日誌並同時切換日誌:
$ sqlplus / as sysdba
-- 檢查資料庫級別的 Logging是否開啟:
SQL> set linesize 80
SQL> col supplemental_log_data_min format a30
SQL>
-- 如果“supplemental_log_data_min”欄位的返回值為“YES”,則已經啟用,不需要執行下面的SQL;--- 否則執行:
SQL> alter database add supplemental log data;
-- 重新執行上面的檢查SQL,確認返回值為“YES”。
-- 執行日誌檔案的切換(This change to add supplemental logging will not take effect until the -- current redo log -- is switched, so the following command must also be executed):
SQL> alter system switch logfile;
回退操作:如果出現問題,可以透過以下語句進行回退:
SQL> alter database drop supplemental log data ;
選取一個schema 建立一個名為ogg_test 的測試表,建立指令碼如下:
create table SCHEMA .ogg_test(id number, in_date date);
為所有需要進行復制的表生成add trandata 命令:
由於每個schema 包含的表較多,執行該步驟會花費很長時間,可以多開幾個視窗並行執行。
GGSCI > dblogin userid ggadmin, password ggadmin
add trandata SI_INFORMTN_SCHEMA.*
add trandata ORDPLUGINS.*
add trandata PRDXIVMILC.*
add trandata PRDABPPSZVMIREAD.*
add trandata PRDABPPWHVMIREAD.*
add trandata PRDABPPXMVMIREAD.*
add trandata PRDABPPWHBSVMIREAD.*
add trandata PRDHKFGVMIREAD.*
add trandata PRDXIVMI1.*
add trandata PRDXIVMIBRP.*
add trandata SHARING.*
add trandata PRDSPUSERVMI2READ.*
add trandata PRDVMIBRPREAD.*
add trandata PRDSPUSERVMI1READ.*
add trandata PRDHKFGSPVMI.*
add trandata PRDINFOVMIK2.*
add trandata PRDINFREPVMI.*
add trandata PRDSPUSERVMI3.*
add trandata PRDSPVMIBRP.*
add trandata PRDSPUSERVMI2.*
add trandata CSETRACK.*
add trandata PRDCSE.*
add trandata PRDCSEVMI3.*
add trandata PRDCSEVMI2.*
add trandata PRDCSEVMIBRP.*
add trandata PRDCSEVMI1.*
add trandata PRDABPPCDVMIREAD.*
add trandata PRDABPPSHVMIREAD.*
add trandata PRDABPPBSVMIREAD.*
add trandata PRDSPUSERVMI1.*
add trandata PRDABPPWHBSVMI.*
add trandata PRDABPPSZVMI.*
add trandata PRDABPPWHVMI.*
add trandata PRDABPPXMVMI.*
add trandata PRDABPPSHVMI.*
add trandata PRDABPPCDVMI.*
add trandata PRDHKFGVMI.*
add trandata PRDABPPVMI3.*
add trandata PRDABPPVMIBRP.*
add trandata PRDABPPVMI1.*
add trandata PRDABPPVMI2.*
add trandata PRDABPPBSVMI.*
add trandata PUBLIC.*
檢查表的SUPPLEMENTAL_LOG是否開啟:
/* 出現如下資訊說明開啟supplemental log,若出現disable 說明未開啟
Logging of supplemental redo log data is enabled for table PRDABPPVMI1.AGGLVLCRITERIA_NC.
對未開啟supplemental log的表需要單獨新增,執行:
add trandata username.TABLE_NAME
info trandata SI_INFORMTN_SCHEMA.*
info trandata ORDPLUGINS.*
info trandata PRDXIVMILC.*
info trandata PRDABPPSZVMIREAD.*
info trandata PRDABPPWHVMIREAD.*
info trandata PRDABPPXMVMIREAD.*
info trandata PRDABPPWHBSVMIREAD.*
info trandata PRDHKFGVMIREAD.*
info trandata PRDXIVMI1.*
info trandata PRDXIVMIBRP.*
info trandata SHARING.*
info trandata PRDSPUSERVMI2READ.*
info trandata PRDVMIBRPREAD.*
info trandata PRDSPUSERVMI1READ.*
info trandata PRDHKFGSPVMI.*
info trandata PRDINFOVMIK2.*
info trandata PRDINFREPVMI.*
info trandata PRDSPUSERVMI3.*
info trandata PRDSPVMIBRP.*
info trandata PRDSPUSERVMI2.*
info trandata CSETRACK.*
info trandata PRDCSE.*
info trandata PRDCSEVMI3.*
info trandata PRDCSEVMI2.*
info trandata PRDCSEVMIBRP.*
info trandata PRDCSEVMI1.*
info trandata PRDABPPCDVMIREAD.*
info trandata PRDABPPSHVMIREAD.*
info trandata PRDABPPBSVMIREAD.*
info trandata PRDSPUSERVMI1.*
info trandata PRDABPPWHBSVMI.*
info trandata PRDABPPSZVMI.*
info trandata PRDABPPWHVMI.*
info trandata PRDABPPXMVMI.*
info trandata PRDABPPSHVMI.*
info trandata PRDABPPCDVMI.*
info trandata PRDHKFGVMI.*
info trandata PRDABPPVMI3.*
info trandata PRDABPPVMIBRP.*
info trandata PRDABPPVMI1.*
info trandata PRDABPPVMI2.*
info trandata PRDABPPBSVMI.*
info trandata PUBLIC.*
管理程式mgr
在舊營業系統執行該配置任務。
$ cd /arch/ogg
$ ./ggsci
編輯mgr 程式配置引數,配置資訊將儲存於./dirprm/mgr.prm 檔案中。
ggsci> edit params mgr
執行後將進入vi 編輯模式,輸入以下內容。
在源端:
Port 7809
DynamicPortList
DynamicPortReassignDelay 5
-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60
LagReportHours 1
LagInfoMinutes 3
LagCriticalMinutes 5
儲存並退出vi 編輯。啟動源端的mgr 管理程式:
ggsci> start mgr
的DDL 複製
關閉回收站功能( 重啟資料庫生效)
alter system set recyclebin=off scope=spfile;
EDIT PARAMS ./GLOBALS
輸入以下內容
GGSCHEMA ggadmin
執行一系列同步DLL 語句要用到的GoldenGate 指令碼,這些指令碼存放在GG 的安裝目錄下:
停止所有資料庫連線( sqlplus 、 goldengate 以及所有應用連線),執行過程中不要有新的連線 。
以SYSDBA 身份登入
sqlplus / as sysdba
SQL> GRANT EXECUTE ON utl_file TO GGADMIN;
SQL> @marker_setup ggadmin
SQL> @ddl_setup
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to GGADMIN;
SQL> @ddl_enable
SQL> @?/rdbms/admin/dbmspool
SQL> @ddl_pin
複製支援
在主端和備端都執行sequence.sql
SQL> @sequence.sql ggadmin
在主端執行下面的命令
GRANT EXECUTE on ggadmin.updateSequence TO ggadmin;
在目標端端執行
GRANT EXECUTE on ggadmin.replicateSequence TO ggadmin;
在源端執行下面的命令
alter table sys.seq$ add supplemental log data (primary key) columns;
的資料抽取程式Extract
Extract 抽取程式 ext1
ADD EXTRACT ext1, TRANLOG, THREADS 2, BEGIN NOW
建立ext1 程式的資料佇列檔案:
ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1, Megabytes 200
檢查配置是否正確:
GGSCI> INFO EXTRACT *
編輯ext1 程式引數設定,配置資訊將儲存於./dirprm/ext1.prm 檔案中。
ggsci> edit params ext1
ext1 抽取程式引數配置如下:(包含所有schema )
SETENV (NLS_LANG=American_America.UTF8)
UserID ggadmin, Password ggadmin
DiscardFile ./dirrpt/ext1.dsc, append, Megabytes 200
Extract ext1
SETENV (NLS_LANG=American_America.UTF8)
UserID ggadmin@netdb, Password ggadmin
ExtTrail ./dirdat/lt
--TranlogOptions RawDeviceOffset 0
DynamicResolution
GETTRUNCATES
DDL INCLUDE OBJNAME I_INFORMTN_SCHEMA.* &
INCLUDE OBJNAME ORDPLUGINS.* &
INCLUDE OBJNAME PRDXIVMILC.* &
INCLUDE OBJNAME PRDABPPSZVMIREAD.* &
INCLUDE OBJNAME PRDABPPWHVMIREAD.* &
INCLUDE OBJNAME PRDABPPXMVMIREAD.* &
INCLUDE OBJNAME PRDABPPWHBSVMIREAD.* &
INCLUDE OBJNAME PRDHKFGVMIREAD.* &
INCLUDE OBJNAME PRDXIVMI1.* &
INCLUDE OBJNAME PRDXIVMIBRP.* &
INCLUDE OBJNAME SHARING.* &
INCLUDE OBJNAME PRDSPUSERVMI2READ.* &
INCLUDE OBJNAME PRDVMIBRPREAD.* &
INCLUDE OBJNAME PRDSPUSERVMI1READ.* &
INCLUDE OBJNAME PRDHKFGSPVMI.* &
INCLUDE OBJNAME PRDINFOVMIK2.* &
INCLUDE OBJNAME PRDINFREPVMI.* &
INCLUDE OBJNAME PRDSPUSERVMI3.* &
INCLUDE OBJNAME PRDSPVMIBRP.* &
INCLUDE OBJNAME PRDSPUSERVMI2.* &
INCLUDE OBJNAME CSETRACK.* &
INCLUDE OBJNAME PRDCSE.* &
INCLUDE OBJNAME PRDCSEVMI3.* &
INCLUDE OBJNAME PRDCSEVMI2.* &
INCLUDE OBJNAME PRDCSEVMIBRP.* &
INCLUDE OBJNAME PRDCSEVMI1.* &
INCLUDE OBJNAME PRDABPPCDVMIREAD.* &
INCLUDE OBJNAME PRDABPPSHVMIREAD.* &
INCLUDE OBJNAME PRDABPPBSVMIREAD.* &
INCLUDE OBJNAME PRDSPUSERVMI1.* &
INCLUDE OBJNAME PRDABPPWHBSVMI.* &
INCLUDE OBJNAME PRDABPPSZVMI.* &
INCLUDE OBJNAME PRDABPPWHVMI.* &
INCLUDE OBJNAME PRDABPPXMVMI.* &
INCLUDE OBJNAME PRDABPPSHVMI.* &
INCLUDE OBJNAME PRDABPPCDVMI.* &
INCLUDE OBJNAME PRDHKFGVMI.* &
INCLUDE OBJNAME PRDABPPVMI3.* &
INCLUDE OBJNAME PRDABPPVMIBRP.* &
INCLUDE OBJNAME PRDABPPVMI1.* &
INCLUDE OBJNAME PRDABPPVMI2.* &
INCLUDE OBJNAME PRDABPPBSVMI.* &
INCLUDE OBJNAME PUBLIC'.*
DDLOPTIONS REPORT
--DDLOPTIONS UPDATEMETADATA, REPORT
DDLOPTIONS ADDTRANDATA, REPORT
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
TRANLOGOPTIONS EXCLUDEUSER ggadmin
TABLEEXCLUDE PRDABPPVMI2.RUPD$*;
TABLEEXCLUDE PRDABPPVMI3.RUPD$*;
TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;
TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;
TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;
TABLEEXCLUDE PRDABPPVMI1.RUPD$*;
TABLEEXCLUDE PRDHKFGVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMI2.MLOG$*;
TABLEEXCLUDE PRDABPPVMI3.MLOG$*;
TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;
TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;
TABLEEXCLUDE PRDABPPVMI1.MLOG$*;
TABLEEXCLUDE PRDHKFGVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;
TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;
TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;
TABLE SI_INFORMTN_SCHEMA.*;
TABLE ORDPLUGINS.*;
TABLE PRDXIVMILC.*;
TABLE PRDABPPSZVMIREAD.*;
TABLE PRDABPPWHVMIREAD.*;
TABLE PRDABPPXMVMIREAD.*;
TABLE PRDABPPWHBSVMIREAD.*;
TABLE PRDHKFGVMIREAD.*;
TABLE PRDXIVMI1.*;
TABLE PRDXIVMIBRP.*;
TABLE SHARING.*;
TABLE PRDSPUSERVMI2READ.*;
TABLE PRDVMIBRPREAD.*;
TABLE PRDSPUSERVMI1READ.*;
TABLE PRDHKFGSPVMI.*;
TABLE PRDINFOVMIK2.*;
TABLE PRDINFREPVMI.*;
TABLE PRDSPUSERVMI3.*;
TABLE PRDSPVMIBRP.*;
TABLE PRDSPUSERVMI2.*;
TABLE CSETRACK.*;
TABLE PRDCSE.*;
TABLE PRDCSEVMI3.*;
TABLE PRDCSEVMI2.*;
TABLE PRDCSEVMIBRP.*;
TABLE PRDCSEVMI1.*;
TABLE PRDABPPCDVMIREAD.*;
TABLE PRDABPPSHVMIREAD.*;
TABLE PRDABPPBSVMIREAD.*;
TABLE PRDSPUSERVMI1.*;
TABLE PRDABPPWHBSVMI.*;
TABLE PRDABPPSZVMI.*;
TABLE PRDABPPWHVMI.*;
TABLE PRDABPPXMVMI.*;
TABLE PRDABPPSHVMI.*;
TABLE PRDABPPCDVMI.*;
TABLE PRDHKFGVMI.*;
TABLE PRDABPPVMI3.*;
TABLE PRDABPPVMIBRP.*;
TABLE PRDABPPVMI1.*;
TABLE PRDABPPVMI2.*;
TABLE PRDABPPBSVMI.*;
TABLE PUBLIC.*;
SEQUENCE PRDABPPVMI2.*;
SEQUENCE PRDABPPVMI3.*;
SEQUENCE PRDABPPWHVMI.*;
SEQUENCE PRDSPUSERVMI1.*;
SEQUENCE PRDSPUSERVMI2.*;
SEQUENCE PRDHKFGSPVMI.*;
SEQUENCE PRDABPPCDVMI.*;
SEQUENCE PRDSPVMIBRP.*;
SEQUENCE PRDABPPBSVMI.*;
SEQUENCE PRDABPPXMVMI.*;
SEQUENCE PRDABPPSZVMI.*;
SEQUENCE PRDABPPWHBSVMI.*;
SEQUENCE PRDABPPVMIBRP.*;
SEQUENCE SHARING.*;
SEQUENCE PRDABPPVMI1.*;
SEQUENCE PRDHKFGVMI.*;
SEQUENCE PRDSPUSERVMI3.*;
SEQUENCE PRDABPPSHVMI.*;
的資料傳輸程式Datapump
dp1 :
ADD EXTRACT dp1, exttrailsource ./dirdat/lt, begin now
建立遠端佇列檔案:
ADD RMTTRAIL ./dirdat/rt, EXTRACT dp1, Megabytes 200
編輯dp1 程式引數設定,配置資訊將儲存於./dirprm/dp1.prm 檔案中。
ggsci> edit params dp1
dp1 傳輸程式引數配置如下:
Extract dp1
RmtHost 10.99.205.76, MgrPort 7809, timeout 30, Compress
RmtTrail ./dirdat/rt
Passthru
TABLEEXCLUDE PRDABPPVMI2.RUPD$*;
TABLEEXCLUDE PRDABPPVMI3.RUPD$*;
TABLEEXCLUDE PRDABPPWHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPCDVMI.RUPD$*;
TABLEEXCLUDE PRDABPPBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPXMVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSZVMI.RUPD$*;
TABLEEXCLUDE PRDABPPWHBSVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMIBRP.RUPD$*;
TABLEEXCLUDE PRDABPPVMI1.RUPD$*;
TABLEEXCLUDE PRDHKFGVMI.RUPD$*;
TABLEEXCLUDE PRDABPPSHVMI.RUPD$*;
TABLEEXCLUDE PRDABPPVMI2.MLOG$*;
TABLEEXCLUDE PRDABPPVMI3.MLOG$*;
TABLEEXCLUDE PRDABPPWHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPCDVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPXMVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSZVMI.MLOG$*;
TABLEEXCLUDE PRDABPPWHBSVMI.MLOG$*;
TABLEEXCLUDE PRDABPPVMIBRP.MLOG$*;
TABLEEXCLUDE PRDABPPVMI1.MLOG$*;
TABLEEXCLUDE PRDHKFGVMI.MLOG$*;
TABLEEXCLUDE PRDABPPSHVMI.MLOG$*;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_UI_GROUPITEM;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SPRBOM_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_PCDW_BOMCONFLICT;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_OPERATION_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_MASTER_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ITEM_BOM_RTNG_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CONSTRAINT_COUNT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_CTO_ORDER_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MP_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MRQ_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_MTM_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T1_69;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_ORG_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CFL;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_CONSTRAINT_T;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_PARTS_DPD;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SMP_T2;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_BOM_SO_FILTER;
TABLEEXCLUDE PRDABPPBSVMI.Z_MID_ROUTING_T1;
TABLEEXCLUDE PRDABPPVMI1.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI2.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMI3.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDABPPVMIBRP.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDHKFGVMI.TEMP_KEY_VALUES;
TABLEEXCLUDE PRDSPUSERVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMI1.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE PRDXIVMIBRP.QUEST_SL_TEMP_EXPLAIN1;
TABLEEXCLUDE SHARING.Z_MID_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.CONF_WORKDAY_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK;
TABLEEXCLUDE SHARING.CONF_WORKTIME_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP2;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP1;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME1;
TABLEEXCLUDE SHARING.Z_MID_VALID_TASK_UISELECTED;
TABLEEXCLUDE SHARING.Z_MID_WORKTIME_TMP;
TABLE SI_INFORMTN_SCHEMA.*;
TABLE ORDPLUGINS.*;
TABLE PRDXIVMILC.*;
TABLE PRDABPPSZVMIREAD.*;
TABLE PRDABPPWHVMIREAD.*;
TABLE PRDABPPXMVMIREAD.*;
TABLE PRDABPPWHBSVMIREAD.*;
TABLE PRDHKFGVMIREAD.*;
TABLE PRDXIVMI1.*;
TABLE PRDXIVMIBRP.*;
TABLE SHARING.*;
TABLE PRDSPUSERVMI2READ.*;
TABLE PRDVMIBRPREAD.*;
TABLE PRDSPUSERVMI1READ.*;
TABLE PRDHKFGSPVMI.*;
TABLE PRDINFOVMIK2.*;
TABLE PRDINFREPVMI.*;
TABLE PRDSPUSERVMI3.*;
TABLE PRDSPVMIBRP.*;
TABLE PRDSPUSERVMI2.*;
TABLE CSETRACK.*;
TABLE PRDCSE.*;
TABLE PRDCSEVMI3.*;
TABLE PRDCSEVMI2.*;
TABLE PRDCSEVMIBRP.*;
TABLE PRDCSEVMI1.*;
TABLE PRDABPPCDVMIREAD.*;
TABLE PRDABPPSHVMIREAD.*;
TABLE PRDABPPBSVMIREAD.*;
TABLE PRDSPUSERVMI1.*;
TABLE PRDABPPWHBSVMI.*;
TABLE PRDABPPSZVMI.*;
TABLE PRDABPPWHVMI.*;
TABLE PRDABPPXMVMI.*;
TABLE PRDABPPSHVMI.*;
TABLE PRDABPPCDVMI.*;
TABLE PRDHKFGVMI.*;
TABLE PRDABPPVMI3.*;
TABLE PRDABPPVMIBRP.*;
TABLE PRDABPPVMI1.*;
TABLE PRDABPPVMI2.*;
TABLE PRDABPPBSVMI.*;
TABLE PUBLIC.*;
SEQUENCE PRDABPPVMI2.*;
SEQUENCE PRDABPPVMI3.*;
SEQUENCE PRDABPPWHVMI.*;
SEQUENCE PRDSPUSERVMI1.*;
SEQUENCE PRDSPUSERVMI2.*;
SEQUENCE PRDHKFGSPVMI.*;
SEQUENCE PRDABPPCDVMI.*;
源端啟動資料抽取程式
ggsci> start ext1
人工記錄抽取程式啟動的時間點,例如:“ 2015-01-06 11:20:55 ” ,將此時間點作為在下一步中查詢長事務的一個判斷條件。
可以使用info all 檢查extract 程式狀態是否為RUNNING
如果狀態不是RUNNING ,則可以使用以下命令檢視報錯原因,再根據錯誤原因具體分析和處理:
ggsci> view report ext1
使用stats 命令對抽取和傳輸進行進行檢查:
stats ext1
通常使用的初始化方法有以下幾種:
l 對於資料量不大的資料庫可以採用資料泵的方式進行初始化。
l 對於資料量較大的資料庫,可以採用RMAN 的方式。
l 對於資料量較大且不能採用RMAN 的資料庫,建議找一箇中間環境,將資料RMAN 恢復到中間環境,再採用資料泵導數。
長事務處理:在V$TRANSACTION 中查詢當前正在執行的事務(RAC 環境下,檢視gv$transaction ),並找出相應的長事務。在執行資料同步之前,確保這些長事務已經完成,或者被kill 掉(需要得到dba 或者相關管理人員的確認)。
Select start_time from gv$transaction
where to_date(start_time, 'yyyy-mm-dd hh24:mi:ss')<to_date('2015-01-06 11:20:55', 'yyyy-mm-dd hh24:mi:ss');
注:透過上面的SQL語句查詢到比3.6.9歩中記錄下的時間點早的事務,需要等到該事務結束,然後執行資料同步;
同步開始時確保資料庫中長事務已完成或者被kill 掉。
SCN 號
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
使用expdp 匯出生產庫資料,flashback_scn 為上一步驟獲取的scn ,並行數可適當調整。
( 並行度引數parallel 的值根據資料量大小和系統負載調整
由於指定了flashback_scn ,當資料量較大時可能會出現ORA-01555 報錯,建議在資料庫空閒時進行。)
expdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=exp_PRDABPPVMI1.log schemas=PRDABPPVMI1 parallel=4 FLASHBACK_SCN= 359963860636
使用impdp 匯入,並行數可適當調整。
impdp \'/ as sysdba\' directory= EXP_DIR dumpfile=PRDABPPVMI1_%U.dmp logfile=imp_PRDABPPVMI1.log full=y parallel=4 cluster=n
檢視日誌確認資料匯入正常。
進行初始化
源庫做RMAN 備份;
在目標庫做restore ;
在源庫獲取當前SCN 號
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
將備份以來的所有歸檔copy 到目標庫,目標庫recover 到上一步獲取的SCN
注意用來啟動OGG 複製程式的SCN 為“從生產獲取的SCN ” - 1 ,因為”recover untial scn” 只恢復到指定SCN 之前的資料,不包括指定SCN 。
假如從生產獲取的 SCN 是 14245600463106 ,則啟動 OGG 複製程式的 SCN:
start_SCN = 14245600463106 - 1 = 14245600463105
軟體安裝
首先要為GoldenGate 軟體劃分適當的共享檔案系統,這裡假設使用/arch 。
登入RAC 的節點1 主機,使用作業系統oracle 使用者(即Oracle 資料庫軟體的安裝和執行使用者)來安裝GoldenGate 。所使用的GoldenGate 軟體版本為11.2.1.0.25 。
GoldenGate for 11g : p19269552_1121025_Linux-x86-64.zip
將安裝介質p19269552_1121025_Linux-x86-64.zip 檔案上傳到資料庫伺服器/arch/ogg 目錄,使用unzip 命令解壓縮,會出現fbo_ggs_Linux_x64_ora11g_64bit.tar 檔案,再使用tar 對該檔案解報。解壓縮/ 解包的過程就是安裝過程。
cd /arch/ogg
unzip p19269552_1121025_Linux-x86-64.zip
tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
解壓後,建立 GoldenGate 需要的子目錄(使用create subdirs 命令):
cd /arch/ogg
./ggsci
Oracle GoldenGate Command Interpreter for Oracle
… …
GGSCI (aaopdb2) 1> create subdirs
Creating subdirectories under current directory /arch/ogg
Parameter files /arch/ogg/dirprm: already exists
Report files /arch/ogg/dirrpt: created
Checkpoint files /arch/ogg/dirchk: created
Process status files /arch/ogg/dirpcs: created
SQL script files /arch/ogg/dirsql: created
Database definitions files /arch/ogg/dirdef: created
Extract data files /arch/ogg/dirdat1: created
Temporary files /arch/ogg/dirtmp: created
Stdout files /arch/ogg/dirout: created
編輯oracle 使用者主目錄下的.profile 檔案,在檔案末尾追加以下內容:
export GG_HOME=/arch/ogg
export SHLIB_PATH =$ SHLIB_PATH:$GG_HOME:$ORACLE_HOME/lib
管理程式mgr
在新系統執行該配置任務。
$ cd /arch/ogg
$ ./ggsci
編輯mgr 程式配置引數,配置資訊將儲存於./dirprm/mgr.prm 檔案中。
ggsci> edit params mgr
執行後將進入vi 編輯模式,輸入以下內容。
Port 7809
DynamicPortList 7810-7820
DynamicPortReassignDelay 5
PurgeOldExtracts ./dirdat/rt*, UseCheckpoints, MinKeepDays 5
-- AutoRestart ER *, Retries 5, WaitMinutes 10, ResetMinutes 60
LagReportHours 1
LagInfoMinutes 3
LagCriticalMinutes 5
儲存並退出vi 編輯。啟動源端的mgr 管理程式:
ggsci> start mgr
的資料庫使用者
在目標資料庫建立GoldenGate 執行所需要的資料庫使用者。
使用下面的SQL 建立GoldenGate 的資料庫使用者ggadmin :
目標端資料庫:
create tablespace goldengate datafile 'xxx' size 10g autoextend on; /* 建立單獨的表空間*/
create user ggadmin identified by gadmin
default tablespace users
temporary tablespace temp;
grant dba to ggadmin;
資料初始化完成後,在啟動複製程式前,還需要如下的檢查與配置工作。
在源端由於主外來鍵約束和級聯刪除約束所產生的DML 本身已經被GoldenGate 捕獲並且投遞到目標端,如果在目標端啟用了外來鍵約束和級聯刪除,則可能造成重複記錄等資料不一致的問題。為了防止此類問題,需要在目標庫上禁用外來鍵約束和級聯刪除約束。
透過下面的方法禁用這些約束:
在 執行下面的SQL ,生成用於禁用外來鍵約束的指令碼檔案:
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_foreign_constraints.sql
select 'alter table '||owner||'.'||table_name|| ' disable constraint '||constraint_name||';'
from dba_constraints
where constraint_type = 'R'
and owner 'PRDABPPVMI1','PRDSPUSERVMI1' );
spool off
在新系統資料庫執行disable_foreign_constraints.sql 指令碼禁用外來鍵約束。
然後執行以下語句確認所有的外來鍵約束都已經禁用:
Col owner for a10
Col table_name for a30
Col constraint_name for a30
select owner, table_name, constraint_name, status
from dba_constraints
where constraint_type='R' and owner in('PRDABPPVMI1','PRDSPUSERVMI1');
在新系統執行下面的SQL ,生成用於禁用級聯刪除的指令碼檔案:
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_cascade_delete_constraints.sql
select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';'
from dba_constraints
where owner in('PRDABPPVMI1','PRDSPUSERVMI1') and constraint_type = 'R' and delete_rule = 'CASCADE';
spool off
在新系統資料庫執行disable_cascade_delete_constraints.sql 指令碼禁用級聯刪除。
然後執行以下語句確認所有的級聯刪除都已經禁用:
select owner, table_name, constraint_name, status
from dba_constraints
where delete_rule = 'CASCADE'and owner in('PRDABPPVMI1','PRDSPUSERVMI1');
在源端執行的job 會生成對應的DML 被GoldenGate 的extract 程式捕獲並且投遞到目標端,如果目標端同時也開啟了job 則有可能造成資料的不一致,例如重複記錄等。為了防止目標端資料庫系統的job 對複製產生干擾,在啟動目標端的GoldenGate 程式之前,需要禁用目標端資料庫的job 。
使用以下命令將新系統資料庫的job 佇列修改為0 ,從而達到禁用目標庫job 的目的:
修改為以後使用以下命令確認當前的修改已經生效,job 佇列為0 :
show parameter job;
在資料庫源端觸發器產生的DML 已經被GoldenGate 的extract 程式捕獲,並且透過pump 投遞到目標端。如果目標端的觸發器啟用,則可能造成目標端資料的不一致,最典型的一種場景是在目標端沒有主鍵索引的表上產生重複資料。為了防止上述情況的出現,需要在目標端資料庫禁用觸發器。
在新系統執行下面的語句,生成禁用觸發器的指令碼檔案disable_triggers.sql :
set echo off verify off trim on heading off feedback off
set pagesize 2000 linesize 150
spool disable_triggers.sql
select 'alter trigger '||owner||'.'||trigger_name|| ' disable;'
from dba_triggers
where owner in('PRDABPPVMI1','PRDSPUSERVMI1') and status = 'ENABLED';
spool off
在新系統執行指令碼disable_triggers.sql 禁用觸發器。然後執行以下語句確認所有的觸發器都已經被禁用:
sqlplus / as sysdba
@ disable_triggers.sql
select owner, status, count(*)
from dba_triggers
where owner in('PRDABPPVMI1','PRDSPUSERVMI1')
group by owner, status;
表
在目標端建立Checkpoint 表,表名為ggadmin.ggchkpt :
$ cd /arch/ogg
$./ggsci
ggsci> DBLOGIN USERID ggadmin, PASSWORD ggadmin
Successfully logged into database.
ggsci> add checkpointtable ggadmin.ggchkpt
Successfully created checkpoint table GGADMIN.GGCHKPT.
編輯GLOBALS 引數配置檔案:
ggsci> EDIT PARAMS ./GLOBALS
CheckpointTable ggadmin.ggchkpt
GGSCHEMA ggadmin
的複製程式Replicat
目標端配置
分別為兩個schema 建立一個複製程式。
建立複製程式 rep1
ADD REPLICAT rep1, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt
編輯Rep1 的引數,自動儲存於./dirprm/repl.prm 檔案中:
edit params rep1
Replicat rep1
SETENV (NLS_LANG=American_America.AL32UTF8)
USERID ggadmin, PASSWORD ggadmin
DiscardFile ./dirrpt/rep1.dsc, Purge, Megabytes 200
MaxDiscardRecs 10
REPERROR DEFAULT ABEND
DBOPTIONS DEFERREFCONST
DBOPTIONS SUPPRESSTRIGGERS
GetUpdateBefores
--AllowNoopUpdates
ASSUMETARGETDEFS
CHECKSEQUENCEVALUE
-- HandleCollisions
GETTRUNCATES
DDL
--DDL INCLUDE OBJNAME bocnet.*
DDLOPTIONS REPORT
DDLOPTIONS UPDATEMETADATA, REPORT
DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter
DDLERROR DEFAULT ABEND
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
-- To increase replicat speed
BatchSQL
MAP PRDABPPVMI1.*, TARGET PRDABPPVMI1.*;
建立複製程式 rep2
ADD REPLICAT rep2, CHECKPOINTTABLE ggadmin.ggchkpt, EXTTRAIL ./dirdat/rt
編輯Rep2 的引數,自動儲存於./dirprm/rep2.prm 檔案中:
edit params rep2
Replicat rep2
SETENV (NLS_LANG=American_America.AL32UTF8)
USERID ggadmin, PASSWORD ggadmin
DiscardFile ./dirrpt/rep2.dsc, Purge, Megabytes 200
MaxDiscardRecs 10
REPERROR DEFAULT ABEND
DBOPTIONS DEFERREFCONST
DBOPTIONS SUPPRESSTRIGGERS
GetUpdateBefores
--AllowNoopUpdates
ASSUMETARGETDEFS
CHECKSEQUENCEVALUE
-- HandleCollisions
GETTRUNCATES
DDL
--DDL INCLUDE OBJNAME bocnet.*
DDLOPTIONS REPORT
DDLOPTIONS UPDATEMETADATA, REPORT
DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter
DDLERROR DEFAULT ABEND
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
-- To increase replicat speed
BatchSQL
--MAPEXCLUDE bocnet.mlog$_bocorg_admin;
MAP PRDSPUSERVMI1.*, TARGET PRDSPUSERVMI1.*;
啟動複製程式前需要登入源端啟動 dp1 程式
登入源端系統
GGSCI> start dp1
務必確認新生產庫中需要同步表上的外來鍵約束、級聯刪除、 job 、觸發器已經禁用
在檢查確認沒有問題後,使用下面的命令啟動複製程式:
SCN
start rep2 aftercsn SCN
若採用資料泵初始化,SCN為“3.7.2”小節中獲取的SCN。
若採用RMAN初始化,SCN為“3.7.3”小節中獲取的SCN-1。
可以使用info all 檢查replicat 程式狀態是否為RUNNING ;如果狀態不是RUNNING ,則可以使用以下命令檢視報錯原因:
ggsci>view report rep1
然後再根據錯誤原因具體分析和處理。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10201716/viewspace-2939528/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG資料庫遷移方案(一)資料庫
- OGG資料庫遷移方案(二)資料庫
- OGG資料庫遷移方案(四)資料庫
- 資料庫遷移方案資料庫
- 超大資料量遷移方案,XTTS vs OGG大資料TTS
- 資料庫邏輯遷移方案資料庫
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Oracle資料庫遷移方案比較Oracle資料庫
- 【資料遷移】RMAN遷移資料庫到ASM(三)遷移onlinelog等到ASM資料庫ASM
- ORACLE資料庫切換和遷移方案Oracle資料庫
- Fastdfs資料遷移方案AST
- 【遷移】使用rman遷移資料庫資料庫
- 資料庫遷移資料庫
- 資料庫平滑遷移方案與實踐分享資料庫
- 資料遷移方案選擇
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- Odoo遷移資料庫Odoo資料庫
- redis資料庫遷移Redis資料庫
- Cacti 遷移資料庫資料庫
- ORACLE資料庫遷移Oracle資料庫
- 遷移資料庫成功!資料庫
- 建立資料庫遷移資料庫
- SQL Server 資料庫最小當機遷移方案GESQLServer資料庫
- 資料庫-oracle-資料庫遷移資料庫Oracle
- redis叢集 資料遷移方案Redis
- Oracle資料庫遷移之三:dblink+impdpOracle資料庫
- Oracle資料庫資料遷移流程Oracle資料庫
- 阿里雲資料庫遷移方案-不間斷業務阿里資料庫
- 資料庫遷移神器——Flyway資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 用rman遷移資料庫資料庫
- 資料庫遷移手記資料庫
- django資料庫遷移-15Django資料庫