Goldengate 簡單部署測試


操作流程:

Following are descriptions of the steps in the figure:
1.  Start the Extract. Configure and start the Extract to begin capturing database
changes. You need to start the Extract beforethe initial load, so that any SQL
data manipulation language (DML) changes made during the load process can
be captured. The Extract captures the database changes from the source
database-transaction log and writes them to the source trail file. 

開啟extract進程.配置並且啟動extract進程去捕獲數據庫的更改。 需要在initial load之前開啟extract,這樣dml語句在執行加載期間才能被捕獲到。 extract從transaction log中捕獲更改並且寫到source trail 文件中。

2.  Start the data pump. Configure and start the data pump to send extracted
changes captured by the local Extract into the source trail across the network
to the target server. When on the targetserver, the changes are written to the
remote trail file. 

開啟pump進程。配置並且開啟data pump進程去傳輸抽取的更改到目標服務器中。 目標服務器上會使用collector進程去寫到remote trail文件中。
3.  Perform the initial load. Load the datausing either GoldenGate or vendor
DBMS utilities. Doing so creates a synchronized copy of each database, except
for changes that were captured during the load process by the Extract. These
changes will be applied in the next step when the Replicat is started. You only
need to run an initial data load the first time you setting up replication. After
this, GoldenGate will keep the data synchronized on an ongoing basis using
the Extract and Replicat processes. 

開始initial load初始化加載。使用goldengate或者數據庫的工具去加載數據。 這樣來創建一個和數據庫同步的copy,除了加載處理的時候捕獲的那些數據庫更改。 這些更改會在下一步在復制進程啟動的時候應用到target 數據庫上面。 所以只需要運行初始化數據加載一次即可。 這些結束后,goldengate會保證數據持續的一致性。

4.  Start the Replicat. Configure and start the Replicat to begin applying changes
from the remote trail file. Changes thatwere captured while the initial-load
process was executing have already been written to the remote trail file. It may
take a Replicat some time to catch up with the changes, depending on the data
volume and the length of time changes were captured during the load process.
Also, some of these changes may cause data conflicts, because activity was
occurring in the database at the same time the data load was running. Later,
this chapter covers some GoldenGate parameters, such as HANDLECOLLISIONS,
to automatically handle these data conflicts. When the Replicat has caught up
and applied all the changes, the databases are synchronized. 

開啟replicat進程。配置兵器開啟復制進程去開始應用remote trail中的更改到數據庫上。 這些更改會在執行initial load的時候被捕獲,並且寫到remote trail 文件中。可能會消耗復制進程一些時間, 依賴於數據量和初始化加載中這些數據更改的時間長短。 同樣的類似於這樣的更改可能會導致數據沖突,因為數據庫在初始化加載執行的時間內一直是活動的。
藍色字體為輸出內容 紅色字體為注意內容 綠色字體為參數內容 灰色字體為注釋內容

每個版本要下載對應的goldengate 軟件
10g的需要下載10g的goldengate

11g的需要下載11g的goldengate

a simple example:
10.2.0.5 fbo_ggs_Linux_x64_ora10g_64bit.zip
11.2.0.3 fbo_ggs_Linux_x64_112100_ora11g_64bit.zip

解壓文件
都在/u01/gg/目錄下
配置環境變量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
否則在使用ggsci命令的時候會報錯,找不到庫文件


  ip 節點名稱 goldengate master port goldengate 安裝目錄
源端 192.168.0.3 dbserver 7890 /u01/gg
目標端 192.168.0.97 gg1 7890 /u01/gg



hosts文件保證都有對方的ip映射條目


添加附加日志

