Oracle Streams

tolywang發表於2010-03-19

Oracle Streams
  執行概
  一般地說,資訊共享意味著使用者和應用透過利用各種特殊目的的技術從他們的資料庫中把資訊取出來。新的商業模式需要更統一的方案--- 人們可以自動發現相關資訊並可以使之共享。它應具有充分的靈活性以適應商業需求的變化,同時最大程度地降低對特定目的技術的依賴。我們所需要的是能夠滿足所有資訊共享需求的一體化解決方案。
  在Oracle9i 資料庫第二版中,Oracle引進了一個全新的一體化資訊共享功能,Oracle 流(Oracle Streams)。Oracle流透過一個單一的解決方案滿足了大部分的資料移動,事物處理傳播以及事件管理的需要。它為建立和運轉分散式企業和應用,資料倉儲,和高可用性解決方案提供了必要的能力。開發人員和資料庫管理員可以同時使用Oracle流的所有能力。如果他們的需求發生了變化,他們可以簡單地啟用Oracle流的一個新功能,而不必放棄現有的功能。
  簡介
  任何資料庫管理系統的一個重要功能是在多個資料庫和應用間共享資訊的功能。傳統地說,這意味著使用者和應用將利用各種特定的技術從資料庫中將資訊取出來。今天,新的功效和商業模式需要更全面和自動的解決方案。這種方案必須能自動地決定相關的資訊,並把這些資訊共享於需要它的群體之間。它也必須是一種能夠適應商業需求的變化,同時最大程度地減低對單一目的解決方案依賴的通用解決方案。這種積極地資訊共享包括在資料庫中捕獲和管理事件和事物處理,包括但不限於DML,然後將這些事件傳遞到其他資料庫和應用。資訊共享對資料和應用整合,複製,裝載資料倉儲,高可用性,資料保護以及其他應用是非常重要的。但是,資訊共享選擇的多樣性可能極為豐富。一些解決方案是專門用於不同目的的,它們可能不能與其他的選擇相互相容。IT部門發現沒有一種解決方案可以滿足所有的需求,並且擔心當他們的需求產生變化時會受到他們所採用的解決方案的限制。他們希望能有一種解決方案可以滿足資訊共享的所有要求。
  
  Oracle9i 資料庫提供了大量的資訊共享特性,包括高階佇列,高階複製,變更資料同期捕獲和資料衛士。這些特性提供了具有針對性的交錯能力,並且基於不同的底層技術。在Oracle9i 資料庫第二版中,Oracle 提供了一套全面的基於資訊整合共享特性的Oracle 流。Oracle 流可以使整個應用提升到一個新的層次。最突出的是,Oracle 流可以透過一個單一的解決方案滿足大部分資料移動,事物處理傳遞以及事件管理的要求。當需求產生了變化,Oracle 流將能適應並滿足新的需求。
  
  Oracle流概要
  Oracle流可以使一個資料庫中的資料,事物處理和事件在本資料庫內部傳遞,也可以使它們從一個資料庫傳遞到另一個資料庫中。流可以將被髮布的資訊傳遞到訂閱它的目的地。因此這是一個全新的特性,與傳統解決方案相比,它在捕獲和管理事件、與其他資料庫和應用共享事件等方面提供了更卓越的功能性。它可以使IT部門打破各解決方案之間互動使用的迴圈。Oracle流為建立和運轉分散式企業和應用,資料倉儲,和高可用性解決方案提供了必要的能力。開發人員和資料庫管理員可以同時使用Oracle流的所有能力。如果他們的要求發生了變化,他們可以簡單地啟用Oracle流的一個新功能,而不必放棄現有的功能。
  
  Oracle流提供了一系列的元素。透過利用這些元素,使用者可以控制哪些資訊可以放入流中,流應如何流動或透過哪些途徑從一個節點流向另一個節點,當流中的事件流向每個節點時它們發生了哪些變化,以及流如何終止等問題。透過指定作用於流上的元素的配置,使用者可以強調出特定的要求。為了簡化Oracle流的部署,Oracle提供了為特定市場所特別配置的應用。
   
  Oracle流的架構是非常靈活的。如上圖所示,流包含三個基本元素。
   捕獲
   儲存
   消費
  捕獲
  Oracle流支援捕獲事件(資料庫變化,和應用生成的資訊)並存入儲存區域。這些事件可以透過兩種方式捕獲。對於隱式捕獲,伺服器在一個源資料庫中捕獲DML和DDL。顯式捕獲則允許應用明確地生成事件並將其放入儲存區域。
  
  Oracle流的顯著特徵之一是支援基於日誌的變更捕獲。從重做日誌檔案中直接捕獲變更可以使源系統的間接費減低到最少。基於日誌的捕獲使得表的變更可以被存入日誌檔案,從而可以保證當發生損害或媒體故障時的可恢復性。Oracle9i資料庫可以讀,分析和解釋重複操作資訊,這些資訊當中可能包括資料庫活動歷史的資訊。Oracle9i 資料庫第二版可以挖掘資訊並將變更資料傳遞到捕獲過程。資料庫提供了輔助的日誌記錄功能,它可以將附加資訊如主鍵列記錄到重做流中,以有助於這些資訊的傳遞。捕獲處理首先捕獲從重做日誌中提取出來的變更資料,將其格式化為邏輯變更記錄(LCR)的格式。然後將其放入儲存區中以備進一步地使用。捕獲處理可以基於定義好的規則智慧化地過濾LCR,從而可僅使所需物件的變更被捕獲。
  Oracle流除支援對存檔日誌檔案的挖掘,還支援對線上重做日誌的熱挖掘。在熱挖掘的情況下,重流在變更資料被寫入的同時就被熱挖掘,從而減少了捕獲的延遲。
  使用者應用可以顯式地將資訊表現事件加入到儲存區域。這些資訊可以作為LCR進行格式化,這將使得它們可以被應用引擎所消費,它們也可以被格式化為可被其他使用者應用透過利用顯式出列所消費的格式。使用者應用也可以將資訊加入到佇列表中,它可以被應用處理所捕獲,並作為LCR在儲存區域中釋出。
  儲存
  事件一旦被捕獲就將被放入儲存區域。儲存區域是一個佇列,它可為儲存和管理捕獲事件提供服務。資料庫表的變更將被格式化為LCR,然後被儲存於儲存區,直到有訂閱者消費它們。LCR儲存提供了一個安全的保留場所,並能完成對LCR資料的稽核和跟蹤。
  
  訂閱者檢驗儲存區域的內容,以決定他們是否對錶現該事件的資訊有興趣。訂閱者可以是一個使用者應用,通常是位於另一個系統中的其他儲存區域,或預設應用處理。訂閱者可以Oracle 流有選擇的評價一系列的規則以決定這些資訊是否滿足訂閱時所制定的基準。如果滿足基準,這些資訊將被訂閱者消費。
  
  如果訂閱者是使用者應用,該應用將把資訊從儲存區域提取出來以便於消費該資訊。如果訂閱者是另一個儲存區域,該資訊將被傳遞到該儲存區域。如果訂閱者是一個預設應用處理,它也將被提取出來被該應用處理所消費。
  
  傳遞
  儲存區域中的事件也可被傳遞到相同資料庫中的其他儲存區域,或其他遠端資料庫中的儲存區域。為了簡化網路路徑和減少WAN通訊量,事件並不需要被髮送到所有資料庫和應用中去。相反,它們可以被直接傳遞到位於一個或多個系統中的儲存區域中,直到到達訂閱它們的系統。並不是所有的需要訂閱事件,這樣可以為特定系統決定利用哪些事件提高靈活性。一個單一的儲存區域可以儲存來源於多個資料庫的事件,這樣可以簡化安裝和配置。
  
  轉換
  轉換是指一個物件在參與捕獲和應用過程中形式的變化,或它所保有的資料的變化等。轉換可能包括在特定站點的某個表的特定列中資料型別的變化,只在一個站點的某個表中追加一列,或在特定站點的某個表中包含一個資料子集。
  
  轉換可以用PL/SQL 功能表示,它輸入源資料型別,並返回該物件的目標資料型別。轉換可以在資訊入列時被指定,即當資訊被插入到儲存區域之前就被轉換為正確的型別。它也可被指定於傳遞,這將有助於資料子集向遠端站點的傳遞。最後,它也可被指定於出列或本地應用,這將有助於按照指定站點的方式格式化資訊。
  
  消費
  儲存區域的資訊可以被應用引擎所消費,它們所表示的變化將被應用於資料庫,或它們將被應用所消費。Oracle流包括一個靈活的應用引擎,它允許使用一個標準的或定製的應用功能。因此資料在需要時可以被轉換。對於顯式出列的支援允許應用開發人員使用Oracle流通知應用資料的變化,也可以充分利用Oracle流的變化捕獲和傳遞能力。
  
  預設應用
  預設應用引擎使用DML變化,DDL變化和使用者指定的LCR。如果目標資料庫是Oracle資料庫,應用引擎將在Oracle資料庫所在系統的本地執行。
  
  如果目標行已被改變但沒有包含所期待的資料值,預設應用引擎將會檢測出這種衝突。如果檢測出衝突,將會啟動一個解決程式。
  
  應用引擎由一個應用協調器,一個獲取受控和一個或多個應用受控組成。獲取受控負責組合由Oracle生成的LCR的事務處理。應用協調器執行事務處理從屬性和DML層級從屬性計劃以捕獲最大化並行性。
  
  由於應用協調器和應用受控一般位於相同的Oracle事例中,因此在從屬性計劃中不會有網路往復產生。應用引擎可以啟用使用者指定功能以採用變化。
  
  使用者定義的功能應用
  應用引擎可以將LCR傳遞到使用者定義的功能中去。它為處理LCR提供了極大的靈活性。一個典型的使用者定義功能是在把LCR所表示的資料應用到本地表之前,預先對資料進行再格式化,例如,對映事務處理的欄位格式,物件名和列名等。使用者定義功能也可被用於執行行子集,或用來更新在源資料庫中沒有出現的物件。
  
  顯式出列
  使用者應用可以使LCR或其他資訊從接收的儲存區域顯式出列。這可以使使用者應用更有效地訪問流儲存區域中的資料。流可以向註冊的PL/SQL或OCI功能傳送通知,為應用提供一個可選方案以獲取新的資訊。當然,為使儲存區域中新訂閱的資訊可有效利用,應用仍然可以捕獲,甚至等待。
  
  網路指向
  管理員在指定流的路徑上具有很大的靈活性。透過使用儲存區域佇列的基於規則的發行和訂閱能力,他們可以選擇哪些變化將被傳遞到每一個目的資料庫中,並能指定達到目的地的路徑資訊。例如,一個事件可以透過一個並沒有實際應用該事件的集線器資料庫來傳遞。
  【轉自】

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

相關文章