如果你管理的Oracle數據庫下某些應用項目有大量的修改刪除操作
它不僅可以提高查詢性能
在ORACLE裡大量刪除記錄後
重建索引可以釋放已刪除記錄索引占用的數據塊空間
轉移數據
下面是可以按ORACLE用戶名生成重建索引的SQL腳本
SET ECHO OFF;
SET FEEDBACK OFF;
SET VERIFY OFF;
SET PAGESIZE
SET TERMOUT ON;
SET HEADING OFF;
ACCEPT username CHAR PROMPT
spool /oracle/rebuild_&username
SELECT
|| lpad(
|| chr(
|| lpad (
|| lpad (
FROM dba_segments
WHERE segment_type =
AND owner=
ORDER BY owner
spool off;
如果你用的是WINDOWS系統
spool c
如果你只想對大於max_bytes的索引重建索引
在AND owner=
如果你想修改索引的存儲參數
比如把pctincrease不等於零的值改成是零
生成的rebuild_&username
分析索引SQL>ANALYZE INDEX &index_name VALIDATE STRUCTURE;
col name heading
col del_lf_rows heading
col lf_rows_used heading
col ratio heading
SELECT name
del_lf_rows
lf_rows
to_char(del_lf_rows / (lf_rows)*
FROM index_stats where name = upper(
當刪除的比率大於
經過刪改後的rebuild_&username
比如一個月或者兩個月在非繁忙時間運行
如果遇到ORA
那就忽略這個錯誤
對那些特別忙的表要區別對待
還要把它們的索引從rebuild_&username
From:http://tw.wingwit.com/Article/program/Oracle/201311/19038.html