浅谈LogMiner的使用方法

所属分类: 数据库 / oracle 阅读数: 369
收藏 0 赞 0 分享
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      它用于显示用于分析的日志列表信息。
更多精彩内容其他人还在看

Oracle下的Java分页功能_动力节点Java学院整理

分页的时候返回的不仅包括查询的结果集(List),而且还包括总的页数(pageNum)、当前第几页(pageNo)等等信息,所以我们封装一个查询结果PageModel类,具体实现代码,大家参考下本文
收藏 0 赞 0 分享

Win7 64位下PowerDesigner连接64位Oracle11g数据库

这篇文章主要为大家详细介绍了Win7 64位下PowerDesigner连接64位Oracle11g数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

PowerDesigner15.1连接oracle11g逆向生成ER图

这篇文章主要为大家详细介绍了PowerDesigner15.1连接oracle11g逆向生成ER图的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

解决Oracle批量修改问题

这篇文章主要介绍了解决Oracle批量修改问题,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle的out参数实例详解

这篇文章主要介绍了Oracle的out参数实例详解的相关资料,这里提供实例帮助大家理解这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Oracle在out参数中访问光标

这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Oracle调试存储过程

这篇文章主要介绍了详解Oracle调试存储过程的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle的CLOB大数据字段类型操作方法

VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。接下来通过本文给大家分享Oracle的CLOB大数据字段类型操作方法,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

oracle中左填充(lpad)和右填充(rpad)的介绍与用法

这篇文章主要跟大家介绍了关于oracle中左填充(lpad)和右填充(rpad)的相关资料,通过填充我们可以固定字段的长度,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

Oracle回滚段使用查询代码详解

这篇文章主要介绍了Oracle回滚段使用查询代码详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多