--==========================================
--SPFILE 錯(cuò)誤導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng) (ORA-01565)
--==========================================
?
SPFILE 錯(cuò)誤導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)
??? 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
???
分析:
??? 從錯(cuò)誤的提示來(lái)看,第一行說(shuō)系統(tǒng)參數(shù)出錯(cuò)
??? 第二行詳細(xì)指出了 spfileorcl . ora 出現(xiàn)了錯(cuò)誤
??? 再看第三行, google 了一下 ORA - 27046 ,原來(lái)是 spfileorcl . ora 文件被損壞,導(dǎo)致 spfile 文件不可讀
??? 在 spfile 文件損壞的時(shí)候,如果嘗試使用 create pfile from spfile ,也將收到同樣的錯(cuò)誤
??? 由于告警日志 alert_orcl . log 之前被清空,故此時(shí)未能看到更詳細(xì)的錯(cuò)誤提示
?
解決辦法:
??? 由于 spfile 為二進(jìn)制文件,因此修復(fù)比較困難,所以考慮從備份的 spfile 中恢復(fù)
??? 1.spfile 備份是否存在,如存在則恢復(fù)到原始位置,如放在缺省位置,則為 $ORACLE_HOME / dbs , Windows 平臺(tái)為 % ORACLE_HOME % / database
??? 2.spfile 備份文件不存在,也可以從 pfile 啟動(dòng),啟動(dòng)時(shí)指定 pfile 參數(shù)
??? 3.spfile 備份文件不存在 , pfile 也不存在 , 則從告警日志 alert_orcl . log 中最后一次正常啟動(dòng)中使用 strings 命令提取相關(guān)參數(shù)來(lái)手動(dòng)創(chuàng)
??????? 建 pfile ,然后從 pfile 啟動(dòng) , 啟動(dòng)時(shí)指定 pfile 參數(shù)。
??????? 注意從告警日志中復(fù)制過(guò)來(lái)的內(nèi)容有些需要加單引號(hào) , 一是所有的路徑需要使用單引號(hào)括起來(lái),其次是和 db_name , db_domain 等等
??? 4.spfile 備份文件不存在 , pfile 也不存在 , 也不愿從告警日志中手動(dòng)創(chuàng)建 pfile ,則可以使用數(shù)據(jù)庫(kù)初始化時(shí)的 pfile 來(lái)啟動(dòng),缺省位置為
??????? $ORALCE_BASE / admin / $ORACLE_SID / pfile
??? 5. 也可以在 SQLplus 下直接使用 create spfile from pfile = '<dir>' 來(lái)先創(chuàng)建 spfile 文件,再啟動(dòng) Oracle
??? 6. 注意
??????? 從缺省的 pfile 或數(shù)據(jù)庫(kù)初始化的 pfile 中來(lái)啟動(dòng)數(shù)據(jù)庫(kù)后,有很多參數(shù)不一致,可能會(huì)導(dǎo)致一些功能不可用,需要調(diào)整
??????? 建議定期備份參數(shù)文件
??? 7. 更多有關(guān)參數(shù)文件的詳細(xì)描述,請(qǐng)參閱: Oracle 參 數(shù) 文 件
?
解決示例
??? -- 本示例直接數(shù)據(jù)庫(kù)了初始化數(shù)據(jù)庫(kù)時(shí)的 pfile 來(lái)啟動(dòng)數(shù)據(jù)庫(kù)
??? -- 啟動(dòng)后收到了有關(guān)控制文件的錯(cuò)誤提示
??? 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
?
??? -- 查看控制文件相關(guān)的參數(shù)信息中定義了 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 ?? 內(nèi)容
?
??? -- 從修改后的 pfile 文件啟動(dòng)
??? 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 文件中創(chuàng)建 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 啟動(dòng)
??? 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 .
?
??? 實(shí)際上可以先 create spfile from pfile = '<dir>' , 再?gòu)? spfile 啟動(dòng),使用 alter system 修改相關(guān)的參數(shù)比直接修改 pfile 似乎
??? 更簡(jiǎn)單些,比如上面的例子中需要去掉一個(gè)控制文件。當(dāng)然此類(lèi)問(wèn)題是仁者見(jiàn)仁,智者見(jiàn)者。
??? 總之一條,定期備份參數(shù)文件是相當(dāng)有必要的 !
?
更多
Oracle 實(shí)例和Oracle 數(shù)據(jù)庫(kù)(Oracle 體系結(jié)構(gòu))
?
Oracle 用戶(hù)、對(duì)象權(quán)限、系統(tǒng)權(quán)限
?
?
? Oracle 聯(lián)機(jī)重做日志文件(ONLINE LOG FILE)
?
?
?
???????????????????
?
???????????????
SPFILE 錯(cuò)誤導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)(ORA-01565)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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