/*****參考內容
primary 數據庫開啟 最小附加日志
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
支持行鏈接和其他的存儲結構(比如cluster table)

primary 數據庫開啟表級附加日志

通常類似於oracle、sqlserver、db2不會記錄足夠的事務日志。所以需要添加額外的表級附加日志,來支持goldengate的復制操作。

GSCI (dbserver) 3> dblogin userid dexter password xiaojun Successfully logged into database.
GGSCI (dbserver) 4> add trandata dexter.double_balls ; ERROR: Invalid TRANDATA attribute ;: expected NOKEY or COLS.
GGSCI (dbserver) 5> add trandata dexter.double_balls
Logging of supplemental redo data enabled for table DEXTER.DOUBLE_BALLS.
其在oracle中發出的sql語句如下(會自動查找主鍵信息):
ALTER TABLE "DEXTER"."RED" ADD SUPPLEMENTAL LOG GROUP "GGS_RED_59438" ("RNO")   ALWAYS  /* GOLDENGATE_DDL_REPLICATION */
ALTER TABLE dexter.double_balls ADD SUPPLEMENTAL LOG GROUP double_balls (id) ALWAYS; 
  • If you specify ALWAYS, then during an update, the database includes in the redo all columns in the log group. This is called an unconditional log group(sometimes called an "always log group"), because Oracle Database supplementally logs all the columns in the log group when the associated row is modified. If you omit ALWAYS, then the database supplementally logs all the columns in the log group only if any column in the log group is modified. This is called a conditional log group.


如果指定了always關鍵字,那么在update的時候,數據庫會將所有列的信息包含在日志組中。這叫做無條件日志組。因為oracle數據庫會在rows進行更改的時候, 附加所有列的日志到日志組中。如果沒有指定always,那么數據庫只是附加更改的列的信息到日志組中。這叫做條件日志組 。

生成add trandata腳本
set echo off set verify off set pagesize 2000 set linesize 250 set trim on set heading off set feedback off spool &&SCHEMA..add_trandata.obey select 'add trandata &SCHEMA..'||table_name from dba_tables where owner = '&SCHEMA' ; spool off 
ggsci中執行add trandata腳本
GGSCI (sourceserver) 1> dblogin userid gger password userpw Successfully logged into database. GGSCI (sourceserver) 2> obey diroby/HR.add_trandata.obey 
查看是否增加表級附加日志成功
select owner, log_group_name, table_name from dba_log_groups where owner = 'DEXTER'; 



使用impdp+dblink導入導出數據,dmp文件不落地
[oracle@srtcreen OGG]$ impdp srt_creen/a69UiBOB1gk directory=DATA_PUMP_DIR network_link=OGG_TYKF REMAP_SCHEMA=CSCNEW:SRT_CREEN REMAP_TABLESPACE=CSC_TAB_1:SRTCREEN tables=CSCNEW.TAB_CS_USER,CSCNEW.TAB_CS_QUEUES,CSCNEW.TAB_CS_CALL_PICKUP,CSCNEW.TAB_CS_CALL_COMING,CSCNEW.TAB_CS_CALLLOG FLASHBACK_TIME=\"to_timestamp\(\'2011-12-06 13:03:00\',\'yyyy-mm-dd hh24:mi:ss\'\)\"

*/
操作: 需要擁有primary key 主鍵才可以對表進行復制操作
sys@ORCL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

SUPPLEME
--------
YES


GSCI (dbserver) 5> add trandata dexter.double_balls GSCI (dbserver) 5> add trandata dexter.blue GSCI (dbserver) 5> add trandata dexter.red
sys@ORCL> select owner, log_group_name, table_name from dba_log_groups where owner = 'DEXTER';

OWNER                          LOG_GROUP_NAME                 TABLE_NAME
------------------------------ ------------------------------ ------------------------------
DEXTER                         GGS_DOUBLE_BALLS_59441         DOUBLE_BALLS
DEXTER                         GGS_BLUE_59439                 BLUE
DEXTER                         GGS_RED_59438                  RED



