ora-01410: 无效的 ROWID的解决方法

1、如果是在两个表联合查询更新表字段值时发生“ORA-01410: 无效的 ROWID”错误,

  那么本站之前有讨论过它的解决方法,详见http://www.aiphere.com/oracle-for-update-invalid-rowid.html


2、如果仅仅是查询时发生“ORA-01410: 无效的 ROWID”错误,那么很可能是表的索引坏掉了,

可以先把表结构拿出来分析一下,定位到是哪个表的哪个索引有问题。

大家都知道,索引是通过存储rowid值来快速定位记录,如果一些什么原因造成这种对应关系出现错误,

那么根据索引里面的rowid无法找到对应的记录,就会出现“ORA-01410: 无效的 ROWID”的错误。对于索引有问题的情况,下面的方法供参考:


1) 首先考虑能不能刷新一下索引,找到索引名,并执行命令“alter index index_name rebuild”。
2) 如果经过第一步,还是没有好,那么可以考虑将索引删除 ,重建索引。
3) 将表转移到另外一个表空间,命令为“alter table table_name move tablespace tablespace_name;”。
4) 如果上面的3个方法都没能解决,可以尝试下面的命令:

exec dbms_stats.gather_database_stats();
exec dbms_stats.gather_system_stats();
exec dbms_stats.gather_fixed_objects_stats();
exec dbms_stats.gather_dictionary_stats();
exec dbms_stats.gather_database_stats_job_proc();

  

3、如果是在create table tablename as select * from…的时候发生”ORA-01410: 无效的 ROWID”错误,建议先让dba权限用户执行“alter system checkpoint”试试。

ROWID是表记录在数据文件中存储的物理地址,是不会变更的,“无效的 ROWID”即没办法找到相应的记录,

我们多想想数据库是怎样工作的,它会怎么执行我们的语句,问题就变得比较一目了然了。

 

 

》详见: http://www.aiphere.com/oracle-ora-01410-rowid-solve.html

转载于:https://www.cnblogs.com/alisonGavin/p/8509283.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值