Oracle GoldenGate安裝(三)

jason_yehua發表於2022-12-02

目標端安裝軟體

目標端建立管理使用者

建立管理使用者,授予的許可權和源端的不同

SQL> create tablespace odc_tps datafile '/oradata/smkdb/odc01.dbf' size 100M autoextend on;

Tablespace created.

SQL> create user odc identified by odc default tablespace odc_tps;

GRANT CONNECT TO odc;

GRANT ALTER ANY TABLE TO odc;

GRANT ALTER SESSION TO odc;

GRANT CREATE SESSION TO odc;

GRANT FLASHBACK ANY TABLE TO odc;

GRANT SELECT ANY DICTIONARY TO odc;

GRANT SELECT ANY TABLE TO odc;

GRANT RESOURCE TO odc;

GRANT DBA TO odc;

 

 

 

配置library  環境變數

不同作業系統不同的環境變數配置:

HP-UX : SHLIB_PATH

AIX : LIBPATH

LINUX :   LD_LIBRARY_PATH

例如:

export LD_LIBRARY_PATH =$ORACLE_HOME/lib:$LD_LIBRARY_PATH

 

安裝軟體

1.  將對應作業系統資料庫版本的介質複製到源端後,建立安裝目錄或檔案系統

例如  /odc

# su - oracle

$ mkdir /odc

 

2.  解壓軟體安裝包

$ cd /odc

$ tar xf ggs_LINUX_ppc_ora11g_64bit_v11_1_1_0_11_001.tar

 

注:如果是  windows  ,需要單獨安裝服務

執行cmd  cd  到安裝軟體目錄下,執行:

C:\odc> install addservice

 

3.  建立子工作目錄

解壓並解包成功後在/odc  目錄執行

$ ./ggsci

ggsci>create subdirs

 

以上所建立的目錄的作用:

Name

purpose


dirchk

Checkpoint files

用來存放檢查點(checkpoint)  檔案次檢查點是ogg  自己的檢查點與例項不同

dirdat

GoldenGate trails

用來存放TRAIL  檔案

dirdef

Data definition files

用來存放透過DEFGEN  工具生成的源或目標端資料定義檔案

dirprm

Parameter files

用來存放配置引數檔案

dirpcs

Process status files

用來存放程式狀態檔案

dirrpt

Report files

用來存放程式報告檔案

dirsql

SQL script files

用來存放SQL  指令碼檔案

dirtmp

Temporary files

當事物所需要的記憶體超過已分配記憶體時預設儲存在這個目錄

 

4.  建立管理程式

 

建立管理程式所需引數:

引數

閥值

定義

port

7809

mgr  程式使用的TCP/IP  埠偵聽請求,預設埠為7809

DYNAMICPORTLIST

7800-7810

指定可用動態   TCP/IP  埠列表,用於源端與目標端程式通訊的繫結,最大支援256  個埠

PURGEOLDEXTRACTS

./dirdat/sm*

定期清理抽取出的過期檔案,可以被設定在Manager, Extract, and Replicat  引數檔案中,oracle  建議設定在Manager 

USECHECKPOINTS


根據任何MINKEEP  規則,允許清除那些已經被Extract  Replicat  程式檢測過的,保證資料不丟失。

MINKEEPHOURS

24

trail  檔案的保留時間,超過這個時間則刪除

autorestart

replicat*

指定程式失敗時自動重啟

retries

10

指定嘗試重新啟動程式的次數(預設嘗試次)

waitminutes

10

指定重新啟動程式的等待時間,直到必要資源變得可用或一些其他的事件發生。預設的延遲時間為分鐘。

 

具體設定如下:

ggsci>edit param mgr

輸入:

port 7809

DYNAMICPORTLIST 7800-7810

PURGEOLDEXTRACTS ./dirdat/sm*, USECHECKPOINTS, MINKEEPHOURS 24

autorestart replicat* retries 10 waitminutes 10

autostart RE *

 

ggsci>edit param ./GLOBALS

輸入:

GGSCHEMA odc

CHECKPOINTTABLE odc.ggs_checkpoint ---  儲存退出

 

ggsci>start mgr

5.  建立  checkpoint table 

cd /odc

$ sqlplus odc/odc@smkdb

SQL> @chkpt_ora_create.sql

DROP TABLE ggs_checkpoint

           *

ERROR at line 1:

ORA-00942: table or view does not exist

 

Table created.

 

 

(以同構oracle  資料庫為例)

源端查詢相關資訊

源端端查詢表格所在表空間

SQL> select distinct tablespace_name from dba_tab_partitions where table_owner='OGGTEST ';

 

目標端端查詢是否存在以上表空間,若沒有則建立,如果不想建立,在後面的impdp  中需要配置remap_tablespace  引數。

 

源端索引所在表空間:

SQL> select distinct tablespace_name from dba_indexes where owner in ('OGGTEST ');