禁用觸發器以及級聯刪除約束
/*************** 禁用觸發器以及 級聯刪除約束
The reason is to prevent duplicate changes, because GoldenGate is already replicating the
resultsof the trigger and cascade-delete operations fromthe source database. If you didn’t disable the
constraints and triggers, GoldenGate would replicate those changes; then the triggers and cascadedelete constraints would also fire, causing duplicate changes on the target database.

禁用的原因是方式重復的更改,因為goldegate會復制這些因為trigger或者級聯刪除所帶來的更改。 如果沒有disable 這些約束和觸發器,goldengate會復制這些更改,那么觸發器和級聯刪除約束同樣出發,導致重復的更改到目標數據庫上面。

 

禁用trigger set echo off
set verify off
set pagesize 2000
set linesize 250
set trim on
set heading off
set feedback off 


進行cascade delete約束
spool &&SCHEMA..disable_cascade_delete_constraints.sql 

select 'alter table '||owner||'.'||table_name||
' disable constraint '||constraint_name||';'
from all_constraints
where delete_rule = 'CASCADE'
and owner = '&SCHEMA'; 

spool off 

禁用觸發器
spool &SCHEMA..disable_triggers.sql 

select 'alter trigger '||owner||'.'||trigger_name||
' disable ;'
from all_triggers
where owner = '&SCHEMA'; 

spool off 

開啟delete 約束
spool &SCHEMA..enable_cascade_delete_constraints.sql 

select 'alter table '||owner||'.'||table_name||
' enable constraint '||constraint_name||';'
from all_constraints
where delete_rule = 'CASCADE'
and owner = '&SCHEMA';
spool off
spool &SCHEMA..enable_triggers.sql
select 'alter trigger '||owner||'.'||trigger_name||
' enable;'
from all_triggers
where owner = '&SCHEMA';

spool off 

*/


驗證manager進程狀態
驗證mgr進程狀態
GGSCI (dbserver) 2> info mgr

Manager is running (IP port dbserver.7890).


GGSCI (dbserver) 3> view params mgr

port 7890


開始配置extract進程


配置用來capture dexter schema中的上述三個表的所有dml操作
/*******參考內容
查看source database的字符集
select * from v$nls_parameters where PARAMETER in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET')  ;  
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8) 


查看數據庫的oracle_home以及oracle_sid
echo $ORACLE_HOME
echo $ORACLE_SID

SETENV (ORACLE_HOME="/oracle/ora11g/product")
SETENV (ORACLE_SID="ora11src") 



SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID GGER@SourceDB, PASSWORD userpw
ExtTrail dirdat/l1
Table HR.*;





/*******

基礎設置
sys@ORCL> select * from v$nls_parameters where PARAMETER in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET')  ;

PARAMETER                                                        VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE                                                    AMERICAN
NLS_TERRITORY                                                   AMERICA
NLS_CHARACTERSET                                                 AL32UTF8




[oracle@dbserver udump]$ echo $ORACLE_HOME
/u01/apps/oracle/10gr2/dbhome_1

[oracle@dbserver udump]$ echo $ORACLE_SID
orcl


ggsci 
edit params ldexd1
Extract ldexd1
------------------------------
--dex schema develement env --
------------------------------
SETENV (ORACLE_HOME="/u01/apps/oracle/10gr2/dbhome_1")
SETENV (ORACLE_SID="orcl")
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun
exttrail dirdat/l1
Table  dexter.DOUBLE_BALLS;
Table dexter.BLUE; Table dexter.RED;
必須隔開寫

exttrail 定義extract 寫入的trail文件的位置 table 定義需要進行capture的表的名稱,可以通配符,例如schema.*


/******* 參考資料
extract  進程的命名規則
l=local extract or e=extract or p=pump or r=replicat + schema and application module name  + p=product environment. or d=development environment. + sequence number

sum(name)=8char (don't contains chinese charactor)
ldexd1

上面的配置中的含義 Extract ldexd1  定義extract group名稱
SETENV 設置環境變量
userid 設置gg用戶在source database上面的名稱以及密碼
EXTTRAIL 指定trail文件的名稱 上面的例子中命名為l1 goldengate 會自動的附加6個sequence number,作為最后的trail 文件名稱。


可以使用FORMAT RELEASE來指定goldengate寫老版本的格式的trail文件,以兼容目標端的老版本goldengate軟件。
table 用來指定goldengate需要capture哪些對象的更改,寫入到extract trail中。



*/

