我有一张表需要进行SHRINK操作,但是这张表里带有一个函数索引导致SHRINK失败。数据库是ORACLE 10g
我想了两个办法,但是都有些地方无法处理,
1、将函数索引失效以后,在SHRINK完了以后REBUILD,但是我不知道如何将函数索引变成失效状态。ALTER INDEX ... UNUSABLE 语句对于函数索引没有效果
2、DROP 索引,在操作完成后再CREATE回来,但是我需要用拼接语句的方法进行CREATE,但是我不知道在后台哪个表里能找到函数索引的条件字段请各位帮忙,非常感谢!

解决方案 »

  1.   

    好像设置完索引unusable后需要重新link一下库
      

  2.   


    应该不用的吧?DDL操作应该不是本地化操作吧
      

  3.   

    1、shrink不支持函数索引,所以先取得脚本
         SELECT to_char(dbms_metadata.get_ddl('INDEX', '索引名称')) FROM dual;
    2、删除索引
    3、shrink
    4、重建函数索引
      

  4.   

    彻底一点就用truncate语句,可以清除这张表的所有信息,包括数据、索引、主键等,并请不可恢复,使用前请注意备份数据和重要信息
      

  5.   


    GET_DDL的时候报错。。ORA-31603 object "IDX_TEST" of type INDEX not found in schema "SYS"
      

  6.   

    dbms_metadata.get_ddl('INDEX', 'IDX_TEST','用户名')