SQL> select distinct tablespace_name from dba_ind_partitions where index_owner in ('OGGTEST ');

 

源端使用者預設臨時表空間:

SQL> select distinct temporary_tablespace from dba_users

 

 

檢查源端undo  保留時間及表空間大小

SQL> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS1';

SQL> select file_name,tablespace_name,bytes/1024/1024/1024,AUTOEXTENSIBLE,maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='UNDOTBS2';

 

SQL> show parameter undo

SQL> select tablespace_name,sum(bytes/1024/1024/1024) from dba_data_files group by tablespace_name;

SQL> select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;

 

SQL> alter system set undo_retention=172800sid='*';

 

SQL> ALTER tablespace UNDOTBS1 RETENTION GUARANTEE;

SQL> ALTER tablespace UNDOTBS2 RETENTION GUARANTEE;

 

SQL> ALTER tablespace UNDOTBS1 RETENTION NOGUARANTEE;

SQL> ALTER tablespace UNDOTBS2 RETENTION NOGUARANTEE;

 

如果空間不夠則新增:

SQL> ALTER tablespace UNDOTBS1 add datafile ' +MCDATA/ora11g/undotbs103.ora' size 3g autoextend on;

SQL> ALTER tablespace UNDOTBS2 add datafile ' +MCDATA/ora11g/undotbs03.ora' size 3g autoextend on;

 

 

 

源端查詢SCN

SQL> select to_char(current_scn) from v$database;

14569604987950

 

9i  資料庫:

SQL> select to_char(dbms_flashback.get_system_change_number) from dual;

14644839175132

 

源端匯出

$ export NLS_LANG=american_america.zhs16gbk

$

 

目標端匯入

$ nohup impdpodc/odcschemas=OGGTESTdirectory=expdpdumpfile=OGGTEST.dmp logfile=OGGTEST.log&

 

匯入前檢查目標端表空間的大小

select segment_type,count(*),sum(bytes/1024/1024) from dba_segments  where owner='OGGTEST' group by segment_type;

 

 

 

目標端相關操作

備份庫禁用觸發器

select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner='OGGTEST' and status='ENABLED';

e.g.

alter trigger ZJHIS4.TRI_ZY_DETAIL_CHAREGE disable;

alter trigger EMR4.TRI_BL_BINGCHENGBCJL disable;

alter trigger ZJHIS4.TRI_LAB_TEST_MASTER_ZY disable;

 

移除JOB 

select job,log_user,schema_user,next_date,broken from dba_jobs;

select 'exec dbms_job.remove('||JOB||');' FROM dba_jobs;

exec dbms_job.remove(<that job id>);

exec dbms_ijob.remove(21);

exec dbms_job.broken(186,true)

 

select * from dba_scheduler_jobs where owner= 'OGGTEST';

禁用:

DBMS_SCHEDULER.DISABLE('job1, job2, job3, sys.jobclass1, sys.jobclass2');

或刪除:

DBMS_SCHEDULER.DROP_JOB (job_name => 'my_job1');

 

注意:要在當前使用者下執行(sys  使用者不用管)

 

 

程式

應用程式要配置的引數:

引數

閥值

定義

replicat

sm_rep

指定程式名和型別 

setenv

(NLS_LANG="SIMPLIFIED   CHINESE_CHINA.ZHS16GBK")

配置系統環境變數

userid/ password

odc

指定OGG  連線資料庫的使用者名稱和密碼

ASSUMETARGETDEFS


源端和目標端資料庫型別一致,無需生成資料定義檔案

ALLOWNOOPUPDATES


允許執行無實際變化的updata

DBOPTIONS

DEFERREFCONST

約束延遲設定。在複製程式的事物被提交之前,延遲級聯刪除、級聯更新時的校驗和實施。

HANDLETPKUPDATE


定義即使目標資料庫環境中存在資料完整性問題,replicat  程式仍然能夠繼續處理 trail  中的資料。

ddlerror

955 ignore

定義來處理被找到的物件錯誤

DISCARDFILE

/odc/dirrpt/sm.dsc

定義discardfile  檔案位置,如果處理中油記錄出錯會寫入到此檔案中

APPEND


discardfile  檔案中如果已經包含記錄的話,在後面繼續追加,不刪除之前的記錄。

megabytes

20

定義discardfile  檔案大小

DISCARDROLLOVER

on sunday

定義檔案過期設定,為了防止discard file  被寫滿

map    target

map OGGTEST.* target OGGTEST.*;

用於指定源端和目標端表的對映關係

 

 

具體引數如下:

ggsci>dblogin userid odc password odc

ggsci>add replicat sm_rep exttrail ./dirdat/sm

 

ggsci>edit param sm_rep

 

引數:

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid odc, password odc

--handlecollisions

ASSUMETARGETDEFS

ALLOWNOOPUPDATES

DBOPTIONS DEFERREFCONST

SOURCEDEFS /odc/dirdef/sm.def