添加extract 進程
已經配置好了數據庫,以及extract 進程的參數,現在可以添加extract進程來capture change了。 記得和上面的配置想匹配。
ADD EXTRACT LDEXD1, TRANLOG, BEGIN NOW ADD EXTTRAIL dirdat/l1, EXTRACT LDEXD1, MEGABYTES 100 
START EXTRACT LHREMD1
  驗證一下是否可以正常開啟
GGSCI (dbserver) 2> info ldexd1 detail

EXTRACT    LDEXD1    Last Started 2013-08-08 19:21   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2013-08-08 19:27:42  Seqno 158, RBA 939008

  Target Extract Trails:

  Remote Trail Name                                Seqno        RBA     Max MB

  dirdat/l1                                            1       1000        100

  Extract Source                          Begin             End            

  /u01/apps/oracle/oradata/orcl/redo02.log  2013-08-08 19:20  2013-08-08 19:27
  /u01/apps/oracle/oradata/orcl/redo02.log  2013-08-08 18:04  2013-08-08 19:20
  Not Available                           * Initialized *   2013-08-08 18:04


Current directory    /u01/gg

Report file          /u01/gg/dirrpt/LDEXD1.rpt
Parameter file       /u01/gg/dirprm/ldexd1.prm
Checkpoint file      /u01/gg/dirchk/LDEXD1.cpe
Process file         /u01/gg/dirpcs/LDEXD1.pce
Stdout file          /u01/gg/dirout/LDEXD1.out
Error log            /u01/gg/ggserr.log



開啟data pump進程
edit params pdexd1
Extract PDEXD1 PASSTHRU RMThOST gg1,MgrPort 7890 RmtTrail dirdat/l2 --Table  dexter.DOUBLE_BALLS; Table dexter.BLUE; Table dexter.RED; 不要寫在一起用的逗號隔開
ADD EXTRACT PDEXD1, EXTTRAILSOURCE dirdat/l1
ADD RMTTRAIL dirdat/l2, EXTRACT PDEXD1, MEGABYTES 100 


/*****
GGSCI (sourceserver) 1> edit params PHREMD1
Extract PHREMD1
-------------------------------------------------------------------
-- Data Pump extract for HR schema
-------------------------------------------------------------------
PassThru
RmtHost targetserver, MgrPort 7840
RmtTrail dirdat/l2
Table HR.* ;

上述配置中 extract
passthru
在沒有數據的過濾,轉換等操作的時候,使用這個參數可以提升性能。 因為在goldengate 執行pump的時候不需要考慮表的定義信息。或者數據定義文件。 這在中間層的時候是非常有用的,因為中間層沒有數據庫運行。


必須擁有相同的列名、數據類型、大小、語義、並且擁有相同的順序。

rmthost rmthost和mgrport指定遠程主機名稱以及端口號

rmttrail 指定遠程trail文件的位置,一般trail文件的位置都位於datdir目錄下面

table 指定需要pump的表的名稱。多個表需要隔開定義。



*/
start pdexd1 

開啟pump進程,pump進程就會從本地的源trail文件中讀取數據並且於遠程的collector進程通信寫入到rmttrail文件中了。

驗證一下:

GGSCI (dbserver) 32> info all

Program     Status      Group       Lag           Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     RUNNING     LDEXD1      00:00:00      00:00:02   
EXTRACT     RUNNING     PDEXD1      00:00:00      00:00:08   



GGSCI (dbserver) 33> info pdexd1 detail

