在哪些情况下,数据库不启动附加日志不能正常的被Logminer捕获到的,这里做了一个简单的测试,说明在不启用附加日志的情况下,很多操作不能被捕获,不仅仅是行迁移的数据记录.当然本实验仅供参考,因为在不同的数据库版本,不同的平台,甚至不同的操作都可能出现不同的结果.如果想要数据库日志通过Logminer获得较为完整的sql语句,强烈建议打开附加日志(当然会产生多一点日志,可能增加磁盘io的负担,凡事都有两面性,则其善而从之)

数据库版本

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod

PL/SQL Release 10.2.0.4.0 - Production

CORE 10.2.0.4.0 Production

TNS for Linux: Version 10.2.0.4.0 - Production

NLSRTL Version 10.2.0.4.0 - Production

插入数据

--为了减少测试redo影响,切换归档日志

SQL> alter system switch logfile;

System altered.

SQL> show user;

USER is "CHF"

--当前scn

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949934814

--当前redo logfile

SQL> select member from v$logfile where group# in(

2 select group# from v$log where status='CURRENT');

MEMBER

------------------------------------------------------------------

/u01/oracle/oradata/XFF/redo03.log

--创建测试表并插入数据

SQL> create table xifenfei(id number,name varchar2(4000));

Table created.

SQL> insert into xifenfei values(1,'xifenfei');

1 row created.

SQL> insert into xifenfei values(2,'XIFENFEI');

1 row created.

SQL> insert into xifenfei values(3,'XiFenFei');

1 row created.

SQL> commit;

Commit complete.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949934864

--数据存储的datafile 和blocknum

SQL> select id,rowid,dbms_rowid.ROWID_RELATIVE_FNO(rowid) file_num,

2 dbms_rowid.rowid_block_number(rowid) block_num from xifenfei;

ID ROWID FILE_NUM BLOCK_NUM

---------- ------------------ ---------- ----------

1 AAAMuvAAJAAAAmkAAA 9 2468

2 AAAMuvAAJAAAAmkAAB 9 2468

3 AAAMuvAAJAAAAmkAAC 9 2468

--dump数据块

SQL> alter system dump datafile 9 block 2468;

System altered.

--dump datablock内容

Block header dump: 0x024009a4

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.3ff09 itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.019.0000010d 0x00800b85.0111.2f --U- 3 fsc 0x0000.0003ff0e

0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000

data_block_dump,data header at 0xcf6c464

===============

tsiz: 0x1f98

hsiz: 0x18

pbl: 0x0cf6c464

bdba: 0x024009a4

76543210

flag=--------

ntab=1

nrow=3

frre=-1

fsbo=0x18

fseo=0x1f6b

avsp=0x1f53

tosp=0x1f53

0xe:pti[0] nrow=3 offs=0

0x12:pri[0] offs=0x1f89

0x14:pri[1] offs=0x1f7a

0x16:pri[2] offs=0x1f6b

block_row_dump:

tab 0, row 0, @0x1f89

tl: 15 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 02

col 1: [ 8] 78 69 66 65 6e 66 65 69

tab 0, row 1, @0x1f7a

tl: 15 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 03

col 1: [ 8] 58 49 46 45 4e 46 45 49

tab 0, row 2, @0x1f6b

tl: 15 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 04

col 1: [ 8] 58 69 46 65 6e 46 65 69

--可以清楚的看到这三条记录都存在一个数据块中,并未发生行迁移等情况

--dump redo log

SQL> alter system dump logfile '/u01/oracle/oradata/XFF/redo03.log'

2 scn min 42949934814 scn max 42949934864;

System altered.

--dump redo logfile内容

CHANGE #9 TYP:0 CLS: 4 AFN:9 DBA:0x024009a3 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 1 OP:13.28

Low HWM

Highwater:: 0x024009a9 ext#: 0 blk#: 8 ext size: 8

#blocks in seg. hdr's freelists: 0

#blocks below: 5

mapblk 0x00000000 offset: 0

lfdba: 0x024009a1 CHANGE #10 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 1 OP:11.2

KTB Redo

op: 0x01 ver: 0x01

op: F xid: 0x0008.019.0000010d uba: 0x00800b85.0111.2d

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) size/delt: 15

fb: --H-FL-- lb: 0x1 cc: 2

null: --

col 0: [ 2] c1 02

col 1: [ 8] 78 69 66 65 6e 66 65 69

CHANGE #11 TYP:0 CLS:31 AFN:2 DBA:0x00800079 OBJ:4294967295 SCN:0x000a.0003fe8f SEQ: 1 OP:5.2

ktudh redo: slt: 0x0019 sqn: 0x0000010d flg: 0x0012 siz: 108 fbi: 0

uba: 0x00800b85.0111.2d pxid: 0x0000.000.00000000

CHANGE #12 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 2 OP:11.2

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800b85.0111.2e

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) size/delt: 15

fb: --H-FL-- lb: 0x1 cc: 2

null: --

col 0: [ 2] c1 03

col 1: [ 8] 58 49 46 45 4e 46 45 49

CHANGE #13 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 3 OP:11.2

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800b85.0111.2f

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) size/delt: 15

fb: --H-FL-- lb: 0x1 cc: 2

null: --

col 0: [ 2] c1 04

col 1: [ 8] 58 69 46 65 6e 46 65 69

--这里可以看到,只有redo的信息,没有太多undo信息(因为是插入数据)

--使用Logminer

SQL> conn / as sysdba

Connected.

