跨库logmnr挖取日志

    在不完全恢复或数据不明丢失情况下,需要数据的操作时间点或具体操作,但有碍是生产库所以需要把日志到别的库进行挖取,这时候会因为DBID不一致而产生问题,此时需要将数据字典提取到一个平面数据字典文件中,拷贝到能挖取日志的库下,前提是在生产库已配置UTL_FILE_DIR参数,生成数据字典。

模拟情况如下:

若无配置UTL_FILE_DIR则需配置

生产:

1.alter system setUTL_FILE_DIR='G:\oracle11g\logmnr\' scope=spfile;

2.shutdown immediate;

3.startup;

4. execute dbms_logmnr_d.build('logminer_dict.ora',' G:\oracle11g\logmnr\',options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);

将生产日志拷贝到挖取日志的库下

测试库:

1.alter system setUTL_FILE_DIR='D:\logmnr\' scope=spfile;

2.shutdown immediate;

3.startup;

4.executedbms_logmnr_d.build('logminer_dict.ora','D:\logmnr\',options=>DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);

将生产的数据字典替换测试生成的数据字典。

添加日志:

第一次添加用new参数,生成日志分析表,第二次添加用addfile参数,添加日志。

1.    execdbms_logmnr.add_logfile(logfilename=>'D:\logmnr\REDO01.LOG',options=>dbms_logmnr.new);

2.    exec dbms_logmnr.add_logfile(logfilename=>' D:\logmnr\REDO02.LOG',options=>dbms_logmnr.addfile);

开始分析:

跨库利用数据字典分析,否则会报错DBID问题:

executedbms_logmnr.start_logmnr(DictFileName=> 'D:\logmnr\logminer_dict.ora') ;

/////当进行本机的日志分析时,利用在线数据字典即可:

///////execdbms_logmnr.start_logmnr(options=> dbms_logmnr.dict_from_online_catalog);

查看:

selecttimestamp,sql_redo,sql_undo from v$logmnr_contents where  table_name='TEST';

结束:

 exec dbms_logmnr.end_logmnr;

 

摘录:

LogMiner的几点说明
1
LogMiner可以帮你确定在某段时间所发的各种DMLDDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件。
2
、它只能在Oracle8i及以后的版本中使用,不过它可以分析Oracle8的日志。
3
Oracle8i只能用于分析DML操作,到Oracle9i则可以分析DDL操作了。
4
LogMiner不支持索引组织表、LongLOB及集合类型。
5
MTS的环境也不能使用LogMiner.

你可能感兴趣的:(跨库logmnr挖取日志)