深入認識Oracle Supplemental logging
對於有過邏輯standby,streams搭建體驗的朋友,肯定對Supplemental logging不會感到陌生,在一步一步學Dataguard系列筆記中,我曾將其譯為附加日誌,後來想了想,我覺著附加日誌這幾個字還是不能完全體現其真實意圖,一時半會兒又找不到合適的詞兒,算了,不譯了,還是堅持以英文相稱吧。
Supplemental Logging具體是做什麼用的呢?要回答這個問題,我們就必須先搞明白,為什麼我們需要Supplemental Logging!
事實上,目前最有可能用到Supplemental Logging的也只有邏輯standby和streams這兩項特性(10g以後如果希望logminer能夠分析出所有操作,建議也要啟用Supplemental Logging),我們都知道,這兩項特性的資料應用都屬於邏輯應用,類似source database執行update語句之類,結果也要反映到target database,如何準確判斷出source端修改的列,在target端中應該更新到哪條記錄上呢?根據rowid?顯然不靠譜啊,都說了是邏輯的,塊的位置完全不一樣,rowid已無用武之地~~~你想說,能否通過表中的唯一鍵?在更新表中記錄時,將主鍵或唯一鍵做為附加的資訊,與被修改的列一起存入redolog中,對於沒有主鍵唯一鍵的表,則將表中所有列統統組合做為附加資訊存入redolog,這樣target端在分析redolog時,就知道該更新表中的哪些記錄了!
哎呀,說到這裡我不得不鄭重表揚..............oracle,它跟你想到一塊去啦,為了彰顯其成果,Oracle將這項特性命名為:Supplemental Logging。當然啦,為了這項特效能夠工作的更好,oracle深化了你的想法,並將其設計的更加靈活多樣。
資料庫啟用了Supplemental Logging之後,對於修改操作,oracle就會同時附加一些能夠唯一標識修改記錄的列到redolog中,對於擁有主鍵或唯一鍵的表,這個操作最簡單,只需要附加主鍵或唯一鍵即可,這樣生成的redo也是最小的,當然這只是一個理想狀態,現實情況下某些表可能無法建立主鍵/唯一鍵,或者歷史原因確無主鍵/唯一鍵,這種情況下oracle會將所有列(提示,非log,long之類大欄位型別的列)都做為附加資訊記錄到redo中,這種情況下redo有可能增長迅速,並且在target端應用時也會受到一些影響。因此oracle建議最好為每個涉及到複製的表都建立主鍵或者唯一鍵。
對於選擇的列和那些用於精確定位的附加列的組合,oracle也對其做了定義叫做supplemental log group。隨後oracle又對supplemental log group做了分類,目的是更精確的設定redolog中都記錄些什麼資訊,分如下兩類:
a.Unconditional Supplemental Log Groups:無條件記錄指定列的前映像,而不管發生修改操作的是不是指定列。因此它還有個外號,叫"老記錄日誌組"。
b.Conditional Supplemental Log Groups:只有至少一個指定列發生修改操作時被觸發,並記錄下修改列的前映像。
Supplemental Logging可以在資料庫級設定,也可以精確到表級設定,對於資料庫級有兩種型別:minimal logging和identification key logging,其主要區別就在於寫入redolog中的資料詳盡程度不同。
以資料庫級為例,如何啟用Supplemental Logging呢?試試這個命令:
alter database add supplemental log data;
注:這裡啟用minimal logging,一般做到這一步,logminer就擁有足夠的資訊分析所有所做過的操作。
如果想禁用Supplemental Logging,drop即可:
alter database drop supplemental log data;
如何查詢當前資料庫是否啟用了Supplemental Logging呢?則可以試試這條語句:
select supplemental_log_data_min,
supplemental_log_data_pk,
supplemental_log_data_ui,
supplemental_log_data_fk,
supplemental_log_data_all
from v$database;
注:supp....data_min/pk/ui等等分別表示不同附加列級別。
正如前面多次提到的,更多應用Supplemental Logging的場合是邏輯standby和streams,因此,如果你希望瞭解更多的資訊,不妨多去測試測試這兩項特性吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-462640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- supplemental logging總結
- 深入認識LinuxLinux
- 深入認識Redux(四)Redux
- nologging、force logging、supplemental log的理解
- GGS ERROR 190 No Minimum Supplemental Logging Is EnabledError
- oracle設定supplemental logOracle
- 11.17深入認識LinuxLinux
- 認識node核心模組--深入EventEmitterMIT
- 深入認識TigaseXMPPServer(上)Server
- ERROR OGG-00730 No minimum supplemental logging is enabledError
- Logical Standby中的supplemental logging和rely disable constraintAI
- HttpModule的認識與深入理解HTTP
- Oracle 補充日誌(supplemental log)Oracle
- 深入認識 http_build_query 函式HTTPUI函式
- 深入認識javascript中的eval函式JavaScript函式
- Oracle supplemental log的兩種型別Oracle型別
- 認識oracle的update更新Oracle
- Oracle認證常識(轉)Oracle
- 循序漸進Oracle - 全面認識Oracle ASHOracle
- Supplemental log VS add trandata on OGG for oracleOracle
- 認識Oracle DBFS檔案系統Oracle
- Oracle10g Supplemental Log(追加日誌) [final]Oracle
- 關於oracle10g Supplemental Log (追加日誌)Oracle
- [.net 物件導向程式設計深入](8)認識.NET Core物件程式設計
- Oracle10g Supplemental Log(追加日誌) -2 [final]Oracle
- Oracle Audit 審計功能的認識與使用Oracle
- 附加日誌(supplemental log)
- GoldenGate Supplemental Log DataGo
- Oracle設定日誌引數-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;OracleDatabase
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- 認識Oracle控制檔案(10g) - finalOracle
- Oracle資料庫字符集的全面認識Oracle資料庫
- 認識CopyOnWriteArrayList
- 認識DockerDocker
- 認識jqueryjQuery
- JQuery認識jQuery
- 認識 TypeScriptTypeScript
- 【認識JavaScript】JavaScript