declare ls_sql varchar2(1000); ls_tbs_name varchar2(30) :='FWDATA_IDX'; begin for ci in (select owner, index_name, index_type, table_owner, table_name, uniqueness from dba_indexes@to9idb where owner in ('XXXX') --and index_name not like 'SYS_%' --and table_name in (select tab_name from exp_group) minus select owner, index_name, index_type, table_owner, table_name, uniqueness from dba_indexes@to19cdcdb where owner in ('XXXX') --and index_name not like 'SYS_%' order by owner, table_name, index_name) loop if ci.uniqueness = 'UNIQUE' then ls_sql := 'create unique index ' || ci.owner || '.' || ci.index_name || ' on ' || ci.table_owner || '.' || ci.table_name || '('; else ls_sql := 'create index ' || ci.owner || '.' || ci.index_name || ' on ' || ci.table_owner || '.' || ci.table_name || '('; end if; for cr in (select * from dba_ind_columns@to9idb where index_owner = ci.owner and index_name = ci.index_name and table_owner = ci.table_owner and table_name = ci.table_name order by column_position) loop ls_sql := ls_sql || cr.column_name || ','; end loop; ls_sql := rtrim(ls_sql, ','); ls_sql := ls_sql || ') tablespace ' || ls_tbs_name || ' parallel 16;'; dbms_output.put_line(ls_sql); dbms_output.put_line('alter index ' || ci.owner || '.' || ci.index_name || ' noparallel;'); dbms_output.put_line(''); end loop; end; / -- 添加主键约束 declare ls_sql varchar2(1000); ls_tbs_name varchar2(30) :='FWDATA_IDX'; begin for cc in (select owner, table_name from dba_constraints@to9idb t where owner in ('XXXX') and t.constraint_type = 'P' and table_name in (select tab_name from exp_group) minus select owner, table_name from dba_constraints@to19cdcdb t where owner in ('XXXX') and t.constraint_type = 'P' order by owner, table_name) loop for ci in (select * from dba_constraints@to9idb where owner = cc.owner and table_name = cc.table_name and constraint_type = 'P') loop ls_sql := 'alter table ' || ci.owner || '.' || ci.table_name || ' add constraint ' || ci.constraint_name || ' primary key ('; for cr in (select * from dba_ind_columns@to9idb where index_owner = ci.owner and index_name = ci.index_name and table_owner = ci.owner and table_name = ci.table_name order by column_position) loop ls_sql := ls_sql || cr.column_name || ','; end loop; ls_sql := rtrim(ls_sql, ','); ls_sql := ls_sql || ') using index enable;'; dbms_output.put_line(ls_sql); end loop; end loop; end; / -- 添加unique键约束 declare ls_sql varchar2(1000); ls_tbs_name varchar2(30) :='FWDATA_IDX'; begin for cc in (select owner, table_name from dba_constraints@to9idb t where owner in ('XXX') and t.constraint_type = 'U' --and table_name in (select tab_name from exp_group) minus select owner, table_name from dba_constraints@to19cdcdb t where owner in ('XXX') and t.constraint_type = 'U' order by owner, table_name) loop for ci in (select * from dba_constraints@to9idb where owner = cc.owner and table_name = cc.table_name and constraint_type = 'U') loop ls_sql := 'alter table ' || ci.owner || '.' || ci.table_name || ' add constraint ' || ci.constraint_name || ' unique ('; for cr in (select * from dba_ind_columns@to9idb where index_owner = ci.owner and index_name = ci.index_name and table_owner = ci.owner and table_name = ci.table_name order by column_position) loop ls_sql := ls_sql || cr.column_name || ','; end loop; ls_sql := rtrim(ls_sql, ','); ls_sql := ls_sql || ') using index enable;'; dbms_output.put_line(ls_sql); end loop; end loop; end; /
Oracle 9i升级19C 迁移关于失效索引的梳理方法
来源:这里教程网
时间:2026-03-03 19:00:35
作者:
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- ORA-02354 ORA-01555 ORA-22924
ORA-02354 ORA-01555 ORA-22924
26-03-03 - 修改主机时区对Oracle的影响分析
修改主机时区对Oracle的影响分析
26-03-03 - Oracle 标准审计功能及开启
Oracle 标准审计功能及开启
26-03-03 - 研究Oracle 延迟块清除(defered block cleanout)
- ORACLE下一次奇怪的job停止问题分析及处理
ORACLE下一次奇怪的job停止问题分析及处理
26-03-03 - Oracle标准审计,关闭AUDIT
Oracle标准审计,关闭AUDIT
26-03-03 - Oracle 在查询的where子句中,索引的索引列/前导列是否作为单个表谓词提供列进行匹配
- Oracle 标准审计,设置AUDIT_SYSLOG _LEVEL参数
Oracle 标准审计,设置AUDIT_SYSLOG _LEVEL参数
26-03-03 - 一次异常宕机后数据库启动报ora-600[4000]错误恢复
一次异常宕机后数据库启动报ora-600[4000]错误恢复
26-03-03 - 数据库数据恢复-Oracle数据库truncate table如何恢复数据?
