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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM