補充日誌只要是針對UPDATE命令的,是對重做日誌記錄中變更矢量塊的補充信息,增加了變更矢量記載的記錄量。日誌挖掘器(LogMiner)、閃回事務查詢、閃回事務等都需要補充日誌的支持。也就是說補充日誌主要是爲UPDATE命令服務的,補充的目的是高度還原UPDATE命令,避免因爲update命令造成的行遷移和行移動,讓LogMiner 通過分析重做日誌中識別update 命令不是由insert和delete完的。
數據庫級補充日誌分爲:最小補充日誌、標識關鍵字段補充日誌
(1).最小補充日誌:是最基本的一種數據庫級補充日誌,而LogMiner正是依賴最小補充日誌工作服務的(即識別 行移動 行遷移)。
啓用最小補充日誌命令:
alter database add supplemental log data;
關閉最小補充日誌命令:
alter database drop supplemental log data;
(2).標識關鍵字段補充日誌:分爲主鍵、外鍵、唯一索引、全體字段補充日誌 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;
表級補充日誌:
分爲: 主鍵、唯一索引、外鍵、全體字段、用戶自定義字段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;
1.查看數據庫是否開啓補充日誌
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進程裏的用戶名和密碼
Successfully logged into database.
GGSCI (iZ23jtzbnliZ) 36> add TRANDATA tong.abc --添加補充日誌(tong是數據庫,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>