sql中如何使用dbms_logmnr
更新:HHH   时间:2023-1-7


这篇文章主要介绍sql中如何使用dbms_logmnr,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

讲到不完全恢复(找回drop table)时,经常需要确定drop table的确切时间,所以经常需要用到dbms_logmner

SQL> desc dbms_logmnr_d
PROCEDURE BUILD
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
DICTIONARY_FILENAME            VARCHAR2                IN     DEFAULT
DICTIONARY_LOCATION            VARCHAR2                IN     DEFAULT
OPTIONS                        NUMBER                  IN     DEFAULT
PROCEDURE SET_TABLESPACE
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
NEW_TABLESPACE                 VARCHAR2                IN
--过程set_tablespace可以把logmnr相关的对象从sysaux表空间转移到set_tablespace设置的表空间
SQL> exec dbms_logmnr_d.set_tablespace('TEST');

PL/SQL 过程已成功完成。

SQL> select count(*) from dba_segments where tablespace_name='TEST';

COUNT(*)
----------
       99

SQL> exec dbms_logmnr_d.set_tablespace('SYSAUX');

PL/SQL 过程已成功完成。

SQL> select count(*) from dba_segments where tablespace_name='TEST';

COUNT(*)
----------
        4

SQL> desc dbms_logmnr
PROCEDURE ADD_LOGFILE
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
LOGFILENAME                    VARCHAR2                IN
OPTIONS                        BINARY_INTEGER          IN     DEFAULT
FUNCTION COLUMN_PRESENT RETURNS BINARY_INTEGER
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
SQL_REDO_UNDO                  NUMBER                  IN     DEFAULT
COLUMN_NAME                    VARCHAR2                IN     DEFAULT
PROCEDURE END_LOGMNR
FUNCTION MINE_VALUE RETURNS VARCHAR2
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
SQL_REDO_UNDO                  NUMBER                  IN     DEFAULT
COLUMN_NAME                    VARCHAR2                IN     DEFAULT
PROCEDURE REMOVE_LOGFILE
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
LOGFILENAME                    VARCHAR2                IN
PROCEDURE START_LOGMNR
参数名称                       类型                    输入/输出默认值?
------------------------------ ----------------------- ------ --------
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
--设置参数utl_file_dir
SQL> show parameter utl_file_dir

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir                         string
SQL> exec dbms_logmnr_d.build('dict.ora','E:oracleproduct10.2.0admintestlo
gmnr');
BEGIN dbms_logmnr_d.build('dict.ora','E:oracleproduct10.2.0admintestlogmnr
'); END;

*
第 1 行出现错误:
ORA-01308: 未设置初始化参数 utl_file_dir
ORA-06512: 在 "SYS.DBMS_LOGMNR_INTERNAL", line 3474
ORA-06512: 在 "SYS.DBMS_LOGMNR_INTERNAL", line 3552
ORA-06512: 在 "SYS.DBMS_LOGMNR_D", line 12
ORA-06512: 在 line 1


SQL> alter system set utl_file_dir='E:oracleproduct10.2.0admintestlogmnr';

alter system set utl_file_dir='E:oracleproduct10.2.0admintestlogmnr'
                *
第 1 行出现错误:
ORA-02095: 无法修改指定的初始化参数


SQL> alter system set utl_file_dir='E:oracleproduct10.2.0admintestlogmnr' scope=spfile;

系统已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  163577856 bytes
Fixed Size                  1247876 bytes
Variable Size              92276092 bytes
Database Buffers           67108864 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> exec dbms_logmnr_d.build('dict.ora','E:oracleproduct10.2.0admintestlo
gmnr');

PL/SQL 过程已成功完成。

SQL>
SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:>e:

E:>cd E:oracleproduct10.2.0admintestlogmnr

E:oracleproduct10.2.0admintestlogmnr>dir
驱动器 E 中的卷没有标签。
卷的序列号是 F6E5-4B31

E:oracleproduct10.2.0admintestlogmnr 的目录

2008-09-26  13:11    <DIR>          .
2008-09-26  13:11    <DIR>          ..
2008-09-26  13:11        10,871,850 dict.ora
              1 个文件     10,871,850 字节
              2 个目录  3,143,331,840 可用字节

E:oracleproduct10.2.0admintestlogmnr>exit

SQL> show user
USER 为 "SYS"
SQL> connect test/test
已连接。
SQL> set time on
13:13:04 SQL> desc tt
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

ID                                                 NUMBER(38)
NAME                                               VARCHAR2(10)

13:13:08 SQL> select group#,status,sequence#,first_change#,first_time from v$log
;

GROUP# STATUS            SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ---------------- ---------- ------------- --------------
        1 CURRENT                  26       1576118 26-9月 -08
        2 INACTIVE                 25       1570052 26-9月 -08
        3 INACTIVE                 24       1563812 26-9月 -08

13:13:42 SQL> alter session set nls_date_format='yyyy/mm/dd hh34:mi:ss';

会话已更改。

13:13:58 SQL> select group#,status,sequence#,first_change#,first_time from v$log
;

GROUP# STATUS            SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ---------------- ---------- ------------- -------------------
        1 CURRENT                  26       1576118 2008/09/26 12:56:37
        2 INACTIVE                 25       1570052 2008/09/26 12:53:48
        3 INACTIVE                 24       1563812 2008/09/26 10:16:24

13:14:00 SQL> select *from tt;

未选定行

13:14:38 SQL> insert into tt values(1,'a');

已创建 1 行。

13:14:43 SQL> insert into tt values(2,'b');

已创建 1 行。

13:14:52 SQL> commit;

提交完成。

13:14:56 SQL> alter system switch logfile;

系统已更改。

13:15:03 SQL> alter system checkpoint;

系统已更改。

13:15:10 SQL> select group#,status,sequence#,first_change#,first_time from v$log
;

GROUP# STATUS            SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ---------------- ---------- ------------- -------------------
        1 INACTIVE                 26       1576118 2008/09/26 12:56:37
        2 INACTIVE                 25       1570052 2008/09/26 12:53:48
        3 CURRENT                  27       1580527 2008/09/26 13:15:02

13:15:13 SQL> update tt set id=100 ,name='logmnr';

已更新2行。

13:15:58 SQL> commit;

提交完成。

13:16:00 SQL> alter system switch logfile;

系统已更改。

13:16:04 SQL> alter system checkpoint;

系统已更改。

13:16:05 SQL> select group#,status,sequence#,first_change#,first_time from v$log
;

GROUP# STATUS            SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ---------------- ---------- ------------- -------------------
        1 INACTIVE                 26       1576118 2008/09/26 12:56:37
        2 CURRENT                  28       1580563 2008/09/26 13:16:04
        3 INACTIVE                 27       1580527 2008/09/26 13:15:02

13:16:06 SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG
13:32:51 SQL> select sequence#, first_change#,first_time,next_change#,next_time
from v$archived_log where sequence# in (26,27,28)
13:34:08   2  and resetlogs_id=666280390;

SEQUENCE# FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
---------- ------------- ------------------- ------------ -------------------
       26       1576118 2008/09/26 12:56:37      1580527 2008/09/26 13:15:02
       27       1580527 2008/09/26 13:15:02      1580563 2008/09/26 13:16:04

13:34:10 SQL> col name format a80
13:35:08 SQL> select name  from v$archived_log where sequence# in (26,27,28)
13:35:16   2  and resetlogs_id=666280390;

NAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC26_666280390_1
E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC27_666280390_1

13:35:18 SQL>
13:38:46 SQL> show user
USER 为 "TEST"
13:38:48 SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC26_666280390_1',1);
BEGIN dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVER
Y_FILE_DESTARC26_666280390_1',1); END;

*
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须声明标识符 'DBMS_LOGMNR.ADD_LOGFILE'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

13:40:31 SQL> connect / as sysdba
已连接。
13:40:57 SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC26_666280390_1',dbms_logmnr.new);

PL/SQL 过程已成功完成。
--dbms_logmnr.new的作用是清除掉之前(add_logfile)加进来的logfile
13:41:06SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC27_666280390_1',dbms_logmnr.new);

PL/SQL 过程已成功完成。

13:42:33 SQL> exec dbms_logmnr.remove_logfile('E:ORACLEPRODUCT10.2.0DB_2DAT
ABASEDB_RECOVERY_FILE_DESTARC27_666280390_1');

PL/SQL 过程已成功完成。

13:42:37 SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC27_666280390_1',dbms_logmnr.new);

PL/SQL 过程已成功完成。

13:42:45 SQL>
13:46:52 SQL> select filename from v$logmnr_logs;

FILENAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC27_666280390_1

13:46:58 SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC26_666280390_1',dbms_logmnr.new);

PL/SQL 过程已成功完成。

13:47:12 SQL> select filename from v$logmnr_logs;

FILENAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC26_666280390_1

13:47:27 SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0DB_2DATABA
SEDB_RECOVERY_FILE_DESTARC27_666280390_1');

PL/SQL 过程已成功完成。
13:47:41 SQL> desc v$logmnr_logs;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

LOG_ID                                             NUMBER
FILENAME                                           VARCHAR2(512)
LOW_TIME                                           DATE
HIGH_TIME                                          DATE
DB_ID                                              NUMBER
DB_NAME                                            VARCHAR2(8)
RESET_SCN                                          NUMBER
RESET_SCN_TIME                                     DATE
THREAD_ID                                          NUMBER
THREAD_SQN                                         NUMBER
LOW_SCN                                            NUMBER
NEXT_SCN                                           NUMBER
DICTIONARY_BEGIN                                   VARCHAR2(3)
DICTIONARY_END                                     VARCHAR2(3)
TYPE                                               VARCHAR2(7)
BLOCKSIZE                                          NUMBER
FILESIZE                                           NUMBER
INFO                                               VARCHAR2(32)
STATUS                                             NUMBER

13:47:39 SQL> select filename from v$logmnr_logs;

FILENAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC26_666280390_1
E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC27_666280390_1

13:47:41 SQL>
13:51:01 SQL> select log_id,low_scn,low_time,next_scn,high_time from v$logmnr_lo
gs;

LOG_ID    LOW_SCN LOW_TIME              NEXT_SCN HIGH_TIME
---------- ---------- ------------------- ---------- -------------------
       26    1576118 2008/09/26 12:56:37    1580527 2008/09/26 13:15:02
       27    1580527 2008/09/26 13:15:02    1580563 2008/09/26 13:16:04

13:51:09 SQL>
13:51:09 SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'E:oracleproduct10.
2.0admintestlogmnrdict.ora',startscn=>1576118,endscn=>1580563);

PL/SQL 过程已成功完成。

13:55:42 SQL> select count(*) from v$logmnr_contents;

COUNT(*)
----------
     8648

13:56:15 SQL> desc v$logmnr_contents
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

SCN                                                NUMBER
CSCN                                               NUMBER
TIMESTAMP                                          DATE
COMMIT_TIMESTAMP                                   DATE
THREAD#                                            NUMBER
LOG_ID                                             NUMBER
XIDUSN                                             NUMBER
XIDSLT                                             NUMBER
XIDSQN                                             NUMBER
PXIDUSN                                            NUMBER
PXIDSLT                                            NUMBER
PXIDSQN                                            NUMBER
RBASQN                                             NUMBER
RBABLK                                             NUMBER
RBABYTE                                            NUMBER
UBAFIL                                             NUMBER
UBABLK                                             NUMBER
UBAREC                                             NUMBER
UBASQN                                             NUMBER
ABS_FILE#                                          NUMBER
REL_FILE#                                          NUMBER
DATA_BLK#                                          NUMBER
DATA_OBJ#                                          NUMBER
DATA_OBJD#                                         NUMBER
SEG_OWNER                                          VARCHAR2(32)
SEG_NAME                                           VARCHAR2(256)
TABLE_NAME                                         VARCHAR2(32)
SEG_TYPE                                           NUMBER
SEG_TYPE_NAME                                      VARCHAR2(32)
TABLE_SPACE                                        VARCHAR2(32)
ROW_ID                                             VARCHAR2(18)
SESSION#                                           NUMBER
SERIAL#                                            NUMBER
USERNAME                                           VARCHAR2(30)
SESSION_INFO                                       VARCHAR2(4000)
TX_NAME                                            VARCHAR2(256)
ROLLBACK                                           NUMBER
OPERATION                                          VARCHAR2(32)
OPERATION_CODE                                     NUMBER
SQL_REDO                                           VARCHAR2(4000)
SQL_UNDO                                           VARCHAR2(4000)
RS_ID                                              VARCHAR2(32)
SEQUENCE#                                          NUMBER
SSN                                                NUMBER
CSF                                                NUMBER
INFO                                               VARCHAR2(32)
STATUS                                             NUMBER
REDO_VALUE                                         NUMBER
UNDO_VALUE                                         NUMBER
SQL_COLUMN_TYPE                                    VARCHAR2(30)
SQL_COLUMN_NAME                                    VARCHAR2(30)
REDO_LENGTH                                        NUMBER
REDO_OFFSET                                        NUMBER
UNDO_LENGTH                                        NUMBER
UNDO_OFFSET                                        NUMBER
DATA_OBJV#                                         NUMBER
SAFE_RESUME_SCN                                    NUMBER
XID                                                RAW(8)
PXID                                               RAW(8)
AUDIT_SESSIONID                                    NUMBER

14:08:10 SQL> select rbasqn,rbablk,rbabyte from v$logmnr_contents where seg_owne
r='TEST' and seg_name='TT';

RBASQN     RBABLK    RBABYTE
---------- ---------- ----------
       26       7544        400
       26       7546         16
       27         30         16
       27         30        468

14:08:33 SQL>
14:14:58 SQL> select scn,timestamp , sql_redo from v$logmnr_contents where seg_o
wner='TEST' and seg_name='TT';

SCN TIMESTAMP
---------- -------------------
SQL_REDO
--------------------------------------------------------------------------------
--------------------
  1580518 2008/09/26 13:14:47
insert into "TEST"."TT"("ID","NAME") values ('1','a');

1580520 2008/09/26 13:14:53
insert into "TEST"."TT"("ID","NAME") values ('2','b');

1580558 2008/09/26 13:15:59
update "TEST"."TT" set "ID" = '100', "NAME" = 'logmnr' where "ID" = '1' and "NAM
E" = 'a' and ROWID =
'AAAC+uAACAAAAMPAAA';

SCN TIMESTAMP
---------- -------------------
SQL_REDO
--------------------------------------------------------------------------------
--------------------

1580558 2008/09/26 13:15:59
update "TEST"."TT" set "ID" = '100', "NAME" = 'logmnr' where "ID" = '2' and "NAM
E" = 'b' and ROWID =
'AAAC+uAACAAAAMPAAB';
SQL> select group#,status,sequence# from v$log;

GROUP# STATUS            SEQUENCE#
---------- ---------------- ----------
        1 CURRENT                  29
        2 INACTIVE                 28
        3 INACTIVE                 27

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG

SQL> select * from test.tt;

ID NAME
---------- ----------
        1 a

SQL> CONNECT TEST/TEST
已连接。
SQL> delete from tt;

已删除 1 行。

SQL> commit;

提交完成。

SQL> alter system checkpoint;

系统已更改。

SQL> select group#,status,sequence# from v$log;

GROUP# STATUS            SEQUENCE#
---------- ---------------- ----------
        1 CURRENT                  29
        2 INACTIVE                 28
        3 INACTIVE                 27

SQL> connect /  as sysdba
已连接。
SQL> exec dbms_logmnr.add_logfile('E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.
LOG');

PL/SQL 过程已成功完成。

SQL> select filename from v$logmnr_logs;

FILENAME
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG

SQL> exec dbms_logmnr.start_logmnr;

PL/SQL 过程已成功完成。

SQL> select count(*) from v$logmnr_contents;

COUNT(*)
----------
      326

SQL> select count(*) from v$logmnr_contents where seg_name like '%tt%';

COUNT(*)
----------
        0

SQL> select count(*) from v$logmnr_contents where seg_name like '%TT%';

COUNT(*)
----------
        0

SQL> select count(*) from v$logmnr_contents where sql_redo like '%delete%'
 2  ;

COUNT(*)
----------
        2
--从redo_sql中看出并没有出现对象tt的名字,而是使用了“"UNKNOWN"."OBJ# 12206"”
SQL> select sql_redo,seg_owner,seg_name from v$logmnr_contents where sql_redo li
ke '%delete%'
 2  ;

SQL_REDO
--------------------------------------------------------------------------------

SEG_OWNER
--------------------------------
SEG_NAME
--------------------------------------------------------------------------------

delete from "UNKNOWN"."OBJ# 12206" where "COL 1" = HEXTORAW('c102') and "COL 2"
= HEXTORAW('61') and ROWID = 'AAAC+uAACAAAAMQAAA';
UNKNOWN
OBJ# 12206

delete from "UNKNOWN"."OBJ# 8781" where "COL 1" = HEXTORAW('c20216') and "COL 2"

= HEXTORAW('c105') and "COL 3" = HEXTORAW('80') and "COL 4" = HEXTORAW('c102')

SQL_REDO
--------------------------------------------------------------------------------

SEG_OWNER
--------------------------------
SEG_NAME
--------------------------------------------------------------------------------

and "COL 5" IS NULL and "COL 6" = HEXTORAW('436f6e63757272656e6379') and "COL 7"

IS NULL and "COL 8" = HEXTORAW('c22205') and "COL 9" = HEXTORAW('44617461626173

652054696d65205370656e742057616974696e6720282529') and "COL 10" = HEXTORAW('3537

2e3835363036') and "COL 11" = HEXTORAW('436f6e63757272656e6379') and "COL 12" IS

NULL and "COL 13" IS NULL and "COL 14" = HEXTORAW('786c091a0730380d4ab5c01c3c')

and "COL 15" = HEXTORAW('786c091a0730380d4ab5c01c3c') and "COL 16" IS NULL and
"COL 17" IS NULL and "COL 18" IS NULL and "COL 19" IS NULL and "COL 20" IS NULL

SQL_REDO
--------------------------------------------------------------------------------

SEG_OWNER
--------------------------------
SEG_NAME
--------------------------------------------------------------------------------

and "COL 21" = HEXTORAW('c106') and "COL 22" IS NULL and "COL 23" = HEXTORAW('22

74657374222e227473696422') and "COL 24" = HEXTORAW('787973') and "COL 25" = HEXT

ORAW('3139322e3136382e302e323532') and "COL 26" = HEXTORAW('74736964') and "COL
27" = HEXTORAW('c102') and "COL 28" IS NULL and "COL 29" IS NULL and "COL 30" =
HEXTORAW('4438313436363034414543302d344141372d413732452d394230393735413130453746

2d30') and "COL 31" IS NULL and "COL 32" = HEXTORAW('c13a563d3a02274c150b') and
ROWID = 'AAACJNAADAAAAplAAC';

SQL_REDO
--------------------------------------------------------------------------------

SEG_OWNER
--------------------------------
SEG_NAME
--------------------------------------------------------------------------------

UNKNOWN
OBJ# 8781

SQL> select object_id, data_object_id from dba_objects where object_name='TT' AN
D OWNER='TEST';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
    12206          12206
--验证下rba:
SQL> select rbasqn,rbablk,rbabyte from v$logmnr_contents where sql_redo like '%d
elete%';

RBASQN     RBABLK    RBABYTE
---------- ---------- ----------
       29        295         16
       29        558        400
SQL> select status,group# from v$log;

STATUS               GROUP#
---------------- ----------
CURRENT                   1
INACTIVE                  2
INACTIVE                  3

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO02.LOG
E:ORACLEPRODUCT10.2.0ORADATATESTREDO03.LOG

SQL> alter system dump logfile 'E:ORACLEPRODUCT10.2.0ORADATATESTREDO01.LOG
';

系统已更改。
--dump logfile trace的rba是:RBA: 0x00001d.00000127.0010
SQL> select to_number('00000127','xxxxxxxx') from dual;

TO_NUMBER('00000127','XXXXXXXX')
--------------------------------
                            295

SQL> select redo_length from v$logmnr_contents where sql_redo like '%delete%';

REDO_LENGTH
-----------
         0
         0

SQL>
dump logfile trace:
--=============================================
REDO RECORD - Thread:1 RBA: 0x00001d.00000127.0010 LEN: 0x0188 VLD: 0x01
SCN: 0x0000.00182edd SUBSCN:  1 09/26/2008 14:45:55
CHANGE #1 TYP:0 CLS:23 AFN:4 DBA:0x01000039 OBJ:4294967295 SCN:0x0000.00182ed2 SEQ:  1 OP:5.2
ktudh redo: slt: 0x0025 sqn: 0x000000c9 flg: 0x0012 siz: 148 fbi: 0
           uba: 0x010000d1.005e.0c    pxid:  0x0000.000.00000000
CHANGE #2 TYP:0 CLS:24 AFN:4 DBA:0x010000d1 OBJ:4294967295 SCN:0x0000.00182ed1 SEQ:  7 OP:5.1
ktudb redo: siz: 148 spc: 6928 flg: 0x0012 seq: 0x005e rec: 0x0c
           xid:  0x0004.025.000000c9  
ktubl redo: slt: 37 rci: 0 opc: 11.1 objn: 12206 objd: 12206 tsn: 5
Undo type:  Regular undo        Begin trans    Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
            0x00000000  prev ctl uba: 0x010000d1.005e.05
prev ctl max cmt scn:  0x0000.00182b93  prev tx cmt scn:  0x0000.00182b98
txn start scn:  0xffff.ffffffff  logon user: 31  prev brb: 16777278  prev bcl: 0 KDO undo record:
KTB Redo
op: 0x03  ver: 0x01  
op: Z
KDO Op code: IRP row dependencies Disabled
 xtype: XA flags: 0x00000000  bdba: 0x00800310  hdba: 0x0080030b
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0) size/delt: 8
fb: --H-FL-- lb: 0x0  cc: 2
null: --
col  0: [ 2]  c1 02
col  1: [ 1]  61
CHANGE #3 TYP:2 CLS: 1 AFN:2 DBA:0x00800310 OBJ:12206 SCN:0x0000.00182caf SEQ:  1 OP:11.3
KTB Redo
op: 0x11  ver: 0x01  
op: F  xid:  0x0004.025.000000c9    uba: 0x010000d1.005e.0c
Block cleanout record, scn:  0x0000.00182edd ver: 0x01 opt: 0x02, entries follow...
 itli: 1  flg: 2  scn: 0x0000.00182caf
KDO Op code: DRP row dependencies Disabled
 xtype: XA flags: 0x00000000  bdba: 0x00800310  hdba: 0x0080030b
itli: 2  ispac: 0  maxfr: 4858
tabn: 0 slot: 0(0x0)
--===================================================

以上是“sql中如何使用dbms_logmnr”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注天达云行业资讯频道!

返回网络安全教程...