环境:SunOS + Oracle 11.2.0.3
 
对部分表进行Move操作之后,未重建对应的索引,会导致ORA-1502 索引不可用。
此时需要用下面的查询拼接出重建不可用索引的sql语句:
select 'alter index '||index_name||' rebuild tablespace dbs_cssf_gt online;' from user_indexes where status = 'UNUSABLE' order by index_name desc;

重建过程中个别索引重建的等待时间过长,直接ctrl+c终止了,然后查询哪些索引状态还是unusable.发现如下三个索引:

WONO_CSSF_GT_HUB_INPUT_PARAMS
PK_CSSF_GT_HUB_INPUT_PARAMS PK_CSSF_CP_SH_INPUT_PARAMS

1.联机重建前两个索引时报错ORA-8104  该索引对象265028正在被联机建立或重建

alter index WONO_CSSF_GT_HUB_INPUT_PARAMS rebuild tablespace dbs_cssf_gt online;
alter index PK_CSSF_GT_HUB_INPUT_PARAMS rebuild tablespace dbs_cssf_gt online;

2.drop索引仍然报错ORA-8104

drop index WONO_CSSF_GT_HUB_INPUT_PARAMS; --报错ORA-8104
alter table CSSF_GT_HUB_INPUT_PARAMS drop primary key; --报错ORA-2441 提示主键不存在,发现主键已经删除,但对应的索引还在,删掉索引。
drop index PK_CSSF_GT_HUB_INPUT_PARAMS;--报错ORA-8104
3.查询此表记录数
select count(1) from CSSF_GT_HUB_INPUT_PARAMS;  --13条记录而已

4.重建主键和索引

alter table CSSF_GT_HUB_INPUT_PARAMS
add constraint PK_CSSF_GT_HUB_INPUT_PARAMS primary key (WF_SN)
using index
tablespace DBS_CSSF_GT
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Create/Recreate indexes
create index WONO_CSSF_GT_HUB_INPUT_PARAMS on CSSF_GT_HUB_INPUT_PARAMS (WO_NO)
tablespace DBS_CSSF_GT
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

5.重建第三个无效索引时遭遇 ORA-604 ORA-1450,但之后drop index成功,然后试图drop上面两个index也成功了,估计是SMON已经回收了之前的失败过程。

SQL> alter index PK_CSSF_CP_SH_INPUT_PARAMS rebuild tablespace dbs_cssf_gt online;

alter index PK_CSSF_CP_SH_INPUT_PARAMS rebuild tablespace dbs_cssf_gt online

ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01450: 超出最大的关键字长度 (3215) SQL> alter table CSSF_CP_SH_INPUT_PARAMS drop primary key; alter table CSSF_CP_SH_INPUT_PARAMS drop primary key ORA-02441: 无法删除不存在的主键 SQL>
SQL> alter table CSSF_CP_SH_INPUT_PARAMS
2 add constraint PK_CSSF_CP_SH_INPUT_PARAMS primary key (WF_SN)
3 using index
4 tablespace DBS_CSSF_GT
5 pctfree 10
6 initrans 2
7 maxtrans 167
8 storage
9 (
10 initial 64K
11 next 1M
12 minextents 1
13 maxextents unlimited
14 ); alter table CSSF_CP_SH_INPUT_PARAMS
add constraint PK_CSSF_CP_SH_INPUT_PARAMS primary key (WF_SN)
using index
tablespace DBS_CSSF_GT
pctfree 10
initrans 2
maxtrans 167
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
) ORA-00955: 名称已由现有对象使用 SQL> drop index PK_CSSF_CP_SH_INPUT_PARAMS; Index dropped SQL>
SQL> alter table CSSF_CP_SH_INPUT_PARAMS
2 add constraint PK_CSSF_CP_SH_INPUT_PARAMS primary key (WF_SN)
3 using index
4 tablespace DBS_CSSF_GT
5 pctfree 10
6 initrans 2
7 maxtrans 167
8 storage
9 (
10 initial 64K
11 next 1M
12 minextents 1
13 maxextents unlimited
14 ); Table altered