EXTRACT    PDEXD1    Last Started 2013-08-08 20:02   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  File dirdat/l1000003
                     2013-08-08 20:19:34.000000  RBA 286586

  Target Extract Trails:

  Remote Trail Name                                Seqno        RBA     Max MB

  dirdat/l2                                            2     264657        100

  Extract Source                          Begin             End            

  dirdat/l1000003                         2013-08-08 20:02  2013-08-08 20:19
  dirdat/l1000003                         2013-08-08 19:21  2013-08-08 20:02
  dirdat/l1000001                         * Initialized *   2013-08-08 19:21
  dirdat/l1000000                         * Initialized *   First Record   


Current directory    /u01/gg

Report file          /u01/gg/dirrpt/PDEXD1.rpt
Parameter file       /u01/gg/dirprm/PDEXD1.prm
Checkpoint file      /u01/gg/dirchk/PDEXD1.cpe
Process file         /u01/gg/dirpcs/PDEXD1.pce
Stdout file          /u01/gg/dirout/PDEXD1.out
Error log            /u01/gg/ggserr.log


GGSCI (dbserver) 34>

 

GGSCI (dbserver) 31> stats pdexd1

Sending STATS request to EXTRACT PDEXD1 ...

Start of Statistics at 2013-08-08 20:19:25.

Output to dirdat/l2:

Extracting from DEXTER.BLUE to DEXTER.BLUE:

*** Total statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Daily statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Hourly statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Latest statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

Extracting from DEXTER.RED to DEXTER.RED:

*** Total statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Daily statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Hourly statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

*** Latest statistics since 2013-08-08 20:02:23 ***
        Total inserts                             1029.00
        Total updates                                0.00
        Total deletes                                0.00
        Total discards                               0.00
        Total operations                          1029.00

End of Statistics.




使用goldengate進行初始化加載


goldengate direct load (沒有文件落地)
一再強調必須禁止trigger並且disable 級聯刪除


配置初始化加載extract 進程 SOURCE: GGSCI (dbserver) 36> edit params IDEXD1 
Extract IDEXD1 
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun 
RmtHost gg1, mgrport 7890
RmtTask Replicat, Group DDEXD1

--Table  dexter.DOUBLE_BALLS;Table dexter.BLUE;Table dexter.RED;

ADD EXTRACT IDEXD1, SOURCEISTABLE



target端創建與source端相同表結構的表 創建dblink create table as  wher 1=2 ;
alter table modify primary key  ; only table named r has primary key ;




配置初始化加載replicat 進程 TARGET:


GGSCI (gg1) 1> edit PARAMS DDEXD1



Replicat DDEXD1
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID dexter, PASSWORD xiaojun
AssumeTargetDefs
--Map dexter.double_balls, Target dexter.double ;
Map dexter.red, Target dexter.r ;
Map dexter.blue, Target dexter.b ;




 ADD REPLICAT DDEXD1, SPECIALRUN 


這個時候在兩邊都無法看到初始化加載進程的存在

源端:
START EXTRACT IDEXD1
非常之慢,建議使用對應數據庫軟件的工具去進行初始化操作。

10g以上使用expdp/impdp,10g一下使用exp/imp

/**************
SOURCEISTABLE
sourceistable會通知goldengate這是一個初始化加載進程

RmtTask 遠程進程名稱


AssumeTargetDefs 當source和target端的表的定義相同的時候可以使用這個參數。如果不相同,需要生成data-definition 文件。



SPECIALRUN 使用這個command通知goldengate這是一個初始化加載進程。只用來進行初始化加載。



只需要開啟source端的extract進程即可,它會自動的通知target端開啟replicat進程


*/


開啟復制進程

EDIT PARAMS RDEXD1
Replicat RDEXD1 
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID DEXTER, PASSWORD xiaojun
HandleCollisions
AssumeTargetDefs

Map dexter.red, Target dexter.r ;
Map dexter.blue, Target dexter.b ;

