Oracle Database Change Data Capture feature

趙宇發表於2009-11-04
Oracle Database Change Data Capture feature

變化資料捕獲是一個通稱,是用來描述捕捉增量變化應用到資料儲存。隨著資料量的不斷增長和資料儲存日益變化,資料捕獲是資料倉儲一個重要功能,特別是要求實時或近實時的資料倉儲。
在Oracle資料庫概念中,資料採集的變化資料庫功能,能夠在Oracle資料庫上捕捉增量。傳統上你會必須修改原始碼的應用,以捕獲增量變化。
Oracle的變化資料捕獲使增量變化捕獲而不對源程式做任何更改。
Oracle資料庫10g第2版介紹非同步分散式CDC,比原有9i資料庫第2版有了更大的提高。這食譜介紹如何設定這樣一個非同步變化資料捕獲環境。




Publishers and subscribers (發行商和使用者)

publisher 就是釋出變化資料捕捉的資料庫使用者.所以在ODI需要先建立一個釋出者.
subscriber 就是通過所謂的訂購,利用這個捕捉的變化資料的資料庫使用者,也可以理解為訂閱者.
出於安全原因,出版商和使用者不應該是相同的資料庫使用者。一個 Publisher可以支援許多subscriber使用者。

CDC利用變化表和使用者檢視。資料變化寫入變化表為使用CDC提供了一個可擴充套件的基礎架構.使用者使用者針對變化表的資料可以獲得一致資料變化集的檢視。使用者可以擴充套件和清除訂閱窗戶,通過資料庫檢視,隱式地改變資料集。如果沒有任何使用者訂閱變化資料,變化表中的資料可以被清除。CDC 通過PL/SQL包進行呼叫.


CDC有兩種捕捉資料方式 同步CDC和非同步CDC.
非同步CDC又分3種模式: 非同步Hotlog模式,非同步分散式HotLog模式,非同步Autolog模式.

同步CDC模式建立方式:

1.建立Publisher使用者,在sys使用者中建立變化表集(change set),然後在變化集中建立相應的變化表
(change table),一個change set可以對應多個change table.

2.建立Subscriber使用者,publisher使用者把change table訪問許可權授予subscriber使用者.

3.Subscriber可以建立subscription(訂閱),通過建立subscribe可以訂閱change set中多個source table,
這個table是change table的源表.

4.啟用訂閱 activate subscription

5.擴充套件視窗 extend_windows,擴充套件視窗以後才能看到資料變化.如果想每次都看到資料的變化,必須每次擴充套件視窗.


非同步HotLog模式建立方式:

1.建立publisher使用者,授予相應許可權,設定資料庫引數.
2.修改資料庫force logging,add supplemental,archive log,同時把相應源表的列新增到supplemental 列.
3.在sys使用者下建立change set,change table,同時啟用change set以後,就可以通過change table看捕捉的資料

在alert_devdb.log看到下面:

LOGMINER: End mining logfiles during dictionary load for session 11
Thu Apr 09 05:49:15 2009
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 172, /u01/app/oracle/archive/devdb/1_172_679002284.dbf
LOGMINER: End mining logfile for session 11 thread 1 sequence 172, /u01/app/oracle/archive/devdb/1_172_679002284.dbf
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 173, +DATA/devdb/onlinelog/group_2.262.679002289
Thu Apr 09 05:49:32 2009
knllgobjinfo: MISSING Streams multi-version data dictionary!!!
knlldmm: gdbnm=DEVDB
knlldmm: bjn=74098
knlldmm: bjv=1
knlldmm: scn=1292448
knlldmm: pnum=1
Thu Apr 09 05:49:51 2009
LOGMINER: End mining logfile for session 11 thread 1 sequence 173, +DATA/devdb/onlinelog/group_2.262.679002289
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 174, +DATA/devdb/onlinelog/group_3.263.679002291
Thu Apr 09 05:50:01 2009
LOGMINER: End mining logfile for session 11 thread 1 sequence 174, +DATA/devdb/onlinelog/group_3.263.679002291
LOGMINER: Begin mining logfile for session 11 thread 1 sequence 175, +DATA/devdb/onlinelog/group_1.261.679002285

注意:
As the errors are one-time only errors reported on table creation and they do not affect Streams replication they can be safely ignored.
In this case this message does not indicate incorrect operation of Streams.


非同步分佈Hotlog和Autolog模式:
因為涉及兩個資料庫,分別是source database和staging database

1.在source database建立一個publisher使用者.在staging database 建立一個publisher使用者.
2.配置staging database和source database的資料庫引數,同時設定global_names=true or false
3.在source database 修改資料庫force logging,add supplemental,同時加源表到supplemental 日誌組.
4.在source database建立到staging database的dblink.在staging database建立到source database的dblink,如果dblink名字和
service name不一致,會出現錯誤,solution如下:
Metalink:
Solution
-- To implement the solution, please execute the following steps::
Drop and recreate the dblinks at SOURCE and STAGING databases.
Make sure the database links are created with names that match exactly the GLOBAL_NAME of the
database they connect to.
5.在staging database建立分散式的change source(和之前模式相比,這裡change source是單獨建立,不像之前,直接在建立change set直接輸入HOTLOG_SOURCE),change set,change table.
注意在11g建立change table還會出錯,因為多了一個DDL相關引數,加入以後,選擇'Y'
6.在staging database中啟用 change source,change set
7.在staging database中將change table許可權授予使用者或者subscriber


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

相關文章