楼主: 超级野人

请问回滚段中的数据有索引么?

[复制链接]
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
11#
发表于 2007-3-6 21:45 | 只看该作者
最初由 超级野人 发布
[B]不解?!! [/B]


呵呵,其实很简单,除了整个事务的undo record可以串起来,单个data block对应的undo record还有另外一条链子串起来的

还是用实验说话

[php]
SQL> drop table test;

表已删除。


SQL> create table test(i int,name char(1500));

表已创建。

SQL> insert into test values(1,'a');

已创建 1 行。

SQL> insert into test values(2,'b');

已创建 1 行。

SQL> insert into test values(3,'c');

已创建 1 行。

SQL> insert into test values(4,'d');

已创建 1 行。

SQL> insert into test values(5,'e');

已创建 1 行。

SQL> insert into test values(6,'f');

已创建 1 行。

SQL> insert into test values(7,'g');

已创建 1 行。

SQL> insert into test values(8,'h');

已创建 1 行。

SQL> insert into test values(9,'i');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select i,dbms_rowid.rowid_relative_fno(rowid) fno,
  2  dbms_rowid.rowid_block_number(rowid) block# from test;

         I        FNO     BLOCK#
---------- ---------- ----------
         1          4       2460
         2          4       2460
         3          4       2460
         4          4       2460
         5          4       2461
         6          4       2461
         7          4       2461
         8          4       2461
         9          4       2462

已选择9行。

1. 首先更新block2460的一条数据

SQL> update test set name='aa' where i=1;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        161        317         43

看看block2460的ITL:
SQL> alter system dump datafile 4 block 2460;

系统已更改。

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  C---    0  scn 0x0000.000c83e9
0x02   0x000a.017.00000143  0x008000a1.013d.2b  ----    1  fsc 0x0000.00000000

对应的undo:
SQL> alter system dump datafile 2 block 161;

系统已更改。

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x2b  irb: 0x2b  icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x1f40     0x02 0x1e98     0x03 0x1e30     0x04 0x1d88     0x05 0x1d10     
0x06 0x1ca8     0x07 0x1c00     0x08 0x1b98     0x09 0x1af0     0x0a 0x1a88     
0x0b 0x19e0     0x0c 0x1978     0x0d 0x18d0     0x0e 0x1868     0x0f 0x17c4     
0x10 0x171c     0x11 0x16b4     0x12 0x1610     0x13 0x158c     0x14 0x1528     
0x15 0x1484     0x16 0x141c     0x17 0x139c     0x18 0x133c     0x19 0x12dc     
0x1a 0x127c     0x1b 0x11a8     0x1c 0x1144     0x1d 0x10d8     0x1e 0x1098     
0x1f 0x1044     0x20 0x0fd8     0x21 0x0f30     0x22 0x0e88     0x23 0x0de0     
0x24 0x0d3c     0x25 0x0c94     0x26 0x0bf0     0x27 0x0b4c     0x28 0x0acc     
0x29 0x0a70     0x2a 0x09cc     0x2b 0x0358     

对应的undo record为0x26:
*-----------------------------
* Rec #0x2b  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x00   
Undo type:  Regular undo    Begin trans    Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x00000000
*-----------------------------
uba: 0x008000a1.013d.2a ctl max scn: 0x0000.000c7e58 prv tx scn: 0x0000.000c7e61
txn start scn: scn: 0x0000.00000000 logon user: 27
prev brb: 8388767 prev bcl: 0
KDO undo record:
KTB Redo
op: 0x03  ver: 0x01  
op: Z
Array Update of 1 rows:
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 7
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099c  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
61 20 20 ......

注意这里的 op: Z

2. 再更新block2461的一条记录
SQL> update test set name='ee' where i=5;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        162        317          1

看看block2461的ITL:
SQL> alter system dump datafile 4 block 2461;

系统已更改。

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x000a.017.00000143  0x008000a2.013d.01  ----    1  fsc 0x0000.00000000

对应的undo:
SQL> alter system dump datafile 2 block 162;

系统已更改。

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x1   irb: 0x1   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     

这里使用了新的undo block,应该是恰好上一个undo block满了:
UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x1   irb: 0x1   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     

*-----------------------------
* Rec #0x1  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x00   
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x008000a1
*-----------------------------
KDO undo record:
KTB Redo
op: 0x03  ver: 0x01  
op: Z
Array Update of 1 rows:
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099d  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
65 20 20 ......

注意这里的 op: Z

3. 继续更新block2460的一条记录:
SQL> update test set name='bb' where i=2;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        162        317          2

SQL> alter system dump datafile 4 block 2460;

系统已更改。
Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  C---    0  scn 0x0000.000c83e9
0x02   0x000a.017.00000143  0x008000a2.013d.02  ----    2  fsc 0x0000.00000000

SQL> alter system dump datafile 2 block 162;

