Oracle GoldenGate軟件是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。參考圖如下:
從上圖可以知道,Ogg的同步實現方式有兩種:
既然存在兩種同步方式,存在即有理,但是我還是推薦使用第二種方式同步數據。因為這樣本地有保存Trail文件,有保障一點。所以我下面的介紹也是基於第二種方式來進行同步的。
假設需要同步的庫是test,則使用isql進入sybase命令行後,執行
use test
go
dbcc settrunc(ltm,valid)
go
目的:ogg的捕獲進程可以成功捕獲到事務日志變化的保證;如果沒有開啟此選項,extract進程啟動將會失敗,各位可以試驗一下。其實,如果沒有開啟此選項,當你使用ggsci進行添加附加日志的時候,ggsci也會提醒你沒有開啟某個庫的第二事務截斷點選項。
注意:這裡的ltm選項可以說又愛又恨啊,為什麼這麼說呢,請看我另外一篇文章。
3.進入ggsci控制台,使用dblogin訪問數據庫,添加表級附加日志;
進入ggsci控制台後,使用命令:
dblogin sourcedb 數據源,userid 用戶名,password 密碼
注意:因為gg是oracle的產品,所以其他的數據庫需要使用odbc建立數據源,讓oracle能訪問到其數據庫,如何建立數據源,可以去上度娘,這裡就不做介紹了。
success後使用命令添加附加日志:
add trandata test.test; (這裡的test.test的意思是,對test庫下的test表添加附加日志。)
成功添加的話,將會看到enable的相關信息,同時,如果這裡沒對同步庫開啟ltm選項的話,將會看到一條提醒,不過不用擔心,你過會再去開啟也行,反正在extract進程啟動之前開啟就行。
4.配置ogg針對源數據庫(Sybase數據庫)的捕獲進程;
prm文件:EXTRACT ext_test --捕獲進程名稱
sourcedb test,userid sa,password 123456
EXTTRAIL dirdat/te
DISCARDFILE dirrpt/ext_test.dsc , APPEND
REPORTCOUNT EVERY 10000 RECORDS, RATE
GETTRUNCATES
table dbo.test; --聲明需要捕獲數據變化的表
ggsci控制台:
edit params ext_test(將會創建一個ext_test.prm的參數文件,將上述參數復制進該文件)
add extract ext_test,tranlog,begin now(創建extract進程)
add exttrail dirdat/te,extract ext_test,megabytes 100(創建exttrail,既抓取數據後記錄到本地trail文件)
啟動extract進程:
start ext_test
如無意外,進程啟動成功。如果這裡啟動失敗的話,請使用命令,view report ext_test,查看錯誤報告,如果解決不了,可留下評論,博主看到會幫你解決。
5.源端配置、啟動數據泵進程
目的:由於Ogg將捕獲到的數據變化記錄為自身定義的trail文件並存放於本地文件中,故需要使用數據泵進程將這些trail文件遠程投遞到目標機上。
ggsci控制台:
edit params dp_test
參數文件配置:
EXTRACT dp_test
sourcedb test,userid sa,password 123456
RMTHOST 127.0.0.1(准備投遞的遠程主機Ip), MGRPORT 7810(遠程主機mgr進程的端口號)
RMTTRAIL D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\du
discardfile dirrpt/dumpdsc.dsc,append,megabytes 1024
TABLE dbo.test;
add extract dp_test,exttrailsource dirdat/te(這裡創建數據泵進程,trail源是剛剛捕獲進程設置的trail路徑)
add rmttrail D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\du,extract dp_test,megabytes 100(這裡創建rmttrail定義)
start dp_test
如無意外,進程成功開啟。這裡要注意的一點是,准備投遞過去的那台電腦,必須先安裝好ogg,由於博主這裡是使用同一台電腦,所以博主這裡安裝了兩個Ogg,一個for sybase,一個for oracle,兩個是不同端口的。
6.目標端配置、啟動應用進程
目的:將源端投遞過來的trail文件進行解密、分析,將源端的增量數據同步更新到目標數據庫。
目標端ggsci:
edit params rep_test
參數文件配置:
REPLICAT rep_test
SOURCEDEFS dirdef/def_test.def
USERID ogg, PASSWORD 123456
Discardfile dirrpt/rep_test.dsc,append,megabytes 1024
REPERROR (DEFAULT, discard)
Map dbo.test, TARGET ogg.TEST;
Dblogin userid ogg, password 123456(訪問oracle數據庫,目的是建checkpoint表)
Add checkpointtable ogg.chkpt_test(表名隨意,有意義就行)
add replicat rep_test,exttrail dirdat/du,CHECKPOINTTABLE ogg.chkpt_test(這裡的exttrail,是指源端投遞過來的trail文件)
start rep_test
啟動成功,即可在sybase端試試插入數據,更新數據,刪除數據,是否會進行同步。