前言 每一個DBA在進行數據庫管理的過程中不可避免的要遇到形形色色的錯誤(ORA
xxxx)
有些錯誤由於頻繁出現
原因復雜而被DBA們戲稱之為
經典的錯誤
其中ORA
end of fileon communication channel
就是這樣的一個
我們可以簡單的把這個錯誤理解為Oracle客戶端進程和數據庫後台進程連接中斷
不過
導致這個錯誤的原因實際上有很多種
對數據庫設置不當
任何能導致數據庫後台進程崩潰的行為都可能產生這個錯誤
這個錯誤的出現還經常伴隨著其它錯誤
比如說
ORA
ORACLE not available
此外
該錯誤出現的場景復雜
可能出現在:
啟動的Oracle的時侯;
試圖創建數據庫的時侯;
試圖對數據庫進行連接的時侯;
在客戶端正在運行SQL/PL/SQL的時侯;
備份/恢復數據庫的時侯;
其它一些情況下......
在論壇上也時常可以看到初級DBA對這個問題的求救
在這裡簡單的對該問題進行一下整理
不當之處
請多指教!
錯誤原因種種 根據網絡上大家反映的情況來看
錯誤原因大約有這些:
Unix核心參數設置不當
Oracle執行文件權限不正確/環境變量問題
客戶端通信不能正確處理
數據庫服務器崩潰/操作系統崩潰/進程被kill
Oracle 內部錯誤
特定SQL
PL/SQL引起的錯誤
空間不夠
防火牆的問題
其它原因
在開始解決問題之前
作如下幾件事情:
回憶一下在出現錯誤之前你都做了什麼操作
越詳細越好;
查看background_dump_dest目錄中的alertSID
log文件也是你要做的事情;
Google一下
在互聯網上有很多信息等著你去發現
不要什麼都問別人
當然
如果你找到了一些對你非常有幫助的東西――這篇文檔就不用看了
別耽誤你的時間
呵呵
Unix核心參數設置不當/ init參數設置不當 如果數據庫在安裝過程中沒有設定正確的操作系統核心變量
可能在安裝數據庫文件的時侯沒甚麼問題
在創建數據庫的時侯常常會出現
錯誤
和此有關的另一個原因是init
ora參數文件中的processes參數指定了不合理的值
啟動數據庫導致錯誤出現(當然這個歸根到底也是核心參數的問題)
這個錯誤信息一般如下
ORA
: end
of
file on communication channel
ORA
: ORACLE not available
ORA
: shared memory realm does not exist
解決辦法有兩個
修改核心參數
加大相應核心參數的值(推薦);
減小init
ora參數的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平台的安裝文檔也有對核心參數意義的解釋
Init
ora中的參數如果設置不當
會產生該錯誤
有經驗表明: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
如果問題依舊
可以保守的用下面的方法
禁用網卡
將本地連接狀態改為禁用;
將sqlnet
ora文件打開(以記事本形式)將nts驗證注釋掉
#SQLNET
AUTHENTICATION_SERVICES= (NTS)
創建數據庫;
創建成功後
恢復本地連接
數據庫服務器崩潰/操作系統崩潰/進程被Kill 在連接過程中
如果Oracle數據庫的服務器崩潰或者數據庫所在的操作系統崩潰
就會出現這個錯誤
Oracle Server崩潰的原因可能因為主要後台進程死掉
被錯誤的進行了Kill操作
如果是這個原因還是比較容易解決的
此外
和OS有關的應用程序存在內存洩漏(或者有病毒)的時侯也會導致Oracle後台程序問題
推薦排錯辦法:
查看應用軟件相關進程是否正常運行;
查看有無內存洩漏;
查殺病毒;
確定系統管理員沒有進行誤操作;
確定無黑客入侵行為
其它不確定因素......
Oracle 內部錯誤/ Bug 如果查看background_dump_dest目錄中的alert
log發現有無ora
等錯誤
可以到Metalink站點上查看具體信息及其解決方案
一般情況下要打軟件補丁
特定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的文檔表明
在對表進行插入數據的時侯
如果文件超過了
G(而文件系統有
G限制)
會導致該問題
防火牆的問題 如果數據要通過防火牆
請聯系系統管理員
詢問是否對數據庫數據進行了過濾或者是突然禁止了通行端口
如本地安裝有個人防火牆
請檢查本地設置
其它方面說明 導致這個錯誤的原因有很多種
上面列到的只是一些典型情況
經常去一些數據庫技術論壇可能會有幫助
比如說ITPUB()
C NOUG()等
From:http://tw.wingwit.com/Article/program/Oracle/201311/17658.html