GoldenGate for mysql to mysql:單向同步


 

http://blog.chinaunix.net/uid-29183167-id-4428698.html

GoldenGate

一對一實施方案

 

一、安裝GoldenGate

*源庫需要開啟歸檔

安裝GoldenGate:源和目標都需要安裝

1、創建GoldenGate安裝目錄:

Mkdir –p /opt/oracle/gg11

2、修改環境變量:

Export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg11:$PATH

3、安裝GoldenGate 注:要對應數據庫版本的gg安裝包

Tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

cd /opt/oracle/gg11

Ggsci

GGSCI (centos6) 1>

GGSCI (centos6) 1>create subdirs

 

二、配置GoldenGate

 

裝完GoldenGate后需要執行兩步操作,在Source端。

Sql> alter database add supplemental log data;

Sql> alter system switch logfile;

Sql> desc v$database

Sql> select supplemental_log_data_min from v$database;

在Source和target把庫都起來,並創建gg用戶

Sql>create user ggusr identified by ggusr default tablespace users;

Sql>grant connect,resource to ggusr;

 

1、配置GoldenGate  MGR    注:Source和Target都要配置。

Ggsci

Ggsci(dg1) 1> edit params mgr   創建manager初始化參數文件。

--this is the minimal configuration of manager process   注釋

Port 7809

Ggsci(dg1) 2>Start mgr   啟動

Ggsci(dg1) 3>Info mgr   查啟動信息

Ggsci(dg1) 4>quit

Ps –ef |grep ora

    

2、在Source端

Ggsci

Ggsci(dg1) 1> dblogin userid system, password zsht2014  //紅字是用戶密碼

Ggsci(dg1) 2> add trandata ggusr.*     源數據要捕獲的表

Ggsci(dg1) 3> info trandata ggusr.*

源數據庫端配置:

 

一、增加Primary Extract

1,GGSCI (centos6) 3> add extract eiexkk,tranlog,begin now,threads 2   //數字代表節點

---抽取進程,負責抓取SourceDB中變化的數據。

2,GGSCI (centos6) 4> edit params eiexkk

Extract eiexkk

Userid ggusr, password ggusr

exttrail ./dirdat/kk

DDL INCLUDE ALL

GETTRUNCATES

GETUPDATES

Table ogg_dbbak.*;                         //紅色代表用戶

3,GGSCI (centos6) 6> add exttrail ./dirdat/kk,extract eiexkk,megabytes 5 //數字代表抽取文件多大。

EXTTRAIL added.

 

二、增加Pump Extract1 用於向目標1進行數據復制

1,GGSCI (centos6) 7> add extract extpp,exttrailsource ./dirdat/kk

EXTRACT added.

 

2,GGSCI (centos6) 10> edit params extpp

EXTRACT extpp

userid system,password zsht2014

RMTHOST 192.168.31.201, MGRPORT 7809

RMTTRAIL ./dirdat/kk

TABLE ogg_dbbak.*;

3,GGSCI (centos6) 11> add rmttrail ./dirdat/kk,extract extpp,megabytes 5

RMTTRAIL added.

 

三、啟動復制進程:

GGSCI (centos6) 16> start extract eiexkk

GGSCI (centos6) 17> start extract extpp

GGSCI (centos6) 19> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

EXTRACT     RUNNING     EXTKK      00:00:00      00:00:11    

EXTRACT     RUNNING     EXTPP      00:00:00      00:00:00    

 

目標數據庫配置:

1.edit params ./globals

 checkpointtable system.ggchkpttab   

 Ggschema ggusr

2,Ggsci

GGSCI (centos7) 7> dblogin userid system, password zsht2014

GGSCI (centos7) 7> add checkpointtable system.ggchkpttab

3,增加Replicat

GGSCI (centos7) 3> add replicat repm1,exttrail ./dirdat/kk  //如果出現錯誤加上checkpointtable system.ggchkpttab  

REPLICAT added.

----復制進程,將抽取到隊列中的文件解析后寫進TargetDB。

4,GGSCI (centos7) 5> edit params repm1