/****************
HANDLECOLLISIONS
使用 HANDLECOLLISIONSand NOHANDLECOLLISIONS 參數去控制復制進程是否嘗試解決重復行和丟失行應用到目標服務器的問題。 這些錯誤通常發生在goldengate direct load,當目標主機執行完direct load並且 復制從source服務器capture的change的時候。
可以使用兩個參數以下面的集中方式: 1. 可以在在root level聲明。會對所有的map語句生效。 2. 可以使用HANDLECOLLISIONS 或者NOHANDLECOLLISIONS作為開關。 3. 可以使用這些參數在一個map語句中,開啟或關閉對應的表。
map語句中聲明會覆蓋其他設置的聲明。

HANDLECOLLISIONS如何工作:
當replicat遇到更新某一個column的時候,goldengate使用下面的key 1. 如果行的old key沒有在target上找到,那么記錄會被轉化為insert 2. 如果行的新key在target存在,那么replicat刪除原來的key值的行。 然后修改原擁有新鍵值的行,覆蓋為trail文件中定義的值。
這個邏輯需要記錄表中所有列的日志到transaction log中。比如說在使用add trandata的時候使用cols選項。


當replicat遇到一個重復記錄錯誤的時候,通過initial加載的數據會被覆蓋。這是一個非常安全的方式。對於忽略掉 重復記錄的方式。

          當復制進程在執行update 或者delete操作的時候遇到丟失行的錯誤,這個改變記錄會被拋棄。這些錯誤發生在一個改變條目在source服務器上,並且           在執行initial-load之前這個record已經被刪除了。           如下面的例子:                1. 應用更新了record A 在source 端 table 1                2. extract 抽取到了這個change record                3. 應用刪除了這個record 在 source端 table1                4. extract 抽取了delete                5. goldengate 執行了initial load ,這時候沒有record A                6. replicat嘗試應用update 到record A                7. 數據庫返回 record missing的錯誤                8. replicat 嘗試去delete record A                9. 數據庫返回 record missing 錯誤

應該在source端和target端的表同步之后關閉,禁用自動處理這些錯誤。      因為這些錯誤在兩端的表進行同步后出現是不正常的,應該去解決這樣的問題,而不是用程序自動的忽略或者處理。 比如說,missing record 錯誤,表示source端的記錄在target被刪除掉了。       可以使用下面的方法禁用掉: 1. 關閉rep進程,在參數文件中移除handlecollisions。或者修改table的屬性,在map語句里面追加NOHANDLECOLLISIONS禁用掉錯誤自動處理 2. 當rep運行的時候,可以使用ggsci的send replicat+NOHANDLECOLLISIONS去禁用掉自動處理錯誤的特性。不過要記得在參數我文件中也修改 為command執行的內容。          

最好使用與業務無關的主鍵(sequence)

ASSUMETARGETDEFS+passthru 當target和source端的column擁有相同的結構,可以使用這個參數。 比如在一個熱備的站點。 它會使goldengate不去檢查source端的source0definition文件 如果擁有不同的結構,那么使用sourcedefs參數去代替ASSUMETARGETDEFS

SOURCEDEFS 使用這個參數去指定包括source table或文件的定義信息文件位置。 source定義信息在復制數據在異構的數據庫的時候是必須。 使用這個參數在一個或者多個進程上,依賴於goldengate的配置: 1. target 系統上的replicat進程 2. source端或者中間層的data pump進程。
使用defgen工具去生成source -definition文件。
在啟動datapump或者replicat進程前 傳輸這些文件到中間層或者target端
在有多個source-definitions文件的時候可以在parameter文件中使用多個sourcedefs子句。
Example 1 SOURCEDEFS dirdef\tcust.def
Example 2 SOURCEDEFS /ggs/dirdef/source_defs


*/

添加replicat進程



GGSCI (gg1) 12> ADD REPLICAT RDEXD1, EXTTRAIL dirdat/l2,checkpointtable dexter.cktptab
REPLICAT added.


創建上面指定checkpoint table
GGSCI (gg1) 14> dblogin userid dexter , password xiaojun
Successfully logged into database.

GGSCI (gg1) 15> add checkpointtable dexter.cktptab

Successfully created checkpoint table dexter.cktptab.



