當前位置:成語大全網 - 書法字典 - 如何通過btree索引創建oracle

如何通過btree索引創建oracle

通過樹轉儲查看索引結構

語法格式: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開始),後接列長度,再接列值

對每個索引列重復

對每個分支條目重復