一次ORA-00704的處理
一次ORA-00704的處理
[@more@]今天早上,發現有個資料庫無法啟動了,錯誤資訊如下:
102db]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 10月 18 00:18:27 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 536870912 bytes
Fixed Size 1220432 bytes
Variable Size 150995120 bytes
Database Buffers 381681664 bytes
Redo Buffers 2973696 bytes
資料庫裝載完畢。
ORA-01092: ORACLE 例項終止。強制斷開連線
看日誌中的錯誤資訊:
SMON: enabling cache recovery
Sun Oct 18 01:15:31 2009
Errors in file /u01/oracle/102db/admin/hectrain/udump/hectrain_ora_12850.trc:
ORA-00704: 載入程式程式失敗
ORA-39700: 必須用 UPGRADE 選項開啟資料庫
Sun Oct 18 01:15:31 2009
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 12850
ORA-1092 signalled during: ALTER DATABASE OPEN...
看.trc檔案中的錯誤資訊:
[oracle@mas238 bdump]$ cat /u01/oracle/102db/admin/hectrain/udump/hectrain_ora_12789.trc
/u01/oracle/102db/admin/hectrain/udump/hectrain_ora_12789.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ORACLE_HOME = /u01/oracle/102db
System name: Linux
Node name: mas238
Release: 2.6.9-42.ELsmp
Version: #1 SMP Wed Jul 12 23:27:17 EDT 2006
Machine: i686
Instance name: hectrain
Redo thread mounted by this instance: 1
Oracle process number: 13
Unix process pid: 12789, image: (TNS V1-V3)
*** SERVICE NAME:(SYS$USERS) 2009-10-18 01:05:23.436
*** SESSION ID:(1645.3) 2009-10-18 01:05:23.436
ORA-00704: 載入程式程式失敗
ORA-39700: 必須用 UPGRADE 選項開啟資料庫
用 startup upgrade 確實可以啟動資料庫。
網上查詢了下資料,一般這種錯誤是由於升級了資料庫軟體,而沒有升級資料庫的系統字典表導致的。
但是我不是這種情況,分析下,之前系統出現過異常,資料庫異常關閉過,難道是字典表的資料異常導致的錯誤?
修改 initxxx.ora檔案,增加引數 sql_trace = true
然後再次執行 startup 啟動資料庫,檢視錯誤資訊中.trc檔案
.tra檔案的最後部分是:
PARSING IN CURSOR #5 len=63 dep=1 uid=0 oct=3 lid=0 tim=1226366925317451 hv=3748897726 ad='3fb20db8'
SELECT NULL FROM REGISTRY$ WHERE CID='CATPROC' AND VERSION = :1
END OF STMT
PARSE #5:c=13998,e=13389,p=11,cr=24,cu=0,mis=1,r=0,dep=1,og=4,tim=1226366925317444
EXEC #5:c=0,e=325,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1226366925317846
FETCH #5:c=1000,e=707,p=2,cr=3,cu=0,mis=0,r=0,dep=1,og=4,tim=1226366925318582
STAT #5 id=1 cnt=0 pid=0 pos=1 obj=891 op='TABLE ACCESS FULL REGISTRY$ (cr=3 pr=2 pw=0 time=708 us)'
ORA-00704: 載入程式程式失敗
ORA-39700: 必須用 UPGRADE 選項開啟資料庫
EXEC #1:c=287956,e=1487908,p=34,cr=544,cu=0,mis=0,r=0,dep=0,og=1,tim=1226366926337645
ERROR #1:err=1092 tim=433413726
說明是執行 SELECT NULL FROM REGISTRY$ WHERE CID='CATPROC' AND VERSION = :1 之後出問題了,導致載入程式程式失敗,我將資料庫用 startup upgrade 啟動起來,然後執行 SELECT NULL FROM REGISTRY$ WHERE CID='CATPROC',發現沒有抱錯,但是沒有記錄,所以我到一個好的資料庫中查詢了 SELECT * FROM REGISTRY$ WHERE CID='CATPROC' 發現是有記錄的,懷疑問題就出在這裡 沒有找到 CATPROC 的記錄導致 資料庫載入程式程式失敗。
查了下 rdbms/admin 下的.sql 指令碼,看到有個 catproc.sql 指令碼是關於 CATPROC 的建立指令碼
在 upgrade 啟動之後,重新執行了 catproc.sql 指令碼,然後關閉資料庫,再啟動成功。
趕緊備份下,問題解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-1027982/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-00704: bootstrap process failure 的處理bootAI
- ORA-00704、ORA-39700處理
- 【故障處理】一次RAC故障處理過程
- 一次efi的問題處理
- 一次scheduler錯誤的處理
- 一次dataguard故障處理
- 一次烏龍的SSH攻擊處理
- 一次資料庫hang的處理資料庫
- 一次ORA-600故障的處理
- 一次TM ENQ故障處理ENQ
- 一次GC BUFFER BUSY處理GC
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- 一次壞塊的處理過程(一)
- 一次壞塊的處理過程(二)
- 一次壞塊的處理過程 [轉]
- 記一次dg故障的處理總結
- 一次使用BBED處理壞塊
- 一次資料庫HANG處理資料庫
- 一次ceph心跳機制異常的處理
- 記一次PMML檔案的處理過程
- 一次詭異的MySQL問題處理故事MySql
- 記一次gc buffer busy等待事件的處理GC事件
- 一次歸檔報錯的處理和分析
- 一次oracle 10.2.0.4當機事故的處理Oracle
- 一次PLSQL處理LOB欄位的優化SQL優化
- AI處理器 ×PU 一次全看清!AI
- 一次direct path read 故障處理
- 一次在docker中處理kdevtmpfsi的經歷Dockerdev
- 一次latch cache buffers chains問題的處理AI
- 記一次cursor pin s wait on X的處理AI
- 一次資料庫異常的處理過程資料庫
- 一次ORA-01548錯誤的處理
- 記一次ceph pg unfound處理過程
- 分享一次伺服器被挖礦的處理方法伺服器
- Oracle一次縮小表空間的處理過程Oracle
- 一次ORA-00257錯誤的處理過程
- 一次資料庫不能歸檔問題的處理資料庫
- ora-600 [4000]的又一次處理[轉帖]