ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 行列转换在重建主键索引时的应用

行列转换在重建主键索引时的应用

原创 Linux操作系统 作者:hb0860 时间:2012-03-19 18:01:54 0 删除 编辑
        当我们对分区表的分区进行split等操作时,会造成主键索引状态的unusable,而这个操作又涉及很多分区表时,如何快速处理呢?显然,采用系统自动生成脚本的方法是必须的。
        但问题出来了,我们在创建主键的时候并不一定都是单一列的主键,而系统表“ALL_IND_COLUMNS”会把和索引相关的字段全列出来,这时就不能用简单的方法来批量生成想要的脚本,如何处理?
        行列转换提供了渠道:

select 'alter table '||table_name||' add constraint '||index_name||' primary key ('||a||') using index;' from (         
select table_name,INDEX_NAME,
       ltrim(max(sys_connect_by_path(COLUMN_NAME, ',')), ',') a
  from (select  table_name,INDEX_NAME,
               COLUMN_NAME,
               COLUMN_NAME d,
               min(COLUMN_NAME) over(partition by INDEX_NAME) d_min,
               (row_number() over(order by INDEX_NAME, COLUMN_NAME)) +
               (dense_rank() over(order by INDEX_NAME)) numid
          from (SELECT * FROM SYS.ALL_IND_COLUMNS cc WHERE INDEX_NAME IN(SELECT INDEX_NAME FROM ALL_INDEXES WHERE WNER='&OWNER1' AND STATUS='UNUSABLE')order by cc.column_position ))
 start with d = d_min
connect by numid = prior numid + 1
       and INDEX_NAME = PRIOR INDEX_NAME
 group by table_name,INDEX_NAME);
这样就批量生成了创建语句。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38006/viewspace-719052/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-26563错误.
请登录后发表评论 登录
全部评论

注册时间:2009-11-20

  • 博文量
    31
  • 访问量
    57898