SYS@TEST>alter database add supplemental log data;
Database altered.
2.以sysdba登陆,执行logminer脚本
SYS@TEST>@$ORACLE_HOME/rdbms/admin/dbmslm.sql
Package created.
Grant succeeded.
Synonym created.
3.检查logminer是否可用
SYS@TEST>desc dbms_logmnrPROCEDURE ADD_LOGFILE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
LOGFILENAME VARCHAR2 IN
OPTIONS BINARY_INTEGER IN DEFAULT
FUNCTION COLUMN_PRESENT RETURNS BINARY_INTEGER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SQL_REDO_UNDO NUMBER IN DEFAULT
COLUMN_NAME VARCHAR2 IN DEFAULT
PROCEDURE END_LOGMNR
FUNCTION MINE_VALUE RETURNS VARCHAR2
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SQL_REDO_UNDO NUMBER IN DEFAULT
COLUMN_NAME VARCHAR2 IN DEFAULT
PROCEDURE REMOVE_LOGFILE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
LOGFILENAME VARCHAR2 IN
PROCEDURE START_LOGMNR
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
STARTSCN NUMBER IN DEFAULT
ENDSCN NUMBER IN DEFAULT
STARTTIME DATE IN DEFAULT
ENDTIME DATE IN DEFAULT
DICTFILENAME VARCHAR2 IN DEFAULT
OPTIONS BINARY_INTEGER IN DEFAULT
4.模拟删除数据
select * from test;
ID NAME
---------- ------------------------------
1 ccc
2 ddd
JZH@TEST>select * from test;
ID NAME
---------- ------------------------------
1 ccc
2 ddd
JZH@TEST>delete from test where id=1;
1 row deleted.
JZH@TEST>commit;
Commit complete.
JZH@TEST>select * from test;
ID NAME
---------- ------------------------------
2 ddd
5.归档切换
SYS@TEST>alter system switch logfile;
System altered.
SYS@TEST>archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/arch
Oldest online log sequence 39
Next log sequence to archive 41
Current log sequence 41
6.使用DBMS_LOGMNR.ADD_LOGFILE添加归档日志,如果需要添加多个日志可以使用ADDFILE选项
SYS@TEST>exec dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/arch/1_40_862788014.dbf',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
添加多个日志使用addfile,如下:
exec dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/arch/1_40_862788014.dbf',options=>dbms_logmnr.addfile)
7.启动logminer
SYS@TEST>exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.
8.查询v$logmnr_contents视图
SYS@TEST>select username as usr,(xidusn || '.'|| xidslt || '.' || xidsqn) as xid,
2 operation,sql_redo,sql_undo from v$logmnr_contents where username in ('JZH');
USR XID OPERATION SQL_REDO SQL_UNDO
-------------------- ------------ ---------------- ------------------------------------------------------------ ----------------------------------------
JZH 1.31.749 START set transaction read write;
JZH 1.31.749 DELETE delete from "JZH"."TEST" where "ID" = '1' and "NAME" = 'ccc' insert into "JZH"."TEST"("ID","NAME") va
and ROWID = 'AAATFLAAEAAAAKPAAA'; lues ('1','ccc');
JZH 1.31.749 INTERNAL
JZH 1.31.749 COMMIT commit;
查询结果给出了delete语句,并且给出了回滚的sql语句;
9.结束logminer
SYS@TEST>exec dbms_logmnr.end_logmnr();
PL/SQL procedure successfully completed.
exec dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/arch/1_40_862788014.dbf',options=>dbms_logmnr.addfile)
7.启动logminer
SYS@TEST>exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.
SYS@TEST>select username as usr,(xidusn || '.'|| xidslt || '.' || xidsqn) as xid,
2 operation,sql_redo,sql_undo from v$logmnr_contents where username in ('JZH');
USR XID OPERATION SQL_REDO SQL_UNDO
-------------------- ------------ ---------------- ------------------------------------------------------------ ----------------------------------------
JZH 1.31.749 START set transaction read write;
JZH 1.31.749 DELETE delete from "JZH"."TEST" where "ID" = '1' and "NAME" = 'ccc' insert into "JZH"."TEST"("ID","NAME") va
and ROWID = 'AAATFLAAEAAAAKPAAA'; lues ('1','ccc');
JZH 1.31.749 INTERNAL
JZH 1.31.749 COMMIT commit;
9.结束logminer
SYS@TEST>exec dbms_logmnr.end_logmnr();
PL/SQL procedure successfully completed.