REPLICAT REPM1

USERID system, password zsht2014

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/REPM1.DSC, PURGE

GETTRUNCATES

GETUPDATES

Dynamicresolution

DDL INCLUDE ALL

MAP oggtest.*, TARGET oggtest.*;

5,GGSCI (centos7) 36> start replicat repm1

 

GoldenGate DDL配置方案:

一、在源端配置。 注:(每個充當源的數據庫都要配置,如多主,雙向環境)

1,關閉Oracle 10G回收站機制,11G可以開啟。

10g可以用:

Sql> alter system set recyclebin=off; 關閉

Sql> alter system set recyclebin=on; 開啟

11g可以用:

Sql> alter system set recyclebin=off deferred; 關閉

Sql> alter system set recyclebin=on deferred; 開啟

2,授予權限

SQL> grant execute on utl_file to ggusr;

3,編輯Global參數,加入以下內容:

Ggschema ggusr

4,執行配置腳本:列表如下

marker_setup.sql

ddl_setup.sql

role_setup.sql

grant the role to all goldengate extract users

ddl_enable.sql

install and use the optional performance tool

4.1)執行marker_setup腳本

該腳本安裝marker系統,這部分為啟用DLL支持所必備,執行該腳本時會提示輸入GoldenGate管理帳戶schema名

SQL> @marker_setup.sql

Marker setup script

Enter Oracle GoldenGate schema name:ggusr

4.2) 執行ddl_setup腳本

執行該腳本要確認關閉掉所有ORACLE會話,未被關閉的會話會以列表形式顯示,執行過程中會要求希望對象屬主,並選擇安裝模式。如果是初次安裝就選擇“INITIALSETUP”,該模式假設當前沒有任何GoldenGate DDL對象存在,如果存在則會刪除並重建。如果是重新安裝,則應該選擇“NORMAL”。具體執行示例如下

SQL> @ddl_setup.sql

4.3) 執行role_setup腳本

該操作會重建DDL同步所需的權限,授予GoldenGate中的DDL對象以DML權限,執行示例如下:

SQL> @role_setup.sql

4.4) 按照上面返回的提示,執行授權操作,注意是將權限授予執行Extract/GGSCI或其它管理操作的用戶,我們這里的情況看顯然是ggate,執行命令如下:

SQL> grant ggs_ggsuser_role to ggusr;

4.5) 執行ddl_enable腳本

啟用DDL觸發器,以捕獲DDL操作:

SQL> @ddl_enable.sql

4.6) 安裝性能優化工具(可選項)

要提高DDL觸發器的性能,可以通過ddl_pin腳本,該腳本會將觸發器使用的包加載到內存,以此提高效率。該腳本執行時需要引用dbms_shared_pool系統包,因此在使用ddl_pin腳本前需要確保dbms_shared_pool可用

SQL> @?/rdbms/admin/dbmspool.sql

4.7) 執行ddl_pin腳本需要指定GoldenGate管理員schema名稱,例如:

SQL> @ddl_pin ggusr

 

 

配置完成,驗證數據同步。

....

http://curran.blog.51cto.com/2788306/1252451

GoldenGate用於在各種企業系統間以亞秒級速度復制和集成事務數據,是同類最佳的、易於部署的產品。GoldenGate 可以靈活地在同類和異類系統(包括不同版本、不同的硬件平台)之間移動數據。

  Oracle 於 2009 年收購了 GoldenGate,我們可以看到在全球各行業超過 4,000 個解決方案中實施了 Oracle GoldenGate。該軟件執行實時的、基於日志的更改數據捕獲 (CDC),能夠在異構數據庫間以極低的延遲和很小的空間移動大量事務數據。

  GoldenGate TDM 是基於日志的實時CDC軟件平台,提供異構環境下大量交易數據的實時捕捉、變換和投遞,同時保持亞秒一級的數據延遲。

  基於GoldenGate TDM,我們提供高可用/容災和實時數據集成的解決方案。

  GoldenGate TDM 采用高內聚低耦合的結構,能夠支持多種拓撲結構,包括一對一,一對多,多對一,多對多,層疊和雙向復制。

  image

