ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle Logminer使用方法

Oracle Logminer使用方法

原创 Linux操作系统 作者:zwc1083 时间:2009-03-11 16:04:31 0 删除 编辑

Oracle Logminer使用方法


1.安装logminer:

      要安装LogMiner工具,必须首先要运行下面这样两个脚本,

      $ORACLE_HOME/rdbms/admin/dbmslm.sql

      $ORACLE_HOME/rdbms/admin/dbmslmd.sql.

      这两个脚本必须均以SYS用户身份运行。

2.创建数据字典文件

     首先在init.ora初始化参数文件中,添加参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:

     UTL_FILE_DIR = (/u1/oracle/admin/hisrun)

     重新启动数据库,使新加的参数生效,然后创建数据字典文件:

     SQL> dictionary_filename=>'/u1/oracle/admin/hisrun/dic_lzyy.ora',dictionary_location=>'/u1/oracle/logminer');

     创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称,而不是系统内部的16进制的ID。

     如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,就需要重新创建该字典
                                        
3. 操作步骤:
 
      $ sqlplus /nolog

      SQL>conn sys/lzyysys as sysdba

      SQL>  SPOOL  /usr1/undo.sql   将结果保存成文档

    (*) 分析离线日志文件 

      A.创建列表 
  
      SQL>execute dbms_logmnr.add_logfile('/u1/oracle/hisrunarchive/hisrun_0001_0000000335.arc',dbms_logmnr.new)

      B.添加另外的日志文件到列表 
 
      SQL>execute dbms_logmnr.add_logfile('/u1/oracle/hisrunarchive/hisrun_0001_0000000334.arc',dbms_logmnr.addfile)
  
      C.从列表中移除日志文件

      SQL>execute dbms_logmnr.add_logfile('/u1/oracle/hisrunarchive/hisrun_0001_0000000334.arc',dbms_logmnr.removefile)

      D. 查看分析SCN号范围

      SQL>select low_time,high_time,low_scn,next_scn from v$logmnr_logs;

      (*) 使用LogMiner进行日志分析
    
      SQL>execute dbms_logmnr.start_logmnr(DictFileName=>'/u1/oracle/admin/hisrun/dic_lzyy.ora',options=>dbms_logmnr.committed_data_only,startscn=>116295629,endscn=>116685026);
  
      (*)结束分析,清空v$logmnr_contents
 
      SQL>execute dbms_logmnr.end_logmnr  (结束会话,会自清除分析记录)
  
      (*)观察分析结果(LogMiner的分析结果是放在v$logmnr_contents中)

       A.SQL> select sql_redo from v$logmnr_contents where upper(sql_redo) like '%DELETE%;

              在视图v$logmnr_contents中查找真实被删除的记录。
      
       B.SQL> SELECT timeseg_name,sql_redo FROM v$logmnr_contents WHERE seg_name='MS_CF01' and sql_redo like '%DELETE%';
             
              功能同A。

       C.SQL> select sql_undo from v$logmnr_contents where seg_name='MS_CF01' and sql_redo like '%delete%' and rownum<10;

       D.SQL> select sql_undo from v$logmnr_contents where seg_name='MS_CF01' and upper(OPERATION)='DELETE';

              针对SQL_REDO重做记录重做指定行变化的SQL语句,所对应的反操作就是重做记录回退或恢复指定行变化的SQL语句。
        select timestamp,sql_undo,sql_redo from v$logmnr_contents where seg_name='MS_CF01'


            
       # 下面将就视图v$logmnr_contents的常用字段含义进行说明:

        (其中operation指的是操作,sql_redo指的是实际的操作,sql_undo指的是用于取消的相反的操作)

         名称                    含义
        ----------------------- -------- --------------------------------------------
         SCN                    特定数据变化的系统更改号
         TIMESTAMP              数据改变发生的时间
         COMMIT_TIMESTAMP       数据改变提交的时间
         SEG_OWNER              数据发生改变的段名称
         SEG_NAME               段的所有者名称
         SEG_TYPE               数据发生改变的段类型
         SEG_TYPE_NAME          数据发生改变的段类型名称
         TABLE_SPACE            变化段的表空间
         ROW_ID                 特定数据变化行的ID
         SESSION_INFO           数据发生变化时用户进程信息
         OPERATION              重做记录中记录的操作(如INSERT)
         SQL_REDO               可以为重做记录重做指定行变化的SQL语句(正向操作)
         SQL_UNDO               可以为重做记录回退或恢复指定行变化的SQL语句(反向操作)

      注:SQL_REDO 列显示的是所做的操作(SQL 语句),SQL_UNDO 列显示的是要恢复该操作所需要的SQL语句

          只要顺序执行SQL_UNDO的内容,就可以恢复到修改前的数据。

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

请登录后发表评论 登录
全部评论

注册时间:2009-02-16

  • 博文量
    91
  • 访问量
    43590