Ogg: Sybase to Oracle個人

來源:互聯網
上載者:User

標籤:

摘要:
  • sybase版本:Sybase15(源端)
  • Oracle版本:11g(目標端)
  • Goldengate版本:11.2.0.1.0(源端),12c(目標端)
  • 個人部落格:www.czhiying.cn
Goldengate同步原理:

   Oracle GoldenGate軟體是一種基於日誌的結構化資料複本備份軟體,它通過解析來源資料庫線上日誌或歸檔日誌獲得資料的增量變化,再將這些變化應用到目標資料庫,從而實現來源資料庫與目標資料庫同步。參考圖如下:

  從可以知道,Ogg的同步實現方式有兩種:

  1. 在源端建立Extract進程捕獲日誌變化,形成Ogg自身定義的Trail檔案,Trail檔案不儲存在本地,通過網路方式,直接傳輸到目的端;然後目的端通過Replicat進程解析Trail檔案,將變化支付到目標端資料庫;
  2. 在 源端建立Extract進程捕獲日誌變化,形成Ogg自身定義的Trail檔案,Trail檔案儲存在本地,然後在源端建立Data Pump進程(實際也是Extract進程,不過職能不同,我們在叫法上將其區分);然後通過Data Pump進程將產生的Trail檔案傳輸到目的端;然後目的端通過Replicat進程解析Trail檔案,將變化支付到目標端資料庫;

  既然存在兩種同步方式,存在即有理,但是我還是推薦使用第二種方式同步資料。因為這樣本地有儲存Trail檔案,有保障一點。所以我下面的介紹也是基於第二種方式來進行同步的。

同步思路:
  1. 由於來源資料庫和目標資料庫屬於異構關係,表結構不同,故需要使用Ogg提供的表結構定義工具將來源資料庫的表結構定義出來,提供給目標資料庫解析。
  2. 資料同步存在資料初始化和資料增量同步處理。故此,在準備進行資料初始化時,需保證Ogg對來源資料庫的捕獲進程為開啟狀態。這樣,便可以實現源/目標資料庫的資料一致性。
同步步驟:
  1. 源端sybase建立goldengate同步處理的使用者,需要許可權 sa_role,replication_role;
  2. 在需要同步的庫上,開啟第二事務截斷點;

假設需要同步的庫是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端試試插入資料,更新資料,刪除資料,是否會進行同步。

Ogg: Sybase to Oracle個人

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.