Oracle Logminer使用方法

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的内容,就可以恢复到修改前的数据。
 

你可能感兴趣的:(oracle,职场,休闲)