解決:ora-00604, orac-00942錯誤

coolhe發表於2010-08-11

今天測試伺服器刪除儲存過程的時候出現:ORA-00604,ORA-00942錯誤,如下:
-------------------------------------------------
SQL> drop procedure zgym.sp_test;
drop procedure zgym.sp_test
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level
ORA-00942: table or view does not exist
-------------------------------------------------

經過google這方面的問題很多,有的是刪除表出現該錯誤,有的是刪除使用者出現該錯誤,我試著建立一個表,並插入資料,然後刪除該表,刪除成功。後來及進行跟蹤
具體如下:

 SQL> alter session set events '10046 trace name context forever,level 12';
 
Session altered
 
SQL> drop procedure sp_test;
 
drop procedure sp_test
 
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
 
SQL> alter session set events '10046 trace name context off';
 
Session altered

 

然後檢視G:\oracle\product\10.1.0\admin\orcl\udump下的 orcl_ora_5608.trc檔案,在cmd下用命令:tkprof orcl_ora_5608.trc 匯出111.log檔案,111.log檔案如下:

 ... ...
********************************************************************************

The following statement encountered a error during parse:

delete from argument$ where obj#=:

Error encountered: ORA-00942
********************************************************************************
---


經分析應該是sys下面的 argument$ 表不存在, 
經查詢sys該表確實不存在,然後用plsql匯出其他資料庫中的sys下argument$ 表,然後在問題資料庫中建立或者匯入,然後刪除過程,過程刪除成功!

總結:ora-00604錯誤需要經trace分析才能確定問題所在,然後解決。

附件:

 ------------------------------------------------
-- Export file for user SYS                   --
-- Created by zdyl123 on 2010-08-14, 17:20:02 --
------------------------------------------------

spool argument$.log

prompt

prompt Creating table ARGUMENT$
prompt ========================
prompt

create table SYS.ARGUMENT$
(
  OBJ#          NUMBER not null,
  PROCEDURE$    VARCHAR2(30),
  OVERLOAD#     NUMBER not null,
  PROCEDURE#    NUMBER,
  POSITION#     NUMBER not null,
  SEQUENCE#     NUMBER not null,
  LEVEL#        NUMBER not null,
  ARGUMENT      VARCHAR2(30),
  TYPE#         NUMBER not null,
  CHARSETID     NUMBER,
  CHARSETFORM   NUMBER,
  DEFAULT#      NUMBER,
  IN_OUT        NUMBER,
  PROPERTIES    NUMBER,
  LENGTH        NUMBER,
  PRECISION#    NUMBER,
  SCALE         NUMBER,
  RADIX         NUMBER,
  DEFLENGTH     NUMBER,
  DEFAULT$      LONG,
  TYPE_OWNER    VARCHAR2(30),
  TYPE_NAME     VARCHAR2(30),
  TYPE_SUBNAME  VARCHAR2(30),
  TYPE_LINKNAME VARCHAR2(128),
  PLS_TYPE      VARCHAR2(30)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 16K
    minextents 1
    maxextents unlimited
  );
create unique index SYS.I_ARGUMENT1 on SYS.ARGUMENT$ (OBJ#, PROCEDURE$, OVERLOAD#, SEQUENCE#)
  tablespace SYSTEM
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 16K
    minextents 1
    maxextents unlimited
  );
create index SYS.I_ARGUMENT2 on SYS.ARGUMENT$ (OBJ#, PROCEDURE#, SEQUENCE#)
  tablespace SYSTEM
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 16K
    minextents 1
    maxextents unlimited
  );


spool off

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-670782/,如需轉載,請註明出處,否則將追究法律責任。

相關文章