熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORA-03113錯誤分析

2013-11-13 16:00:20  來源: Oracle 

  前言
  
  每一個DBA在進行數據庫管理的過程中不可避免的要遇到形形色色的錯誤(ORAxxxx)有些錯誤由於頻繁出現原因復雜而被DBA們戲稱之為經典的錯誤其中ORA end of fileon communication channel 就是這樣的一個
  
  我們可以簡單的把這個錯誤理解為Oracle客戶端進程和數據庫後台進程連接中斷不過導致這個錯誤的原因實際上有很多種對數據庫設置不當任何能導致數據庫後台進程崩潰的行為都可能產生這個錯誤這個錯誤的出現還經常伴隨著其它錯誤比如說ORA ORACLE not available
  
  此外該錯誤出現的場景復雜可能出現在:
  
   啟動的Oracle的時侯;
  
   試圖創建數據庫的時侯;
  
   試圖對數據庫進行連接的時侯;
  
   在客戶端正在運行SQL/PL/SQL的時侯;
  
   備份/恢復數據庫的時侯;
  
   其它一些情況下......
  
  在論壇上也時常可以看到初級DBA對這個問題的求救
  
  在這裡簡單的對該問題進行一下整理不當之處請多指教!
  
  錯誤原因種種
  
  根據網絡上大家反映的情況來看錯誤原因大約有這些:
  
   Unix核心參數設置不當
  
   Oracle執行文件權限不正確/環境變量問題
  
   客戶端通信不能正確處理
  
   數據庫服務器崩潰/操作系統崩潰/進程被kill
  
   Oracle 內部錯誤
  
   特定SQLPL/SQL引起的錯誤
  
   空間不夠
  
   防火牆的問題
  
   其它原因
  
  在開始解決問題之前作如下幾件事情:
  
   回憶一下在出現錯誤之前你都做了什麼操作越詳細越好;
  
   查看background_dump_dest目錄中的alertSIDlog文件也是你要做的事情;
  
   Google一下在互聯網上有很多信息等著你去發現不要什麼都問別人當然如果你找到了一些對你非常有幫助的東西――這篇文檔就不用看了別耽誤你的時間呵呵
  
  Unix核心參數設置不當/ init參數設置不當
  
  如果數據庫在安裝過程中沒有設定正確的操作系統核心變量可能在安裝數據庫文件的時侯沒甚麼問題在創建數據庫的時侯常常會出現錯誤和此有關的另一個原因是initora參數文件中的processes參數指定了不合理的值啟動數據庫導致錯誤出現(當然這個歸根到底也是核心參數的問題)
  
  這個錯誤信息一般如下
  
  ORA: endoffile on communication channel
  ORA: ORACLE not available
  ORA: shared memory realm does not exist
  
  解決辦法有兩個
  
  修改核心參數加大相應核心參數的值(推薦);
  
  減小initora參數的Processes的值
  
  需要注意的是
  
  SEMMSL必須設定為至少要 + 進程數的最大值
  
  SEMMNS 也依賴於每個數據庫上的進程參數值
  
  注
  
  這個錯誤類型只在Unix平台上出現在Windows上如果processes的值過大則會出現
  ORA: invalid value for parameter max_rollback_segments must be
  between and /* 此時指定的參數值超過了 */
  
  或者
  ORA: out of memory /* 小於的一個大參數值 */
  
  我的軟件環境
  Windows Version Service Pack CPU type
  ORACLE RDBMS Version:
  
  在特定平台上更改核心參數可能會有差別請參考Oracle Technet()上的安裝文檔對特定Unix平台的安裝文檔也有對核心參數意義的解釋
  
  Initora中的參數如果設置不當會產生該錯誤有經驗表明:shared_pool_size設置過小會出現錯誤此外timed_statistics=true的設置也會帶來問題
  
  Oracle執行文件權限不正確/環境變量問題
  
  這個問題只出現在Unix平台上常見情況是有的時侯管理員為了方便而使用Unix的tar命令處理過的壓縮包進行的安裝或者是系統管理員指定了額外的OS用戶也可以管理數據庫卻沒有指定正確的環境變量
  
  Oracle執行文件在$ORACLE_HOME/bin目錄下如果出現問題應該用如下Unix類似命令來糾正
  
  chmod $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如果問題依舊可以保守的用下面的方法
  
   禁用網卡將本地連接狀態改為禁用;
  
   將sqlnetora文件打開(以記事本形式)將nts驗證注釋掉
  #SQLNETAUTHENTICATION_SERVICES= (NTS)
  
   創建數據庫;
  
   創建成功後恢復本地連接
  
  數據庫服務器崩潰/操作系統崩潰/進程被Kill
  
  在連接過程中如果Oracle數據庫的服務器崩潰或者數據庫所在的操作系統崩潰就會出現這個錯誤Oracle Server崩潰的原因可能因為主要後台進程死掉被錯誤的進行了Kill操作如果是這個原因還是比較容易解決的此外和OS有關的應用程序存在內存洩漏(或者有病毒)的時侯也會導致Oracle後台程序問題
  
  推薦排錯辦法:
  
   查看應用軟件相關進程是否正常運行;
  
   查看有無內存洩漏;
  
   查殺病毒;
  
   確定系統管理員沒有進行誤操作;
  
   確定無黑客入侵行為
  
   其它不確定因素......
  
  Oracle 內部錯誤/ Bug
  
  如果查看background_dump_dest目錄中的alertlog發現有無ora等錯誤可以到Metalink站點上查看具體信息及其解決方案一般情況下要打軟件補丁
  
  特定SQLPL/SQL引起的錯誤嘗試把SQL進行分開執行也可以用SQL_TRACE來進行跟蹤找到導致問題的SQL語句
  
  在SQLPlus下
  ALTER SESSION SET SQL_TRACE TRUE;
  
  SQL語句中的非法字符和不合理的處理結果偶爾會帶來問題
  
  系統空間不夠
  
  任何時侯都要確保數據庫系統有足夠的空間如果 USER_DUMP_DEST和BACKGROUND_DUMP_DEST沒有剩余空間的話會導致此問題此外如果打開了審計AUDIT目錄要由足夠的空間如果激活了Trace的話Trace目錄要由足夠的空間
  
  Dave Wotton的文檔表明在對表進行插入數據的時侯如果文件超過了G(而文件系統有G限制)會導致該問題
  
  防火牆的問題
  
  如果數據要通過防火牆請聯系系統管理員詢問是否對數據庫數據進行了過濾或者是突然禁止了通行端口如本地安裝有個人防火牆請檢查本地設置
  
  其它方面說明
  
  導致這個錯誤的原因有很多種上面列到的只是一些典型情況經常去一些數據庫技術論壇可能會有幫助比如說ITPUB()C NOUG()等
From:http://tw.wingwit.com/Article/program/Oracle/201311/17658.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.