程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> oracle數據庫如何重建索引

oracle數據庫如何重建索引

編輯:關於Oracle數據庫

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

      重建索引的步驟如下:

      1. 確認基本信息

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

      2. 查找哪些index需要重建

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

      height >4 pct_used < 50% del_lf_rows / lf_rows +0.001 > 0.03 g )

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

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

      4. anlyze index 鎖定index

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

      5. 總結

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

      6.什麼時候可以rebuild index呢?

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved