LogMiner安装
SQL> @D:\oracle\RDBMS\ADMIN\dbmslm.sql
程序包已创建。
授权成功。
SQL> @D:\oracle\RDBMS\ADMIN\dbmslmd.sql
程序包已创建。
这两个脚本必须均以SYS用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
操作开始:
一、查看数据库是否在归档模式下
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 111
下一个存档日志序列 113
当前日志序列 113
激活补充日志:
SQL> alter database add supplemental log data;
数据库已更改。
二、参数配置
在日志分析过程会使用到数据字典,一般是先设置UTL_FILE_DIR参数删除数据字典文件,日后进行日志分析,当然在oracle10G中可使用在线数据字典,不需要设置UTL_FILE_DIR参数。
字典文件用于存放表及对象ID号之间的对应关系。当使用字典文件时,它会在表名和对象ID号之间建立一一对应的关系。因此需要注意,如果用户建立了新表之后,并且将来可能会对该表进行日志分析,那么就需要重新建立字典文件,以将其对象名及对象ID号存放到字典文件中。
修改参数文件:
添加参数:UTL_FILE_DIR=C:\ logmnr 目录logmnr必须事先手工建立,该目录用于存放产生的字典文件,目录名称可以自定
SQL> alter system set UTL_FILE_DIR='c:\logmnr' scope=spfile;
系统已更改。
重启数据库
重启之后参数设置才能生效。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 293601280 bytes
Fixed Size 1290208 bytes
Variable Size 239075360 bytes
Database Buffers 46137344 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
数据库已经打开。
三、建立字典文件(第三步可以略过,使用在线数据字典)
在ORACLE 10G中可以使用在线数据字典。
SQL> begin
2 dbms_logmnr_d.build(
3 dictionary_filename=>'dict.ora',
4 dictionary_location=>'c:\logmnr');
5 end;
6 /
PL/SQL 过程已成功完成。
注意:参数dictionary_filename用以指定字典文件的文件名;参数 dictionary_location用于指定存放字典文件所在的目录,该目录必须与初始化参数UTL_FILE_DIR的值一致。如果指定的字典文件名dict.ora已经存在,则应在执行此操作前将其彻底删除(从垃圾箱中删除),否则执行该过程将失败。
四、生成归档日志
下面以分析TEST表的DDL和DML操作为例,介绍使用LogMiner分析重做日志和归档日志的全过程。我们首先执行以下语句在表TEST上执行DDL以及DML操作,并生成归档日志:
SQL> alter system switch logfile;
系统已更改。
SQL> create table test(id int);
表已创建。
SQL> alter system switch logfile;
系统已更改。
SQL> insert into test values(1);
已创建 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> update test set id=100;
已更新 1 行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系统已更改。
SQL> delete from test;
已删除 1 行。
SQL> alter system switch logfile;
系统已更改。
五、建立日志分析列表
查看重做日志文件
在对表TEST操作过程中,产生了4个重做日志文件。可通过时间查找重做日志文件。
SQL>select name,first_time,next_time from v$archived_log where first_time>to_date('2013-04-25 16:20:50', 'yyyy-mm-dd hh24:mi:ss');
NAME
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
FIRST_TIME NEXT_TIME
-------------- --------------
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_123_8QKTSN8T_.ARC
25-4月 -13 25-4月 -13
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_124_8QKTV0TT_.ARC
25-4月 -13 25-4月 -13
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_125_8QKTW4TQ_.ARC
25-4月 -13 25-4月 -13
NAME
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
FIRST_TIME NEXT_TIME
-------------- --------------
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_126_8QKTX01F_.ARC
25-4月 -13 25-4月 -13
填加要分析的重做日志文件:
SQL> begin
2 dbms_logmnr.add_logfile(
3 options=>dbms_logmnr.new,
4 logfilename=>'D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_121_8QKRVR13_.AR
C');
5 end;
6 /
PL/SQL 过程已成功完成。
SQL> begin
2 dbms_logmnr.add_logfile(
3 options=>dbms_logmnr.addfile,
4 logfilename=>'D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_120_8QKRP86X_.AR
C');
5 end;
6 /
PL/SQL 过程已成功完成。
另外两个文件以此方法添加,但是options参数的值必须是dbms_logmnr.addfile,使用dbms_logmnr.new,则会覆盖之前添加的日志文件,视图v$logmnr_logs只能查看最后一次添加的日志文件。
添加完成后可以通过动态性能视图v$logmnr_logs查看日志分析列表中有哪些待分析的日志文件。
SQL> select filename from v$logmnr_logs;
FILENAME
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_120_8QKRP86X_.ARC
D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_04_25\O1_MF_1_121_8QKRVR13_.ARC
已选择2行。
六、启动LogMiner执行分析
使用在线数据字典进行分析(该选项只能用于跟踪DML操作):
SQL>exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL 过程已成功完成。
查看日志分析结果:
SQL> select scn,operation,sql_redo,sql_undo from v$logmnr_contents WHERE seg_na
me='TEST';
通过结果得到对表TEST所做DDL和DML操作的准确时间,以及数据的变化情况,对数据库的恢复和审计等提供准确、有效的参考信息。
注意:v$logmnr_contents内容保存了日志的内容,只在当前会话有效,如果想长期保存分析,可以在当前会话用create table tablename as select * from v$logmnr_contents语句来持久保存。
七、结束分析,释放PGA内存资源
SQL> exec dbms_logmnr.end_logmnr;
PL/SQL 过程已成功完成。
我写的这个不详细,没有具体的解释,不过我写完之后,发现了这篇文章,里面很详细的解释了所有的操作步骤作用
参考:http://www.cnblogs.com/qiangqiang/archive/2010/10/21/1857429.html