Oracle所有的DDL,DML操作都会记录到日志文件中,日志文件直接打开我们是不能够看懂的,oracle提供了logminer来查看日志
下面我们来配置logminer
1、 首先要知道日志文件的位置
Select * from v$logfile; ------查看日志路径和名字
如果使用了ASM自动存储管理,查询类似如下
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/tim/onlinelog/group_3.263.742828937
+DATA/tim/onlinelog/group_2.262.742828935
+DATA/tim/onlinelog/group_1.261.742828935
如果没有使用ASM自动存储管理
SQL > select member from v$logfile;
2、 指定utl_file_dir
SQL> alter system set utl_file_dir=’/opt/oracle/logs’scope=spfile;
其中/opt/oracle/logs目录的用户和属组必须是oracle
通过chown root:root /opt/oracle/logs命令来修改
3、 重启一下oracle
Shutdown immediate;
startup
4、 查看一下spfile参数文件中是否已经有utl_file_dir
查看参数文件位置
SQL >Show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /opt/oracle/product/10.2.0/db_
1/dbs/spfiletim.ora
Spfile参数文件是二进制文件,不能使用vi编译,但是可以通过cat 查看
Cat /opt/oracle/product/10.2.0/db_1/dbs/spfiletim.ora
5、 创建数据字段文件
execute
dbms_logmnr_d.build(dictionary_filename=>’dict.dat’,dictionary_location=>’/opt/oracle/logs’);
其中dictionary_location参数就是指定的utl_file_dir的值
6、 添加日志列表
把日志文件加入到logmnr中
Execute
dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’/opt/oracle/redo01.log’);
Execute
dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’/opt/oracle/redo02.log’);
Execute
dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’le/redo03.log’);
添加日志文件每次加一个,
Logfilename参数就是最上面用v$logfile查询获得的
7、 启动logminer分析
方法一、无条件限制
EXECUTE dbms_logmnr.start_logmnr(
DictFileName=>'/opt/oracle/logs/dict.dat ');
方法二:条件限制
SQL> EXECUTE dbms_logmnr.start_logmnr(
/opt/orac
DictFileName => ' /data1/oracle/logs/ v816dict.ora ',
StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')
EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));
通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志
8、 查看分析结果
Logminer的分析结果都保存到v$logmnr_contents动态性能视图中
Select * from v$logmnr_contents;
需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。
最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。
9、 查询LogMiner相关视图
SQL> select * from dict t where t.table_name like '%LOGMNR%'; 看所有与logmnr相关的视图
因篇幅问题不能全部显示,请点此查看更多更全内容