SQL> exec dbms_logmnr.add_logfile('/u01/oracle/oradata/XFF/redo03.log',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_Logminer(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

SQL> select TABLE_NAME,sql_redo from v$Logminer_contents where SEG_NAME='XIFENFEI';

TABLE_NAME SQL_REDO

-------------------------------- -------------------------------------------------------

XIFENFEI create table xifenfei(id number,name varchar2(4000));

SQL> EXEC dbms_logmnr.END_Logminer;

PL/SQL procedure successfully completed.

--这里可以明确的看到,Logminer没有找到任何关于这个表的dml操作,也就是说三条insert都没有被找到

说明:在redo中已经包含了insert操作的相关记录,但是因为没有启用附加日志,是的Logminer不能正常获得相关操作语句

简单更新操作

SQL> alter system switch logfile;

System altered.

SQL> conn chf/xifenfei

Connected.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949941538

SQL> select member from v$logfile where group# in(

2 select group# from v$log

3 where status='CURRENT');

MEMBER

---------------------------------------------------------------

/u01/oracle/oradata/XFF/redo01.log

SQL> update xifenfei set name='www.xifenfei.com' where id=1;

1 row updated.

SQL> update xifenfei set name='WWW.XIFENFEI.COM' WHERE ID=2;

1 row updated.

SQL> update xifenfei set name='www.orasos.com' where id=3;

1 row updated.

SQL> commit;

Commit complete.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949941552

SQL> alter system dump datafile 9 block 2468;

System altered.

--dump datablock

Block header dump: 0x024009a4

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.4192a itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.019.0000010d 0x00800b85.0111.2f C--- 0 scn 0x000a.0003ff0e

0x02 0x0003.004.0000014e 0x0080002b.01a6.3b --U- 3 fsc 0x0000.0004192d

data_block_dump,data header at 0xdf83464

===============

tsiz: 0x1f98

hsiz: 0x18

pbl: 0x0df83464

bdba: 0x024009a4

76543210

flag=--------

ntab=1

nrow=3

frre=-1

fsbo=0x18

fseo=0x1f28

avsp=0x1f3d

tosp=0x1f3d

0xe:pti[0] nrow=3 offs=0

0x12:pri[0] offs=0x1f54

0x14:pri[1] offs=0x1f3d

0x16:pri[2] offs=0x1f28

block_row_dump:

tab 0, row 0, @0x1f54

tl: 23 fb: --H-FL-- lb: 0x2 cc: 2

col 0: [ 2] c1 02

col 1: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d

tab 0, row 1, @0x1f3d

tl: 23 fb: --H-FL-- lb: 0x2 cc: 2

col 0: [ 2] c1 03

col 1: [16] 57 57 57 2e 58 49 46 45 4e 46 45 49 2e 43 4f 4d

tab 0, row 2, @0x1f28

tl: 21 fb: --H-FL-- lb: 0x2 cc: 2

col 0: [ 2] c1 04

col 1: [14] 77 77 77 2e 6f 72 61 73 6f 73 2e 63 6f 6d

SQL> alter system dump logfile '/u01/oracle/oradata/XFF/redo01.log'

2 scn min 42949941538 scn max 42949941552;

System altered.

--dump redo log

REDO RECORD - Thread:1 RBA: 0x000013.00000002.0010 LEN: 0x0408 VLD: 0x0d

SCN: 0x000a.0004192d SUBSCN: 1 09/26/2012 23:31:27

CHANGE #1 TYP:2 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 5 OP:11.5

KTB Redo

op: 0x11 ver: 0x01

op: F xid: 0x0003.004.0000014e uba: 0x0080002b.01a6.39

Block cleanout record, scn: 0x000a.0004192a ver: 0x01 opt: 0x02, entries follow...

itli: 1 flg: 2 scn: 0x000a.0003ff0e

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 251

ncol: 2 nnew: 1 size: 8

col 1: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d

CHANGE #2 TYP:0 CLS:21 AFN:2 DBA:0x00800029 OBJ:4294967295 SCN:0x000a.00041781 SEQ: 1 OP:5.2

ktudh redo: slt: 0x0004 sqn: 0x0000014e flg: 0x0012 siz: 136 fbi: 0

uba: 0x0080002b.01a6.39 pxid: 0x0000.000.00000000

CHANGE #3 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0004192d SEQ: 1 OP:11.5

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x0080002b.01a6.3a

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) flag: 0x2c lock: 2 ckix: 12

ncol: 2 nnew: 1 size: 8

col 1: [16] 57 57 57 2e 58 49 46 45 4e 46 45 49 2e 43 4f 4d

CHANGE #4 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0004192d SEQ: 2 OP:11.5

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x0080002b.01a6.3b

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) flag: 0x2c lock: 2 ckix: 12

ncol: 2 nnew: 1 size: 6

col 1: [14] 77 77 77 2e 6f 72 61 73 6f 73 2e 63 6f 6d

--OP:11.5 Update Row Piece

--包含了修改后的值(后镜像)

CHANGE #5 TYP:0 CLS:21 AFN:2 DBA:0x00800029 OBJ:4294967295 SCN:0x000a.0004192d SEQ: 1 OP:5.4

ktucm redo: slt: 0x0004 sqn: 0x0000014e srt: 0 sta: 9 flg: 0x2

ktucf redo: uba: 0x0080002b.01a6.3b ext: 0 spc: 416 fbi: 0

--OP:5.4 Commit transaction (transaction table update)

CHANGE #6 TYP:0 CLS:22 AFN:2 DBA:0x0080002b OBJ:4294967295 SCN:0x000a.00041780 SEQ: 2 OP:5.1

ktudb redo: siz: 136 spc: 750 flg: 0x0012 seq: 0x01a6 rec: 0x39

xid: 0x0003.004.0000014e

ktubl redo: slt: 4 rci: 0 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Begin trans Last buffer split: No

Temp Object: No

Tablespace Undo: No

0x00000000 prev ctl uba: 0x0080002b.01a6.37

prev ctl max cmt scn: 0x000a.00040ff1 prev tx cmt scn: 0x000a.00041076

