DBA之路---oracle的redo重放日志的检查方式-Logminer工具

oracle的redo重放日志的检查方式-Logminer

支持redo重放日志与arc归档日志检查(redo的备份)

如果是检查归档必须要触发redo日志的归档操作

alter system switch logfile;

redo日志检查前则尽量触发检查点

alter system checkpoint;
#redo重放日志是检查点机制与数据写入磁盘的记录存档,会存储包括本数据库在内的所有数据操作与数据
#本身为二进制日志,无法直接打开查看需要使用到oracle公司的logminer工具进行分析

#logminer的安装
   #找到/rbms/admin/目录下的dbmslm.sql与dbmslmd.sql 两个sql语句分别创建分析用的日志文件与查找使用的数据字典文件

#设置logminer
   #1、指定数据字典存储位置
     create directory utlfile as 'E:\oracle\logfile\redoDicration' 
     #创建数据字典文件位置,可以同时创建多个,名称需要不一致
     alter system set utl_file_dir='E:\oracle\logfile\redoDicration' scope=spfile; #文件夹用,分割可以指定多个
     #指定数据库字典存储文件位置,只能指定上面已经创建过directory
     shutdown immediate;#startup force
     #上述设置生效需要重启数据库,进行重新装载
     show parameters utl_file_dir; 
     #检查参数,utl_file_dir用于在PL/SQL中进行文件I/O操作(可以用utl_file包)时限定路径
   #2、启动补充日志(longminer生成的日志对于很多收集到信息只会显示unknown,补充日志是为了减少这种情况)
     ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
     SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; #检查启用是否成功

#分析的进行
   #1、可选创建专门用户进行日志分析,给all就行
   
   #2、创建分析时使用的数据字典 --
      #改数据字典用语存放表和对象id号对应关系,会摘抄到redo里
      EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'E:\oracle\logfile\redoDicration');#文件名称随意,但是文件夹需要在此之前创建,linux的还需要给权限。
      
   #3、添加需要分析的redo或者arc日志
      select * from v$logfile #查看当前数据的redo日志位置
      show parameter DB_RECOVERY_FILE_DEST #归档日志
      EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME =>'E:\11DB\ORADATA\PRINCE\REDO01.LOG',OPTIONS => DBMS_LOGMNR.NEW);#第一次创建需要指定为new
      EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME =>'E:\11DB\ORADATA\PRINCE\REDO01.LOG',OPTIONS => DBMS_LOGMNR.addfile);#之后添加需要指定为addfile
   #4、使用字典启动日志分析
      EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'E:\oracle\logfile\redoDicration\dictionary.ora');
      #start_logmnr有多个参数
         Execute dbms_logmnr.start_logmnr(dictfilename=>'E:\oracle\logfile\redoDicration\dictionary.ora',startScn=>20,endScn=>50);#指定scn进行范围缩小
      
   #5、检查分析结果   
      SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORD 
       from V$log ORD #检查日志序列号
      SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='T1';
        #分析后结果都存储在这张表里,我们这里假设对表T1进行操作,所以查找seg空间名为T1的数据
      EXECUTE DBMS_LOGMNR.END_LOGMNR; #结束当前字典的分析结果
#lominer工具使用详解、
  #按照上述步骤成功创建logminer后,数据库会多出如下内容,四个存储过程与三个视图
    1. dbms_logmnr_d.build :创建一个数据字典文件;
    2. dbms_logmnr.add_logfile :添加日志文件以供分析;
    3. dbms_logmnr.start_logmnr :开始分析日志文件;
    4. dbms_logmnr.end_logmnr :结束分析日志文件;

    1.v$logmnr_dictionary :显示字典文件的信息;
    2.logmnr_logs :在LogMiner启动时显示要分析的日志列表;
    3.logmnr_contents :Logminer启动后,可以使用该view查看日志文件的内容。
    
  #除开上述创建数据字典进行检查外,logminer自带一个动态数据字典提供检查  
    select * from v$logmnr_contents
    #该字典限制较多,logminer查询与他只能在同一个窗口会话中进行(主要是同一个会话)
    #改视图仅在dbms_logmrn.start_logmnr这个会话的生命周期中存在
    
    create table dfms.logmnr_temp01 as select * from GV$LOGMNR_CONTENTS#可以通过创建一个临时表进行存储,但是无补充数据进行,unknown的字段较多,不利于排查    
SCN                    查询的特定数据的SCN号
TIMESTAM               数据改变发生的时间
COMMIT_TIMESTAMP       数据改变提交的时间
SEG_OWNER              数据发生改变的段名称
SEG_NAME               段的所有者的名称
SEG_TYPE               数据发生改变的段类型
SEG_TYPE_NAME          数据发生改变的段类型名称
TABLE_SPACE            变化段的表空间
ROW_ID                 数据变化行的ID
SESSION_INFO           数据发生变化时会话信息
OPERATION              日志中记录的操作
SQL_REDO               日志中记录的指定行变化的SQL语句(正向操作)
SQL_UNDO               重做日志记录回退或恢复制定行变化的SQL语句
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值