oracle 11g 数据库恢复技术 ---03 补充日志
三 補充日志(supplemental logging)
補充日志是對重做記錄中變更矢量的補充信息,增加了變更矢量記載的記錄量。Oracle某些功能要求啟用補充日志才能正常或更好的工作,比如logminer(日志挖掘器)、閃回事務查詢、閃回事務等。
對于insert和delete來說,常規(guī)的重做記錄記載了被更改的行的所有字段,沒有什么補充,但是update例外,不但所有字段的舊值沒有被記錄(除非更新所有字段),有時update還是導致行遷移,
補充日志主要就是為update服務的,補充的目的就是要高度還原真實的update,在某種情況下,當實例和介質(zhì)恢復不能百分百地完成作用時,只能向殘存的日志索取更多的信息
?
1 數(shù)據(jù)庫級補充日志
在oracle 11g中,默認不啟用
?
TEST@ orcl >select supplemental_log_data_min sl_min,supplemental_log_data_pk sl_pk,supplemental_log_data_ui sl_ui, supplemental_log_data_fk sl_fk,supplemental_log_data_all sl_all from v$database; 2 SL_MIN SL_ SL_ SL_ SL_ -------- --- --- --- --- NO NO NO NO NO?
最小補充日志是最基本的一種數(shù)據(jù)庫級補充日志
LogMiner依賴最小補充日志產(chǎn)生的特殊信息以識別、分組與合并dml所產(chǎn)生的重做記錄,目的是為了讓logminer通過分析redo log就可以識別由update導致的行遷移、行移動。
如果update命令導致行變長,在數(shù)據(jù)塊空間不足的情況下行會部分(行頭部除外)遷移至另一個數(shù)據(jù)塊,稱為行遷移。
TEST@ orcl >alter database add supplemental log data; ##啟用最小補充日志 Database altered. TEST@ orcl >select supplemental_log_data_min sl_min from v$database; SL_MIN -------- YES TEST@ orcl >alter database drop supplemental log data; ##關閉最小補充日志啟用最小補充日志不會對重做記錄的生成產(chǎn)生明顯的額外開銷,又能使日志文件支持logminer和閃回事務查詢功能,提高數(shù)據(jù)塊抵抗人為錯誤的能力上考慮,應該啟用此功能。
注意:凡是啟用或關閉數(shù)據(jù)庫級補充日志都會導致共享池中的所有的sql命令游標非法,在短期內(nèi)硬解析會顯著上升。
TEST@ orcl >select count(*) from scott.emp;COUNT(*) ----------14 TEST@ orcl >select invalidations from v$sql where sql_text='select count(*) from scott.emp'; INVALIDATIONS -------------0 select sql_text,invalidations from v$sql where sql_text like 'select count(*) %';關鍵字段補充日志有4種主鍵、唯一索引、外鍵和全體字段補充日志。
--alter database add supplemental log data (primary key) columns;
開啟主鍵補充日志的前提必須要開啟最新補充日志,關閉也是一樣。
主鍵補充日志的作用是在update命令的重做記錄中添加被修改行的主鍵字段的舊值。
唯一索引補充日志只有當唯一索引字段被update時才會記錄該字段。
外鍵補充一樣,只有當外鍵字段被update修改時,其修改前的舊值才會被記錄。
全體字段補充日志,它和主鍵補充一樣同為不條件,無論哪個字段被update,所有字段(除了LOB\LONG類型)的舊值都將被記錄。
--alter database add supplemental log data (all) columns;
2 表級補充日志
針對某些表進行日志補充,前提要開啟數(shù)據(jù)庫最小日志補充。
表級補充分為主鍵、唯一索引、外鍵、全字段和自定義5種類型,前4種與數(shù)據(jù)庫級對應的類型特點一樣。
--alter table scott.emp add supplemental log data (primary key) columns;
--alter table scott.emp add supplemental log group emp_info(first_name,last_name,email);
如果只從DML命令性能的角度出發(fā),沒有人會啟用補充日志,建議至少啟用最小日志補充,否則至少將喪失logminer和閃回事務查詢功能。
?
轉載于:https://www.cnblogs.com/yhq1314/p/10938939.html
總結
以上是生活随笔為你收集整理的oracle 11g 数据库恢复技术 ---03 补充日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win server 2012 R2 文
- 下一篇: linux cmake编译源码,linu