txn start scn: 0x0000.00000000 logon user: 59 prev brb: 8391493 prev bcl: 0 KDO undo record:

KTB Redo

op: 0x03 ver: 0x01

op: Z

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 251

ncol: 2 nnew: 1 size: -8

col 1: [ 8] 78 69 66 65 6e 66 65 69

CHANGE #7 TYP:0 CLS:22 AFN:2 DBA:0x0080002b OBJ:4294967295 SCN:0x000a.0004192d SEQ: 1 OP:5.1

ktudb redo: siz: 96 spc: 612 flg: 0x0022 seq: 0x01a6 rec: 0x3a

xid: 0x0003.004.0000014e

ktubu redo: slt: 4 rci: 57 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x0080002b.01a6.39

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 12

ncol: 2 nnew: 1 size: -8

col 1: [ 8] 58 49 46 45 4e 46 45 49

CHANGE #8 TYP:0 CLS:22 AFN:2 DBA:0x0080002b OBJ:4294967295 SCN:0x000a.0004192d SEQ: 2 OP:5.1

ktudb redo: siz: 96 spc: 514 flg: 0x0022 seq: 0x01a6 rec: 0x3b

xid: 0x0003.004.0000014e

ktubu redo: slt: 4 rci: 58 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x0080002b.01a6.3a

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) flag: 0x2c lock: 0 ckix: 12

ncol: 2 nnew: 1 size: -6

col 1: [ 8] 58 69 46 65 6e 46 65 69

--OP:5.1 Undo block or undo segment header

--包含了前镜像(修改前的值,其实就是undo中记录)

--Logminer操作

SQL> conn / as sysdba

Connected.

SQL> exec dbms_logmnr.add_logfile('/u01/oracle/oradata/XFF/redo01.log',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_Logminer(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

SQL> select TABLE_NAME,sql_redo from v$Logminer_contents where SEG_NAME='XIFENFEI';

no rows selected

SQL> EXEC dbms_logmnr.END_Logminer;

PL/SQL procedure successfully completed.

--Logminer无任何记录,证明没有被捕获到

说明:在redo中已经包含了insert操作的相关记录,但是因为没有启用附加日志,是的Logminer不能正常获得相关操作语句

行迁移情况

SQL> alter system switch logfile;

System altered.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949943145

SQL> select member from v$logfile where group# in(

2 select group# from v$log

3 where status='CURRENT');

MEMBER

--------------------------------------------------------------------------------

/u01/oracle/oradata/XFF/redo03.log

--制造行迁移

SQL> update xifenfei set name=lpad('F',4000,'F') WHERE ID=1;

1 row updated.

SQL> update xifenfei set name=lpad('X',4000,'X') WHERE ID=2;

1 row updated.

SQL> update xifenfei set name=lpad('C',4000,'C') WHERE ID=3;

1 row updated.

SQL> commit;

Commit complete.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949943162

SQL> select id,rowid,dbms_rowid.ROWID_RELATIVE_FNO(rowid) file_num,

2 dbms_rowid.rowid_block_number(rowid) block_num from xifenfei;

ID ROWID FILE_NUM BLOCK_NUM

---------- ------------------ ---------- ----------

1 AAAMuvAAJAAAAmkAAA 9 2468

2 AAAMuvAAJAAAAmkAAB 9 2468

3 AAAMuvAAJAAAAmkAAC 9 2468

SQL> alter system dump datafile 9 block 2472;

System altered.

--dump datablock

Block header dump: 0x024009a4

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.41f6e itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.02f.00000113 0x00800085.011b.41 --U- 3 fsc 0x000c.00041f78

0x02 0x0003.004.0000014e 0x0080002b.01a6.3b C--- 0 scn 0x000a.0004192d

data_block_dump,data header at 0xec3f464

===============

tsiz: 0x1f98

hsiz: 0x18

pbl: 0x0ec3f464

bdba: 0x024009a4

76543210

flag=--------

ntab=1

nrow=3

frre=-1

fsbo=0x18

fseo=0x31

avsp=0x19

tosp=0x25

0xe:pti[0] nrow=3 offs=0

0x12:pri[0] offs=0xfef

0x14:pri[1] offs=0x31

0x16:pri[2] offs=0xfda

block_row_dump:

tab 0, row 0, @0xfef

tl: 4009 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 02

col 1: [4000]

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

…………

tab 0, row 1, @0x31

tl: 4009 fb: --H-FL-- lb: 0x1 cc: 2

col 0: [ 2] c1 03

col 1: [4000]

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

…………

tab 0, row 2, @0xfda

tl: 9 fb: --H----- lb: 0x1 cc: 0

nrid: 0x024009a8.0

end_of_block_dump

End dump data blocks tsn: 9 file#: 9 minblk 2468 maxblk 2468

--找到下个数据块的block num

SQL> select to_number('9a8','xxxxx') from dual;

TO_NUMBER('9A8','XXXXX')

------------------------

2472

SQL> alter system dump datafile 9 block 2472;

System altered.

Block header dump: 0x024009a8

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.3ff09 itc: 3 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.02f.00000113 0x00800085.011b.40 --U- 1 fsc 0x0000.00041f78

0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000

0x03 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000

data_block_dump,data header at 0xec3f47c

===============

tsiz: 0x1f80

hsiz: 0x14

pbl: 0x0ec3f47c

bdba: 0x024009a8

76543210

flag=--------

ntab=1

nrow=1

frre=-1

fsbo=0x14

fseo=0xfd1

avsp=0xfbd

tosp=0xfbd

0xe:pti[0] nrow=1 offs=0

0x12:pri[0] offs=0xfd1

block_row_dump:

tab 0, row 0, @0xfd1

tl: 4015 fb: ----FL-- lb: 0x1 cc: 2

hrid: 0x024009a4.2

col 0: [ 2] c1 04

col 1: [4000]

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

…………

end_of_block_dump

End dump data blocks tsn: 9 file#: 9 minblk 2472 maxblk 2472

SQL> alter system dump logfile '/u01/oracle/oradata/XFF/redo03.log'

2 scn min 42949943145 scn max 42949943162;

System altered.

--dump redo log

REDO RECORD - Thread:1 RBA: 0x000015.00000002.0010 LEN: 0x1180 VLD: 0x0d

SCN: 0x000a.00041f6e SUBSCN: 1 09/27/2012 00:36:34

CHANGE #1 TYP:2 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.0004192d SEQ: 4 OP:11.5

KTB Redo

op: 0x11 ver: 0x01

op: F xid: 0x0008.02f.00000113 uba: 0x00800085.011b.3d

Block cleanout record, scn: 0x000a.00041f6e ver: 0x01 opt: 0x02, entries follow...

itli: 2 flg: 2 scn: 0x000a.0004192d

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) flag: 0x2c lock: 1 ckix: 174

