救命,未找到索引关键字

[复制链接]
查看11 | 回复8 | 2005-9-12 01:01:28 | 显示全部楼层 |阅读模式
删除数据时出错:
ORA-08102: 未找到索引关键字,obj# 358,dba 4209290 (2)
我把这个表的索引删了,表删了,重建,但是还是不行。
把数据EXP 出来,把用户删了,重建用户,把数据IMP进去,也还是不行。
把倒出来的数据IMP到另一台机子的数据库完全没有问题。
最后在DBA_OBJECTS 查了下,发现obj# 358是表ATEMPTAB$的一个索引,把这个索引删了重建,也不行。

求各位大大帮帮忙,看看是什么原因
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
Try :recreate data dictionary
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
重建数据字典不行吧,那跟重建数据库差不多了,我的机子不能停太久,而且是RAC系统,很麻烦。
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
obj# 358是表ATEMPTAB$
这是系统表的索引啊,你们做过什么?
sys登陆后
create index atempind$ on atemptab$(id)
如果你尝试过这个createindex ,有所有节点altersystemflushshared pool或者重新启动过试一下么?
metalink 查到有一个8174升级到10.1.0.3的bug,手工解决办法就是手工创建的
http://metalink.oracle.com/metal ... T&p_id=283358.1
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
还是不行啊,我要崩溃了,
我把索引删除了,然后
create index atempind$ on atemptab$(id)
然后
有节点alter system flush shared _pool不行,重新启动也不行
关于这个网页要怎么访问:http://metalink.oracle.com/metalink...T&p_id=283358.1
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
atemptab$这个表里面是否有数据?如果有数据先exp出来,没有数据的话,看能否drop,然后从其他同版本同block size的数据库exp这个表然后imp进去。
当然,做这些之前你先做好全库备份。
你当初是怎么产生这个问题的?为什么索引不存在了? 如果实在不行,估计可能只能重新创建数据库了。
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
最初由 lldlld 发布
[B]还是不行啊,我要崩溃了,
我把索引删除了,然后
create index atempind$ on atemptab$(id)
然后
有节点alter system flush shared _pool不行,重新启动也不行
关于这个网页要怎么访问:http://metalink.oracle.com/metalink...T&p_id=283358.1 [/B]


如果要做这种动作,起码你也应该关闭其他node只保留一个node 再做。metalink上有讲 可以手工创建这个索引,所以我觉得应该是可以的,只是不知道你究竟在哪个环节有问题,或者是不是由于rac多个节点的问题。
btw,重新创建数据库是最安全的.
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
首先非常感谢biti_rainy的热心帮忙。
我的系统是Oracle9I的并行版,就是可以同时访问的那种,两台IBMP650共用一台FST2000的
磁盘阵列,并没有其他的节点。
前段时间在系统的高峰期,一个数据库用户不能访问了。查了下ALERT文件,
发现报了个错误:
ORA-1652: unable to extend temp segment by 128 in tablespaceTEMP
Errors in file /oracle/app/admin/zzf/udump/jzzf_ora_1470484.trc:
ORA-00600: 内部错误代码,参数: [ksxpwait10], [4], [0x11035C708], [0x11035C7A8], [2], [], [], []
当时我并没有去扩展临时表空间TEMP,因为不能访问的这个用户用的是临时表空间TEMP1,另外
一个用户用的是TEMP。想等到下个高峰期去检查下共享池的SQL,看看到底是哪个用户引起的排序,然后再去优化排序,所以只是重起机子了事。
至于未找到索引关键字的这个错误,则是前几个天执行应用程序删除某个表的数据时发现的,
以前从未发现。
1 因为这个表只有主键索引,所以我首先DROP这个表,然后重建、倒入数据,不行。
2 EXP倒出数据,删除这个用户,重建用户,倒入数据,还是不行。
3 根据object_id我查到 obj#358 是表ATEMPTAB$的索引,而且表里没有数据。把索引删了重建立,重起机子,也不行。
4 把数据倒出来,倒入到WINDWO平台的Oracle,删除数据,完全没有问题,所以应该不是逻辑
上的问题,查了下用户的权限,都有DBA、RESOURCE、CONNECT权限,所以也不是权限的问题。
实在没有办法的办法就是只能在WINDOWS平台删除数据,然后再倒回去了,这样总可以了吧?
同时请教下biti_rainy,上面的报错文件udump/jzzf_ora_1470484.trc是怎么翻译的,怎么我
用工具tkprof翻译只能看到一点头信息,但是我自己执行生成的的跟踪文件,就可以用tkprof完全翻译过来。
虽然问题还没有解决,但还是要再次感谢biti_rainy的帮忙。
回复

使用道具 举报

千问 | 2005-9-12 01:01:28 | 显示全部楼层
关于 obj# 358,我是用数据字典DBA_OBJECTS的OBJECT_ID列查到的,本人极为怀疑obj# 358指的是不是DBA_OBJECTS的列值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行