ORACLE索引的管理

dbhelper發表於2014-12-04

前言:資料庫執行了一段時間之後,由於頻繁的進行了增刪改,索引就會產生碎片,碎片多了自然而然的就會影響查詢的效率。透過ORACLE提供的一些管理檢視和工具就可以分析出資料庫的哪些索引由於碎片太多需要進行重建;

 

一、查詢資料庫比較佔用空間的索引

需要根據業務設定搜尋的條件,索引大小大於特定值,索引的層數大於1的索引

Select a.index_name,a.table_name,a.blevel,B.BLOCKS*8/1024 MB,b.bytes

from dba_indexes a,dba_segments b

Where a.index_name=b.segment_name and a.owner=b.owner and b.segment_type='INDEX'

And a.blevel>1 and B.BLOCKS*8/1024>'&B'

And b.tablespace_name='&A';

 

二、進行索引的分析

2.1 標準的SQL語句如下:

analyze index index_name validate structure;

例如:schemas:ekpj

table_name:I_SYS_WF_HISTO_PROCESS_ID1

指令碼:analyze index ekpj. I_SYS_WF_HISTO_PROCESS_ID1 validate structure;

 

2.2 檢視分析結果:

select name,height, del_lf_rows, lf_rows,

round((del_lf_rows/(lf_rows+0.0000000001))*100) "Frag Percent" from

index_stats;

當Frag Percent大於10的時候,即可對索引進行重建;

 

三、索引重建的指令碼

ALTER INDEX index_name

REBUILD

NOCOMPRESS

NOPARALLEL

NOLOGGING

TABLESPACE USERS

STORAGE (

INITIAL 38M

NEXT 1M

)

ONLINE;

 

總結:

  • 需要透過業務瞭解哪些表會頻繁的進行增刪改,因為索引碎片產生的原因是由於增刪改操作導致的,知道了這些操作將事半功倍;
  • 進行索引重建必須放在業務的空閒期操作,避免影響業務的正常操作;
  • 建議每個月進行以上的操作;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技術部落格:ORACLE 獵人筆記               資料庫技術群:367875324 (請備註ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1356145/,如需轉載,請註明出處,否則將追究法律責任。

相關文章