oracle 离线分析其他库的归档日志

发布时间 2023-03-28 19:15:25作者: JennyYu

oracle数据库是可以离线分析其他库的归档日志的,比如想分析生产库的归档日志,可以将其拿到测试库上来分析,以免影响生产库的性能。

dictory模式:将数据库的数据字典抽取到操作系统的一个文件里,这种方式必须设置UTL_FILE_DIR参数,这个参数是静态参数,修改后必须重启数据库才会生效。使用LOGMNR的DICTORY模式的好处就是可以分析其他数据库的日志信息,但是在将其他数据库的日志拷到本地数据库服务器的同时,还需要拷贝那个数据库创建的字典文件。

1. 远程生产库上创建字典文件(本步骤以下在具有logminer权限账号下执行)

执行命令:

 exec dbms_logmnr_d.build(dictionary_filename=>'dict328.ora',dictionary_location=>'/u01/app/oracle/utl_dir_test',options=>dbms_logmnr_d.store_in_flat_file);
dictionary_location的位置为UTL_FILE_DIR参数的指定的路径。

如果出现下面的报错,说明没有设置UTL_FILE_DIR参数。

 

 

 

utl_file_dir 设置为/u01/app/oracle/utl_dir_test

alter system set utl_file_dir='/u01/app/oracle/utl_dir_test' scope=spfile;

 

2. 将归档日志和字典文件拷贝到测试数据库服务器

3.在测试数据库服务器添加远程数据库的归档日志

添加归档日志

 exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_789_1120924149.dbf',options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_790_1120924149.dbf',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_791_1120924149.dbf',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_792_1120924149.dbf',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_793_1120924149.dbf',options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_794_1120924149.dbf',options=>dbms_logmnr.addfile);

  

 解析归档日志

exec dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/dict328.ora');
select scn,OPERATION,sql_redo from v$logmnr_contents where table_name = 'T327';

 结束分析

exec dbms_logmnr.end_logmnr;