解出Oracle日志文件中的Redo SQL语句之三
初步解决了事务的划分问题. 这得感谢biti_rainy的帮助, 从另一个角度来看, 如果我们的DBA可以一起研究, 估计速度要快得多.
已经可以用XID这一条线来划分Redo SQL的事务关系了, 来看一下MyLOG的输出例子吧!
LOG> extract start 2 end 6
Start extract redo SQL ...
RBA=0x005e30.00000002.0010, SCN=0x031f.05c00824, XID=0x0012.049.000dc2bb, UBA=0x62c263c4.498b.08
INSERT INTO OBJ_1044190 (COL1,COL2,COL3,COL4,COL5) VALUES (?,?,?,?,?);
RBA=0x005e30.00000002.0188, SCN=0x031f.05c00824, XID=0x000e.018.000daa6f, UBA=0x3b41c2dd.3bce.2d
UPDATE OBJ_28267 SET COL84 = ?,COL95 = ?,COL96 = ? WHERE COL84 = ? AND COL95 = ? AND COL96 = ?;
RBA=0x005e30.00000004.0128, SCN=0x031f.05c00824, XID=0x0016.04d.0005a421, UBA=0xb4000fe3.1a0a.0e
UPDATE OBJ_28267 SET COL3 = ?,COL20 = ?,COL23 = ?,COL34 = ?,COL35 = ?,COL36 = ?,COL39 = ?,COL40 = ?,COL41 = ?,COL45 = ?,COL51 = ?,COL82 = ?,COL83 = ?,COL84 = ?,COL95 = ?,COL96 = ? WHERE COL3 = ? AND COL20 = ? AND COL23 = ? AND COL34 = ? AND COL35 = ? AND COL36 = ? AND COL39 = ? AND COL40 = ? AND COL41 = ? AND COL45 = ? AND COL51 = ? AND COL82 = ? AND COL83 = ? AND COL84 = ? AND COL95 = ? AND COL96 = ?;
RBA=0x005e30.00000006.0028, XID=0x000e.018.000daa6f, UBA=0x3b41c2dd.3bce.2d, Commit Transaction
上面只是第2个块到第6个块的Redo SQL, 看更多的请下载这个文件. 接下来初步估计有两个任务, 第一个是增加对Oracle 10g的日志文件的支持; 第二个是增加一个数据字典, 解出更直接的Redo SQL语句. 最后肯定留下一堆堆的Bug慢慢研究.
好象对开发一个类SharePlex逻辑复制软件的信心越来越足了.
