上一节讲了重建索引的原因和重建方法,这节继续介绍几个常用的SQL语句和存储过程。
查询所有失效的全局索引
select index_name, status
from user_indexes
where table_name = upper(table_name)
and status = 'UNUSABLE'
查询所有失效的分区索引
select index_name, status
from user_ind_partitions
where index_name in (select index_name
from user_indexes
where table_name = upper(table_name)
and partitioned = 'YES')
and status = 'UNUSABLE'
在线重建所有的全局索引
下面的存储过程将在线重建指定表格的所有全局索引。
declare
v_table_name varchar2(100) := upper(table_name);
begin
for i_index_name in (select index_name
from user_indexes
where table_name = upper(v_table_name)
and partitioned = 'NO'