您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何解決oracle啟動時的幾個小問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
oracle在啟動時和啟動過程中經常會出現這樣那樣的錯誤,簡單記錄下碰到過的問題,方便備用。
1、啟庫先起監聽,發現監聽啟動失敗
一般常見是/etc/hosts里面配置的主機名稱對應IP和你的實際IP不符,改了就OK了。 還要檢查HOSTNAME和/etc/sysconfig/network里的主機名,都改一致保險。 對應的還可檢查下: listener和tnsnames里面的HOST名或IP,保持一致。 有時只有把listener和tnsnames里面的HOST配成主機名,且hosts文件里的主機名對應IP正確才會啟動正常。 2、手動修改SPFILE文件報錯 手動用VI命令修改oracle里面的SPFILE***.ORA文件,數據庫就起不來了,報錯ORA-27046: file size is not a multiple of logical block size 。 原因是動態服務器參數文件(SPFILE)是一個二進制文件,是不可以手工修改的,如果手工改了,該文件就成為了無效文件。 可以通過以下方法解決: 1、將SPFILE中的參數拷貝到init***.ora文件中 strings spfileCP05PV1DB.ora 查看到后拷貝到init***.ora中 (控制文件也可strings) 2、刪除DATABASE目錄下的SPFILE***.ORA文件。 3、啟動數據庫 (現在應該可以成功啟動) 4、SQL> create spfile from pfile 生成spfile(pfile文件可自己編寫) 使用startup命令啟動數據庫,,Oralce將會按照以下順序在缺省目錄中(9i,10i在oracle_home/database目錄下)搜索參數文件:(1)spfile***.ora文件 (2)如果沒有spfile***.ora文件就用spfile.ora文件(3) 如果沒有spfile.ora文件就用init***.ora(4)如果沒有init***.ora文件就用 pfile.ora 所以上面我們采取的解決方法是將破壞的spfile中的參數復制到init***.ora中,然后刪除spfile文件,這樣啟動時就會用init***.ora文件啟動,然后用create spfile from pfile 命令生成spfile 注意如果要修改spfile中的參數,絕對不能手工修改spfile文件,要使用下面命令:alter system set parameter=Value scope=spfile|both|memory 例如:alter system set db_cache_size=24M scope=both;來修改 3、路徑和名字問題 SQL> startup ORA-48108: invalid value given for the diagnostic_dest init.ora parameter ORA-48140: the specified ADR Base directory does not exist [/home/oracle/102/dbs/<ORACLE_BASE>] ORA-48187: specified directory does not exist Linux Error: 2: No such file or directory Additional information: 1 SQL> 查看$ORACLE_HOME/dbs下的init文件(我的SID名為oracleprod),即initoracleprod.ora,發現該文件中的<ORACLE_BASE>沒有更改過來,當然啟動不了了,修改本文件里的所有<ORACLE_BASE>為絕對路徑。 結合網上其他技術大拿的經驗,并刪除diagnostic_dest這行記錄。 然后再啟動數據庫 SQL> startup nomount SQL> alert database mount 此時出錯,ORA-00205: error in identifying control file, check alert log for more info 還是查看$ORACLE_HOME/dbs/initoracleprod.ora中的內容,發現control_files = (ora_control1, ora_control2)有問題,修改為control_files = ("/u01/oradata/orcl/control01.ctl", "/u01/flash_recovery_area/orcl/control02.ctl") 注:上面的control_files以機器上實際路徑為準。 然后再啟動Oracle,即可以了。 第二,在上面的過程中,還可能會碰到如ORA-09925: Unable to create audit trail file這樣的問題,均于<ORACLE_BASE>有關,修改之即可。 另外,在解決上述問題過程中,還出現了像如下一樣的錯誤: SQL> conn sys SQL> show parameter SP2-0640: Not connected SQL> conn / as sysdba ERROR: ORA-09925: Message 9925 not found; product=RDBMS; facility=ORA Linux-x86_64 Error: 30: Read-only file system Additional information: 9925 ORA-01075: you are currently logged on SQL> 如果出現上面的問題,無法手動停止Oracle,于是找到pmon進程,然后再kill之,即可關停Oracle. 4、pfile與spfile啟動問題 在一個節點啟動數據庫: SQL>startup; ORA-01506: missing or illegal database name 因前面是從PFILE啟動,再生成SPFILE的,可能是生成文件出錯。 [root@rac2 dbs]# strings spfileracdb2.ora *.SPFILE='+DATA/racdb/spfileracdb.ora' 拷貝RAC1節點的spfileracdb1.ora 為spfileracdb2.ora 問題解決。 還有一個現象就是路徑錯也會導致這個錯誤。 比如/u01/app/oracle/admin/CP05PV1DB改錯了/u01/app/oracle/admin/CP05MV1DB,導致無法識別數據庫名 5、SPFILE的錯誤 SQL> startup mount ORA-01078: failure in processing system parameters ORA-01565: error in identifying file 'E:\oracle\product\10.2.0\db_1/dbs/spfileocl.ora' ORA-27046: file size is not a multiple of logical block size OSD-04012: ?????????????? O/S-Error: (OS 3516) ?????????????? Windows ?????????? 嘗試將SPFILEORCL.ORA的備份文件改名,啟動數據庫還是報同樣的錯誤,而不是以前的錯誤,有些不知所措 幸好是自己的本機 實在不行就重裝了,于是開始在google上繼續找答案。找了一會就找了的方法 真的要感謝互聯網。真是一個好東西。解決方法如下: C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 18 23:42:25 2016 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> connect /as sysdba 已連接到空閑例程。 SQL> create spfile='E:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfil ='E:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.132009183928'; 文件已創建。 SQL> startup ORACLE 例程已經啟動。 Total System Global Area 167772160 bytes Fixed Size 1247900 bytes Variable Size 62915940 bytes Database Buffers 100663296 bytes Redo Buffers 2945024 bytes 數據庫裝載完畢。 數據庫已經打開。 SQL> 至此問題得到解決。 6、另一例spfile問題 SQL> create pfile from spfile; create pfile from spfile* ERROR at line 1: ORA-01565: error in identifying file '?/dbs/spfile@.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 Area251658240 bytes Fixed Size1218796 bytes Variable Size83887892 bytes Database Buffers163577856 bytes Redo Buffers2973696 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 DATABASEMOUNT 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_ NAMETYPEVALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_timeinteger7 control_filesstring/u01/app/oracle/oradata/orcl/c ontrol01.ctl, /u01/app/oracle/ oradata/orcl/control02.ctl, /u01/app/oracle/oradata/orcl/control03.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 Area251658240 bytes Fixed Size1218796 bytes Variable Size83887892 bytes Database Buffers163577856 bytes Redo Buffers2973696 bytes Database mounted. Database opened. SQL> ho ls /u01/app/oracle/10g/dbs/ alert_orcl.logcore_5372init.orainitorcl.oraorapworcl core_5360hc_orcl.datinitdw.oralkORCL --從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.loghc_orcl.datinitorcl.oraspfileorcl.ora core_5360init.oralkORCL core_5372initdw.oraorapworcl SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup--從spfile 啟動 ORACLE instance started. Total System Global Area251658240 bytes Fixed Size1218796 bytes Variable Size83887892 bytes Database Buffers163577856 bytes Redo Buffers2973696 bytes Database mounted. Database opened. 實際上可以先create spfile from pfile = '<dir>', 再從spfile啟動,使用alter system 修改相關的參數比直接修改pfile似乎 更簡單些,比如上面的例子中需要去掉一個控制文件。當然此類問題是仁者見仁,智者見者。 總之一條,定期備份參數文件是相當有必要的!
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解決oracle啟動時的幾個小問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。