ncol: 2 nnew: 1 size: 3986

col 1: [4000]

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

…………

CHANGE #2 TYP:0 CLS:31 AFN:2 DBA:0x00800079 OBJ:4294967295 SCN:0x000a.00041ebd SEQ: 1 OP:5.2

ktudh redo: slt: 0x002f sqn: 0x00000113 flg: 0x0012 siz: 168 fbi: 0

uba: 0x00800085.011b.3d pxid: 0x0000.000.00000000

--OP:5.2 Update rollback segment header

CHANGE #3 TYP:0 CLS:32 AFN:2 DBA:0x00800085 OBJ:4294967295 SCN:0x000a.00041ebc SEQ: 1 OP:5.1

ktudb redo: siz: 168 spc: 862 flg: 0x0012 seq: 0x011b rec: 0x3d

xid: 0x0008.02f.00000113

ktubl redo: slt: 47 rci: 0 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Begin trans Last buffer split: No

Temp Object: No

Tablespace Undo: No

0x00000000 prev ctl uba: 0x00800085.011b.3c

prev ctl max cmt scn: 0x000a.000416cd prev tx cmt scn: 0x000a.000416d0

txn start scn: 0x0000.00000000 logon user: 59 prev brb: 8388734 prev bcl: 0 KDO undo record:

KTB Redo

op: 0x04 ver: 0x01

op: L itl: xid: 0x0008.019.0000010d uba: 0x00800b85.0111.2f

flg: C--- lkc: 0 scn: 0x000a.0003ff0e

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 174

ncol: 2 nnew: 1 size: -3986

col 1: [16] 77 77 77 2e 78 69 66 65 6e 66 65 69 2e 63 6f 6d

REDO RECORD - Thread:1 RBA: 0x000015.0000000c.0010 LEN: 0x10d4 VLD: 0x05

SCN: 0x000a.00041f71 SUBSCN: 1 09/27/2012 00:36:40

CHANGE #1 TYP:0 CLS:32 AFN:2 DBA:0x00800085 OBJ:4294967295 SCN:0x000a.00041f6e SEQ: 1 OP:5.1

ktudb redo: siz: 104 spc: 692 flg: 0x0022 seq: 0x011b rec: 0x3e

xid: 0x0008.02f.00000113

ktubu redo: slt: 47 rci: 61 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800085.011b.3d

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 12

ncol: 2 nnew: 1 size: -3986

col 1: [16] 57 57 57 2e 58 49 46 45 4e 46 45 49 2e 43 4f 4d

CHANGE #2 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.00041f6e SEQ: 1 OP:11.5

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800085.011b.3e

KDO Op code: URP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) flag: 0x2c lock: 1 ckix: 12

ncol: 2 nnew: 1 size: 3986

col 1: [4000]

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

…………

REDO RECORD - Thread:1 RBA: 0x000015.00000015.010c LEN: 0x1098 VLD: 0x01

SCN: 0x000a.00041f74 SUBSCN: 2 09/27/2012 00:36:46

CHANGE #1 TYP:0 CLS:32 AFN:2 DBA:0x00800085 OBJ:4294967295 SCN:0x000a.00041f74 SEQ: 1 OP:5.1

ktudb redo: siz: 60 spc: 516 flg: 0x0022 seq: 0x011b rec: 0x40

xid: 0x0008.02f.00000113

ktubu redo: slt: 47 rci: 63 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x03 ver: 0x01

op: Z

KDO Op code: DRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a8 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0)

CHANGE #2 TYP:0 CLS: 1 AFN:9 DBA:0x024009a8 OBJ:52143 SCN:0x000a.0003ff0e SEQ: 1 OP:11.2

KTB Redo

op: 0x01 ver: 0x01

op: F xid: 0x0008.02f.00000113 uba: 0x00800085.011b.40

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a8 hdba: 0x024009a3

itli: 1 ispac: 24 maxfr: 4858

tabn: 0 slot: 0(0x0) size/delt: 4015

fb: ----FL-- lb: 0x1 cc: 2

hrid: 0x024009a4.2

null: --

col 0: [ 2] c1 04

col 1: [4000]

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

…………

REDO RECORD - Thread:1 RBA: 0x000015.0000001e.0078 LEN: 0x0124 VLD: 0x01

SCN: 0x000a.00041f74 SUBSCN: 3 09/27/2012 00:36:46

CHANGE #1 TYP:0 CLS:32 AFN:2 DBA:0x00800085 OBJ:4294967295 SCN:0x000a.00041f74 SEQ: 2 OP:5.1

ktudb redo: siz: 124 spc: 454 flg: 0x0022 seq: 0x011b rec: 0x41

xid: 0x0008.02f.00000113

ktubu redo: slt: 47 rci: 64 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800085.011b.3f