系统已更改。

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x2   irb: 0x2   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     0x02 0x1358     

*-----------------------------
* Rec #0x2  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x01   
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x008000a1.013d.2b
Array Update of 1 rows:
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099c  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
62 20 20 ......

注意到这里op: C  uba: 0x008000a1.013d.2b这里指向了上一个undo block的一条undo record,正是block2460更新的第一条记录对应的undo

4. 继续更新block2461的一条记录:
SQL> update test set name='ff' where i=6;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        162        317          3

SQL> alter system dump datafile 4 block 2461;

系统已更改。

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x000a.017.00000143  0x008000a2.013d.03  ----    2  fsc 0x0000.00000000

SQL> alter system dump datafile 2 block 162;

系统已更改。

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x3   irb: 0x3   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     0x02 0x1358     0x03 0x0d0c     

*-----------------------------
* Rec #0x3  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x02   
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x008000a2.013d.01
Array Update of 1 rows:
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099d  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
66 20 20 ......

注意到这里op: C  uba: 0x008000a2.013d.01指向的是block2461更新的第一条记录对应的undo record。

5. 继续更新block2460的一条记录:
SQL> update test set name='cc' where i=3;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        162        317          4

SQL> alter system dump datafile 4 block 2460;

系统已更改。

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  C---    0  scn 0x0000.000c83e9
0x02   0x000a.017.00000143  0x008000a2.013d.04  ----    3  fsc 0x0000.00000000

SQL> alter system dump datafile 2 block 162;

系统已更改。

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x4   irb: 0x4   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     0x02 0x1358     0x03 0x0d0c     0x04 0x06c0   

*-----------------------------
* Rec #0x4  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x03   
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x008000a2.013d.02
Array Update of 1 rows:
tabn: 0 slot: 2(0x2) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099c  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
63 20 20 ......

注意到这里op: C  uba: 0x008000a2.013d.02指向的是block2460更新的第二条记录对应的undo record

6. 继续更新block2461的一条记录:

SQL> update test set name='gg' where i=7;

已更新 1 行。

SQL> select xidusn,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec from v$transaction;

    XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
---------- ---------- ---------- ---------- ---------- ---------- ----------
        10         23        323          2        162        317          5

SQL> alter system dump datafile 4 block 2461;

系统已更改。

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0003.019.00000141  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
0x02   0x000a.017.00000143  0x008000a2.013d.05  ----    3  fsc 0x0000.00000000


SQL> alter system dump datafile 2 block 162;

UNDO BLK:  
xid: 0x000a.017.00000143  seq: 0x13d cnt: 0x5   irb: 0x5   icl: 0x0   flg: 0x0000

Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x19a4     0x02 0x1358     0x03 0x0d0c     0x04 0x06c0     0x05 0x0074

*-----------------------------
* Rec #0x5  slt: 0x17  objn: 10709(0x000029d5)  objd: 10710  tblspc: 4(0x00000004)
*       Layer:  11 (Row)   opc: 1   rci 0x04   
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
Tablespace Undo:  No
rdba: 0x00000000
*-----------------------------
KDO undo record:
KTB Redo
op: 0x02  ver: 0x01  
op: C  uba: 0x008000a2.013d.03
Array Update of 1 rows:
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 2 ckix: 0
ncol: 2 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x0100099d  hdba: 0x0100099b
itli: 2  ispac: 0  maxfr: 4858
vect = 3
col  1: [1500]
67 20 20 ......

注意到这里op: C  uba: 0x008000a2.013d.03指向的是block2461更新的第二条记录

试验到这里,我们已经可以看到一个规律了,那就是:
1.事务的所有undo record,可以根据前面实验指出的rci和rdba全部串起来
2.每一个block中所有dml操作的记录对应的undo record可以通过op: C  uba: xxxxxxx串起来

如果回滚整个事务,根据数据字典中记录得到事务最后一条undo record,可以获得整个事务的undo

如果一致性读取某个block,则可以根据该block中的ITL记录找到该block最后一条dml操作的记录
对应的undo record,通过op: C  uba: xxxxxxx找到这个block对应的所有的undo record,这样,
最坏情况下,最多只需要扫描该block中被修改过的记录个数的undo block就可以构造出一致性块,
而不是楼主说的需要读取整个事务修改过的记录个数的undo block

--
[/php]

使用道具 举报

回复
论坛徽章:
8
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:532008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB元老
日期:2011-12-24 20:32:592012新春纪念徽章
日期:2012-01-04 11:53:29
12#
发表于 2007-3-7 06:25 | 只看该作者
这个实验做的,真是强哟。学习一下

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
13#
 楼主| 发表于 2007-3-8 16:59 | 只看该作者
说句实在话,以上的dump结果我不太看的明白!!!!

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
14#
发表于 2007-3-8 17:23 | 只看该作者
最初由 超级野人 发布
[B]说句实在话,以上的dump结果我不太看的明白!!!! [/B]


