要想得到更直观的SQL语句, 就得引入数据字典, 这里面主要需要以下三个方面的信息:
- Table (Object ID, Table Name, Partition Name)
- Column (Segment Column ID, Column Name, Column type)
- Key (The columns of primary key or unique index, for updating and deleting)
在MyLOG中引入了前两个: Table (LOGTAB.TXT)和Column (LOGCOL.TXT)
$ cat LOGTAB.TXT
1,1044190,BP_ADJUSTMENT,PART2
2,28267,CMF,
$ cat LOGCOL.TXT
1,1,ID,VARCHAR2
1,2,PARTITION_KEY,NUMBER
1,3,EXTERNAL_ID,VARCHAR2
1,4,CREATED_BY,VARCHAR2
1,5,CREATION_DATE,DATE
2,69,BILL_FMT_OPT,NUMBER
2,70,BILL_DISP_METH,NUMBER
......
接下就可以使用这些数据字典信息解出更直观的SQL语句了.
LOG> extract start 2 end 6 table BP_ADJUSTMENT
Start extract redo SQL ...
RBA=0x005e30.00000002.0010, XID=0x0012.049.000dc2bb
INSERT INTO BP_ADJUSTMENT ( ID , PARTITION_KEY , EXTERNAL_ID , CREATED_BY , CREATION_DATE ) VALUES (?,?,?,?,?);
RBA=0x005e30.00000006.0028, XID=0x000e.018.000daa6f, Commit Transaction
接下来要做的是将列的具体数值打印出来, 又要开始处理不同的数据类型了, 还好这一部份的代码可以从MyDUL抄过来.
留言 (2)
进展很快呀,
等下一篇 之五 出来之后, 解析出来 VALUES (?,?,?,?,?);
我就可以拿来用了.
(易用性-简洁, 应该大大超越Oracle LogMiner 才好)
(我曾经依靠打电话,使用LogMiner 帮助 长春 的一个客户恢复了一年的数据, 苦呀)
顺便问一下, 给这个新工具起名字了吗?
Posted by 木匠 | May 25, 2007 2:12 AM
不知道你有没有考虑“rollback”操作的问题,这个操作是对应的5.11OP码的吗?
Posted by nase | May 25, 2007 10:59 AM