ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在oracle中Logmnr进行日志挖掘

在oracle中Logmnr进行日志挖掘

原创 Linux操作系统 作者:yobyin 时间:2012-04-01 17:41:37 0 删除 编辑

今天同事说一个表中的数据被删除,让我查一查是什么时间被删的,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();

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8013558/viewspace-720194/,如需转载,请注明出处,否则将追究法律责任。

上一篇: rose ha 配置
下一篇: 监听起不来
请登录后发表评论 登录
全部评论

注册时间:2009-03-31

  • 博文量
    45
  • 访问量
    105695