从去年开始就一直被oracle8i/9i的 "无效rowid"和"对象不再存在"错误所困扰.局方也请oracle的专家来看过,但是人家也解决不了,一句这是oracle8i/9i以下版本的错误,建议升级为10g.就把我们给打发了.
于是也就开始了我们长达两个多月的夜班,虽然之后开发出来了全自动的监控程序,不再需要值夜班了,但是这两个错误也一直在困扰这我们
最近局方的一个地市的数据库开始频繁的报错,奇怪的是执行分析语句
analyze table table_name validate strucutre; 并不会报错
select count(*) from table_name;也很正常
但是多个表关联还是会报错,百思不得其解的情况下,只能给客户回复:"这个问题..厄..科学无法解释"
一个偶然的机会 再给一个表作分析统计的时候,
analyze table table_name compute statistics;
报错: 对象不再存在.
但是之前索引都建好的,同时count(*)进行了一次全表扫描也不报错.最后使用分析语句analyze table table_name validate structure; 还是不报错 但是根据客户的回馈 多个表一关联就会报错. 对数据量比较大的表进行了小事务的划分 先根据关联的条件临时创建一个表temp_1、temp_2、temp_3,对表进行分析 analyze table temp_1 validate structure; 不报错,另外两个表也一样,但是关联之后又报错 无效的rowid. 继续用分析统计语句进行分析,
analyze table temp_1 compute statistics;不报错;
analyze table temp_2 compute statistics;终于出现了错误“对象不再存在”
drop table temp_2;
重新创建temp_2,指定另外一个表空间,
analyze table temp_2 compute statistics; 没有报错
接着执行几个表的关联语句 , 果然不再报错了。但是依然不清楚这其中有什么原理。希望以后可以能解决掉这个问题。