Log Miner简介
Log Miner是Oracle自Oracle 8i以后推出的一个可以分析数据库redo log和archivelog内容的工具,可以通过日志分析所有对数据库的DDL和DML操作,也可以分析出操作的时间与操作时的SCN和进行操作的机器,对于DML操作还可以查询出还原操作的sql。
Log Miner组成
源数据库产生LogMiner分析的所有重做日志文件的数据库
挖掘数据库是执行LogMiner分析时使用的数据库
LogMiner数据字典是LogMiner使用字典将内部对象标识符和数据类型转换为可读数据。如果没有字典,Log Miner分析的结果会显示为二进制数据。
logminer包括2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,可以分析redo log file,也可以分析归档后的archive log file
logminer的安装:
创建DBMS_LOGMNR:
SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql
Package created.
Grant succeeded.
创建DBMS_LOGMNR_D
SQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
Package created.
启用归档
sys@ORCL>alter database archivelog;
Forcing logging
sys@ORCL>alter database force logging;
添加最小附加日志
sys@ORCL>alter database add supplemental log data;
查看结果
sys@ORCL>select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
LOG_MODE FORCE_LOG SUPPLEMENTAL_LOG_DATA_MI
ARCHIVELOG YES YES
设置参数:UTL_FILE_DIR,数据字典物理文件存放的路径,注意路径的权限!
alter system set utl_file_dir = ‘/backup’ scope = spfile;
重启数据库才有效
首次添加要分析的日志
execute dbms_logmnr.add_logfile (logfilename=>’/home/orcl/app/fast_recovery_area/ORCL/archivelog/2015_06_03/o1_mf_1_3_bpxgpcwn_.arc’,options=>dbms_logmnr.new);
分析归档可以在v
a
r
c
h
i
v
e
d
l
o
g
视
图
中
找
到
归
档
名
分
析
重
做
日
志
可
以
在
v
archived_log视图中找到归档名 分析重做日志可以在v
archivedlog视图中找到归档名分析重做日志可以在vlogfile视图中找日志名(只能分析未归档重做日志,不然会系统重复错误)
再次添加
execute dbms_logmnr.add_logfile(logfilename=>’/home/orcl/app/fast_recovery_area/ORCL/archivelog/2015_06_03/o1_mf_1_2_bpxgpcwn_.arc’,options=>dbms_logmnr.addfile);
删除挖掘日志
execute dbms_logmnr.add_logfile (logfilename=>’/home/orcl/app/fast_recovery_area/ORCL/archivelog/2015_06_03/o1_mf_1_2_bpxgpcwn_.arc’,options=>dbms_logmnr.removefile);
执行存储过程dbms_logmnr_d.build执行存储过程dbms_logmnr_d.build创建挖掘日志文件的物理文件路径
execute dbms_logmnr_d.build(‘estlogminer.ora’,’/backup’);
启动logminer
execute dbms_logmnr.start_logmnr(dictfilename=>’/backup/testlogminer.ora’,options=>dbms_logmnr.ddl_dict_tracking);指明了字典物理文件’/backup/testlogminer.ora
可以添加一下过滤条件
按SCN来过滤
execute dbms_logmnr.start_logmnr(dictfilename=>’/backup/testlogminer.ora’,startscn=>50,endscn=>100);
按时间过滤
execute dbms_logmnr.start_logmnr(dictfilename=>’/backup/testlogminer.ora’,starttime=>to_date(‘03-Jun-2015 14:20:20’ ,‘DD-MON-YY HH:MI:SS’),starttime=>to_date(‘03-Jun-2015 17:20:20’ ,‘DD-MON-YY HH:MI:SS’));
开启logminer之后
select filename from v
l
o
g
m
n
r
l
o
g
s
;
可
以
查
询
l
o
g
m
i
n
e
r
正
在
分
析
哪
些
日
志
∗
∗
可
以
在
v
logmnr_logs;可以查询logminer正在分析哪些日志 **可以在v
logmnrlogs;可以查询logminer正在分析哪些日志∗∗可以在vlogmnr_contents中在线分析挖掘日志;**
select to_char(timestamp,‘yyyy-mm-dd hh24:mm:ss’),
operation,
username,
SESSION_INFO,
sql_redo
from v$logmnr_contents
7 where table_name = ‘TEST1’;
结束logminer
SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR;