ORA-1034 ORACLE not available (轉)

http://blog.csdn.net/onlyone_htliu/article/details/6075150sql

前言
  每個DBA在進行數據庫管理的過程當中不可避免的要遇到形形色色的錯誤(ORA-xxxx)。有些錯誤因爲頻繁出現、緣由複雜而被DBA們戲稱之爲"經典的錯誤"。其中ORA-3113 "end of fileon communication channel" 就是這樣的一個.
  
  咱們能夠簡單的把這個錯誤理解爲Oracle客戶端進程和數據庫後臺進程鏈接中斷。不過,致使這個錯誤的緣由實際上有不少種,對數據庫設置不當、任何能致使數據庫後臺進程崩潰的行 爲均可能產生這個錯誤.這個錯誤的出現還常常伴隨着其它錯誤,好比說:
  
  ORA-1034 ORACLE not available。
  
  此外,該錯誤出現的場景複雜,可能出如今:
  
  啓動的Oracle的時侯;
  試圖建立數據庫的時侯;
  試圖對數據庫進行鏈接的時侯;
  在客戶端正在運行SQL/PL/SQL的時侯;
  備份/恢復數據庫的時侯;
  其它一些狀況下......
  在論壇上也時常能夠看到初級DBA對這個問題的求救. 在這裏簡單的對該問題進行一下整理.不當之處,請多指教!
  
  錯誤緣由種種
  根據網絡上你們反映的狀況來看,錯誤緣由大約有這些:
  
  Unix核心參數設置不當
  Oracle執行文件權限不正確/環境變量問題
  客戶端通訊不能正確處理
  數據庫服務器崩潰/操做系統崩潰/進程被kill
  Oracle 內部錯誤
  特定SQL、PL/SQL引發的錯誤
  空間不夠
  防火牆的問題
  其它緣由
  在開始解決問題以前,做以下幾件事情:
  
  回憶一下在出現錯誤以前你都作了什麼操做,越詳細越好;查看background_dump_dest目錄中的alertSID.log文件也是你要作的事情;Google一下,在互聯網上有不少信息等着你去發現,不要什麼都問別人.固然, 若是你找到了一些 對你更有幫助的東西――這篇文檔就不用看了 :)
  
  Unix核心參數設置不當/ init參數設置不當
  
  若是數據庫在安裝過程當中沒有設定正確的操做系統核心變量,可能在安裝數據庫文件的時侯沒甚麼問題,在建立數據庫的時侯經常會出現03113錯誤.和此有關的另外一個緣由是init.ora參數文件中的processes參數指定了不合理的值,啓動數據庫致使錯誤出現(固然這個歸根到底也是核心參數的問題).
  
  這個錯誤信息通常以下:
  
  ORA-03113: end-of-file on communication channel
  ORA-01034: ORACLE not available
  ORA-27101: shared memory realm does not exist
  
  解決辦法有兩個:
  
  1修改核心參數,加大相應核心參數的值(推薦);
  2減少init.ora參數的Processes的值.
  
  須要注意的是:
  
  SEMMSL必須設定爲至少要10 + 進程數的最大值.
  SEMMNS 也依賴於每一個數據庫上的進程參數值.
  -------------------------------------------------------------------------------
  注:
  這個錯誤類型只在Unix平臺上出現.在Windows上若是processes的值過大,則會出現:
  
  ORA-00068: invalid value 24200001 for parameter max_rollback_segments, must be
  between 2 and 65535
  
  /* 此時指定的參數值超過了65535 */
  
  或者
  
  ORA-27102: out of memory 
  
  /* 小於65535的一個大參數值 */
  
  個人軟件環境:
  
  Windows 2000 Version 5.0 Service Pack 3, CPU type 586
  ORACLE RDBMS Version: 8.1.7.0.0.
  -------------------------------------------------------------------------------
  在特定平臺上更改核心參數可能會有差異,請參考Oracle Technet(http://otn.oracle.com)上的安裝文檔.對特定Unix平臺的安裝文檔也有對核心參數意義的解釋.
  
  Init.ora中的參數若是設置不當,會產生該錯誤.有經驗代表:shared_pool_size設置太小會出現錯誤,此外timed_statistics=true的設置也會帶來問題.
  
  Oracle執行文件權限不正確/環境變量問題
  
  這個問題只出如今Unix平臺上.常見狀況是有的時侯管理員爲了方便而使用Unix的tar命令處理過的壓縮包進行的安裝,或者是系統管理員指定了額外的OS用戶也能夠管理數據庫卻沒有指定正確的環境變量.
  
  Oracle執行文件在$ORACLE_HOME/bin目錄下,若是出現問題,應該用以下Unix相似命令來糾正 :
  
  chmod 7755 $ORACLE_HOME/bin/oracle
  
  有的時侯要對Oracle進行relink操做.
  在Unix上經過cp拷貝安裝的時候,經常會出現環境變量的問題,和個別執行程序鏈接問題.LD_LIBRARY_PATH若是設置的不正確會致使問題,在這種狀況下,須要對Oracle進行relink.若是可執行文件oralcle被破壞,也要對其relink.
  
  若是安裝了並行服務器選項而Distributed Lock Manager沒有安裝或正確運行也會致使錯誤. 客戶端通訊不能正確處理
  
  SQL*Net驅動器的問題:
  若是使用的版本比較低的驅動器,請更換到新版本的驅動.SQL*Net 的驅動沒有鏈接到Oracle可執行文件會致使錯誤.
  
  檢查網絡是否通暢
  Windows平臺的常見問題:
  
  在Windows平臺建立數據庫的時侯,若是出現該問題能夠考慮用以下的方法:首先檢查本地網絡設置.查看網絡上是否有同名的結點或有衝突的IP.若是問題依舊,能夠保守的用下面的方法:
  
  1. 禁用網卡:將本地鏈接狀態改成禁用;
  2. 將sqlnet.ora文件打開(以記事本形式)將nts驗證註釋掉:
  <&>#SQLNET.AUTHENTICATION_SERVICES= (NTS).
  3. 建立數據庫;
  4. 建立成功後,恢復本地鏈接.
  數據庫服務器崩潰/操做系統崩潰/進程被Kill
  
  在鏈接過程當中,若是Oracle數據庫的服務器崩潰或者數據庫所在的操做系統崩潰,就會出現這個錯誤.Oracle Server崩潰的緣由可能由於主要後臺進程死掉.被錯誤的進行了Kill操做.若是是這個緣由仍是比較容易解決的.此外,和OS有關的應用程序存在內存泄漏(或者有病毒)的時侯也會致使Oracle後臺程序問題.
  
  推薦排錯辦法:
  一、 查看應用軟件相關進程是否正常運行;
  二、 查看有無內存泄漏;
  三、 查殺病毒;
  四、 肯定系統管理員沒有進行誤操做;
  五、 肯定無黑客入侵行爲.
  六、 其它不肯定因素......
  Oracle 內部錯誤/ Bug
  
  若是查看background_dump_dest目錄中的alert.log發現有無ora-600等錯誤,能夠到Metalin k站點上查看具體信息及其解決方案.通常狀況下要打軟件補丁.
  
  特定SQL、PL/SQL引發的錯誤
  嘗試把SQL進行分開執行,也能夠用SQL_TRACE來進行跟蹤,找到致使問題的SQL語句:在SQLPlus下:
  
  ALTER SESSION SET SQL_TRACE=TRUE;
  
  SQL語句中的非法字符和不合理的處理結果偶爾會帶來問題.
  
  系統空間不夠
  任什麼時候侯都要確保數據庫系統有足夠的空間.若是 USER_DUMP_DEST和BACKGROUND_DUMP_DEST沒有剩餘空間的話,會致使此問題.此外,若是打開了審計,AUDIT目錄要由足夠的空間.若是激活了Trace的話,Trace目錄要由足夠的空間.
  
  Dave Wotton的文檔代表,在對錶進行插入數據的時侯,若是文件超過了2G(而文件系統有2G限制),會致使該問題.
  
  防火牆的問題
  若是數據要經過防火牆,請聯繫系統管理員,詢問是否對數據庫數據進行了過濾或者是忽然禁止了通行端口.如本地安裝有我的防火牆,請檢查本地設置. 數據庫

相關文章
相關標籤/搜索