1:GoldenGate 工作原理

image

2:交易數據管理

  GoldenGate提供異構環境下交易數據的實時捕捉、變換、投遞。

image

3:GoldenGate變化數據捕捉的優勢

1:都提供基於日志的CDC

2:直接從數據庫日志中通過自己的專有程序抽取數據

3:支持在備份系統上抓取變化數據

4:對一些數據類型如LONG,XML,BLOB都提供了支持

4:基於日志的實時數據復制

•亞秒級復制 
•不依賴源數據庫的觸發器和規則,對源數據庫影響小。

image

5:GG在數據傳輸方面的優勢

1:GG有很好的機制來保證傳輸的交易一致性和斷點續傳。 
2:事務完整性-事務級粒度 
3:只復制成功提交的事務 
4:防止源和目標的不一致性

image

實驗:goldengate for mysql  to  mysql

1:環境Centos 6.3 + Mysql 5.5.14 + ggs_Linux_x64_MySQL_64bit.zip

2:install  mysql

GoldenGate配置:

源數據庫:

[root@litong ~]# useradd  oggadm1

[root@litong ~]# usermod -g mysql oggadm1

[root@litong ~]# mkdir /ogg

[root@litong ~]# chown -R oggadm1:mysql /ogg

[root@litong ~]# chmod -R 775 /ogg

[root@litong ~]# su - oggadm1

[oggadm1@litong ~]cd /ogg

[oggadm1@litong ~]./ggsci

[oggadm1@litong ogg]create subdirs

[oggadm1@litong ogg]exit

 

mysql:

create user 'oggadm1'@'%' identified by '123456';

grant all privileges on *.* to 'oggadm1'@'%';

flush privileges;

create database oggdb1;

use oggdb1;

create table t1 (id int,name varchar(20));

exit

[root@litong ~]# rpm -q *odbc*

[root@litong ~]# yum install mysql-connector-odbc.x86_64

[root@litong ~]# cat /etc/odbcinst.ini #Mysql 驅動

[root@litong ~]# vim /etc/odbc.ini

[mysql] 
Driver = MySQL #MySQL 是 /etc/odbcinst.ini 
Server = 192.168.0.235 
Port = 3306 
User = oggadm1 
Password = 123456 
Database = oggdb1 
Option = 3 
Socket = /tmp/mysql.sock

測試:

[root@litong ~]# isql mysql

Creating Startup Files and Managers:

[oggadm1@litong ogg]./ggsci

ggsci>edit param  ./GLOBALS

CheckpointTable oggdb1.oggchkpt

ggsci>edit param ./startup.oby