KDO Op code: ORP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) size/delt: 21

fb: --H-FL-- lb: 0x1 cc: 2

null: --

col 0: [ 2] c1 04

col 1: [14] 77 77 77 2e 6f 72 61 73 6f 73 2e 63 6f 6d

CHANGE #2 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.00041f74 SEQ: 1 OP:11.6

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800085.011b.41

KDO Op code: ORP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 1 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) size/delt: 9

fb: --H----- lb: 0x1 cc: 0

nrid: 0x024009a8.0

null:

--OP:11.6 Overwrite Row Piece

--Logminer操作

SQL> conn / as sysdba

Connected.

SQL> exec dbms_logmnr.add_logfile('/u01/oracle/oradata/XFF/redo03.log',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_Logminer(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

SQL> EXEC dbms_logmnr.END_Logminer;

PL/SQL procedure successfully completed.

SQL> col sql_redo for a80

SQL> col TABLE_NAME for a15

SQL> set lines 134

SQL> select TABLE_NAME,sql_redo from v$Logminer_contents where scn>=42949943145 and scn<=42949943162;

TABLE_NAME SQL_REDO

--------------- --------------------------------------------------------------------------------

XIFENFEI update "CHF"."XIFENFEI" set "NAME" = 'XXXX……XXXXX' where "NAME" = 'WWW.XIFENFEI.COM'

and ROWID = 'AAAMuvAAJAAAAmkAAB';

XIFENFEI Unsupported

XIFENFEI Unsupported

XIFENFEI update "CHF"."XIFENFEI" set "ID" = NULL, "NAME" = NULL where "ID" = '3' and "NAM

E" = 'www.orasos.com' and ROWID = 'AAAMuvAAJAAAAmkAAC';

commit;

7 rows selected.

SQL> EXEC dbms_logmnr.END_Logminer;

PL/SQL procedure successfully completed.

--获得了第二条记录(第一条没有任何记录,第三条因为行迁移,所以出现了update更新相关列为null,从而没有被Logminer正在的捕获)

说明:1)在发生行迁移之时,Logminer不能获得正常的sql语句,而是直接提示Unsupported;2)不发生行迁移也不一定能够获得update语句

删除操作

SQL> conn chf/xifenfei

Connected.

SQL> alter system switch logfile;

System altered.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949953508

SQL> select member from v$logfile where group# in(

2 select group# from v$log

3 where status='CURRENT');

MEMBER

--------------------------------------------------------------------------------

/u01/oracle/oradata/XFF/redo01.log

SQL> delete from xifenfei where id=1;

1 row deleted.

SQL> delete from xifenfei where id=2;

1 row deleted.

SQL> delete from xifenfei where id=3;

1 row deleted.

SQL> commit;

Commit complete.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949953524

--原始数据所在block

SQL> alter system dump datafile 9 block 2468;

System altered.

--发生行迁移的block

SQL> alter system dump datafile 9 block 2472;

System altered.

--dump block 内容

Block header dump: 0x024009a4

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.447e9 itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.02f.00000113 0x00800085.011b.41 C--- 0 scn 0x000a.00041f78

0x02 0x0004.014.000000da 0x00800398.00bf.02 --U- 3 fsc 0x1f55.000447f2

data_block_dump,data header at 0xdcb9464

===============

tsiz: 0x1f98

hsiz: 0x18

pbl: 0x0dcb9464

bdba: 0x024009a4

76543210

flag=--------

ntab=1

nrow=3

frre=-1

fsbo=0x18

fseo=0x31

avsp=0x25

tosp=0x1f80

0xe:pti[0] nrow=3 offs=0

0x12:pri[0] offs=0xfef

0x14:pri[1] offs=0x31

0x16:pri[2] offs=0xfda

block_row_dump:

tab 0, row 0, @0xfef

tl: 2 fb: --HDFL-- lb: 0x2

tab 0, row 1, @0x31

tl: 2 fb: --HDFL-- lb: 0x2

tab 0, row 2, @0xfda

tl: 2 fb: --HD---- lb: 0x2

Block header dump: 0x024009a8

Object id on Block? Y

seg/obj: 0xcbaf csc: 0x0a.447ef itc: 3 flg: E typ: 1 - DATA

brn: 0 bdba: 0x24009a1 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0008.02f.00000113 0x00800085.011b.40 C--- 0 scn 0x000a.00041f78

0x02 0x0004.014.000000da 0x00800399.00bf.01 --U- 1 fsc 0x0fad.000447f2

0x03 0x0000.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00000000

data_block_dump,data header at 0xdcb947c

===============

tsiz: 0x1f80

hsiz: 0x14

pbl: 0x0dcb947c

bdba: 0x024009a8

76543210

flag=--------

ntab=1

nrow=1

frre=-1

fsbo=0x14

fseo=0xfd1

avsp=0xfbd

tosp=0x1f6c

0xe:pti[0] nrow=1 offs=0

0x12:pri[0] offs=0xfd1

block_row_dump:

tab 0, row 0, @0xfd1

tl: 2 fb: ---DFL-- lb: 0x2

end_of_block_dump

--通过数据块dump证明,记录确实已经被删除

--dump redo logfile

SQL> alter system dump logfile '/u01/oracle/oradata/XFF/redo01.log'

2 scn min 42949953508 scn max 42949953524;

System altered.

--dump redolog

REDO RECORD - Thread:1 RBA: 0x000016.0000000b.0010 LEN: 0x1170 VLD: 0x0d

SCN: 0x000a.000447e9 SUBSCN: 1 09/27/2012 20:03:36

CHANGE #1 TYP:2 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.00041f78 SEQ: 1 OP:11.3

KTB Redo

op: 0x11 ver: 0x01

op: F xid: 0x0004.014.000000da uba: 0x00800397.00bf.06

