浅谈LogMiner的使用

原创 2003年08月11日 12:16:00

Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来。而LogMiner就可以帮你确定这个误操作的准确时间。

我的测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库。

一、LogMiner的几点说明
1、LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件。
2、它只能在Oracle8i及以后的版本中使用,不过它可以分析Oracle8的日志。
3、Oracle8i只能用于分析DML操作,到Oracle9i则可以分析DDL操作了。
4、LogMiner不支持索引组织表、Long、LOB及集合类型。
5、MTS的环境也不能使用LogMiner.

二、操作步骤
1、设定用于LogMiner分析的数据文件存放的位置
 这是设定utl_file_dir参数的过程,我的示例:
 a、在initctc.ora文件中加入如下一行
    utl_file_dir=/u01/arch
 b、得启数据库
   oracle>sqlplus /nolog  
   sql>conn / as sysdba
   sql>shutdown immediate
   sql>statup

2、生成数据字典文件,是通过dbms_logmnr_d.build()来完成。
  SQL> BEGIN
   2     dbms_logmnr_d.build(
   3       dictionary_filename => 'logminer_dict.dat',
   4       dictionary_location => '/u01/arch'
   5     );
   6  END;
   7 /
 
  dictionary_location指的是Logminer数据字典文件存放的位置,它必须匹配utl_file_dir的设定。
  其中的dictionary_filename指的是放于存放位置的字典文件的名字,名字可以任意取。

3、建立一个日志分析表
  a、建立日志分析表数据库必须在mount或nomount状态,启动数据库到mount状态。
    sqlplus /nolog
    sql>conn / as sysdba
    sql>shutdown immediate
    sql>starup mount
 
  b、建立日志分析表,使用dbms_logmnr.add_logfile()
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.new,
     4       logfilename => '/u01/arch/arc_ctc_0503.arc'
     5     );
     6  END;
     7 /      
    其中的options有三种取值,dbms_logmnr.new用于建一个日志分析表;dbms_logmnr.addfile用于加入用于分析的的日志文件;dbms_logmnr.removefile用于移出用于分析的日志文件。
       

4、添加用于分析的日志文件。
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.addfile,
     4       logfilename => '/u01/arch/arc_ctc_0504.arc'
     5     );
     6  END;
     7 /
 
  使用则可以把这个文件从日志分析表中移除,从而不进行分析。
    SQL> BEGIN
     2     dbms_logmnr.add_logfile(
     3       options => dbms_logmnr.removefile,
     4       logfilename => '/u01/arch/arc_ctc_0503.arc'
     5     );
     6  END;
     7 /  
    

5、启动LogMiner进行分析。
    SQL> BEGIN
     2     dbms_logmnr.start_logmnr(
     3       dictfilename => '/u01/arch/logminer_dict.dat',
     4       starttime => to_date('20030501 12:15:00','yyyymmdd hh24:mi:ss'),
     5       endtime => to_date('20030501 15:40:30','yyyymmdd hh24:mi:ss')
     6     );
     7  END;
     8 /
   
    即分析2003年5月1日这天12:15至15:40这段时间,并把分析结果放到数据字典中以用于查询。还有两个参数StartScn(起始scn号)及EndScn(终止Scn)号。

6、查看日志分析的结果,通过查询v$logmnr_contents可以查询到
  a、查看DML操作,示例:
    SELECT operation,
           sql_redo,
           sql_undo,
      FROM V$logmnr_contents
     WHERE seg_name = 'QIUYB';
  
     OPERATION     SQL_REDO                    SQL_UNDO
     ----------    --------------------------  --------------------------
     INSERT        inser into qiuyb.qiuyb ...  delete from qiuyb.qiuyb...
 
    其中operation指的是操作,sql_redo指的是实际的操作,sql_undo指的是用于取消的相反的操作。
 
  b、查看DDL操作,示例:
    SELECT timstamp,
           sql_redo
      FROM v$logmnr_contents
     WHERE upper(sql_redo) like '%TRUNCATE%';

7、结束LogMiner的分析。
  SQL>BEGIN
   2     dbms_logmnr.end_logmnr;
   3   end;
   4 /

三、与LogMiner相关的数据字典。
1、v$loglist           它用于显示历史日志文件的一些信息
2、v$logmnr_dictionary 因logmnr可以有多个字典文件,该视图用于显示这方面信息。
3、v$logmnr_parameters 它用于显示logmnr的参数
4、v$logmnr_logs       它用于显示用于分析的日志列表信息。

(全文完)

[Logmnr]使用logminer找回被误删的数据

LogMiner日志挖掘技术在有些时候可以被比作是命悬一线的救命稻草,比方说误删除数据(如delete执行不当),可以通过LogMiner挖掘日志文件将这些数据补插回来 使用LogMiner预览...
  • u011364306
  • u011364306
  • 2015年11月13日 10:56
  • 733

使用LogMiner挖掘归档日志

LogMiner是Oracle公司推出的一个非常有用的分析工具。通过它我们可以得到重做日志或者归档日志的内容。 当数据库出现问题之后,使用LogMiner挖掘日志,有时候会找到问题的根源,即使找不到...
  • angelwing1984
  • angelwing1984
  • 2015年03月13日 22:25
  • 1726

Oracle Logminer 做数据恢复 说明示例

原文 http://blog.csdn.net/tianlesoftware/article/details/6554674 在IBM DBA 小荷的blog上看到一个用Logminer 做数据...
  • lioumangwenhua
  • lioumangwenhua
  • 2013年12月15日 16:46
  • 451

如何使用logminer查看日志内容

环境: OS:Red Hat Linux As 5 DB:10.2.0.4   我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面...
  • liqfyiyi
  • liqfyiyi
  • 2013年12月16日 11:27
  • 1223

亲测 logminer挖掘

LogMiner两种使用类型,一种是使用源数据库的数据字典分析DML操作,别一种是摘取LogMiner数据字典到字典文件分析DDL操作。 检查下suppplemental logging: SQL> ...
  • zhang123456456
  • zhang123456456
  • 2016年12月13日 22:50
  • 302

LogMiner的使用

http://www.cnblogs.com/jyzhao/p/7087877.html LogMiner是用于Oracle日志挖掘的利器。 百科解释: LogMiner...
  • zdy0_2004
  • zdy0_2004
  • 2017年06月28日 15:52
  • 59

32.Oracle深度学习笔记——LogMiner使用

32.Oracle深度学习笔记——LogMiner使用  欢迎转载,转载请标明出处: LogMiner是Oracle数据库提供的一个工具,它用于分析重做日志和归档日志所记载的事务操作. 从8i开始提...
  • notbaron
  • notbaron
  • 2016年03月08日 23:51
  • 34609

ORACLE 11g 使用logminer 分析归档日志和在线日志

Oracle11g的logminer是默认打开的,所以不需要额外开启, 1、Logminer环境准备确定归档日志是否打开 SQL> archive log list; Database log ...
  • mchdba
  • mchdba
  • 2017年03月29日 18:52
  • 2202

使用Oracle的logminer工具进行日志挖掘

Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log...
  • u013169075
  • u013169075
  • 2017年01月25日 22:29
  • 316

LogMiner的使用

LogMiner是用 来观看和分析oracle数据库重做日志内容的。 使用时涉 及到oracle的过程和视图如下:  视图 用途  v$logmnr_dicti...
  • tongjie008
  • tongjie008
  • 2014年10月31日 21:26
  • 275
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈LogMiner的使用
举报原因:
原因补充:

(最多只允许输入30个字)