Oracle10g Supplemental Log(追加日誌) [final]
在做Oracle10g Logical Standby 或 Oracle Stream的時候, 大多數時候,我們需要設定 Supplemental Log(追加日誌) , 這個主要是因為Logical Standby或 Oracle Stream 是使用解析日誌的方式得出DDL , DML 語句, 然後Apply到Standby 或 從庫中 。 由於普通redo 日誌只是記錄rowid 及更改前後的列的值即可對資料庫進行恢復或roll forward 等動作, 但是 類似 logical stand DB不是根據rowid 來做recover, 所以需要在redo裡記錄PK or unique index的資訊來定位操作的data 行, 而只有pk或unique index對應的列被更改時才會被記錄,所以 Supplemental Log 出現了 。
物理Standby 在應用資料庫塊的時候,可以根據rowid 知道更新,插入或刪除了哪些行, 但是 logical standby及stream 應用中都是採用解析log的方式Apply SQL , 而不是block , 源資料庫上做的操作需要反映到目標資料庫上的table, 這裡需要注意, 主庫的redo在備庫中解析出來後每一行資料的變更都會生成一條SQL (比如主庫中的一個批次更新SQL , 在備庫可能是 1000 條SQL 語句) , 這就要求備庫能夠唯一區別出每一條資料 , 由於主庫備庫只是邏輯上一致,ROWID屬於物理結構,是不一樣的 (block位置也許完全不一樣了), 那麼備庫需要能夠唯一區別出一條資料只有透過pk 或 unique index 來進行判斷 。
情況一: 對於有pk 或unique index 的table , 且pk 或 unique index 是由一個欄位組成,不是組合索引。 如果每次更新的是PK列或unique index列, 那麼可以不用啟用 Supplemental Log , redo log 會附加記錄這些pk 或unique index , 以便logical standby 等進行恢復的時候能知道哪些行被更新了 。 這樣生成的redo log也是最小的。 但是如果更新的不是PK或unique index列,那麼還是需要啟用Supplemental Log 的, 以便記錄PK/FK , unique index資訊 。
情況二 : 對於有但只有組合的pk 或組合的unique index 的table (index由多個欄位組成) , 那麼需要啟用 Supplemental Log , 如果更新了pk 中的部分欄位, Supplemental Log 的作用就是將pk的其餘部分也記錄到redo log 中 。
情況三 : 對於沒有pk 或 unique index 的table , 資料庫需要啟用Supplemental Logging, 對於更新操作, Oracle會同時附加一些能夠唯一標識修改記錄的列到redo log中 。 這種情況下oracle會將所有列(提示,非lob , long之類大欄位型別的列) 都做為附加資訊記錄到redo中,這種情況下redo有可能增長迅速,並且在target端應用時也會受到一些影響。因此oracle建議最好為每個涉及到複製的表都建立主鍵或者唯一鍵。
對於選擇的列和那些用於精確定位的附加列的組合,oracle也對其做了定義叫做supplemental log group。隨後oracle又對supplemental log group做了分類,目的是更精確的設定redo log中都記錄些什麼資訊,分如下兩類:
a.Unconditional Supplemental Log Groups:無條件記錄指定列的前映像,而不管發生修改操作的是不是指定列。 因此它還有個外號,叫"老記錄日誌組"。
b.Conditional Supplemental Log Groups:只有至少一個指定列發生修改操作時被觸發,並記錄下修改列的前映像。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-630259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle10g Supplemental Log(追加日誌) -2 [final]Oracle
- 關於oracle10g Supplemental Log (追加日誌)Oracle
- 為什麼要Supplemental Log(追加日誌)
- 附加日誌(supplemental log)
- Oracle 補充日誌(supplemental log)Oracle
- Log日誌
- Oracle設定日誌引數-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;OracleDatabase
- GoldenGate Supplemental Log DataGo
- oracle設定supplemental logOracle
- Weblogic日誌Web
- log 日誌原理
- Oracle10g新特性——LOG ERRORS記錄DML錯誤日誌(三)OracleError
- Oracle10g新特性——LOG ERRORS記錄DML錯誤日誌(二)OracleError
- Oracle10g新特性——LOG ERRORS 記錄DML錯誤日誌(一)OracleError
- Python 日誌(Log)Python
- Logminer日誌挖掘
- logminr 日誌挖掘
- Logstash日誌蒐集
- logmnr 日誌挖掘
- 日誌挖掘 log miner
- LOGMINER日誌分析
- Log 工具列印日誌
- supplemental logging總結
- MySQL 的日誌:binlogMySql
- rsyslog日誌總結
- Linux C日誌logLinux
- Rsyslog日誌系統
- MySQL重做日誌(redo log)MySql
- mysql清除binlog日誌MySql
- 日誌分析工具 Log Parser
- Android日誌Log使用Android
- logminer 日誌分析案例
- logminer抽取日誌案例
- MySQL的binlog日誌MySql
- ORACLE LOGMNR 日誌挖掘Oracle
- 清除MySQL Binlog日誌MySql
- ORACLE logminer 日誌挖掘Oracle
- tinylog簡化日誌