Oracle自动生成普通索引的创建脚本
要整理所有的普通索引创建脚本,不包括分区索引,分区组合索引。
按dba_indexes ,dba_ind_columns 两个索引字典表,生成创建索引SQL 。
脚本如下:文章来源地址https://www.toymoban.com/news/detail-596955.html
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;
/
文章来源:https://www.toymoban.com/news/detail-596955.html
到了这里,关于Oracle自动生成普通索引的创建脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!