OGG 的同步設定只要遵循著以下流程就可以了 :
設定 Extract 與 Pump 🡪 執行資料的 Initial Load 🡪 設定與啟動 Replicate
也就是把上述 2 ~ 5 章節組合起來就可以完整的設定 OGG 同步。
本次範例為 Oracle 🡪 Oracle 的同步設定 :
來源端 (Source) 版本 : Oracle 10.2.0.5 + OGG 11.1.1.1
目標端 (Target) 版本 : Oracle 11.2.0.4 + OGG 12.2.0.1.1
同步 Schema : HR
作業系統平台均為 Linux 。
Extract 使用 Classic Mode 、 Replicate 使用 Integrated Mode 。
OGG 安裝部分, 11.1.1.1 的版本只需要將軟體解壓縮後並 create subdirs 就可以了, 12.2.0.1.1 的安裝可參考章節 2 的說明。
建立 OGG 使用者並授予相關權限 :
SQL> create tablespace ogg datafile '/u01/oradata/ogg.dbf' size 500M; SQL> create user ogg identified by ogg default tablespace ogg; SQL> grant create any table to ogg; SQL> grant create any view to ogg; SQL> grant create any procedure to ogg; SQL> grant create any sequence to ogg; SQL> grant create any index to ogg; SQL> grant create any trigger to ogg; SQL> grant create any view to ogg; SQL> exec dbms_streams_auth.grant_admin_privilege('OGG'); (10g 執行) SQL> exec dbms_goldengate_auth.grant_admin_privilege('OGG'); (11g 執行) |
Oracle 11g 需設定 enable_goldengate_replication 為 true :
SQL> alter system set enable_goldengate_replication=true; |
編輯 GLOBALS參數如下 :
$ ./ggsci GGSCI> edit param ./GLOBALS |
GGSCHEMA OGG CHECKPOINTTABLE OGG.GGSCHKPT |
編輯 MGR 參數如下 :
$ ./ggsci GGSCI> edit param mgr |
PORT 7809 AUTORESTART ER *, RETRIES 50, WAITMINUTES 4 USERID OGG, PASSWORD ogg PURGEOLDEXTRACTS ./dirdat/*, usecheckpoints, minkeepfiles 10 PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5 (這行 Target 不用設) LAGREPORTHOURS 1 LAGINFOMINUTES 30 LAGCRITICALMINUTES 45 |
添加 Check Point Table :
$ ./ggsci GGSCI> dblogin userid ogg, password ogg GGSCI> add checkpointtable ogg.ggschkpt |
啟動 MGR 完成設定 :
$ ./ggsci GGSCI> start mgr |
於資料庫啟用 force logging 與 supplemental log :
SQL> alter database force logging; SQL> alter database add supplemental log data; |
OGG 為 HR 使用者添加 trandata :
GGSCI> add trandata hr.* GGSCI> info trandata hr.* |
DDL 設定,於資料庫執行 OGG 軟體目錄底下的腳本如下 :
SQL> @sequence.sql SQL> @marker_setup.sql SQL> @ddl_setup.sql (輸入 initialsetup ) SQL> @role_setup.sql SQL> GRANT GGS_GGSUSER_ROLE TO ogg; SQL> @ddl_enable.sql SQL> @ddl_pin.sql (輸入 使用者 OGG 兩次 ) |
設定 Extract 參數 E_HR :
$ ./ggsci GGSCI> edit param E_HR |
EXTRACT E_HR SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8") SETENV (ORACLE_SID="ORA10") SETENV (ORACLE_HOME="/opt/oracle/product/10.2.0/db_1") USERID ogg, PASSWORD ogg EXTTRAIL ./dirdat/E1 DISCARDFILE ./dirrpt/E_HR.dsc, PURGE, MEGABYTES 100M GETUPDATEBEFORES NOCOMPRESSDELETES NOCOMPRESSUPDATES DDL INCLUDE MAPPED DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 dynamicresolution EOFDELAYCSECS 10 TABLE HR.*; |
設定 Pump 參數 P_HR :
$ ./ggsci GGSCI> edit param P_HR |
EXTRACT P_HR SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8") SETENV (ORACLE_SID="ORA10") SETENV (ORACLE_HOME="/opt/oracle/product/10.2.0/db_1") RMTHOST 192.168.49.250, MGRPORT 7809 RMTTRAIL ./dirdat/R1 PASSTHRU TABLE HR.*; |
添加 Extract 與 Pump Group :
GGSCI> add extract e_hr, tranlog, begin now GGSCI> add exttrail ./dirdat/E1, extract e_hr, megabytes 100 GGSCI> add extract p_hr, exttrailsource ./dirdat/E1 GGSCI> add rmttrail ./dirdat/R1, extract pump1, megabytes 100 |
啟動 Extract 與 Pump :
GGSCI> start extract e_hr GGSCI> start extract p_hr |
由於 Source 與 Target 均為 Oracle ,建議使用 Export 、 Import 進行資料初始化,於 Source Database 撈取目前的 SCN :
SQL> select to_char(dbms_flashback.get_system_change_number) from dual; TO_CHAR(GET_SYSTEM_CHANGE_NUMBER) ----------------------------------------------------------------- 450741 |
基於 SCN 為 450741 將資料進行 Export :
$ expdp \'/ as sysdba\' directory=oggexp schemas=hr dumpfile=exp_hr%U.dmp parallel=2 flashback_scn=450741 logfile=exp_hr.log job_name=exp_hr |
於 Target 資料庫將資料進行 Import :
$ impdp \'/ as sysdba\' directory=oggimp dumpfile=exp_hr%U.dmp parallel=2 logfile=imp_hr.log job_name=imp_hr |
設定 Replicate 參數 R_HR :
$ ./ggsci GGSCI> edit param R_HR |
REPLICAT R_HR SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8") SETENV (ORACLE_SID="ORA11") SETENV (ORACLE_HOME="/opt/app/oracle/product/11.2.0/dbhome_1") userid ogg, password ogg ASSUMETARGETDEFS APPLYNOOPUPDATES NUMFILES 4000 DISCARDFILE ./dirrpt/R_HR.dsc, MEGABYTES 100, PURGE DDL INCLUDE MAPPED DDLOPTIONS REPORT DDLOPTIONS _USEOWNERFORSESSION DBOPTIONS SUPPRESSTRIGGERS DBOPTIONS DEFERREFCONST DBOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 2048, MAX_PARALLELISM 4) MAP HR.*, TARGET HR.*; |
添加 Integrated Replicate Group :
$ ./ggsci GGSCI> dblogin userid ogg, password ogg GGSCI> add replicat r_hr, integrated, exttrail ./dirdat/R1 |
基於 SCN 為 450741 啟動 Replicate :
$ ./ggsci GGSCI> dblogin userid ogg, password ogg GGSCI> start replicat r_hr, aftercsn 450741 |
完成設定後,接下來就只需要使用 info all 來觀察同步狀態即可。
沒有留言:
張貼留言