SPFILE 錯誤導致資料庫無法啟動(ORA-01565)
--==========================================
--SPFILE 錯誤導致資料庫無法啟動(ORA-01565)
--==========================================
SPFILE錯誤導致資料庫無法啟動
SQL> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '/u01/app/oracle/10g/dbs/spfileorcl.ora'
ORA-27046: file size is not a multiple of logical block size
Additional information: 1
分析:
從錯誤的提示來看,第一行說系統引數出錯
第二行詳細指出了spfileorcl.ora出現了錯誤
再看第三行,google了一下ORA-27046,原來是spfileorcl.ora檔案被損壞,導致spfile檔案不可讀
在spfile檔案損壞的時候,如果嘗試使用create pfile from spfile,也將收到同樣的錯誤
由於告警日誌alert_orcl.log之前被清空,故此時未能看到更詳細的錯誤提示
解決辦法:
由於spfile為二進位制檔案,因此修復比較困難,所以考慮從備份的spfile中恢復
1.spfile備份是否存在,如存在則恢復到原始位置,如放在預設位置,則為$ORACLE_HOME/dbs,Windows平臺為%ORACLE_HOME%/database
2.spfile備份檔案不存在,也可以從pfile啟動,啟動時指定pfile引數
3.spfile備份檔案不存在,pfile也不存在,則從告警日誌alert_orcl.log中最後一次正常啟動中使用strings命令提取相關引數來手動創
建pfile,然後從pfile啟動,啟動時指定pfile引數。
注意從告警日誌中複製過來的內容有些需要加單引號,一是所有的路徑需要使用單引號括起來,其次是和db_name,db_domain等等
4.spfile備份檔案不存在,pfile也不存在,也不願從告警日誌中手動建立pfile,則可以使用資料庫初始化時的pfile來啟動,預設位置為
$ORALCE_BASE/admin/$ORACLE_SID/pfile
5.也可以在SQLplus下直接使用create spfile from pfile = '
6.注意
從預設的pfile或資料庫初始化的pfile中來啟動資料庫後,有很多引數不一致,可能會導致一些功能不可用,需要調整
建議定期備份引數檔案
7.更多有關引數檔案的詳細描述,請參閱:Oracle 參數文件
解決示例
--本示例直接資料庫了初始化資料庫時的pfile來啟動資料庫
--啟動後收到了有關控制檔案的錯誤提示
SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348'
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 83887892 bytes
Database Buffers 163577856 bytes
Redo Buffers 2973696 bytes
ORA-00205: error in identifying control file, check alert log for more info
--從告警日誌中檢視控制檔案的資訊,告警日誌提示control03.ctl不存在
SQL> ho tail -n 100 /u01/app/oracle/admin/orcl/bdump/alert_orcl.log
Thu Jul 29 16:52:44 2010
ALTER DATABASE MOUNT
Thu Jul 29 16:52:44 2010
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control03.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
--檢視控制檔案相關的引數資訊中定義了control03.ctl
SQL> show parameter control_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl
SQL> ho ls /u01/app/oracle/oradata/orcl/control03.ctl --檢視control03.ctl物理檔案不存在
ls: /u01/app/oracle/oradata/orcl/control03.ctl: No such file or directory
--修改pfile檔案
SQL> ho vim /u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348
--刪除這段,/u01/app/oracle/oradata/orcl/control03.ctl 內容
--從修改後的pfile檔案啟動
SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348'
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 83887892 bytes
Database Buffers 163577856 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> ho ls /u01/app/oracle/10g/dbs/
alert_orcl.log core_5372 init.ora initorcl.ora orapworcl
core_5360 hc_orcl.dat initdw.ora lkORCL
--從pfile檔案中建立spfile
SQL> create spfile from pfile = '/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348';
File created.
--檢視spfileorcl.ora已生成
SQL> ho ls /u01/app/oracle/10g/dbs/
alert_orcl.log hc_orcl.dat initorcl.ora spfileorcl.ora
core_5360 init.ora lkORCL
core_5372 initdw.ora orapworcl
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup --從spfile 啟動
ORACLE instance started.
Total System Global Area 251658240 bytes
Fixed Size 1218796 bytes
Variable Size 83887892 bytes
Database Buffers 163577856 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
實際上可以先create spfile from pfile = '
更簡單些,比如上面的例子中需要去掉一個控制檔案。當然此類問題是仁者見仁,智者見者。
總之一條,定期備份引數檔案是相當有必要的!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703536/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 又一例SPFILE設定錯誤導致資料庫無法啟動資料庫
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- 【strings】spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- 修改SQLNET.ORA導致資料庫無法啟動SQL資料庫
- 恢復資料庫引數錯誤無法啟動資料庫
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- dbua後資料庫無法啟動錯誤的解決資料庫
- 錯誤初始化引數導致無法啟動的解決辦法
- 誤修改ORACLE_HOME導致無法登陸資料庫Oracle資料庫
- [oracle]undo表空間出錯,導致資料庫例項無法開啟Oracle資料庫
- mongoDB因root啟動關閉資料庫導致mongo普通使用者無法啟動MongoDB資料庫
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- 11gR2私有ip修改錯誤導致crs無法啟動解決方法
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- ORACLE的歸檔空間滿導致的監聽故障資料庫無法啟動Oracle資料庫
- 時區錯誤導致oracle的EM不能啟動解決辦法Oracle
- 資料庫升級導致ORA-918錯誤資料庫
- MMMNL absent錯誤 ,資料庫無法連線資料庫
- 11gRAC許可權問題導致的叢集及資料庫無法啟動資料庫
- ORACLE windows驅動磁碟機代號自動變更導致oracle資料庫崩潰無法啟動OracleWindows資料庫
- qt使用mysql,開啟資料庫,丟擲無法連線錯誤。QTMySql資料庫
- 誤刪重做日誌檔案組導致啟動資料庫報錯ORA-03113資料庫
- ORA-06502報錯導致資料庫所有檢視無法修改。資料庫
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- OEL 11.2.0.2 RAC 資料庫停電導致has程式無法啟動OLR檔案損壞資料庫
- MYSQL資料庫服務無法啟動MySql資料庫
- listener的ORACLE_HOME配置出錯導致無法遠端登陸資料庫Oracle資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- UNDO表空間損壞導致資料庫無法OPEN資料庫
- oracle 92 oem 錯誤的更改oracle sga後,導致instance無法啟動的問題解決Oracle
- 嘗試無引數啟動資料庫時報錯ORA-304錯誤資料庫
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- 【ASM】ASM啟動無法找到spfile問題原因ASM
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- DBCA建庫導致已有資料庫出現ORA-27140錯誤資料庫