oracle 提供了一种技术,叫做LogMiner, 可以对redo log和archive log进行挖掘,得到其中有用的信息。该工具特别适用于调试、审计或者回退某个特定的事务。
LogMiner的使用
使用LogMiner数据库必须运行在归档模式下,查看数据归档的如下:
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 1607
下一个存档日志序列 1609
当前日志序列 1609
在开始学习LogMiner,我们做如下的例子:
SQL> create table t as select * from dba_objects;
得到当前scn
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
----------
7240047
我们来做删除操作
SQL> delete from t where rownum=1;
SQL> commit;
再一次得到scn
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN
----------
7240098
得到当前日志
SQL> select group#,members,status from v$log;
GROUP# MEMBERS STATUS
---------- ---------- ----------------
1 1 CURRENT
2 1 INACTIVE
3 1 INACTIVE
SQL> select member from v$logfile where group#=1;
MEMBER
--------------------------------------------------
D:\APP\ZHOUKAI\ORADATA\ORCL\REDO01.LOG
后面我们使用LogMiner来挖掘这部分日志
1.安装LogMiner
在安装oracle的时候,一般都已经默认安装了LogMiner了,查看有没有LogMiner运行所需要的dbms_logmnr、dbms_logmnr_d,如果没有则需要安装,在oracle 11g中使用dba权限执行以下脚本:
1、$ORACLE_HOME/rdbms/admin/dbmslm.sql
2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql
这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
2.创建字典文件
CREATE DIRECTORY utlfile AS 'D:\app\zhoukai\oradata\LOGMNR';
alter system set utl_file_dir='D:\app\zhoukai\oradata\LOGMNR' scope=spfile;
执行以上语句后,重启数据库,查看是否设置成功
SQL> show parameter utl NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ create_stored_outlines string utl_file_dir string D:\app\zhoukai\oradata\LOGMNR
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora