批量导出索引的创建语句

陌路散爱 提交于 2019-11-30 11:26:58
--新项目不知道哪个缺心眼建的同构库,只是见了表结构,并没有健非主键外的索引,领导让追加一版,以前只是会用视图拼sql创建,
--今天有学会一招oracle-9i以上版本可以使用
--导出的内容有点复杂需要用编辑器处理下并且替换一下实例名(schema)

SELECT substr(replace(to_char(DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)),'"',''),0,instr(replace(to_char(DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)),'"',''),') ',1))||';' createindexsql FROM USER_OBJECTS u where U.OBJECT_TYPE = 'INDEX';

--这个可能用报错,可能有那种表和索引所属的实例不是一个用户,所以owner一定要写的完善一些
SELECT replace(TO_CHAR(dbms_lob.substr(dbms_metadata.get_ddl('INDEX',INDEX_NAME)) || ';'),'"','') 
   from dba_indexes a
  WHERE a.TABLE_TYPE = 'TABLE'
    and a.OWNER = 'GISDATA'
    and NOT EXISTS (SELECT 'x'
           FROM dba_constraints b
          WHERE a.OWNER = b.OWNER
            and a.INDEX_NAME = b.CONSTRAINT_NAME
            and b.CONSTRAINT_TYPE = 'P');--不包括主键 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!