oracle变态错误解决:ORA-00604: 递归 SQL 级别 2 出现错误
Oracle變態錯誤:
問題描述:
??????? 在使用sys用戶執行刪除infa用戶下表時,報如下錯誤:
???????? ORA-00604: 遞歸 SQL 級別 2 出現錯誤
???????? ORA-00942: 表或視圖不存在
???????? 查看E:/CO.Software/oracle/product/10.2.0/admin/orcl/bdump/alert_orcl.log發現當時報如下錯誤:
???????? ORA-00604: error occurred at recursive SQL level 2 ORA-00942: table or view does not exist
????????
???????? 同樣使用sys用戶在sqlplus模式和PL/SQL模式下作刪除infa用戶和刪除infa表空間都會報如上錯誤。
問題定位:
???????? 使用sqlplus sys/oracle as sysdba登陸
???????? 執行alter session set sql_trace=ture;
???????? 之后再次執行drop user infa cascade;
???????? 會報如下錯誤:
???????? ORA-00604: 遞歸 SQL 級別 2 出現錯誤
???????? ORA-00942: 表或視圖不存在
???????? 再執行alter session set sql_trace=false;
???????? 這時去E:/CO.Software/oracle/product/10.2.0/admin/orcl/udump路徑下查看剛剛時間點生成的trace文件:orcl_ora_4468.trc
???????? 在里面會找到如下sql:
???????? PARSE ERROR #1:len=273 dep=2 uid=0 oct=3 lid=0 tim=7580575894 err=942
???????? select position#,sequence#,level#,argument,type#,charsetid,charsetform,
??????????????????? properties,nvl(length, 0), nvl(precision#, 0),nvl(scale, 0),nvl(radix, 0), type_owner,type_name,type_subname,type_linkname,pls_type
???????? from argument$
????????????? where obj#=:1 and procedure#=:2 order by sequence# des
???????? 【如果上面執行的是drop表而不是drop用戶操作,則相應trace中sql如下:】
???????? 【SELECT topology??
???????????? FROM SDO_TOPO_METADATA_TABLE a, TABLE(a.Topo_Geometry_Layers) b??
??????????????? WHERE b.owner = 'SYS' AND b.table_name = 'OPB_ANALYZE_DEP' END OF STMT】
???????? 此時可以猜測sys用戶下argument$表不存在,使用PL/SQL登陸查看發現sys用戶下確實沒有argument$表。
問題解決:從另一臺oracle正常的機器中使用sys用戶登錄,將argument$表exp位dmp文件,將此dmp文件拿到本機,執行如下命令將argument$表導入到本機的sys用戶下:
????????? imp 'sys/oracle@orcl as sysdba'
此時再次執行刪除infa用戶下表,又報如下錯誤:
問題描述:
????????? ORA-00604: 遞歸 SQL 級別 1 出現錯誤 ORA-38301: 無法對回收站中的對象執行 DDL/DML
???????? 執行purge recyclebin和purge table 'table_name'問題也無法解決。
問題定位:
???????? 同樣使用使用sqlplus sys/oracle as sysdba登陸
???????? 執行alter session set sql_trace=ture;
???????? 之后再次執行drop table OPB_ANALYZE_DEP;
???????? 會報如下錯誤:ORA-00604: 遞歸 SQL 級別 1 出現錯誤 ORA-38301: 無法對回收站中的對象執行 DDL/DML
???????? 再執行alter session set sql_trace=false;
???????? 這時去E:/CO.Software/oracle/product/10.2.0/admin/orcl/udump路徑下查看剛剛時間點生成的trace文件orcl_ora_3920.trc
???????? 在里面會找到如下sql:
???????? PARSE ERROR #9:len=50 dep=1 uid=0 oct=3 lid=0 tim=10735596185 err=942
???????? select count(*) from association$ where obj# = :1
???????? 此時可以確定sys用戶下association$表也不存在。
問題解決:
???????? 同樣使用exp和imp方式將association$表導入到本機sys用戶中,
???????? 此時再次執行刪除infa用戶下表,成功!!!!!!!
???????? 免去了我重裝Oracle的工作量。
???????? 不過還不知道為什么我的Oracle sys用戶下會莫名其妙缺少了兩張系統表。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的oracle变态错误解决:ORA-00604: 递归 SQL 级别 2 出现错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA调用SQL存储过程详解
- 下一篇: linux cmake编译源码,linu