熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle數據庫如何重建索引

2013-11-13 22:24:30  來源: Oracle 

  當索引的碎片過多時會影響執行查詢的速度從而影響到我們的工作效率這時候采取的最有利的措施莫過於重建索引了本文主要介紹了Oracle數據庫中檢查索引碎片並重建索引的過程接下來我們就開始介紹這一過程

  重建索引的步驟如下

   確認基本信息

  登入數據庫找到專門存放index 的tablespace並且這個tablespace下所有index的owner都是tax將index專門存放在一個獨立的tablespace 與數據表的tablespace分離是常用的數據庫設計方法

   查找哪些index需要重建

  通過anlyze index validate structure命令可以分析單個指定的index並且將單個index 分析的結果存放到 index_stats試圖下一般判斷的依據是

  height > pct_used < % del_lf_rows / lf_rows + > g )

   google上下載了遍歷所有index腳本

  發現anlyze index validate structure只能填充單個index分析信息於是google了下從網上下了個Loop 腳本遍歷索引空間下所有的索引名字並且可以把所有index的分析信息存放到自己建立的一個用戶表中

   anlyze index 鎖定index

  發現下載的腳本不好用應為anlyze index在分析索引前要爭取獨占鎖鎖住index很明顯有些index正在被應用系統的使用所以運行anlyze失敗這裡吸取的教訓是盡量晚上做這種事但是本人比較喜歡准時回家所以在語句中添加Exception Handler拋出anlyze index執行失敗的那些index 名稱使腳本正常運行完畢並且根據打印到前台的index name手動執行那些index分析

   總結

  雖然發現個index中有個符合上面的判斷的依據但是發現索引都不大而那些擁有百萬leaf的索引又沒有符合上面的判斷條件所以結論是無需index rebuild online 沒有啥碎片

  什麼時候可以rebuild index呢?

  rebuild index online對那些有大量DML操作的大索引是有益的可以每個月季度做一次針對較大索引的rebuild通常哪怕rebuild index online也會造成I/O爭用所以有無online意義不大可以放到個晚上分批執行rebuild index鎖定index不讓用戶用(沒有用戶等入的時候)並且加上paralle 關鍵字應為發現數據庫服務器有個cpu processors

  關於Oracle數據庫檢查索引碎片和重建索引的知識就介紹到這裡希望能夠對您有所幫助


From:http://tw.wingwit.com/Article/program/Oracle/201311/19014.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.