国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

關(guān)于回滾機制的一些測試

2024-07-21 02:35:48
字體:
供稿:網(wǎng)友

  SQL> connect test/test@test
  已連接。
  SQL> create table test (a number);
  
  表已創(chuàng)建。
  
  SQL> insert into test values(1);
  
  已創(chuàng)建 1 行。
  SQL> select segment_name,header_file,header_block from dba_segments where segmen
  t_name like 'TEST';
  
  SEGMENT_NAME  HEADER_FILE     HEADER_BLOCK
  TEST           1         35387
  SQL> alter system dump datafile 1 block 35388;
  
  系統(tǒng)已更改。
  DUMP出數(shù)據(jù)頭文件查看itl(interested transaction list)
  
  *** 2003-06-09 18:41:19.359
  Start dump data blocks tsn: 0 file#: 1 minblk 35388 maxblk 35388
  buffer tsn: 0 rdba: 0x00408a3c (1/35388)
  scn: 0x0000.00105cd3 seq: 0x04 flg: 0x00 tail: 0x5cd30604
  frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
  
  Block header dump: 0x00408a3c
  Object id on Block? Y
  seg/obj: 0x6487 csc: 0x00.105cd2 itc: 1 flg: O typ: 1 - DATA
  fsl: 0 fnx: 0x0 ver: 0x01
  
  Itl   Xid    Uba   Flag Lck   Scn/Fsc
  0x01  xid: 0x0008.000.00000002 uba: 0x00800dc4.0000.05 ----  1 fsc 0x001c.00000000
  
  /*這里可以看到xid= 0x0008.000.00000002(事務(wù)id)
  uba= 0x00800dc4.0000.05(undo block address)
  lck= 1(受影響的行數(shù))
  根據(jù)Xid的結(jié)構(gòu)得到
  0x0008.000.00000002
   0x0008 – Undo Segment Number
   000 – Transaction Table Slot Number
   00000002– Wrap
  根據(jù)uba的結(jié)構(gòu)得到
   0x00800dc4.0000.05
   0x00800dc4– Address of the last undo block used
   0000 – Sequence
   05 – Last Entry in UNDO record map
  */
  data_block_dump
  ===============
  以下省略。。。。。。
  
  根據(jù) 0x0008 – Undo Segment Number,
  SQL> select a.segment_name,a.header_file,a.header_block from dba_segments a,dba
  _rollback_segs b where a.segment_name=b.segment_name and b.segment_id='8';
  
  SEGMENT_NAME  HEADER_FILE  HEADER_BLOCK
  RBS7              2     3522
  
  然后dump rbs頭查看trans table
  Start dump data blocks tsn: 1 file#: 2 minblk 3522 maxblk 3522
  buffer tsn: 1 rdba: 0x00800dc2 (2/3522)
  scn: 0x0000.00105cd2 seq: 0x01 flg: 0x00 tail: 0x5cd20e01
  frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
  
  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0   space2: 0   #extents: 8   #blocks: 511
  last map 0x00000000 #maps: 0   offset: 4128
  Highwater:: 0x00800dc4 ext#: 0   blk#: 1   ext size: 63
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk 0x00000000 offset: 0
  Unlocked
  Map Header:: next 0x00000000 #extents: 8  obj#: 0   flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
  0x00800dc3 length: 63
  0x00800d42 length: 64
  0x00800582 length: 64
  0x00800342 length: 64
  0x00800482 length: 64
  0x008017c2 length: 64
  0x00801802 length: 64
  0x00800c42 length: 64
  
  TRN CTL:: seq: 0x0000 chd: 0x0001 ctl: 0x0061 inc: 0x00000000 nfb: 0x0000
  mgc: 0x8002 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
  uba: 0x00800dc4.0000.01 scn: 0x0000.00000000
  Version: 0x01
  FREE BLOCK POOL::
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0
  TRN TBL::
  
  index state cflags wrap#  uel   scn  dba   parent-xid  nub
  ------------------------------------------------------------------------------------------------
  0x00  10  0x80 0x0002 0x0000 0x0000.00105cd2 0x00800dc4 0x0000.000.00000000 0x00000001
  0x01  9  0x00 0x0001 0x0002 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000
  以下省略。
。。。。。。
  根據(jù)從xid中得到的000 – Transaction Table Slot Number
  去找到事務(wù)表中記載的undo塊的地址dba=0x00800dc4(也可從uba中直接得到)
  接下來我們來看一下undo頭的地址rdba: 0x00800dc2 (2/3522)
  所以我們?nèi)ump 3524即undo頭+2
  *** 2003-06-09 18:42:52.734
  Start dump data blocks tsn: 1 file#: 2 minblk 3524 maxblk 3524
  buffer tsn: 1 rdba: 0x00800dc4 (2/3524)
  scn: 0x0000.00105cd3 seq: 0x04 flg: 0x00 tail: 0x5cd30204
  frmt: 0x02 chkval: 0x0000 type: 0x02=KTU UNDO BLOCK
  
  ********************************************************************************
  UNDO BLK:
  xid: 0x0008.000.00000002 seq: 0x0  cnt: 0x5  irb: 0x5  icl: 0x0  flg: 0x0000
  
  Rec Offset   Rec Offset   Rec Offset   Rec Offset   Rec Offset
  ---------------------------------------------------------------------------
  0x01 0x1f80   0x02 0x1f18   0x03 0x1eb0   0x04 0x1e48   0x05 0x1de0
  
  *-----------------------------
  * Rec #0x1 slt: 0x00 objn: 25735(0x00006487) objd: 25735 tblspc: 0(0x00000000)
  *    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: 0x00000000.0000.00 ctl max scn: 0x0000.00000000 PRv tx scn: 0x0000.00000000
  KDO undo record:
  KTB Redo
  op: 0x04 ver: 0x01
  op: L itl: scn: 0x0004.049.000000d8 uba: 0x00800716.009f.3a
  flg: C-U-  lkc: 0   scn: 0x0000.00105ccf
  KDO Op code: DRP xtype: XA bdba: 0x00408a3c hdba: 0x00408a3b
  itli: 1 ispac: 0 maxfr: 4863
  tabn: 0 slot: 1(0x1)
  
  根據(jù)KDO Op code: DRP,表明反操作是delete,所以我們可以知道這就是剛才insert后在undo segment里記載的信息
  
  我們知道當(dāng)發(fā)生insert的時候undo segment里僅記載了記錄的rowid,下面我們把它找出來
  SQL> select rowid from test;
  
  ROWID
  ------------------
  AAAGSHAABAAAIo8AAC
  Translate the value: AAAGSHAABAAAIo8AAC
  
  Data Object number = AAAGSH
  File = AAB
  Block = AAAIo8
  ROW = AAC
  
  然后根據(jù)公式轉(zhuǎn)換
  得到data object number=25735
  file=1
  block=35388
  row=2

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吕梁市| 虞城县| 中卫市| 鹿泉市| 新宾| 南漳县| 福海县| 锦屏县| 旌德县| 遂平县| 汝州市| 永兴县| 辰溪县| 金华市| 建昌县| 汽车| 瓮安县| 九龙坡区| 潮州市| 五大连池市| 和平县| 邢台市| 龙川县| 兴文县| 鄢陵县| 板桥市| 水富县| 古田县| 扶绥县| 礼泉县| 甘孜| 台东市| 澎湖县| 应城市| 长治县| 蒲江县| 公主岭市| 日喀则市| 高青县| 莱芜市| 桑日县|