1. Stream 的工作原理
Stream 是Oracle Advanced Queue技術的一種擴展應用,這種技術最基本的原理就是收集事件,把時間保存在隊列中,然后把這些事件發布給不同的訂閱者。
從DBA的角度來說,就是把捕獲Oracle數據庫產生的Redo日志,然后把這些日志通過網絡傳播到多個數據庫,其他數據庫通過應用這些日志,達到復制變化的作用。
在Stream 環境下,復制的起點數據庫叫作Source Database,復制的終點數據庫叫作Target Database。在這兩個數據庫上都要創建一個隊列,其中的Source Database上的是發送隊列,而Target Database上的是接收隊列。
數據庫的所有操作都會被記錄在日志中。配好Stream環境后,在Source Database上會有一個捕獲進程(Capture Process), 該進程利用Logminer技術從日志中提取DDL,DML語句,這些語句用一種特殊的格式表達,叫作邏輯變更記錄(Logical Change Record, LCR). 一個LCR對應一個原子的行變更,因此源數據庫上的一個DML語句,可能對應若干個LCR記錄。這些LCR會保存到Sourece Database 的本地發送隊列中。然后傳播進程(Propagation Process)把這些記錄通過網絡發送到Target Database的接收隊列。在Target Database上會有一個應用進程(Apply Process),這個進程從本地的接收隊列中取出LCR記錄,然后在本地應用,實現數據同步
2. 前期規劃的幾點:
1). 確定復制集:如是數據庫級還是表級
2). 決定復制站點
3). 決定LCR是本地捕獲還是下游捕獲
本地捕獲:在源數據庫進行,從聯機日志和歸檔日志獲得LCR
下游捕獲:在目標數據庫進行,從歸檔日志獲得LCR.
本地捕獲可以保護更多的數據,但是會占用源數據庫的資源。