Oracle自动生成普通索引的创建脚本

该段代码是用于Oracle数据库自动生成非分区普通索引的创建SQL脚本。它遍历DBA_INDEXES和DBA_IND_COLUMNS字典视图,根据指定的用户(TEST)和表空间(tb_ind_test),构建并打印出索引创建语句。
摘要由CSDN通过智能技术生成

Oracle自动生成普通索引的创建脚本

要整理所有的普通索引创建脚本,不包括分区索引,分区组合索引。
按dba_indexes ,dba_ind_columns 两个索引字典表,生成创建索引SQL 。
脚本如下:

declare 
  -- 自动生成普通索引的创建脚本,不包括分区索引,分区组合索引
  sqltext varchar2(2000);
  owner_name varchar2(20); -- 用户owner名
  tb_index varchar2(20);  -- 索引表空间名
  
begin
   execute immediate 'alter session enable parallel dml';
   owner_name := 'TEST' ;
   tb_index := 'tb_ind_test';
   
    -- 重建普通索引,不包括分区索引
    for cur_index in (select t.index_name,t.table_name from dba_indexes t where t.owner=owner_name) loop
      
      -- 创建索引名,表名,左括号
      sqltext := 'create index ' || cur_index.index_name ||  ' on ' || cur_index.table_name  || ' ('   ;
      
      for cur_col in 
        -- 按索引列位置,加入索引命令的括号内
        (select t.index_name,t.table_name,t.column_name,t.column_position from dba_ind_columns t 
                where t.index_name=cur_index.index_name order by t.column_position ) loop

         -- 索引字段       
         sqltext := sqltext || cur_col.column_name || ','    ;  
    
      end loop;           
         -- 删除最后一个逗号    
         sqltext := substr(sqltext ,1,length(sqltext)-1);
         
         
         --增加右括号
         sqltext := sqltext || ')' ;

         -- 索引所属表空间
         sqltext := sqltext || ' tablespace ' || tb_index || ' ;' ;

     dbms_output.put_line(sqltext);
     
     -- sql命令字符串清空     
     sqltext := '';         
     
    end loop;
  
end;
/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值