一個unusable 的索引REBUILD後分配的block是否改變
特殊條件下,一個unusable 的索引REBUILD後分配的block是否改變
Kevin Zou
2011-8-29
一個unusable 的索引,如果要啟用,必須要對其REBUILD。我們知道REBUILD一個索引時,分配給索引的BLOCK資訊會發生改變。
如果是對一個新建立的TABLE和INDEX,UNUSABLE後,沒有INSERT/UPDATE/DELETE的操作,REBUILD時BLOCK資訊會發生改變嗎?
搭建測試環境:
SQL> create table test as select * from all_objects where 0=1;
Table created.
SQL> insert into test select * from all_objects;
13540 rows created.
SQL> create index i_test on test(object_id);
Index created.
檢視新建立的索引I_TEST 佔用的BLOCK資訊:
SQL> select segment_name, file_id, blocks, block_id
2 from dba_extents
3 where segment_name='I_TEST' and wner='SYS';
SEGMENT_NAME FILE_ID BLOCKS BLOCK_ID
-------------------- ---------- ---------- ----------
I_TEST 1 8 37481
I_TEST 1 8 37489
I_TEST 1 8 37497
I_TEST 1 8 37505
通過SQL,檢視索引被引用。
|
使索引處於UNUSABLE狀態;
SQL> alter index i_test unusable;
Index altered.
因為索引I_TEST不能使用,同樣的SQL只能走FTS。
|
重新REBUILD 索引:
SQL> alter index i_test rebuild;
Index altered.
SQL> select segment_name, file_id, blocks, block_id
2 from dba_extents
3 where segment_name='I_TEST' and wner='SYS';
SEGMENT_NAME FILE_ID BLOCKS BLOCK_ID
-------------------- ---------- ---------- ----------
I_TEST 1 8 37641
I_TEST 1 8 37649
I_TEST 1 8 37657
I_TEST 1 8 37665
再次DUMP 索引的TREEDUMP:
branch: 0x40930a 4231946 (0: nrow: 29, level: 1)
leaf: 0x40930b 4231947 (-1: nrow: 485 rrow: 485)
leaf: 0x40930c 4231948 (0: nrow: 479 rrow: 479)
leaf: 0x40930d 4231949 (1: nrow: 478 rrow: 478)
leaf: 0x40930e 4231950 (2: nrow: 479 rrow: 479)
leaf: 0x40930f 4231951 (3: nrow: 479 rrow: 479)
leaf: 0x409310 4231952 (4: nrow: 479 rrow: 479)
leaf: 0x409311 4231953 (5: nrow: 479 rrow: 479)
leaf: 0x409312 4231954 (6: nrow: 478 rrow: 478)
leaf: 0x409313 4231955 (7: nrow: 479 rrow: 479)
leaf: 0x409314 4231956 (8: nrow: 479 rrow: 479)
leaf: 0x409315 4231957 (9: nrow: 479 rrow: 479)
leaf: 0x409316 4231958 (10: nrow: 479 rrow: 479)
leaf: 0x409317 4231959 (11: nrow: 479 rrow: 479)
leaf: 0x409318 4231960 (12: nrow: 479 rrow: 479)
leaf: 0x409319 4231961 (13: nrow: 479 rrow: 479)
leaf: 0x40931a 4231962 (14: nrow: 479 rrow: 479)
leaf: 0x40931b 4231963 (15: nrow: 479 rrow: 479)
leaf: 0x40931c 4231964 (16: nrow: 479 rrow: 479)
leaf: 0x40931d 4231965 (17: nrow: 471 rrow: 471)
leaf: 0x40931e 4231966 (18: nrow: 449 rrow: 449)
leaf: 0x40931f 4231967 (19: nrow: 449 rrow: 449)
leaf: 0x409320 4231968 (20: nrow: 449 rrow: 449)
leaf: 0x409321 4231969 (21: nrow: 449 rrow: 449)
leaf: 0x409322 4231970 (22: nrow: 449 rrow: 449)
leaf: 0x409323 4231971 (23: nrow: 448 rrow: 448)
leaf: 0x409324 4231972 (24: nrow: 448 rrow: 448)
leaf: 0x409325 4231973 (25: nrow: 449 rrow: 449)
leaf: 0x409326 4231974 (26: nrow: 449 rrow: 449)
leaf: 0x409327 4231975 (27: nrow: 404 rrow: 404)
看到BLOCK資訊傳送了變化,REBUILD前第一個BLOCK的位置是37481, 而REBUILD後改為37641。
結論:在資料沒有發生變化的條件,REBUILD一個UNUSABLE的索引,BLOCK還是會改變的。
-THE END-
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/40239/viewspace-706118/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢查是否存在truncate或者rebuild的索引Rebuild索引
- 關於索引是否該rebuild的問題索引Rebuild
- 選出需要rebuild的索引Rebuild索引
- VMware的改變預分配硬碟空間的方法硬碟
- 資料檔案offline後unusable索引造成的問題索引
- 轉個分割槽表Local索引Rebuild的總結索引Rebuild
- 分析索引是否變'壞'索引
- 索引是如何定期rebuild的(zt)索引Rebuild
- 索引rebuild online失敗後處理索引Rebuild
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 加快建立索引(create / rebuild index) 的幾點索引RebuildIndex
- 聊聊索引Index Rebuild和Rebuild Online(下)索引IndexRebuild
- 索引rebuild和rebuild online時要慎重索引Rebuild
- 聊聊索引Index Rebuild和Rebuild Online(上)索引IndexRebuild
- 【Oracle】-【move】【索引】無資料的主鍵索引VALID還是UNUSABLEOracle索引
- java 方法呼叫,形參改變,實參是否發生改變Java
- 關於分割槽表Local索引Rebuild的一些總結索引Rebuild
- SKIP_UNUSABLE_INDEXES的使用與索引失效解決方法Index索引
- Block學習②--block的變數捕獲BloC變數
- oracle中檢視某個表的索引是否有效Oracle索引
- sql執行計劃是否改變SQL
- 【INDEX】索引失效或者不可用 UNUSABLEIndex索引
- 改變的代價:一個開發者對《最後生還者:第二部》的看法
- 如何保證一個類中的例項變數不被改變變數
- 一個徹底改變Redux的簡潔設計Redux
- 改變一個狀況不佳的專案組(轉)
- 在一個元素上:hover,改變另一個元素的css屬性CSS
- 索引rebuild和rebuild online時要慎重(轉載)索引Rebuild
- 歷經2個月從後端轉行到前端的改變後端前端
- Java的整個字串的結束索引在最後一個字元之外Java字串索引字元
- [一分鐘知識]改變無法改變的Query 變數變數
- shrink 與rebuild對索引高度的影響對比Rebuild索引
- ORACLE 分割槽索引UNUSABLE導致的DML操作失敗引起的血案Oracle索引
- javascript判斷一個變數是否存在JavaScript變數
- 改變無法改變的Query 變數變數
- oracle索引分類rebuild案例集Oracle索引Rebuild
- 求助掘金: 如何改變一個團隊的文化/氛圍
- Block學習⑤--block對物件變數的捕獲BloC物件變數