LOGMINER分析日志的三种方式之dict_from_online_catalog模式

DICT_FROM_ONLIE_CATALOG:10g开始,ORACLE开始支持DICT_FROM_ONLIE_CATALOG模式,可以直接使用数据库的的数据字典查看相关的元数据信息,该模式要求数据库必须处于open 状态,而且只能对当前数据库的日志进行分析,效率快,但对数据库会产生一定的压力。

1)分析REDO日志的实验

1.创建测试表,并做DML操作

create table t_test(id number,name varchar2(15));

 

insert into t_test values(1,'stream');

insert into t_test values(2,'dbdream');

commit;

 

update t_test set name='streamsong' where id=1;

commit;

 

 

delete from t_test;

commit;

 2.查看REDO日志的路径

select member from v$logfile;

 

 3.添加REDO日志

第一个添加的日志需指定NEW,如果确定要查询的信息在指定的REDO日志内,可以只添加那个REDO日志,而不需要再添加其他。添加其他REDO日志,不是第一个添加的日志需指定ADDFILE。

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/oradata/testdb/redo01a.rdo',options=>dbms_logmnr.new);

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/oradata/testdb/redo02a.rdo',options=>dbms_logmnr.addfile);

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/oradata/testdb/redo03a.rdo',options=>dbms_logmnr.addfile);

 4.开始对添加的REDO进行分析

exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

 5.查看LOGMNR分析后得到的信息

select timestamp,sql_redo,sql_undo from v$logmnr_contents where table_name='T_TEST';

 

 

         SQL_REDO就是执行的SQL语句,SQL_UNDO是回滚操作的SQL语句,也就是执行SQL_UNDO的相关SQL,就可以回滚对应的操作。

        注:LOGMNR是SESSION级的,以上实验第3步到第5步需在同一个SESSION中进行,SESSION断开连接后需重新执行,否则会报以下错误提示。

6.结束LOGMNR分析

 exec dbms_logmnr.end_logmnr;

 (2)分析归档日志的实验

分析归档日志的操作和分析REDO的操作基本一样,最重要的就是准确的找到需要查找的信息在哪些归档日志内。既然是利用LOGMNR分析归档日志,数据库一定是在归档模式。

1.切换日志,使REDO日志归档

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

 2.按照归档日志的时间,找到存放需要分析信息的归档日志

 3.将归档日志添加到LOGMNR

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/product/11.2.0.4/dbs/arch/1_1738_1047724880.dbf',options=>dbms_logmnr.new);

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/product/11.2.0.4/dbs/arch/1_1739_1047724880.dbf',options=>dbms_logmnr.addfile);

exec dbms_logmnr.add_logfile(logfilename=>'/U01/app/oracle/product/11.2.0.4/dbs/arch/1_1740_1047724880.dbf',options=>dbms_logmnr.addfile);

4.开始分析

exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

5.查看LOGMNR分析后的数据

select timestamp,sql_redo,sql_undo from v$logmnr_contents where table_name='T_TEST'; 

6.结束LOGMNR分析

exec dbms_logmnr.end_logmnr;

猜你喜欢

转载自blog.csdn.net/weixin_41561862/article/details/108828321