Block cleanout record, scn: 0x000a.000447e9 ver: 0x01 opt: 0x02, entries follow...

itli: 1 flg: 2 scn: 0x000a.00041f78

KDO Op code: DRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0)

--OP:11.3 Drop Row Piece

CHANGE #2 TYP:0 CLS:23 AFN:2 DBA:0x00800039 OBJ:4294967295 SCN:0x000a.000447ae SEQ: 1 OP:5.2

ktudh redo: slt: 0x0014 sqn: 0x000000da flg: 0x0012 siz: 4172 fbi: 0

uba: 0x00800397.00bf.06 pxid: 0x0000.000.00000000

CHANGE #3 TYP:0 CLS:24 AFN:2 DBA:0x00800397 OBJ:4294967295 SCN:0x000a.000447ad SEQ: 1 OP:5.1

ktudb redo: siz: 4172 spc: 5804 flg: 0x0012 seq: 0x00bf rec: 0x06

xid: 0x0004.014.000000da

ktubl redo: slt: 20 rci: 0 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Begin trans Last buffer split: No

Temp Object: No

Tablespace Undo: No

0x00000000 prev ctl uba: 0x00800397.00bf.05

prev ctl max cmt scn: 0x000a.00043852 prev tx cmt scn: 0x000a.00043862

txn start scn: 0x0000.00000000 logon user: 59 prev brb: 8389522 prev bcl: 0 KDO undo record:

KTB Redo

op: 0x04 ver: 0x01

op: L itl: xid: 0x0003.004.0000014e uba: 0x0080002b.01a6.3b

flg: C--- lkc: 0 scn: 0x000a.0004192d

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) size/delt: 4009

fb: --H-FL-- lb: 0x0 cc: 2

null: --

col 0: [ 2] c1 02

col 1: [4000]

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46

…………

REDO RECORD - Thread:1 RBA: 0x000016.00000014.0010 LEN: 0x0044 VLD: 0x01

SCN: 0x000a.000447e9 SUBSCN: 1 09/27/2012 20:03:36

CHANGE #1 TYP:0 CLS: 8 AFN:9 DBA:0x024009a1 OBJ:52143 SCN:0x000a.00041f74 SEQ: 1 OP:13.22

Redo on Level1 Bitmap Block

Redo for state change

Len: 1 Offset: 3 newstate: 3

REDO RECORD - Thread:1 RBA: 0x000016.00000015.0010 LEN: 0x1100 VLD: 0x05

SCN: 0x000a.000447ed SUBSCN: 1 09/27/2012 20:03:42

CHANGE #1 TYP:0 CLS:23 AFN:2 DBA:0x00800039 OBJ:4294967295 SCN:0x000a.000447e9 SEQ: 1 OP:5.2

ktudh redo: slt: 0x0014 sqn: 0x00000000 flg: 0x000a siz: 4108 fbi: 80

uba: 0x00800398.00bf.01 pxid: 0x0000.000.00000000

CHANGE #2 TYP:1 CLS:24 AFN:2 DBA:0x00800398 OBJ:4294967295 SCN:0x000a.000447ec SEQ: 1 OP:5.1

ktudb redo: siz: 4108 spc: 1630 flg: 0x000a seq: 0x00bf rec: 0x01

xid: 0x0004.014.000000da

ktubu redo: slt: 20 rci: 0 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00800397

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800397.00bf.06

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1) size/delt: 4009

fb: --H-FL-- lb: 0x0 cc: 2

null: --

col 0: [ 2] c1 03

col 1: [4000]

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58

…………

CHANGE #3 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.000447e9 SEQ: 1 OP:11.3

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800398.00bf.01

KDO Op code: DRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 1(0x1)

REDO RECORD - Thread:1 RBA: 0x000016.0000001d.0190 LEN: 0x0044 VLD: 0x01

SCN: 0x000a.000447ed SUBSCN: 1 09/27/2012 20:03:42

CHANGE #1 TYP:0 CLS: 8 AFN:9 DBA:0x024009a1 OBJ:52143 SCN:0x000a.000447e9 SEQ: 1 OP:13.22

Redo on Level1 Bitmap Block

Redo for state change

Len: 1 Offset: 3 newstate: 5

REDO RECORD - Thread:1 RBA: 0x000016.0000001e.0010 LEN: 0x0118 VLD: 0x05

SCN: 0x000a.000447ee SUBSCN: 1 09/27/2012 20:03:45

CHANGE #1 TYP:0 CLS:24 AFN:2 DBA:0x00800398 OBJ:4294967295 SCN:0x000a.000447ed SEQ: 1 OP:5.1

ktudb redo: siz: 96 spc: 4040 flg: 0x0022 seq: 0x00bf rec: 0x02

xid: 0x0004.014.000000da

ktubu redo: slt: 20 rci: 1 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00000000

KDO undo record:

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800398.00bf.01

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2) size/delt: 9

fb: --H----- lb: 0x0 cc: 0

nrid: 0x024009a8.0

null:

CHANGE #2 TYP:0 CLS: 1 AFN:9 DBA:0x024009a4 OBJ:52143 SCN:0x000a.000447ed SEQ: 1 OP:11.3

KTB Redo

op: 0x02 ver: 0x01

op: C uba: 0x00800398.00bf.02

KDO Op code: DRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a4 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 2(0x2)

REDO RECORD - Thread:1 RBA: 0x000016.0000001e.0128 LEN: 0x10fc VLD: 0x01

SCN: 0x000a.000447f0 SUBSCN: 1 09/27/2012 20:03:45

CHANGE #1 TYP:0 CLS:23 AFN:2 DBA:0x00800039 OBJ:4294967295 SCN:0x000a.000447ed SEQ: 1 OP:5.2

ktudh redo: slt: 0x0014 sqn: 0x00000000 flg: 0x000a siz: 4100 fbi: 84

