Oracle補充日誌

分類:編程 時間:2016-11-03
Oracle補充日誌   -----補充日誌 Supplemental Logging   補充日誌只要是針對 update 命令的,是對重做日誌記錄中 變更矢量塊的補充信息,增加了變更矢量記載的記錄量。   日誌挖掘器(LogMiner)、閃回事務查詢、閃回事務等都需要 補充日誌的支持。尤其是 日誌挖掘器如果發現未啟用補充   日誌,就拒絕服務。也就是說補充日誌主要是為UPDATE 命令服務的,補充的目的是高度還原 UPDATE 命令,避免因為   update  命令造成的行遷移和行移動,讓LogMiner 通過分析重做日誌中識別 update 命令 不是 由 insert 和 delete  完成的。      如果未啟用補充日誌,重做日誌只將 UPDATE 命令更改的字段的舊值保存在撤銷數據塊的變更矢量中。而在數據塊中的   變更矢量中記載被修改後的字段的新值。同行中的未被修改的字段,不會被記載。   如果啟用了補充日誌,重做日誌中的撤銷數據塊的變更矢量中會記錄 被修改字段前的值和修改後的值,而且還會記錄   修改字段的那個條件的值。即變更矢量中會記載:    幾號數據文件+幾號文件中的幾號塊+第幾個字段+修改後的值+修改前的值+“where 條件” 的值        行移動: 指 update 命令執行時 在索引組織表中有時 會導致整行被轉移至另一個索引塊中。該情況或過程稱為 行移動。    行遷移: 如果是在堆棧表中,update 命令導致行太長,在數據塊空間不足的情況下會將部分(行頭部除外)遷移到另                     一個數據塊中,行頭任然保留在原數據塊中。     補充日誌分為:數據庫級補充日誌、 表級補充日誌                            其他補充日誌都是基於數據庫級最小補充日誌之上的,如果未啟用數據庫級最小補充日誌,在啟用                            或使用其他補充日誌時,會自動啟用數據庫的最小補充日誌                                 數據庫級補充日誌分為:最小補充日誌、標識關鍵字段補充日誌         最小補充日誌:是最基本的一種數據庫級補充日誌,而 LogMiner 正是依賴最小補充日誌工作服務的(即識別 行移動 行遷移)。
        啟用最小補充日誌命令:
            ALTER database ADD Supplemental LOG DATA;
        關閉最小補充日誌命令:
            ALTER DATABASE DROP Supplemental Log Data;

 

                       標識關鍵字段補充日誌:分為 主鍵、外鍵、唯一索引、全體字段 補充日誌 4種。           主鍵補充日誌:在update 命令的重做記錄中添加被修改行的主鍵字段的舊值,無論是否被修改,都記錄。                                      如果表沒有主鍵,則由長度最小的唯一索引字段代替,若連唯一索引也沒有,則記錄該行所有字段。                   
  alter database add supplemental log data (Primary key) columns;

 

          唯一索引補充日誌:唯一索引主要是為 復合索引(唯一)服務的。只有唯一索引的字段被 update 時,才會記錄該字段                                           被修改前的值。                     
alter database add supplemental log data (unique) columns;

 

           外鍵補充日誌:同唯一索引補充日誌一樣,只有外鍵字段被 update 時,才會記錄被修改前的舊值,即也是為復合外鍵                                     服務的。                     
alter database add supplemental  log data (foreign key ) columns;

 

          全體字段補充日誌:顧名思義就所有字段的值不論是否被修改都記錄。會導致磁盤快速增長,LGWR進程繁忙。不建議使用。                     
 alter database add supplemental log data (all) columns;

 

                                這 4 種補充日誌可以並行使用,效果累加。                 表級補充日誌:         分為: 主鍵、唯一索引、外鍵、全體字段、用戶自定義字段 5種。         前 4 種 同數據庫級 標識關鍵字段補充日誌效果用法一樣。只不過是在特定表上啟用補充日誌
        1、 alter table tb_name add supplemental log data (primary key) columns;
        2、alter  table tb_name add supplemental log data (unique) columns;
        3、 alter table tb_name add supplemental log data (foreign key) columns;
        4、 alter table tb_name add supplemental log data (all) columns;
        5、 alter table tb_name add supplemental log group group_name  (col01,col02,col05,col09) | always;

 

                 --自定義字段表級補充日誌 用戶可以任意指定哪些字段的舊值需要被補充日誌記錄。             有條件記錄式記載是指 無論 update 那個字段 這組中的其他字段都的記錄其舊值             無條件記錄式記載是指 有無條件記錄式記載 命令末尾 加  always 關鍵字,然後無論 update 該行那個字段,都記錄該組中             的字段的舊值。                     表級補充日誌的情況 通過  
dba_log_groups 和  dba_log_group_columns
視圖查詢獲得

Tags: 日誌記錄 Oracle insert update 數據庫

文章來源:


ads
ads

相關文章
ads

相關文章

ad