2022年9月5日 星期一

6. Oracle to Oracle 同步設定

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 的說明。


  • Source 與 Target 的 OGG 設定 :

建立 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


  • Source 端設定 :

於資料庫啟用 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


  • 資料 Initial Load :

由於 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


  • Target 端設定 :

設定 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 來觀察同步狀態即可。


沒有留言:

張貼留言