公司原来每天都用procedure pro_a 向表Tab_a 插入记录,没有如何问题。
有一天运行procedure pro_a时报错:ORA-01410: 无效的 ROWID。
如果我用create table temp_Tab_a as select * from Tab_a,那么表temp_Tab_a可以插入记录,可是第二天向表temp_Tab_a插入记录时会同样报错:ORA-01410: 无效的 ROWID。
请哪位大侠尽快帮忙解决问题。
SQL> select * from v$version ;
BANNER
----------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for Linux: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL>
------解决方案--------------------
过程打出来看一下.
------解决方案--------------------
很有可能是这个表被锁了~~
楼主检查一下
------解决方案--------------------
关注楼主的问题.
我们最近也遇到了类似的问题 而且比楼主的还要严重,出现的版本一般是oracle8i和9i打不打补丁都会出现,10g尚未发现该错误,而且该错误会出现两种报错形式: "无效的rowid"和"对象不再存在"
我们的数据处理流程也是 生产库→中间库→本地库 也是使用存储过程实现ETL的过程,但是在中间库的转换过程和中间库到本地库的加载过程特别容易报错.
一般情况下 出现该错误的表 count(*) 或者 使用表结构的分析语句analyze table table_name validate structure;都能够再现错误,解决的办法也往往是重新指定另外一个表空间,重新创建表.
使用移动表空间 alter table table_name move tablespace tablespace_name;
还是报同样的无效rowid的错误.
但是最近一段时间有一个本地库由于表空间不足 开始频繁的报错,有很大的可能性 就是由于空间紧张造成的 现在表空间占用率一直在95%以上.
更为奇怪的是 创建的表可以完成索引的创建、count(*)、analyze table table_name validate structure;都不会报错,但是多个表关联就会出错,无效的rowid,最后用analyze table table_name compute statistics;语句来生成统计信息的时候就又开始报错了 "对象不再存在" .
------解决方案--------------------
考虑重新建立一个表空间试试,把数据移植到另外 一个表空间