Oracle LogMiner
Oracle LogMiner
LogMiner 工具既可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件
1.安装
创建DBMS_LOGMNR包和DBMS_LOGMNR_D包,分别用于分析日志文件和创建数据字典文件
SQL>@?/rdbms/admin/dbmslm.sql
SQL>@?/rdbms/admin/dbmslmd.sql
2.创建数据字典目录
SQL>create directory utlfile AS '/home/oracle/logminer'
SQL>alter system set utl_file_dir='/home/oracle/logminer' scope=spfile
--需要重启oracle
SQL>shutdown immediate
SQL>startup
SQL>show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string /home/oracle/logminer
3.创建数据字典
SQL>EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/logminer');
4.开启补全日志
--查看是否开启补全日志
SQL>select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
--添加补全日志
SQL>alter database add supplemental log data;
5.日志切换
SQL>alter system switch logfile;
6.添加归档日志
--首次添加
SQL>exec dbms_logmnr.add_logfile('/home/oracle/arch/1_55115_905449974.dbf', dbms_logmnr.new);
--再次添加
SQL>exec dbms_logmnr.add_logfile('/home/oracle/arch/1_55116_905449974.dbf', dbms_logmnr.ADDFILE);
--移除日志
SQL>dbms_logmnr.add_logfile('1_55116_905449974.dbf', dbms_logmnr.removefile);
7.开始分析
--分析全部日志
SQL>EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/LOGMNR/dictionary.ora');
--设置日志时间范围
SQL>EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/LOGMNR/dictionary.ora',starttime => to_date('2006-02-13 00:00:00','YYYY-MM-DD HH24:MI:SS'),endtime => to_date(''2004-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));
--设置日志scn范围
SQL> EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/LOGMNR/dictionary.ora', startscn => 20, endscn => 50);
如果是远程分析归档日志,需要源库上创建数据字典后复制到当前库字典目录下,分析时指定为源库数据字典
8.查看LogMiner
--使用的数据字典
SQL>select filename from v$logmnr_dictionary;
--分析的日志文件
SQL>select filename from v$logmnr_logs;
9.查看分析内容
--创建表格,将数据存入该表
SQL>create table logminer as select * from v$logmnr_contents;
--查看内容
SQL>select operation,sql_redo,sql_undo from logminer;
10.停止分析
SQL>exec dbms_logmnr.end_logmnr;