uba: 0x00800399.00bf.01 pxid: 0x0000.000.00000000

CHANGE #2 TYP:1 CLS:24 AFN:2 DBA:0x00800399 OBJ:4294967295 SCN:0x000a.000447ef SEQ: 1 OP:5.1

ktudb redo: siz: 4100 spc: 3942 flg: 0x000a seq: 0x00bf rec: 0x01

xid: 0x0004.014.000000da

ktubu redo: slt: 20 rci: 0 opc: 11.1 objn: 52143 objd: 52143 tsn: 9

Undo type: Regular undo Undo type: Last buffer split: No

Tablespace Undo: No

0x00800398

KDO undo record:

KTB Redo

op: 0x03 ver: 0x01

op: Z

KDO Op code: IRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a8 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0) size/delt: 4015

fb: ----FL-- lb: 0x0 cc: 2

hrid: 0x024009a4.2

null: --

col 0: [ 2] c1 04

col 1: [4000]

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43

…………

CHANGE #3 TYP:2 CLS: 1 AFN:9 DBA:0x024009a8 OBJ:52143 SCN:0x000a.00041f78 SEQ: 1 OP:11.3

KTB Redo

op: 0x11 ver: 0x01

op: F xid: 0x0004.014.000000da uba: 0x00800399.00bf.01

Block cleanout record, scn: 0x000a.000447ef ver: 0x01 opt: 0x02, entries follow...

itli: 1 flg: 2 scn: 0x000a.00041f78

KDO Op code: DRP row dependencies Disabled

xtype: XA flags: 0x00000000 bdba: 0x024009a8 hdba: 0x024009a3

itli: 2 ispac: 0 maxfr: 4858

tabn: 0 slot: 0(0x0)

REDO RECORD - Thread:1 RBA: 0x000016.00000027.00b4 LEN: 0x0044 VLD: 0x01

SCN: 0x000a.000447f0 SUBSCN: 1 09/27/2012 20:03:45

CHANGE #1 TYP:0 CLS: 8 AFN:9 DBA:0x024009a1 OBJ:52143 SCN:0x000a.000447ed SEQ: 1 OP:13.22

Redo on Level1 Bitmap Block

Redo for state change

Len: 1 Offset: 7 newstate: 5

--可以看到redo部分没有太多记录,而undo部分的信息比较全(因为是delete操作)

--Logminer操作

SQL> conn / as sysdba

Connected.

SQL> exec dbms_logmnr.add_logfile('/u01/oracle/oradata/XFF/redo01.log',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_Logminer(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

SQL> select sql_redo from v$Logminer_contents where SEG_NAME='XIFENFEI';

SQL_REDO

--------------------------------------------------------------------------------

delete from "CHF"."XIFENFEI" where "ID" = '2' and "NAME" = 'XXXXXXXXXXXXXXXXXXXX

…………

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' and ROWID = 'AAAMu

vAAJAAAAmkAAB';

Unsupported

Unsupported

SQL> EXEC dbms_logmnr.END_Logminer;

PL/SQL procedure successfully completed.

--也只是捕获了第二条记录,第一条无任何信息,第三条因为行迁移所以提示Unsupported

说明:我们可以看到对于delete操作,有部分不能被Logminer正常捕获,行迁移的直接提示Unsupported

启用数据库附加日志

SQL> conn chf/xifenfei

Connected.

SQL> drop table xifenfei purge;

Table dropped.

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949959788

SQL> select member from v$logfile where group# in(

2 select group# from v$log where status='CURRENT');

MEMBER

--------------------------------------------------------------------------------

/u01/oracle/oradata/XFF/redo02.log

SQL> create table xifenfei(id number,name varchar2(4000));

Table created.

SQL> insert into xifenfei values(1,'xifenfei');

1 row created.

SQL> insert into xifenfei values(2,'XIFENFEI');

1 row created.

SQL> insert into xifenfei values(3,'XiFenFei');

1 row created.

SQL> commit;

Commit complete.

SQL> update xifenfei set name='www.xifenfei.com' where id=1;

1 row updated.

SQL> update xifenfei set name='WWW.XIFENFEI.COM' WHERE ID=2;

1 row updated.

SQL> update xifenfei set name='www.orasos.com' where id=3;

1 row updated.

SQL> commit;

Commit complete.

SQL> update xifenfei set name=lpad('F',4000,'F') WHERE ID=1;

1 row updated.

SQL> update xifenfei set name=lpad('X',4000,'X') WHERE ID=2;

1 row updated.

SQL> update xifenfei set name=lpad('C',4000,'C') WHERE ID=3;

1 row updated.

SQL> commit;

Commit complete.

SQL> delete from xifenfei where id=1;

1 row deleted.

SQL> delete from xifenfei where id=2;

1 row deleted.

SQL> delete from xifenfei where id=3;

1 row deleted.

SQL> commit;

Commit complete.

SQL> select to_char(dbms_flashback.get_system_change_number,'9999999999999') scn from dual;

SCN

--------------

42949959845

SQL> conn / as sysdba

Connected.

SQL> exec dbms_logmnr.add_logfile('/u01/oracle/oradata/XFF/redo02.log',dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.start_Logminer(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

SQL> select sql_redo from v$Logminer_contents where SEG_NAME='XIFENFEI';

SQL_REDO

--------------------------------------------------------------------------------

create table xifenfei(id number,name varchar2(4000));

insert into "CHF"."XIFENFEI"("ID","NAME") values ('1','xifenfei');

insert into "CHF"."XIFENFEI"("ID","NAME") values ('2','XIFENFEI');

insert into "CHF"."XIFENFEI"("ID","NAME") values ('3','XiFenFei');

update "CHF"."XIFENFEI" set "NAME" = 'www.xifenfei.com' where "NAME" = 'xifenfei

' and ROWID = 'AAAMwEAAJAAAAmkAAA';

update "CHF"."XIFENFEI" set "NAME" = 'WWW.XIFENFEI.COM' where "NAME" = 'XIFENFEI

' and ROWID = 'AAAMwEAAJAAAAmkAAB';

update "CHF"."XIFENFEI" set "NAME" = 'www.orasos.com' where "NAME" = 'XiFenFei'

and ROWID = 'AAAMwEAAJAAAAmkAAC';

update "CHF"."XIFENFEI" set "NAME" = 'FFFFFFF…………FFFF' where

"NAME" = 'www.xifenfei.com' and ROWID = 'AAAMwEAAJAAAAmkAAA';

update "CHF"."XIFENFEI" set "NAME" = 'XXXXXXXXX…………XX' where

"NAME" = 'WWW.XIFENFEI.COM' and ROWID = 'AAAMwEAAJAAAAmkAAB';

update "CHF"."XIFENFEI" set "ID" = '3', "NAME" = 'CCCCC…………CCCCCCCCC'

where "ID" = '3' and "NAME"= 'www.orasos.com' and ROWID = 'AAAMwEAAJAAAAmkAAC';

delete from "CHF"."XIFENFEI" where "ID" = '1' and "NAME" = 'FFFFFF…………FF'

and ROWID = 'AAAMwEAAJAAAAmkAAA';

delete from "CHF"."XIFENFEI" where "ID" = '2' and "NAME" = 'XX…………XXX'

and ROWID = 'AAAMwEAAJAAAAmkAAB';

delete from "CHF"."XIFENFEI" where "ID" = '3' and "NAME" = 'CCCCCCCC…………CCC'

and ROWID = 'AAAMwEAAJAAAAmkAAC';

19 rows selected.

测试证明,启动附加日志后,数据库的相关操作都能够捕获,包括行迁移

oracle 00600 kccpb,惜分飞 - 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788...相关推荐

  1. 惜分飞oracle,惜分飞 - 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788...

    又一起win rac的asm disk被格式化为ntfs,导致数据库异常恢复的请求,客户描述有一个500G的data磁盘组(只有一个磁盘,被误操作进行了格式化).格式化asm disk之后 asm的a ...

  2. oracle中句柄,释放句柄 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788 - 惜分飞...

    在很多时候,检查系统时候发现,由于某个Oracle的trace文件导致磁盘空间告警,因为业务需要不能让数据库down下来.这个时候你想到的方法可能是直接删除掉这个trace文件,如果是win系统,那恭 ...

  3. python数据库管理软件_数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接 - Python社区...

    DataGrip :Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Or ...

  4. 使用Microsoft数据迁移助手在Oracle数据库和SQL Server之间迁移的具体示例

    介绍 (Introduction) Intended audience 目标听众 This document is intended for application developers and da ...

  5. oracle的date_add,SQL Server 中add函数到 oracle date add的操作

    SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...

  6. Oracle中有dateadd吗,SQL Server 中add函数到 oracle date add的操作

    SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...

  7. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 DBeaver.Navicat Premium.本文介绍另一个十分好用且强大的工具:DataGrip. Dat ...

  8. 应用程序的数据库从Sql Server迁移到Oracle

    应用程序的数据库从Sql Server迁移到Oracle 迁移案例一:数据库: Sql Server 2008到Oracle 9i 工具: Sybase PowerDesiner 12 试用版, PL ...

  9. SQL Server里的 ISNULL 与 Oracle 中的 NULLIF

    SQL Server里的 ISNULL 与 Oracle 中的 NULLIF不同: SQL Server 中有两个参数,语法:     ISNULL(check_expression, replace ...

最新文章

  1. MySQL 数据格式化
  2. Linux闲时自动抢占GPU脚本
  3. 后端开发都应该了解点接口的压力测试(Apache Bench版)
  4. x390拆机_用了七八年的笔记本电脑依然流畅如初,从X230i换到X390
  5. Python 揭秘斐波那契定律,如何帮助码农分析股票?| 技术头条
  6. DX中关于error C2664: “ID3DXEffect::SetMatrix”: 不能将参数 1 从“const char [17]”转换为“D3DXHANDLE”
  7. Linux压力测试工具
  8. 菲涅尔单缝衍射matlab,单缝菲涅尔衍射的光强分布.pdf
  9. 软件功能测试点---总结大全
  10. 时间片轮转调度算法模拟C语言
  11. Java使用Thumbnails实现图片指定大小压缩
  12. 大一java计算圆面积_Java练习题——计算圆的面积
  13. NLP之分词技术理论
  14. 分门别类刷leetcode——链表 1
  15. MicroStrain 3DM-GX3-25 ROS 开发
  16. Spring boot + netty开发即时通讯 IM
  17. hdfs文件误删恢复
  18. 个人电脑做外网服务器(一)
  19. uni-app - 电子签字板组件(签名专用写字画板,支持调整写字板 “横纵“ 方向,可调整线条粗细颜色等,Canvas 绘制非常丝滑流畅)完美兼容 H5 APP 小程序,最好用的画板签字教程插件源码
  20. java map转JSON对象

热门文章

  1. 常用z反变换公式表_8套建筑工程测量公式计算表,输入参数自动计算,高效工作!...
  2. html和dhtml的关系,DHTML 简介
  3. Flutter 自定义导航、字体大小、颜色等
  4. C语言中time_t详解
  5. 太赫兹芯片是什么原理_太赫兹收发芯片、收发方法及其成像探测系统与流程
  6. 密码学随笔---不可约多项式与本原多项式
  7. 升级mysql数据库版本时,对应配置文件的一些变化
  8. 顺利完成网页版体温单
  9. python 斗地主(1)
  10. Docker容器内安装ping工具