我在Oracle中运行了以下语句:
SQL> CREATE TABLE MYLOG10G (COL1 NUMBER, COL2 VARCHAR2(20), COL3 DATE);
SQL> insert into mylog10g values (100, 'Fangxin', sysdate);
SQL> update mylog10g set col2='FANGXIN' where col1=100;
SQL> delete mylog10g where col1=100;
SQL> select object_id from dba_objects where object_name='MYLOG10G';
OBJECT_ID
----------
10566
我在MyLOG中试图解出原始的SQL:
LOG> extract start 2 table mylog10g
Start extract redo SQL ...
RBA=0x000066.000000b7.0010, XID=0x0005.005.00000092, RID=AAAClGAAEAAAAKGAAA
INSERT INTO MYLOG10G ( COL1 , COL2 , COL3 ) VALUES (100,'Fangxin','2007-05-29 10:50:32');
RBA=0x000066.000000ba.0010 LEN=0x0238 VLD=0x0d
Chgid=1 Length=164, Piece=7
Piece=2 Length=60, Size=60
Piece=3 Length=20, Size=20
Piece=4 Length=28, Size=28
Piece=5 Length=2, Size=4
Piece=6 Length=4, Size=4
Piece=7 Length=8, Size=8
Chgid=2 Length=60, Piece=2
Piece=2 Length=32, Size=32
Chgid=3 Length=72, Piece=4
Piece=2 Length=20, Size=20
Piece=3 Length=16, Size=16
Piece=4 Length=4, Size=4
Chgid=4 Length=204, Piece=9
Piece=2 Length=20, Size=20
Piece=3 Length=72, Size=72
Piece=4 Length=2, Size=4
Piece=5 Length=20, Size=20
Piece=6 Length=28, Size=28
Piece=7 Length=2, Size=4
Piece=8 Length=4, Size=4
Piece=9 Length=8, Size=8
RBA=0x000066.000000bc.0010, XID=0x0009.02c.00000090, RID=AAAClGAAEAAAAKGAAA
DELETE MYLOG10G WHERE COL1 = 100 AND COL2 = 'FANGXIN' AND COL3 = '2007-05-29 10:50:32';
Update操作没被解出来, 原因呢, 是因为10g中这个Update有了新的记录类型.
LOG> oradump block 0xba
Start extract redo SQL ...
RBA=0x000066.000000ba.0010 LEN=0x0238 VLD=0x0d
Chgid=1 Length=164, Piece=7, OP=11.19
Chgid=2 Length=60, Piece=2, OP=5.2
Chgid=3 Length=72, Piece=4, OP=5.4
Chgid=4 Length=204, Piece=9, OP=5.1
做这个东东怎么就这么难呢?
留言 (3)
RBA=0x000066.000000ba.0010, XID=0x0007.01b.00000091, RID=AAAClGAAEAAAAKGAKG
UPDATE MYLOG10G SET COL2 = 'FANGXIN' WHERE COL2 = 'Fangxin';
Update搞定
Posted by anysql | May 29, 2007 6:09 PM
自己给自己鼓劲, 有一套!
Posted by 木匠 | May 30, 2007 5:20 AM
要赶在Oracle Open World之前, 将Array Insert/Delete这两个操作也解出来.
Posted by anysql | May 30, 2007 8:15 AM