附一篇网上讨论ora-8104的资料:http://blog.csdn.net/wyzxg/article/details/4318618

6.总结:
索引对象的创建操作要慎重,开始创建后不要轻易中断创建过程。

记录一则ORACLE MOVE操作后重建索引过程被强制中断导致的ORA-8104案例的更多相关文章

  1. 11G在线重建索引

    SQL> select count(*) from test_idx; COUNT(*) ---------- 19087751 SQL> select segment_name,segm ...

  2. Elasticsearch系列---实战零停机重建索引

    前言 我们使用Elasticsearch索引文档时,最理想的情况是文档JSON结构是确定的,数据源源不断地灌进来即可,但实际情况中,没人能够阻拦需求的变更,在项目的某个版本,可能会对原有的文档结构造成 ...

  3. ES数据库重建索引——Reindex(数据迁移)

    应用背景: 1.当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex. 2.当数据的mapping需要修改,但是大量的数据 ...

  4. [转]Oracle 重建索引的必要性

    http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...

  5. Oracle 重建索引脚本

    该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...

  6. oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)

    导出数据库备份文件 1. 备份服务器数据,采用并行方式,加快备份速度(文件日期根据具体操作日期修改) expdp jhpt/XXXX directory=databackup dumpfile=dpf ...

  7. 曲演杂坛--重建索引后,还使用混合分区么?(Are mixed pages removed by an index rebuild?)

    原文来自:http://www.sqlskills.com/blogs/paul/mixed-pages-removed-index-rebuild/ 在SQL SERVER 中,区是管理空间的基本单 ...

  8. Oracle 学习总结 - 表和索引的性能优化

    表的性能 表的性能取决于创建表之前所应用的数据库特性,数据库->表空间->表,创建数据库时确保为每个用户创建一个默认的永久表空间和临时表空间并使用本地管理,创建表空间设为本地管理并且自动段 ...

  9. ORACLE分区表操作

    ORACLE分区表的操作应用 摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要处理的数据 ...

随机推荐

  1. 解决:No module named pkg_resources

    今天在装bleach的时候,发现bleach依赖的其中的一个库是html5lib,从pypi下载源码包,执行python setup.py install,报错了: 提示我的setuptools版本过 ...

  2. Python数据分析

    一.安装Anaconda 1.下载:https://www.continuum.io/downloads 2.命令行创建和启动环境 conda create --name py35 python=3. ...

  3. java读写Properties属性文件公用方法

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件. 它提供了几个主要的方法: 1. getProperty ( String ...

  4. "SQL Server does not handle comparison of NText, Text, Xml, or Image data types."

    "SQL Server does not handle comparison of NText, Text, Xml, or Image data types." sql2000 ...

  5. Your awesome titleHH

    Welcome to Jekyll! Your awesome titleHH About Blogging Like a Hacker Welcome to Jekyll! Jan 9, 2016 ...

  6. Extjs扩展:封装Plupload

    关于Plupload Plupload是一个web文件上传组件,支持通过HTML5.Silverlight.Flash或者普通的form来上传文件,提供了过滤文件类型.设置上传文件大小.上传进度.针对 ...

  7. 一种让 IE6/7/8 支持 media query 响应式设计的方法

    在不同的浏览器宽度下使用不同的 CSS 声明,常见的方案是使用 media query,但这个方案不支持 IE9 以下浏览器. 国外比较流行的 UI 框架 bootstrap v3 版本中使用 med ...

  8. [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

    [.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...

  9. 利用Hexo搭建个人博客-博客发布篇

    通过 <利用Hexo搭建个人博客-环境搭建篇> 以及 <利用Hexo搭建个人博客-博客初始化篇>,我们了解到了利用Hexo搭建个人博客需要的环境以及配置,下面这篇文章将会介绍如 ...

  10. 玩转动态编译 - 高级篇:二,IL设置静态属性,字段和类型转换

    静态属性赋值 先来看 Reflector反射出的IL源码(感谢Moen的提示),这次用 Release模式编译,去掉那些无用的辅助指令 public void AAA(string s) { MyCl ...