当前位置: 首页 > 工具软件 > LogMiner > 使用案例 >

oracle logminer 详解

卞成荫
2023-12-01

大家都知道oracle logminer是用来挖掘redo日志的,其中有大体的流程和若干细节需要考虑。

在本文,我计划给大家讲述logminer的使用流程和大致思路:

1、启用supplemental logging

 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即可。

2、设置logMiner Dictionary

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);

3、设置需要挖掘的redo log,如果是基于时间或基于SCN的挖掘,就不需要添加了,logminer会根据您提供的时间范围,自动查收需要挖掘的数据范围

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;

4、启动logminer

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);

5、查询挖掘结果

select   SQL_REDO,SQL_UNDO   from  v$logmnr_contents where table_name="XXX";

6、关闭logminer session

DBMS_LOGMNR.END_LOGMNR();

 类似资料: