oracle 9i刪除public使用者造成資料字典損壞所有sql語句不能操作的故障處理
作業系統sun,oracle 9.2.0.8.一開始維護人員新建一個使用者只授予connect許可權.用新建使用者登入後發現能查詢生產使用者的資料.然後從dba_sys_privs檢視將public使用者給刪除了.然後應用程式執行sql語句就報ORA-06553:PLS-213:Standard包不可訪問的問題,解決這個問題的方法是執行catalog.sql和catproc.sql重建資料字典.
SQL>sqlplus /nolog
SQL> conn sys/密碼 as sysdba
SQL>@$ORACLE_HOME/rdbms/admin/catalog.sql
SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql
SQL>@$ORACLE_HOME/rdbms/admin/dbmsutil.sql
SQL>alter package standard compile
SQL>alter package dbms_standard compile
ORA-04020: deadlock detected while trying to lock object SYS.CDC_ALTER_CTABLE_BEFORE
在執行alter package dbms_standard compile語句時出錯了
在MOS上有一篇關於oracle 9.2.0.8中關於ORA-04020錯誤的bug,資訊如下:
Researching the issue on ora-4020 and SYS.CDC_CREATE_CTABLE_BEFORE lead to BUG 3228083 which was
experiencing similar problems on the same object. This bug was closed as a duplicate of bug 3017048.
Internal BUG:3228083 – Appsst10g:R8:Utlrcmp Error: Ora-04045: Sys.Cdc_Create_Ctable_Before
解決方法, 用spfile 建立pfile, 在pfile裡新增如下內容,然後用修改之後的pfile啟動資料庫,在執行指令碼。
_system_trig_enabled=false
aq_tm_processes=0
job_queue_processes=0
指令碼執行完後,在去掉這些引數,正常啟動資料庫即可
在成功執行alter package dbms_standard compile語句後再執行下面的指令碼來編譯無效物件:
SQL>@$ORACLE_HOME/rdbms/admin/utlrp.sql
然而再次遇到bug
ORA-00600: internal error code, arguments: [4412], [0x8BAA483C], [0x0], [], [], [], [], []
在mos上ORA-00600 [4406] or ORA-00600 [4412] in alert Log (文件 ID 742118.1)是關於這個bug的描述
In this Document
Symptoms
Cause
Solution
References
APPLIES TO:
Oracle Server – Enterprise Edition – Version 9.2.0.1 to 9.2.0.8 [Release 9.2]
Information in this document applies to any platform.
***Checked for relevance on 10-Aug-2012***
SYMPTOMS
On Oracle 9i, the following errors could be reported in the alert log
ORA-00600: internal error code, arguments: [4412], [0x8BAA483C], [0x0], [], [], [], [], []
ORA-00600: internal error code, arguments: [4406], [0x8BAA483C], [0x0], [], [], [], [], []
The Call Stack should look something like:
ktcrcm ktcsod kssdch_stage ksuxds ksudel opilof opiodr ttcpip opitsk opiino opiodr opidrv sou2o
CAUSE
Unpublished Bug 2628920 ORA-600 [4412] AND [4406] WHEN EXITING SESSION AFTER CANCELLING DELETESCHEMA.
The bug explains that the problem may occur when the user terminates or cancels a ‘Delete schema’ operation using CTRL + C for example. The function opilof in the Call Stack above is an indication that the error is only seen at session log off.
SOLUTION
1. Upgrade to 10g where the bug is fixed.
OR
2. Ignore the error as it is completely harmless, the error is generated at session log off.
Note that in some cases the errors have also been encountered on Oracle 10.2 releases. These may be related to a different bug, but remain harmless.
REFERENCES
@ BUG:2628920 – ORA-600:[4412] AND [4406] WHEN EXITING SESSION AFTER CANCELLING DELETESCHEMA
解決方法是升級到oracle 10g.這裡選擇手工對無效物件進行編譯.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1152458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle - redo 損壞或刪除處理方法Oracle
- 陣列櫃故障造成控制檔案損壞,資料檔案損壞陣列
- 批處理刪除語句
- 刪除資料庫中所有儲存過程和函式的sql語句資料庫儲存過程函式SQL
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- 匯出Sql Server資料字典的語句SQLServer
- SQL刪除資料庫裡所有表的外來鍵,同時刪除所有使用者表SQL資料庫
- oracle動態sql語句處理(轉)OracleSQL
- 網路故障造成備庫standby logfile的損壞
- 刪除sql server資料庫中所有資料SQLServer資料庫
- Oracle 9i資料壞塊的處理(ORA-01578) ztOracle
- 動態sql語句來刪除使用者下的物件SQL物件
- 複用Oracle資料字典解析出SQL語句中用到的所有表OracleSQL
- 處理塊損壞
- oracle10g rac 表決盤損壞、ocr損壞處理Oracle
- 查詢所有資料字典的SQLSQL
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件
- 【原創】通過資料字典操作刪除表的列
- 資料庫常用操作SQL語句資料庫SQL
- 段頭損壞的處理
- (轉)oracle redolog損壞的處理辦法Oracle Redo
- 刪除使用者及使用者下的所有資料
- (轉)Oracle常用資料字典查詢語句Oracle
- Oracle一個SQL語句的處理過程(轉)OracleSQL
- SQL語句的處理過程SQL
- Oracle 查詢並刪除重複記錄的SQL語句OracleSQL
- [ORACLE] 系統故障資料庫恢復--資料檔案無損壞Oracle資料庫
- oracle 誤刪除的處理方法Oracle
- Oracle資料庫塊的物理損壞與邏輯損壞Oracle資料庫
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- 【原】獲取SQLServer的最完整資料字典的SQL語句SQLServer
- 【Oracle故障處理】-Oracle9i臨時表空間刪除重建Oracle
- Oracle釋出一個SQL語句的處理過程OracleSQL
- 常見的SQL語句(建立、刪除、切換)SQL
- SQL語句的處理過程修正SQL
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- Oracle中刪除重複資料的SqlOracleSQL
- 刪除資料庫所有使用者表(SqlServer)資料庫SQLServer