解出Oracle日志文件中的Redo SQL语句之七

    对于Delete操作, 取得相应的RowID.

SQL> SELECT ROWID,EMPNO FROM EMP WHERE EMPNO=7934;

ROWID                   EMPNO
------------------ ----------
AAAClAAAEAAAAJ3AAb       7934

SQL> DELETE EMP WHERE EMPNO=7934;

1 row deleted.

Start extract redo SQL ...
RBA=0x000062.00000002.0084,  XID=0x0009.01d.00000090, RID=AAAClAAAEAAAAJ3AAb
    DELETE OBJ_10560 WHERE ROWID = ?;

    对于Update操作, 取得相应的RowID.

SQL> select rowid, empno from emp where empno=7902;

ROWID                   EMPNO
------------------ ----------
AAAClAAAEAAAAJ3AAa       7902

SQL> update emp set ename='fangxin' where empno=7902;

1 row updated.

RBA=0x000063.0000001e.0010,  XID=0x0002.014.00000093, RID=AAAClAAAEAAAAJ3AAa
    UPDATE OBJ_10560 SET COL1 = ? WHERE COL1 = ?;

    对于Insert操作, 取得相应的RowID.

SQL> insert into emp (empno, ename) values (9999,'Fangxin');

1 row created.

SQL> select rowid, empno from emp where empno=9999;

ROWID                   EMPNO
------------------ ----------
AAAClAAAEAAAAJ3AAA       9999

RBA=0x000064.0000001d.0010,  XID=0x0004.015.0000008f, RID=AAAClAAAEAAAAJ3AAA
    INSERT INTO OBJ_10560 (COL1,COL2) VALUES (?,?);

    不过还有Array Insert/Delete和Direct Insert这三种操作类型需要搞定, 说不定10g中还有Array Update这样的一种类型.

留言 (1)

路漫漫其修远兮.

发表留言: