RT,分为表分区上的索引和普通表的索引2种情况下的禁用和恢复索引的语句,我是这样做的:
--普通表:
v_Sql := 'alter index ' || i.index_name || ' unusable';
         execute immediate v_Sql;
 -- insert into .....
v_Sql := 'alter index ' || i.index_name || ' rebuild';
         execute immediate v_Sql;
--表分区:
v_Sql := 'alter index ' || i.index_name || ' unusable';
         execute immediate v_Sql;
--其中插入语句insert into的时候   报错  说该分区不可用,不能插入,但是我把unusable换成disable又提示语法错误,---为什么呢?
v_Sql := 'alter index ' || i.index_name || ' rebuild';
         execute immediate v_Sql;

解决方案 »

  1.   

    其中表分区那里插入的时候提示的是:
    ORA-01502: 索引 'LZDP1104.MDM_AC_REL_1' 或这类索引的分区处于不可用状态如果把unusable改成disable则提示:
    ORA-02243: ALTER INDEX 或 ALTER MATERIALIZED VIEW 选项无效
      

  2.   

    http://blog.csdn.net/lwei_998/archive/2010/11/17/6015035.aspx
      

  3.   

    Oracle中只有基于函数的索引(FBI)才可以使用以下语句:ALTER   INDEX   indexname   DISABLE;
    ALTER   INDEX   indexname   ENABLE;对于其它类型的索引,建议最好先DROP   然后重建。
      

  4.   

    自己顶,  
    那其中表分区那里插入的时候提示的是:
    ORA-01502: 索引 'LZDP1104.MDM_AC_REL_1' 或这类索引的分区处于不可用状态这个问题怎么解决么,我是要insert之前禁用索引,所以不能在这之前rebuild它   怎么做呢
      

  5.   

    对于没有分区的普通表,我已经加上了
     execute immediate 'ALTER SESSION SET skip_unusable_indexes = true';但是仍然报错  说ORA-01502: 索引 'LZDP1104.MDM_AC_REL_1' 或这类索引的分区处于不可用状态