后面我总结了结论啊,就是同一个block的记录对应的undo record有有另外一个指针串起来的。

最坏的情况下,一个block有N条记录,每一条记录被修改后对应的undo record都在不同的undo block中,也只需要访问N个block。这个连接的起点就是block的ITL记录

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
15#
发表于 2007-3-8 17:36 | 只看该作者
最初由 超级野人 发布
[B]说句实在话,以上的dump结果我不太看的明白!!!! [/B]


你习惯 动脑不动手。

不知道你是在写数据库还是怎么的,问题总是这类东西

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2007-02-07 09:39:43
16#
发表于 2007-3-8 20:57 | 只看该作者
对于构造一致性读的情况,比如我 select * from test where i = 2;  读取是怎么个顺序读取的呢? 读取 0x008000a2.013d.04 0x008000a2.013d.02  两个undo块,读取 i=2的前映象  ,来构造一致性读,是吧;

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
17#
发表于 2007-3-8 21:55 | 只看该作者
最初由 tailor_huang 发布
[B]对于构造一致性读的情况,比如我 select * from test where i = 2;  读取是怎么个顺序读取的呢? 读取 0x008000a2.013d.04 0x008000a2.013d.02  两个undo块,读取 i=2的前映象  ,来构造一致性读,是吧; [/B]


对于一致性读,会比较查询开始时的scn和block头部的scn,如果起始scn小于block scn,则表示需要构造一致性块,先在buffer中copy出一个新的块,然后就会去读取ITL信息,根据未提交事务的ITL提供的信息作为入口,顺着链条直到需要的所有undo record来回滚新块到以前的一个一致性状态。

前面说的最坏的情况,构造一致性块可能需要读取N个block,但实际情况中,同一个block的记录很可能在相同或者相近时间内被更新,所以其undo record应该会集中在较少的几个block中的。

但实际情况可能更复杂,查询开始后,某个block可能已经被其他session更新提交了多次,这个时候ITL slot也已经被多次覆盖,但是ITL修改也是需要记录undo的,所以回滚的时候同时也要将以前的ITL信息回滚出来,再根据回滚的ITL回滚更早的undo record。所以如果一个block经历一个长的事务,在此期间,不停的有新的session来查询该block,则需要为这些session构造出各自合适的一致性块,这就是多版本一致性读

如果,ITL中有多条未提交事务记录,则情况还要更复杂,不过总体思路应该还是一致的

使用道具 举报

回复
论坛徽章:
8
授权会员
日期:2007-02-07 08:06:00数据库板块每日发贴之星
日期:2007-02-16 01:02:55数据库板块每日发贴之星
日期:2007-03-20 01:05:44数据库板块每日发贴之星
日期:2007-03-21 01:07:54数据库板块每日发贴之星
日期:2007-03-23 01:08:55数据库板块每日发贴之星
日期:2007-03-27 01:07:31数据库板块每日发贴之星
日期:2007-03-28 01:07:49会员2007贡献徽章
日期:2007-09-26 18:42:10
18#
发表于 2007-3-14 11:07 | 只看该作者
先留个脚印,以后回公司做个实验

使用道具 举报

回复
论坛徽章:
1
生肖徽章2007版:猪
日期:2008-11-22 05:19:25
19#
发表于 2007-3-15 16:49 | 只看该作者
NinGoo老大,能否把dump文件中各个字段定义解析下
就象 expert one-on-one 中的tom把trc文件各个字段都做了明确解析.
还想问问老大,对于这些dump文件资料是从那找到的呢?还是自己分析出来的?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
20#
发表于 2007-3-15 22:12 | 只看该作者
最初由 *迎风* 发布
[B]NinGoo老大,能否把dump文件中各个字段定义解析下
就象 expert one-on-one 中的tom把trc文件各个字段都做了明确解析.
还想问问老大,对于这些dump文件资料是从那找到的呢?还是自己分析出来的? [/B]


不要叫偶老大

关于dump出来的文件,完整而准确的定义我也是是没有的,其实关键不是知道dump文件里的每一个定义,关键在于理解oracle是怎么做的,然后通过试验和分析去验证你的想法。这个板块也有很多实验涉及到dump,一些常见的东西,一开始也是慢慢看其他前辈的文章和实验积累起来的,这个需要时间。

说实话,在做这个实验之前,我也不太清楚oracle对于undo record是怎么组织的,那几个指针之间的意义和关系是什么。我是先猜测oracle应该会怎么处理,然后设计一个产生undo的过程,通过dump出来的文件慢慢分析,寻找到蛛丝马迹后,将想法慢慢修正,然后贯穿起来的

思考,然后验证,慢慢的积累以后,就能看明白一点了,不然光看那些定义,即使你能将它倒背如流,也未必真的就是属于你的东西了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表