oracle 离线分析其他库的归档日志
oracle数据库是可以离线分析其他库的归档日志的,比如想分析生产库的归档日志,可以将其拿到测试库上来分析,以免影响生产库的性能。
dictory模式:将数据库的数据字典抽取到操作系统的一个文件里,这种方式必须设置UTL_FILE_DIR参数,这个参数是静态参数,修改后必须重启数据库才会生效。使用LOGMNR的DICTORY模式的好处就是可以分析其他数据库的日志信息,但是在将其他数据库的日志拷到本地数据库服务器的同时,还需要拷贝那个数据库创建的字典文件。
1. 远程生产库上创建字典文件(本步骤以下在具有logminer权限账号下执行)
执行命令:
1 | 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); |
1 | 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.在测试数据库服务器添加远程数据库的归档日志
添加归档日志
1 2 3 4 5 6 | 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); |
解析归档日志
1 2 | exec dbms_logmnr.start_logmnr(dictfilename=> '/home/oracle/dict328.ora' ); select scn,OPERATION,sql_redo from v$logmnr_contents where table_name = 'T327' ; |
结束分析
1 | exec dbms_logmnr.end_logmnr; |
二、使用redo来存储字典信息
EXECUTE dbms_logmnr_d.build(options => dbms_logmnr_d.store_in_redo_logs);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?