简单配置 Log Miner

1.启用数据库附加日志
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_logmnr
PROCEDURE 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.




请使用浏览器的分享功能分享到微信等