dexter@GG1> desc cktptab;
Name                                                                                          Null?    Type
--------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------
GROUP_NAME                                                                                    NOT NULL VARCHAR2(8)
GROUP_KEY                                                                                     NOT NULL NUMBER(19)
SEQNO                                                                                                  NUMBER(10)
RBA                                                                                           NOT NULL NUMBER(19)
AUDIT_TS                                                                                               VARCHAR2(29)
CREATE_TS                                                                                     NOT NULL DATE
LAST_UPDATE_TS                                                                                NOT NULL DATE
CURRENT_DIR                                                                                   NOT NULL VARCHAR2(255)
LOG_CSN                                                                                                VARCHAR2(129)
LOG_XID                                                                                                VARCHAR2(129)
LOG_CMPLT_CSN                                                                                          VARCHAR2(129)
LOG_CMPLT_XIDS                                                                                         VARCHAR2(2000)
VERSION                                                                                                NUMBER(3)

dexter@GG1> select * from cktptab ;



開啟replicat進程

GGSCI (gg1) 16> START REPLICAT RDEXD1

Sending START request to MANAGER ...
REPLICAT RDEXD1 starting



GGSCI (gg1) 17> INFO ALL

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                          
REPLICAT    RUNNING     RDEXD1      13:40:35      00:00:00   


  因為上面創建表的時候沒有指定target b表的主鍵,所以這里重復的添加了記錄

可以刪除重復記錄 然后設置primary key 

然后初始化加載后禁用掉這一特性
send replicat RDEXD1 NOHANDLECOLLISIONS dexter.r

send replicat RDEXD1 NOHANDLECOLLISIONS dexter.b

view report idexd1

stats idexd1



/************************

兩端都定義好mgr的參數(至少定義好端口號)
ggsci
edit params mgr
port 8901
記得事先使用netstat -an 看一下端口是否已經被占用了



EXTRACT ext1
SETENV (ORACLE_HOME="/oracle/ora11g/product")
SETENV (ORACLE_SID="ora11src")
USERID ggs, PASSWORD ggs
RMTHOST sdtarget
RMTTRAIL /d1/oracle/ggs/dirdat/rt
TABLE scott.emp;





源端 添加提取進程: GGSCI> add extract ext1,sourceistable  --沒有 tranlog,意味着不是通過日志方式;沒有 begin XXX,表示還未啟動;使用sourceistable參數不會使用檢查點機制 配置文件如下: /*** extract ext1 userid ddw,password ddw rmthost 192.168.0.44, mgrport 7401 rmttask replicat, group rept1   table ddw.test;                ***/ 不需要為該進程添加遠端隊列( rmttrail)。
目標端 添加復制應用進程: add replicat rept1,specialrun   --表示一次性加載
/*** replicat rept1 assumetargetdefs        userid ddw,password ddw reperror default, discard                       discardfile D:\reptmy.dsc,append,megabytes 100   INSERTAPPEND                             --使用直接路徑加載,提高加載速度 HANDLECOLLISIONS                         --當目標端已有數據時,略過重復數據錯誤 MAP ddw.test, TARGET ddw.test1; ***/
注意,這里的 extractreplicat 進程添加完后在 info all中看不到這個進程,但是 view report可以跟蹤到。
要開始加載,在源端執行: GGSCI> start exttmy 目標端的 replicat進程不需要去啟動,會自動進行數據應用。  
初始化加載

需要先有表結構


 add extract ext1,sourceistable
extract ext1  userid gg,password gg rmthost gg1,mgrport 8901 rmttask replicat,group rept1 table iotplatform.*;
add replicat rept1,specialrun
replicat rept1 assumetargetdefs userid gg,password gg reperror default,discard insertappend handlecollisions map iotplatform.*,target gg.*;
inser




*/ */ */
另有一個用xmind做的Goldengate思維導圖,有興趣的可以下載。




以下為下載地址: http://download.csdn.net/detail/renfengjun/9459274



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com