zoukankan      html  css  js  c++  java
  • 挖掘Oracle日志的“大杀器”

    挖掘Oracle日志的“大杀器”

    编辑手记:

    LogMiner是用于Oracle日志挖掘的利器,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。本文主要演示LogMiner的使用,直观展示LogMiner的作用。

    环境:Oracle 11.2.0.4 RAC

    • 1.查询当前日志组
    • 2.业务用户插入操作
    • 3.归档日志切换
    • 4.业务用户插入操作
    • 5.归档日志切换
    • 6.业务用户更新操作
    • 7.归档日志切换
    • 8.确认需要分析的日志
    • 9.备份归档日志
    • 10.使用LogMiner分析

    查询当前日志组

    使用sys用户查询Oracle数据库的当前日志组:

     

    这里当前日志(current)是:李玟

    thread 1 sequence 30

    thread 2 sequence 25

    业务用户插入操作

    模拟业务用户jingyu插入T2表数据:

     

    归档日志切换

    为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。

     

    业务用户插入操作

    模拟业务用户jingyu删除T2表部分数据:

     

    归档日志切换

    为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。

     

    业务用户更新操作

    模拟业务用户jingyu更新T2表部分数据:

     

    归档日志切换

    为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。

     

    确认需要分析的日志

    确认之后需要使用LogMiner分析的日志:

     

    备份归档日志

    将相关的归档都copy备份出来:

     

    备份出来的归档日志文件如下:

     

    使用LogMiner分析

    使用LogMiner分析归档日志:

     
     
     

    查询v$logmnr_contents

     

    实验发现:

    以username为条件无法查询到相关记录,最终确认username都是unknown而不是真正执行语句的业务用户jingyu。 而挖掘出的日志sql_redo这个字段是完整的SQL,可以采用like的方式查询。

    比如我分析更新操作的日志,就可以得到下面这样的结果:

     
     
     

    至此,LogMiner基本的操作实验已完成。

     

    与LogMiner有关的一些操作命令参考:

     
     

    最后确认如果开启了附加日志,username就可以捕获到正确的值:

     
     
     

    可以看到,开启了附加日志,就可以正常显示username的信息了。

  • 相关阅读:
    Adaptive Cursor Sharing in Oracle Database 11g Release 1
    FORALL Support for NonConsecutive Indexes (Sparse Collections)
    设置会话TRACE的方法(一)
    Oracle 10g: UTL_MAIL
    Oracle :Parallel execution when table created.
    Server.MapPath
    Oracle10g :Nested Table Enhancements
    Asktom:Single Block IO Vs Multi Block IO
    Oracle10g新增DBMS_MONITOR包(一)
    设置会话TRACE的方法(二)
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/14608199.html
Copyright © 2011-2022 走看看