map oggtest.t2,target oggtest.t2,colmap(USEDEFAULTS col1=cola,col2=colb2,col3=colc);

--    表結構不同時,要加以上引數)

sql

ddlerror 955 ignore

ddlerror 1917 ignore

ddlerror 24344 ignore

ddlerror 1031 ignore

ddl include mapped

ddlerror 10655 ignore

ddlerror 10636 ignore

ddlerror 942 ignore

ddlerror 1435 ignore

REPERROR (1843, DISCARD)

ddlerror 4063 ignore

ddlerror 4043 ignore

ddlerror 2019 ignore

DISCARDFILE /odc/dirrpt/sm.dsc, APPEND megabytes 20

DISCARDROLLOVER on sunday

--DISCARDROLLOVER

--ddlerror 942 ignore

map OGGTEST.* target OGGTEST.*;

 

4043  物件不存在

2019  連線串不存在

 

 

  1    oracle 11.2.0.4  不支援  replicat  程式中的  DBOPTIONS DEFERREFCONST  引數,如果要使這個引數正常生效必須在資料庫中配置  ENABLE_GOLDENGATE_REPLICATION  ,即:

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

 

 

 

 

 

 

引數介紹:

Colmap  引數

語法結構:

MAP <table spec>, TARGET <table spec>,COLMAP ([USEDEFAULTS, ] <target column> = <source expression>);

USEDEFAULTS  :源端的列名與目標端的列名相同,使用  USEDEFAULTS
target column:
  目標列
source expression
  :源端表示式或列

 

當使用  COLMAP  為源端與目標端的表的結構不相同的時候,必須使用  defgen  生成定義檔案。

當使用  COLMAP  為源端與目標端的表的結構相同的時候,僅使用  COLMAP  進行其他的功能例如轉換等,不需要定義檔案,但是必須使用  ASSUMETARGETDEFS  引數。

 

例如:

map oggtest.t1,target oggtest.t2,colmap(USEDEFAULTS col1=col2,col2=colb3,col3=col1);

 

 

 

Handlecollisions  引數

HANDLECOLLISIONS  是我們使用  goldengate  過程中常有的一個  REPLICAT  引數,該引數依賴於主鍵或唯一索引處理衝突資料,常用於初始化階段。對於無主鍵或唯一索引的表無法處理衝突,且可能導致重複記錄。注意開啟此引數則所有資料錯誤不管  reperror  如何配置均不再寫  discard  檔案,即所有資料衝突資訊被預設規則處理,沒有任何日誌  (  則會忽略  error mapping  資料錯誤,而且不會報告到  discard  檔案  )  ,因此日常複製不建議使用該引數;可予以考慮的特殊場景為只需新增資料,無需複製歷史資料。      使用  HANDLECOLLISIONS  的幾個場景:

   target  丟失  delete  記錄  (missing delete)  ,忽略該問題並不記錄到  discardfile

   target  丟失  update  記錄  (missing update)

²     更新的鍵值是主鍵  =    update  轉換成  INSERT  ,預設情況下插入記錄不完整

²     更新的鍵值是非主鍵  =    忽略該問題並不記錄到  discardfile

   重複插入已存在的主鍵值到  target  表中,這將被  replicat  轉換為  UPDATE  現有主鍵值的行的其他非主鍵列

 

另:該引數僅處理資料本身的  Insert/Delete  衝突,如果出現兩端對映或其它結構性問題  Replicat  程式依然會  abend  ,不能被忽略      此外對於主鍵的更新操作,若在  target  使用  HANDLECOLLISIONS  且該  update  丟失,在會轉換為  INSERT  該主鍵的操作,注意預設情況下插入的記錄不完整,  FETCHOPTIONS FETCHPKUPDATECOLS  將捕獲完整的  redo image  映象到  trail  中,這保證把  primary key  的更新透過  HANDLECOLLISIONS  轉換為對  target  的一個完整記錄的插入。

我們可以透過  send  命令動態取消  HANDLECOLLISIONS 

GGSCI (XIANGBLI-CN) 29> send rep2, NOHANDLECOLLISIONS

Sending NOHANDLECOLLISIONS request to REPLICAT REP2 ...

REP2 NOHANDLECOLLISIONS set for 1 tables and 0 wildcard entries

 

 

 

引數

語法結構:

DISCARDFILE ./dirrpt/sm.dsc, APPEND megabytes 20

表示該  discard  檔案在  ogg  安裝目錄的  dirrpt  檔案下,檔名為  sm.dsc  ,該檔案的最大大小為  20M  ,當該檔案達到  20M  ,且還沒到清理時間時,  ogg  應用會報錯:

                                             

處理方法:

Ø     清理 discard  檔案後重啟程式( ./dirrpt/sm.dsc   ;

修改該引數,將大小改為合適的值後重啟程式。

 

ggsci> 14569604987950

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547506/viewspace-2926357/,如需轉載,請註明出處,否則將追究法律責任。

相關文章