在oracle中Logmnr进行日志挖掘

来源:互联网 发布:梦想的声音 知乎 编辑:程序博客网 时间:2024/05/17 08:41
在oracle中Logmnr进行日志挖掘

今天同事说一个表中的数据被删除,让我查一查是什么时间被删的,oracle中的日志挖掘可以做到,呵呵。下面说说oracle中的日志挖掘。

日志挖掘需要DBMS_LOGMNR_D和DBMS_LOGMNR包,如果数据库没有这两包,SYSDBA身份运行下面脚本:
 @$ORACLE_HOME/rdbms/admin/dbmslm.sql;

 @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;


建立分析列表,即所要分析的日志:

exec sys.dbms_logmnr.add_logfile(logfilename=>'D:/ORACLE/10.2/DB_1/ORADATA/ORCL/REDO01.LOG');
exec sys.dbms_logmnr.add_logfile(logfilename=>'D:/ORACLE/10.2/DB_1/ORADATA/ORCL/REDO02.LOG');
exec sys.dbms_logmnr.add_logfile(logfilename=>'D:/ORACLE/10.2/DB_1/ORADATA/ORCL/REDO03.LOG');

进行日志分析,该例中没有建立数据字典,使用dbms_logmnr.dict_from_online_catalog选项参数,则logminer期望在所指定的dbms_logmnr.add_logfile或重做日志中找到数据字典。
exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);

查看分析结果,其中sql_redo是重做sql文本,即所做过的操作,如果要回退,可以查sql_undo值,seg_name是段名,一般是所操作过的对象如表:
select scn,to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ss'),sql_redo from v$logmnr_contents  where upper(seg_name)='T_DS_HCARD001_STATE';

分析后释放内存:
 exec sys.dbms_logmnr.end_logmnr();
原创粉丝点击