大家都知道oracle logminer是用来挖掘redo日志的,其中有大体的流程和若干细节需要考虑。
在本文,我计划给大家讲述logminer的使用流程和大致思路:
supplemental log启用命令如下:
alter database add supplemental log data;
查看 supplemental log的启用情况:
select supplemental_log_data_min,supplemental_log_data__all,
supplemental_log_data_pk, supplemental_log_data_ui,
supplemental_log_data_fk
from v$database
supplemental log的启用有很多细节,比如是在REDO LOG中记录update的整行内容,还是只记录update的相关字段的内容等,这些细节,自行脑补。
你只要只要在这里可以开启 supplemental log即可。
logMiner Dictionary有三种形式:
一种是使用online catalog:
DBMS_LOGMNR.START_LOGMNR(OPTION=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
第二种是logMiner Dictionary放入REDO LOG里面:
DBMS_LOGMNR_D.BUILD(OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
第三种是logMiner Dictionary放入单独的flat文件中:
a>使用UTL_FILE_DIR初始化参数指定文件目录,需要重启数据库生效;
b>DBMS_LOGMNR_D.BUILD('mydictionary.ora','/home/oracle',DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);
DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => 'xxxx/redo03.log',
OPTIONS => DBMS_LOGMNR.NEW);
DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => 'xxxx/redo04.log',OPTIONS=>DBMS_LOGMNR.ADDFILE);
查询哪些日志文件需要被挖掘:
select * from logmnr_logs;
1、基于在线日志字典进行挖掘
DBMS_LOGMNR.START_LOGMNR(OPTION=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
2、基于logMiner Dictionary放入REDO LOG里面进行挖掘:
DBMS_LOGMNR.START_LOGMNR(OPTION => DBMS_LOGMNR.DICT_FROM_REDO_LOGS);
3、基于flat file日志进行挖掘
DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>'/home/oracle/mydictionary..ora');
4、按时间进行挖掘
DBMS_LOGMNR.START_LOGMNR( STARTTIME=>""2021-10-21 10:29:31",ENDTIME=>SYSDATE, OPTIONS=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR..CONTINUOUS_MINE);
select SQL_REDO,SQL_UNDO from v$logmnr_contents where table_name="XXX";
DBMS_LOGMNR.END_LOGMNR();