要想得到更直观的SQL语句, 就得引入数据字典, 这里面主要需要以下三个方面的信息:

  1. Table (Object ID, Table Name, Partition Name)
  2. Column (Segment Column ID, Column Name, Column type)
  3. 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抄过来.