語法格式:alter session set events '立即跟蹤名稱樹轉儲級別index _ object _ id '
SQL & gt創建表t 1(c 1 varchar 2(10));
表已創建。
SQL & gt在t1(c1)上創建索引I 1;
索引已創建。
SQL & gtselect object _ id from user _ objects where object _ name = ' I 1 ';
對象標識
-
364492
SQL & gtalter session set events“立即跟蹤名稱樹轉儲級別364492”;
跟蹤文件內容:
分行:0x b 0 AE 6 AC 185263788(0:nrow:2,level: 2)
分支:0xb 11227 c 185672316(-1:nrow:460,level: 1)
leaf:0x b 0 AE 6 ad 185263789(-1:nrow:317 rrow:317)
leaf:0xb 112153 185672019(0:nrow:295 rrow:295)
leaf:0x b 0 AE 82 f 185264175(1:nrow:281 rrow:281)
...
leaf:0xb 11211e 185671966(457:nrow:334 rrow:334)
leaf:0x b 0 AE 83 c 185264188(458:nrow:338 rrow:338)
分支:0xb 112280 185672320(0:nrow:454,level: 1)
leaf:0xb 112127 185671975(-1:nrow:303 rrow:303)
leaf:0x b 0 AE 6d 6 185263830(0:nrow:304 rrow:304)
leaf:0xb 112165 185672037(1:nrow:300 rrow:300)
...
leaf:0x b0ae 810 185264144(451:nrow:398 rrow:398)
leaf:0xb 112143 185672003(452:nrow:401 rrow:401)
-結束樹轉儲
塊的類別:分支塊和葉塊的rdba地址:十六進制和十進制。
相對於前面塊結構的位置,從-1開始,根塊從0開始。
Nrows:所有記錄的數量(包括已刪除的)
Rrows:當前包含的記錄數。
級別:分支塊的級別,葉節點隱式為0。
註意:oracle的btree索引幾乎總是平衡的。
如何獲取索引塊的地址信息
Oracle為我們提供了兩種視圖:DBA _ segments DBA _ extensions。通過這兩個視圖,我們可以查詢索引的根塊地址。
SQL & gtl
1* select tablespace_name,segment _ space _ management from DBA _ tablespaces where tablespace _ name in(' ts 1 ',' USERS ')
SQL & gt/
表空間名稱段
- -
TS1手冊
用戶自動
SQL & gta20的列段名
SQL & gta20的col表空間名稱
SQL & gtselect segment_name,tablespace_name,header_file,header_block from dba_segments其中owner='EASYPOINT '和segment_name like 'I% '
2 /
段名表空間名標題文件標題塊
- - - -
I1用戶44 714411
I2 TS1 46 17
SQL & gtselect segment_name,min(extent_id),min(block _ id from DBA _ extents其中owner='EASYPOINT '和segment _ name like ' I % ' group by segment _ name;
最小數據段名稱(數據區ID)最小數據塊ID
- - -
I2 0 17
I1 0 714409
SQL & gt選擇DBMS_UTILITY。來自DUAL的DATA _ BLOCK _ ADDRESS _ BLOCK(192938002);
DBMS_UTILITY。數據塊地址塊(192938002)
-
18
SQL & gt選擇DBMS_UTILITY。來自DUAL的DATA _ BLOCK _ ADDRESS _ BLOCK(185263788);
DBMS_UTILITY。數據塊地址塊(185263788)
-
714412
從這個地方我們可以看到,根索引塊的地址是dba_extents中的header_block加上1。在ASSM下,第壹個擴展的前兩個數據塊保存位圖信息,第三個數據塊是header_block。在mssm下,第壹個擴展的第壹個數據塊是HEADER_BLOCK。
查看索引塊信息
語法格式:alter system dump datafile file _ id block block _ id;alter system dump datafile file _ id block min block _ id block max block _ id;
轉儲根分支:
SQL & gtselect DBMS _ utility . data _ block _ address _ block(185263788)c 1,DBMS _ utility . data _ block _ address _ file(185263788)C2 from dual;
C1 C2
- -
714412 44
SQL & gtoradebug setmypid
已處理語句
SQL & gtoradebug跟蹤文件名稱
/Oracle/admin/orcl/udump/orcl _ ora _ 73926 . TRC
SQL & gt更改系統轉儲數據文件44塊714412;
體制變了。
跟蹤文件內容
*** 2013-12-13 11:52:38.766
開始轉儲數據塊tsn: 4文件編號:44最小塊714412最大塊714412
緩沖器tsn:4 rdba:0x 0 b 0 AE 6 AC(44/714412)
SCN:0x 0012.4 a 18d 046 seq:0x 01 flg:0x 06 tail:0xd 0460601
frmt: 0x02 chkval: 0xacfe類型:0x06 =傳輸數據
塊的十六進制轉儲:st=0,typ_found=1
從0x0000000110432000到0x 000000110434000的內存轉儲
110432000 06a 20000 0 b0ae 6 AC 4a 18d 046 00120106[........J..F....]
110432010 acfe 0000 02030022 00058 FCC 4a 18d 044[......."....J..D]
110433 fb0 024846 Fe 0 b 0 AE 6 af 02545 AFE 0 b 112280[。半......坦桑尼亞...".]
110433 fc 0 024 E4 bfe 31322 f 31 32303639 07787005[. NK . 12/12069 . XP]
110433 FD 0 19101a 35 272 f6f 72 61636 c65 2f 61646d[...5'/oracle/adm]
110433 fe0 696 e2f 6f 72636 c2f 6264756d 702 f 616C[in/orcl/bdump/al]
110433 ff 0 6572745 f 6f 72636 c 2 E6 c6f 67d 0460601[ert _ orcl . log . f..]
塊頭轉儲:0x0b0ae6ac
塊上的對象id?Y
seg/obj:0x 58 FCC CSC:0x 12.4 a 18d 044 ITC:1 flg:E typ:2-INDEX
brn: 0 bdba: 0xb0ae6a9版本:0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba標誌Lck Scn/Fsc
0x 01 0x 0006 . 006 . 000492 F3 0x 008130 ca . aee 2.01-BU-1 FSC 0x 0000.4 a 18d 046
分支塊轉儲
=================
標頭地址4567801932 = 0x 11043204 c
kdxcolev 2
KDXCOLEV Flags = - -
kdxcolok 1
kdxcoopc 0x83: opcode=3: iot標誌= -已轉換=Y
kdxconco 2
kdxcosdc 2
kdxconro 1
kdxcofbo 30=0x1e
kdxcofeo 8048=0x1f70
kdxcoavs 8018
-kdxbrlmc 185672316 = 0xb 11227 c
kdxbrsno 491
kdxbrbksz 8056
kdxbr2urrc 0
-第0行[8048]DBA:185672320 = 0xb 112280
col 0;鏡頭2;(2): 4e 4b
col 1;學期
-分支塊轉儲結束-
結束轉儲數據塊tsn: 4文件編號:44最小塊714412最大塊714412
轉儲葉塊:
SQL & gt選擇DBMS_UTILITY。來自DUAL的DATA _ BLOCK _ ADDRESS _ BLOCK(185263789);
DBMS_UTILITY。數據塊地址塊(185263789)
-
714413
SQL & gt更改系統轉儲數據文件44塊714413;
體制變了。
跟蹤文件內容:
*** 2013-12-13 12:20:29.107
開始轉儲數據塊tsn: 4文件編號:44最小塊714413最大塊714413
緩沖器tsn:4 rdba:0x 0 b 0 AE 6 ad(44/714413)
SCN:0x 0012.4 a 19790 f seq:0x 01 flg:0x 06 tail:0x 790 f 0601
frmt: 0x02 chkval: 0xcff9類型:0x06 =傳輸數據
塊的十六進制轉儲:st=0,typ_found=1
從0x0000000110432000到0x 000000110434000的內存轉儲
110432000 06a 20000 0 b0ae 6 ad 4a 19790 f 00120106[........傑依.....]
110432010 CFF 90000 02000000 00058 FCC 4a 19790 e[............傑依]
110432020 00120058 00023200 0 b0ae 6a 9 00060000[...X..2.........]
110432030 00049288 008128 AC aee 10100 c 0000012......(.........]
...
110433 fb0 e8bb 01CC 0000641 41565 a4f 45060 b0a[.......AAVZOE...]
110433 fc0 e 74200 a 1 0717021C 3c 020 f 02 c 10602 c 1[。B......& lt.......]
110433 FD 0 120d 7871 0b 081701 0b 21a 1DD 001c3c 02[..相互提問.....!....& lt。]
110433 Fe 0 c 10 b02c 1 0b 018001 80018001 80 ffff 01[................]
110433 ff 0 800180 ff 0778710B 0717021C 790 f 0601[.....相互提問.....y...]
塊頭轉儲:0x0b0ae6ad
塊上的對象id?Y
seg/obj:0x 58 FCC CSC:0x 12.4 a 19790 E ITC:2 flg:E type:2-INDEX
brn: 0 bdba: 0xb0ae6a9版本:0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba標誌Lck Scn/Fsc
0x 01 0x 0006 . 000 . 00049288 0x 008128 AC . aee 1.01 c b-0 SCN 0x 0012.4 a 184 c 24
0x 02 0x 0008.025 . 0003 BD 64 0x 00813810.8882 . 06-U-1 FSC 0x 0000.4 a 19790 f
葉塊轉儲
===============
頭地址4567801956 = 0x 110432064
kdxcolev 0
KDXCOLEV Flags = - -
kdxcolok 0
kdx coopc 0x 80:opcode = 0:IOT flags =-已轉換=Y
kdxconco 2
kdxcosdc 10
kdxconro 317
kdxcofbo 670=0x29e
kdxcofeo 2960=0xb90
kdxcoavs 2290
kdxlespl 0
kdxlende 0
kdxlenxt 185672019 = 0xb 112153
kdxleprv 0=0x0
kdxledsz 0
kdxlebksz 8032
row#0[3712] flag: -,lock: 0,len=16
col 0;鏡頭6;(6): 41 41 41 42 43 53
col 1;鏡頭6;(6): 0b 11 22 f9 00 95
row#1[4464] flag: -,lock: 0,len=16
col 0;鏡頭6;(6):41 41 41 43 47 4c
col 1;鏡頭6;(6): 0b 0a e8 94 00 20
...
row#315[8000] flag: -,lock: 0,len=16
col 0;鏡頭6;(6): 41 41 56 58 58 44
col 1;鏡頭6;(6): 0b 0a e8 bb 01 cc
row # 316[8016]flag:-,lock: 0,len=16
col 0;鏡頭6;(6): 41 41 56 5a 4f 45
col 1;鏡頭6;(6): 0b 0a e7 42 00 a1
-葉塊轉儲結束-
結束轉儲數據塊tsn: 4文件編號:44最小塊714413最大塊714413
跟蹤文件格式分析:
塊標題區域:
Rdba:相對塊地址
Scn:修改塊的最後壹個scn號。
Seq:在當前scn號下,數據塊的順序改變。
tail:SCN的最後兩個字節
Frmt:數據塊的格式(02代表後Oracle 8塊格式,a210g格式)。
Chkval:校驗和
類型:06–事務數據塊類型(表/索引/簇)
塊的十六進制轉儲:僅在更高版本的Oracle上顯示
seg/obj–對象id
csc:提交/清除SCN
itc:感興趣的事務計數(默認值為1個分支塊,2個葉塊)
typ–塊類型(2–索引)
ITL–感興趣的交易地點:
Itl:插槽id,
Xid:交易id,
Uba:撤銷塊地址,
標誌:當前事務的狀態(C–已提交)
Lck:當前事務幫助的鎖的數量
Scn/Fsc:當前交易的scn /fsc
kdxcolev:索引級別(0表示葉塊)
kdxcolok:表示結構塊事務是否正在發生
kdxcoopc:內部操作碼
kdxconco:索引列計數
kdxcosdc:涉及塊的索引結構更改計數
kdxconro:索引條目數(不包括kdxbrlmc指針)
kdxcofbo:塊內空閑空間開始的偏移量
kdxcofeo:到自由空間末尾的偏移量(即..包含索引數據的塊的第壹部分)
kdxcoavs:塊中的可用空間(實際上是kdxcofbo和kdxcofeo之間的區域)
分支塊頭信息kdxbrlmc:索引值小於第壹個(row # 0)值時的塊地址(例如,在根塊中,明明有兩個記錄,但只包含壹行,因為第壹行可以由dkxbrlmc確定)。
kdxbrsno:要修改的最後壹個索引條目
kdxbrbksz:可用塊空間的大小
葉塊專有頭信息kdxlespl:塊分割時已清除的未提交數據的字節。
kdxlende:已刪除條目的數量
kdxlenxt:通過相應的rba指向索引結構中下壹個葉塊的指針
kdxleprv:通過相應的rba指向索引結構中前壹個葉塊的指針
Kdxledsz:刪除的空間
kdxlebksz:可用的塊空間(由於額外的ITL條目,缺省情況下小於branch)
記錄區域:分支實體行號(從# 0開始),後面是[塊中的起始位置],再後面是DBA。
列號(從0開始),後接列長度,再接列值
對每個索引列重復
對每個分支條目重復