DBLogin SourceDB oggdb1, UserID oggadm1, Password 123456
Start Mgr
Info Mgr
Info CheckpointTable 
ggsci>edit param mgr
Port 15001
PurgeOldExtracts ./dirdat/*, UseCheckpoints
ggsci>Add CheckpointTable
Creating Column Definitions (defgen):

[oggadm1@litong ogg]vim dirprm/dsalesab.prm

DefsFile dirdef/dsalesab.def, Purge
SourceDB oggdb1, UserID oggadm1, Password 123456
Table oggdb1.*; 

[oggadm1@litong ogg]./defgen paramfile dirprm/dsalesab.prm

[oggadm1@litong ogg]scp dirdef/dsalesab.def oggadm2@mysql:/ogg/dirdef

Configuring the Primary Extract:

[oggadm1@litong ogg]./ggsci

ggsci>obey  startup.oby

ggsci>Edit Param esalesaa

Extract esalesaa
ExtTrail ./dirdat/aa
SourceDB oggdb1, UserID oggadm1, Password 123456
TranLogOptions AltLogDest /usr/local/mysql/data/mysql-bin.index
Table oggdb1.*;
ggsci>Add Extract esalesaa, TranLog, Begin Now
ggsci>Add ExtTrail ./dirdat/aa, Extract esalesaa, Megabytes 5
Configuring the Data Pump:
ggsci>Edit Param psalesab
Extract psalesab
RmtHost 192.168.1.21, MgrPort 15002, Compress
RmtTrail ./dirdat/ab
Passthru
Table oggdb1.*;
ggsci>Add Extract psalesab, ExtTrailSource ./dirdat/aa

ggsci>Add RmtTrail ./dirdat/ab, Extract psalesab, Megabytes 5

Verify the Extract Processes (Optional):

ggsci>Info  All

ggsci>Info ExtTrail *

Starting All Processes:

ggsci>Start Extract *

ggsci>Info All

ggsci>Info Extract *

Viewing Reports:

ggsci>Send Extract esalesaa, Report

ggsci>View Report esalesaa

Viewing Statistics:

ggsci>Send Extract esalesaa, Stats

 

 

目標數據庫:

[root@mysql ~]# useradd oggadm2

[root@mysql ~]# usermod -g mysql oggadm2

[root@mysql ~]# mkdir /ogg

[root@mysql ~]# chown -R oggadm2:mysql /ogg

[root@mysql ~]# chmod -R 775 /ogg

[root@mysql ~]# su - oggadm12

[oggadm2@mysql ~]cd /ogg

[oggadm2@mysql ogg]./ggsci

[oggadm2@mysql ogg]create subdirs

[oggadm2@mysql ogg]exit

 

mysql:

create user 'oggadm2'@'%' identified by '123456';

grant all privileges on *.* to 'oggadm2'@'%';

flush privileges;

create database oggdb2;

use oggdb2;

create table t1 (id int,name varchar(20));

exit

[root@mysql ~]# rpm -qa *odbc*

[root@mysql ~]# yum install mysql-connector-odbc.x86_64

[mysql] 
Driver = MySQL 
Server = 192.168.1.21 
Port = 3306 
User = oggadm2 
Password = 123456 
Database = oggdb2 
Option = 3 
Socket = /tmp/mysql.sock

測試:

[root@mysql ~]# isql mysql

Creating Startup Files and Managers:

[oggadm2@mysql ogg]./ggsci

ggsci>edit param ./GLOBALS

CheckpointTable oggdb1.oggchkpt

ggsci>edit param ./startup.oby

DBLogin SourceDB oggdb2, UserID oggadm2, Password 123456
Start Mgr
Info Mgr
Info CheckpointTable 
ggsci>edit param mgr
Port 15002
PurgeOldExtracts ./dirdat/*, UseCheckpoints
ggsci>Add CheckpointTable
Configuring the Replicat:

ggsci>Obey startup.oby

ggsci>Edit Param rsalesab

Replicat rsalesab 
DBOptions Host 127.0.0.1, ConnectionPort 3306 
TargetDB oggdb2, UserId root, Password 123456 
SourceDefs dirdef/dsalesab.def 
DiscardFile dirrpt/rsalesab.dsc, Append 
Map oggdb1.*,        Target oggdb2.*;

 

Create the Replicat process:

ggsci>Add Replicat rsalesab, ExtTrail ./dirdat/ab

ggsci>Info All

ggsci>Start Replicat *

ggsci>Info All

ggsci>Info rsalesab

ggsci>Info rsalesab, Detail

ggsci>Send Replicat rsalesab, Report

ggsci>View Report rsalesab

ggsci>Send Replicat rsalesab, Stats

 

 

.............

http://f.dataguru.cn/thread-238464-1-1.html

通過這個文章可以看出OGG並不是必須從Oracle同步到別的數據庫。是可以在滿足條件的任意數據庫之間同步數據的。
原文鏈接:http://www.xifenfei.com/666.html

一、source端

add extract extl,vam,begin now
ADD EXTTRAIL F:\ogg\mysql\dirdat\rl, EXTRACT EXTL

edit params extl
extract extl
sourcedb test@localhost:3306,userid root,password xifenfei
exttrail F:\ogg\mysql\dirdat\rl
dynamicresolution
gettruncates
table test.t_1;

add EXTRACT pump1, EXTTRAILSOURCE F:\ogg\mysql\dirdat\rl, BEGIN now
add rmttrail /ogg/mysql/dirdat/rl extract pump1

edit params pump1
extract pump1
rmthost 192.168.1.111,mgrport 7808
rmttrail /ogg/mysql/dirdat/rl
PASSTHRU
gettruncates
table test.t_1;

二、target端


edit params ./GLOBALS
dblogin sourcedb test@localhost:3306,userid root,password xifenfei
CHECKPOINTTABLE ogg.chkpoint

ADD CHECKPOINTTABLE ogg.chkpoint

add replicat repl exttrail /ogg/mysql/dirdat/rl,begin now,checkpointtable ogg.chkpoint 

edit params repl
replicat repl
DBOPTIONS HOST 127.0.0.1, CONNECTIONPORT 3306
TARGETDB test,userid root,password xifenfei
assumetargetdefs
reperror default,discard
discardfile /tmp/mysql.dsc,append,megabytes 100
gettruncates
map TEST.T_1, target "test.t_1";

三、說明
本實例是win 中的mysql同步到linux中的mysql
有個注意點:
1、add extract extl,vam,begin now 不像oracle中的tranlog
2、注意各個參數中schema.tablename大小寫問題
1)win中不區分,全部使用小寫會自動轉換為大寫
2)在replicate參數中,因為map是從win中的data pump中得到,所以map后面的schema.tablename需要大寫
3)在replicate參數中,因為table是linux中的對應linux中的數據庫名和表名(mysql是以文件形式存儲,一般均為小寫),所以map后面的schema.tablename需要小寫+雙引號,防止轉為大寫
3、注意mysql數據庫編碼
四、與oracle不同之處
1、登錄
dblogin sourcedb dbname@localhost:3306,userid root,password xifenfei

2、Extract中訪問mysql
sourcedb dbname@localhost:3306,userid root,password xifenfei

3、Replicat中訪問mysql
DBOPTIONS HOST 127.0.0.1, CONNECTIONPORT 3306
TARGETDB dbname,userid root,password xifenfei

 

 

 

 

............

http://www.acehat.com/database/201410/6408.html

goldengate算是數據同步的利器,可以在不同的庫,平台間進行數據的同步,當然還是有一些bug的,不過還是優點大過缺點。

算是嘗嘗鮮,從官網下載了一個版本12的,可以支持11g,12c。安裝的過程我開始以為會很繁瑣。結果安裝的過程很簡單,不過配置和管理要費一些功夫的。后續再說。

下載安裝包可以從官網上得到,大概300多兆的樣子。

-rw-r--r-- 1 ogg dba 341316447 May 11 03:26 121200_fbo_ggs_Linux_x64_shiphome.zip

選擇一下需要基於哪個版本的庫來安裝goldengate.

ogg1 

選擇一下安裝目錄和Oracle_home的路徑。可以配置一個goldengate得管理器。

pic1

然后就是安裝了。

pic2

過了一會兒,就提示安裝成功了。

pic3

 

 

 

看似實在是太簡單了,不過啟動的時候還是碰到了兩個問題。

一個問題是,啟動的時候報了如下的錯誤。

[ogg@rac1 ~]$ ggsci 
ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory

最后查得需要設置變量LD_LIBRARY_PATH的值為Oracle_HOME/lib

在.bash_profile中添加了兩個地方。

.bash_profile 
export Oracle_HOME=/u04/app/11.2.0/db/product/11.2.0/dbhome_1 
export LD_LIBRARY_PATH=$Oracle_HOME/lib

再次嘗試,環境變量的問題解決了,但是又拋了一個錯誤。

[ogg@rac1 ~]$ ggsci 
Cannot load ICU resource bundle 'ggMessage', error code 2 - No such file or directory 
Aborted (core dumped)

切換到安裝目錄下。

[ogg@rac1 oggcore_1]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle 
Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO 
Linux, x64, 64bit (optimized), Oracle 11g on Sep 25 2013 00:31:13 
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

GGSCI (rac1) 1>

 

=============================

http://hunter8888.blog.51cto.com/1850277/1440622

GoldenGate作為Oracle公司大力發展的核心戰略產品,在高可用、容災、
數據抽取轉換方面扮演着越來越重要的作用。goldengate可以做什么,說起來真的太多了,
高可用、容災、Real-Time數據同步,如果你做過BI,一定知道ETL的工具(datastage、infomatica等),
goldengate也可以做,而且,還有兩個很關鍵的因素,第一,goldengate支持異構的數據庫,幾乎囊括
了所有的主流數據庫,到底哪些呢,
去這里看看吧http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
主流的DB2、mysql、sql server、sysbase都支持。
第二,是oracle大力發展的核心戰略產品。

goldengate同步在源端捕獲日志,extract日志信息發送到目標端,由目標端的replicat日志應用進程
應用事務,達到數據同步。同時,源端的extract抽取進程也可以選擇性配置抽取的trail磁盤文件,
目標端的replicat應用進程也可以選擇性配置抽取到的日志的trail文件,防止日志丟失。

類似售前性質的話不多說,
本文精確的介紹了在64位linux環境下oracle對oracle的goldengate安裝配置(不區分10g、11g),
本文同時配置了batch模式下的數據初始化過程和online模式的實時數據同步過程,按照本文安裝配置
能讓你快速的構建goldengate環境,不會有任何問題。

1、環境介紹及准備:
兩台裝有oracle 10g軟件的centos(本文安裝配置同樣適用於oracle 11g).
源端: IP:192.168.1.201   ORACLE_SID=ggsource
目標端: IP:192.168.1.202  ORACLE_SID=ggtarget

1.配置環境變量:
source:
ORACLE_SID=ggsource
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH

target:
ORACLE_SID=ggtarget
ORACLE_BASE=/u01
ORACLE_HOME=$ORACLE_BASE/oracle
PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
其他的沒什么,搜索路勁加入了goldengate的安裝目錄$ORACLE_BASE/gg和LD_LIBRARY_PATH,
(后面在安裝goldengate時,我的goldengate產品解壓安裝在$ORACLE_BASE/gg目錄下)
LD_LIBRARY_PATH一定要配置,否則在create subdirs會報如下錯誤:
[oracle@mycentos02 ~]$ ggsci
ggsci: error while loading shared libraries: libnnz10.so: cannot open shared object file: No such file or directory


2.goldengate下載及安裝(需要同時在source機器和target機器安裝):
哪里下載?www.oracle.com->middleware->goldengate
怎么安裝?goldengate的安裝簡單到嚇人,解壓就是安裝。將下載到的64位gg for oracle 10g,解壓到/u01/gg目錄下,
/u01/gg及為我的goldengate安裝目錄。解壓之后,cd到/u01/gg目錄下,運行ggsci,在ggsci下面ggsci>create subdirs,
創建goldengate對應的目錄,就算安裝完成。

GGSCI (mycentos) 1> create subdirs

Creating subdirectories under current directory /u01/gg

Parameter files                /u01/gg/dirprm: already exists
Report files                   /u01/gg/dirrpt: created
Checkpoint files               /u01/gg/dirchk: created
Process status files           /u01/gg/dirpcs: created
SQL script files               /u01/gg/dirsql: created
Database definitions files     /u01/gg/dirdef: created
Extract data files             /u01/gg/dirdat: created
Temporary files                /u01/gg/dirtmp: created
Stdout files                   /u01/gg/dirout: created


GGSCI (mycentos) 2>

我們看到,在gg的安裝目錄下面建立了一些目錄,這些目錄是goldengate運行過程中保存相關信息的目錄。譬如,
/u01/gg/dirrpt是report也就是goldengate的報表目錄, /u01/gg/dirprm是parameter目錄,也就是goldengate
進程的參數配置目錄等等,其他的不再一一論述。
至此,goldengate安裝完成。

3.在source端增加supplemental log支持:

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

SQL>

4.在source端和target端同時創建gguser及其對應的表空間:

SQL> create user gguser identified by oracle default tablespace users quota unlimited on users;

User created.

SQL> grant dba to gguser;

Grant succeeded.

SQL>

5.在source端和target端數據庫的gguser用戶下創建測試表,並在source端插入初始數據:
source端:
SQL> create table ggtable(id number,name varchar2(50));

Table created.

SQL>

SQL> insert into ggtable values(1,'hunter01');

1 row created.

SQL> insert into ggtable values(2,'hunter02');

1 row created.

SQL> insert into ggtable values(3,'hunter03');

1 row created.

SQL> commit;

Commit complete.

SQL>

target端:
SQL> create table ggtable(id number,name varchar2(50));

Table created.

SQL>

6.在source和target端配置mgr進程,並啟動:
manager是goldengate的管理進程,在goldengate運行時必須啟動,所以source和target兩端都要配置。

GGSCI (mycentos) 2> edit params mgr


GGSCI (mycentos) 3> start mgr

Manager started.


GGSCI (mycentos) 4> info mgr

Manager is running (IP port mycentos.7809).


GGSCI (mycentos) 5>

7.配置goldengate要同步的表:
GGSCI (mycentos) 1> dblogin userid gguser,password oracle
Successfully logged into database.

GGSCI (mycentos) 2> add trandata gguser.ggtable

2014-07-20 15:37:47  WARNING OGG-00869  No unique key is defined for table 'GGTABLE'. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.

Logging of supplemental redo data enabled for table GGUSER.GGTABLE.

 

GGSCI (mycentos) 3> info trandata gguser.*

Logging of supplemental redo log data is enabled for table GGUSER.GGTABLE.

Columns supplementally logged for table GGUSER.GGTABLE: ID, NAME.

GGSCI (mycentos) 4> 
這里有一個表沒有unique key的warning,我們忽略,你也可以給表建立unique key.

8.完成initial load:
goldengate有batch和online兩種運行模式,在online模式同步source端的數據之前,需要
初始化target端的數據,當然,如果在goldengate啟動運行同步之前你的源和
目標端的數據一致,此步驟可以省略。另外,就算你要在goldengate運行之前初始化兩端的數據,
也可以用其他任何的數據復制和同步手段,例如exp/expdp等等。這里,是介紹goldengate的initial
load過程,並且我這里用的是direct load模式,其他模式我不詳細列舉,有興趣查閱goldengate的相關
文檔:
source端:
配置extract進程並配置該進程參數:
GGSCI (mycentos) 2> add extract einikk,sourceistable
EXTRACT added.


GGSCI (mycentos) 3>

 

GGSCI (mycentos) 3> edit params einikk

參數文件:
EXTRACT EINIKK
USERID gguser, PASSWORD "oracle"
RMTHOST 192.168.1.202, MGRPORT 7809
RMTTASK REPLICAT, GROUP RINIKK
TABLE gguser.ggtable;
其中einikk為抽取的組名稱,sourceistable表示是一個initial load的task.

目標端:
配置replicat進程rinikk,並編輯該進程的參數:
add replicat rinikk,specialrun

edit params rinikk

參數文件:
REPLICAT RINIKK
ASSUMETARGETDEFS
USERID gguser, PASSWORD oracle
DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE
MAP gguser.*, TARGET gguser.*;

開始initial load:
啟動抽取進程einikk,及進行了initial load的過程:

GGSCI (mycentos) 5> start extract einikk

Sending START request to MANAGER ...
EXTRACT EINIKK starting

我們view report einikk查看einikk的報告,可以看到已經完成了源端數據的初始化,
也就是在目標端插入了初始的三條數據:

Processing table GGUSER.GGTABLE

***********************************************************************
*                   ** Run Time Statistics **                         *
***********************************************************************


Report at 2014-07-20 17:01:13 (activity since 2014-07-20 17:01:03)

Output to RINIKK:

From Table GGUSER.GGTABLE:
       #                   inserts:         3
       #                   updates:         0
       #                   deletes:         0
       #                  discards:         0

至此,initial load過程完成。

9.配置online模式的數據同步:
此過程也就是配置源端的extract進程和目標端的replicat進程.

在源端配置抽取進程eorakk,並配置該進程參數:
GGSCI (mycentos) 7> add extract eorakk,tranlog,begin now,threads 1
EXTRACT added.


GGSCI (mycentos) 8> info extract *

EXTRACT    EORAKK    Initialized   2014-07-20 17:09   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:00:13 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-07-20 17:09:47  Thread 1, Seqno 0, RBA 0
                     SCN 0.0 (0)


GGSCI (mycentos) 9>

GGSCI (mycentos) 9> edit params eorakk


EXTRACT EORAKK
USERID system, PASSWORD oracle
RMTHOST 192.168.1.202, MGRPORT 7809
RMTTRAIL ./dirdat/kk
TABLE gguser.ggtable;


在source端增加目標端的trail文件:
add rmttrail ./dirdat/kk,extract eorakk

GGSCI (mycentos) 10> add rmttrail ./dirdat/kk,extract eorakk
RMTTRAIL added.


GGSCI (mycentos) 11> info rmttrail *

       Extract Trail: ./dirdat/kk
             Extract: EORAKK
               Seqno: 0
                 RBA: 0
           File Size: 100M

 

GGSCI (mycentos) 12>

然后,啟動該抽取進程:
GGSCI (mycentos) 12> start extract eorakk

Sending START request to MANAGER ...
EXTRACT EORAKK starting


GGSCI (mycentos) 13> info extract eorakk

EXTRACT    EORAKK    Last Started 2014-07-20 17:18   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-07-20 17:18:49  Thread 1, Seqno 4, RBA 2489344
                     SCN 0.578967 (578967)


GGSCI (mycentos) 14>

在目標端配置replicat進程,並啟動:
首先,配置checkpoint表:
edit params ./GLOBALS

GGSCI (mycentos02) 1> edit params ./GLoBALS


CHECKPOINTTABLE system.ggchkptable

創建ggchkptable:
GGSCI (mycentos02) 1>dblogin userid system,password oracle

add checkpointtable
這樣我們就建立了checkpointtable:system.ggchkptable,我們登陸到目標端的system用戶下可以
看到該表:
[oracle@mycentos02 ~]$ sqlplus system/oracle

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 20 05:27:58 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> desc ggchkptable
 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)

SQL>

配置replicat進程rorakk,並啟動:
GGSCI (mycentos02) 1> add replicat rorakk,exttrail ./dirdat/kk
REPLICAT added.


GGSCI (mycentos02) 2>

參數:
edit params rorakk

REPLICAT RINIKK
ASSUMETARGETDEFS
USERID gguser, PASSWORD oracle
DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE
MAP gguser.*, TARGET gguser.*;


啟動:
start replicat rorakk

這樣我們就在source端和target端完成了goldengate數據同步的進程,之后我們在
源端的gguser.ggtable表中插入數據時,可以在目標端的數據庫中看到能達到數據同步,
同步有多快呢,oracle公司說sub-second。

補充說明:
goldengate的命令可以在ggsci下面輸入help進程查看,進程有stop、running和ABENDED狀態,
正常運行時是running狀態,我在配置過程中,給rorakk進程的參數文件中
USERID gguser, PASSWORD oracle剛開始寫錯了gguser的密碼,並且,start之后,進程在ABENDED,當然也就無法同步數據,
通過查看該進程的report,
view report rorakk:
2014-07-20 05:43:43  ERROR   OGG-00664  OCI Error beginning session (status = 1017-ORA-01017: invalid username/password; logon denie
d).
發現了該問題。

另外,在映射表這里,MAP gguser.*, TARGET gguser.*;我也忘記寫了TARGET,也可以在該進程的report里面檢查到了錯誤原因:
2014-07-20 06:02:43  ERROR   OGG-00212  Invalid option for MAP: gguser.ggtable.

改正了上述兩處錯誤之后,我再次start rorakk,數據立即同步過來了。
總之,遇到錯誤,要學會查看相關日志和報告,所有的命令,都可以help來查看。

 

本文出自 “hunter的Oracle世界” 博客,轉載請與作者聯系!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM