補充日志只要是針對UPDATE命令的,是對重做日志記錄中變更矢量塊的補充信息,增加了變更矢量記載的記錄量。日志挖掘器(LogMiner)、閃回事務(wù)查詢、閃回事務(wù)等都需要補充日志的支持。也就是說補充日志主要是為UPDATE命令服務(wù)的,補充的目的是高度還原UPDATE命令,避免因為update命令造成的行遷移和行移動,讓LogMiner 通過分析重做日志中識別update 命令不是由insert和delete完的。
10年積累的成都網(wǎng)站設(shè)計、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有孟州免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
數(shù)據(jù)庫級補充日志分為:最小補充日志、標(biāo)識關(guān)鍵字段補充日志
(1).最小補充日志:是最基本的一種數(shù)據(jù)庫級補充日志,而LogMiner正是依賴最小補充日志工作服務(wù)的(即識別 行移動 行遷移)。
啟用最小補充日志命令:
alter database add supplemental log data;
關(guān)閉最小補充日志命令:
alter database drop supplemental log data;
(2).標(biāo)識關(guān)鍵字段補充日志:分為主鍵、外鍵、唯一索引、全體字段補充日志 4種。
主鍵補充日志:在update命令的重做記錄中添加被修改行的主鍵字段的舊值,無論是否被修改,都記錄。如果表沒有主鍵,則由長度最小的唯一索引字段代替,若連唯一索引也沒有,則記錄該行所有字段.
alter database add supplemental log data (Primary key) columns;
唯一索引補充日志:唯一索引主要是為復(fù)合索引(唯一)服務(wù)的。只有唯一索引的字段被update時,才會記錄該字段被修改前的值。
alter database add supplemental log data (unique) columns;
外鍵補充日志:同唯一索引補充日志一樣,只有外鍵字段被update時,才會記錄被修改前的舊值,即也是為復(fù)合外鍵服務(wù)的。
alter database add supplemental log data (foreign key ) columns;
全體字段補充日志:顧名思義就所有字段的值不論是否被修改都記錄。會導(dǎo)致磁盤快速增長,LGWR進(jìn)程繁忙。不建議使用。
alter database add supplemental log data (all) columns;
表級補充日志:
分為: 主鍵、唯一索引、外鍵、全體字段、用戶自定義字段5種。
前4種同數(shù)據(jù)庫級 標(biāo)識關(guān)鍵字段補充日志效果用法一樣。只不過是在特定表上啟用補充日志
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;
1.查看數(shù)據(jù)庫是否開啟補充日志
SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; --開啟了補充日志
SUPPLEME
--------
YES
SQL> SELECT supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui,
supplemental_log_data_fk,supplemental_log_data_all FROM v$database;
SUPPLEME SUP SUP SUP SUP --只開啟了主鍵的補充日志
-------- --- --- --- ---
YES NO NO NO NO
SQL>
2.查看表是否添加到補充日志中
SQL> select * from dba_log_groups where table_name='abc'; --查看表是否有補充日志
no rows selected
SQL> select * from dba_log_group_columns where table_name='abc'; --查看補充日志的字段
no rows selected
SQL>
3.解決方法(1)
GGSCI (iZ23jtzbnliZ) 35> dblogin userid ggs,password system --EXTRACT進(jìn)程里的用戶名和密碼
Successfully logged into database.
GGSCI (iZ23jtzbnliZ) 36> add TRANDATA tong.abc --添加補充日志(tong是數(shù)據(jù)庫,abc是表名)
Logging of supplemental redo data enabled for table UPCENTER.NEWS_FLASH_TAB_CLAS_RELA.
GGSCI (iZ23jtzbnliZ) 37>
3.解決方法(2)
SQL> alter table abc add supplemental log data(all,primary key,unique,foreign key) columns;
SQL>