--==========================================
--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 = '<dir>' 來先創建 spfile 文件,再啟動 Oracle
??? 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 = '<dir>' , 再從 spfile 啟動,使用 alter system 修改相關的參數比直接修改 pfile 似乎
??? 更簡單些,比如上面的例子中需要去掉一個控制文件。當然此類問題是仁者見仁,智者見者。
??? 總之一條,定期備份參數文件是相當有必要的 !
?
更多
Oracle 實例和Oracle 數據庫(Oracle 體系結構)
?
?
?
? Oracle 聯機重做日志文件(ONLINE LOG FILE)
?
?
?
???????????????????
?
???????????????
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
