一、产生日志命令:
以下命令的说明略,详见http://hi.baidu.com/suofang/blog/item/7501620682524c7e020881b2.html
分析日志脚本文件logmnr.sql如下:
SQL> @c:\logmnr.sql
=============================================================================
rem ********************开始执行日志分析脚本**********************
rem 设置环境参数
set echo off
set termout off --//显示脚本中的命令的执行结果,缺省为on
set trimout on --//去除标准输出每行的拖尾空格,缺省为off
set trimspool on --//去除重定向(spool)输出每行的拖尾空格,缺省为off
set heading off --//输出域标题,缺省为on
set pagesize 0 --//输出每页行数,缺省为24,为了避免分页,可设定为0。
set verify off --//可以关闭和打开提示确认信息old 1和new 1的显示.
set linesize 800 --//输出一行字符个数,缺省为80
rem 字典信息文件路径为:
show parameter utl
rem 创建Logminer包:
@D:\oracle\ora92\rdbms\admin\dbmslmd.sql
rem 创建字典信息文件
exec dbms_logmnr_d.build(dictionary_filename =>'dic.ora',dictionary_location =>'D:\oracle\oradata\zfmi');
rem 增加数据库对应的重做日志文件:
exec dbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo01.log', options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo02.log', options=>dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo03.log', options=>dbms_logmnr.addfile);
select db_name,filename from v$logmnr_logs;
rem 结合字典信息文件,开始分析重做日志文件
exec dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\zfmi\dic.ora',starttime => to_date('2008-05-06 10:00:00','YYYY-MM-DD HH24:MI:SS'),endtime => to_date('2008-05-06 20:00:00','YYYY-MM-DD HH24:MI:SS'));
rem 开始保存分析结果:
spool c:\zfmiLog08-05-06_10.00.00to08-05-06_20.00.00.txt;
select to_char(TIMESTAMP,'YYYY-MM-DD HH24:MI:SS'), SQL_REDO from v$logmnr_contents where USERNAME='ZFMI' order by TIMESTAMP ;
spool off
rem 关闭分析器Logminer!
dbms_logmnr.end_logmnr;
rem ********************日志分析脚本执行完毕**********************
================================================================================
二、视图v$logmnr_contents字段分析
v$logmnr_contents说明文档网址:http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_1154.htm#sthref3734
一下内容根据oracle官方文档部分翻译:
SQL> desc v$logmnr_contents;
名称 类型
----------------------------------------- ----------------------------
TIMESTAMP DATE //SQL执行时间
COMMIT_TIMESTAMP DATE //事务提交时间
SEG_OWNER VARCHAR2(32) //被修改对象创建者
SEG_NAME VARCHAR2(256) //被修改对象的名字,如表名
SEG_TYPE NUMBER //被修改对象类型
SEG_TYPE_NAME VARCHAR2(32) //被修改对象类型名
TABLE_SPACE VARCHAR2(32) //被修改对象所属表空间
ROW_ID VARCHAR2(19) //被修改行的ROWID,如果
SESSION# NUMBER //执行修改的SESSION号
SERIAL# NUMBER //执行修改的SESSION序号
USERNAME VARCHAR2(30) //执行事务的用户名
SESSION_INFO VARCHAR2(4000) //执行修改的SESSION信息,例如:login_username= client_info= OS_username=SYSTEM Machine_name=ZFMISERVER OS_termi
nal=ZFMISERVER OS_process_id=1812 OS_program name=ORACLE.EXE
TX_NAME VARCHAR2(256) //执行的事务名,当该事务被命名时
ROLLBACK NUMBER //回滚标记
OPERATION VARCHAR2(32) //操作类型
INSERT
UPDATE
DELETE
DDL
START
COMMIT
ROLLBACK
LOB_WRITE
LOB_TRIM
LOB_ERASE
SELECT_FOR_UPDATE
SEL_LOB_LOCATOR
MISSING_SCN
INTERNAL
UNSUPPORTED
OPERATION_CODE NUMBER //操作类型代码
0 = INTERNAL
1 = INSERT
2 = DELETE
3 = UPDATE
5 = DDL
6 = START
7 = COMMIT
9 = SELECT_LOB_LOCATOR
10 = LOB_WRITE
11 = LOB_TRIM
25 = SELECT_FOR_UPDATE
28 = LOB_ERASE
34 = MISSING_SCN
36 = ROLLBACK
255 = UNSUPPORTED
SQL_REDO VARCHAR2(4000) //重做日志SQL
SQL_UNDO VARCHAR2(4000) //相反操作SQL
SEQUENCE# NUMBER //重做日志的序号