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语句