oracle net相關問題的彙總和解決

weifenghq發表於2007-06-28

常見的錯誤:
客戶端
ORA-12154 “TNS:無法解析服務名名”
ORA-12198 “TNS:無法找到通向目標的路徑徑”
ORA-12203 “TNS:不能與目標連線接”
ORA-12533 “TNS:非法ADDRESS 引數數”
ORA-12545 “TNS:名稱查詢失敗”

服務端
ORA-12154: 沒有監聽程式
ORA-12224: TNS: 沒有監聽程式
ORA-12500: TNS: 監聽程式啟動專用伺服器程式失敗
ORA-12545: TNS: 名稱查詢失敗
TNS-01169: 監聽程式不識別口令


錯誤原因:
1、listener服務的問題
a.在windows環境中,監聽器服務沒有啟動
察看服務中的監聽器服務,看是否啟動,很多人設定為手動後忘記啟動

b.windows環境,服務已經啟動,但是仍然報錯
在lsnrctl中看status,發現並未啟動,通常是由於監聽器配置有問題造成,需要修改監聽器的配置檔案,與c相同
經驗感覺,最好還是使用lsnrctl啟動監聽器比較好,可以直接看到啟動的狀況

c、啟動監聽器錯誤
不論在任何平臺,lsnrctl的status報錯,都說明沒有啟動成功,執行start啟動監聽器
如果仍然抱錯,通常原因為監聽器配置問題,主要包括了:
ip地址或者主機名稱改變:修改listener.ora和tnsnames.ora檔案中的主機地址資訊
監聽的配置檔案語法或引數錯誤:修改監聽器配置檔案的語法
當然,也可能是一些軟體破壞了監聽器的相關檔案,或者產生了程式衝突,另外,一些防病毒軟體可能會阻斷監聽器甚至關閉監聽器

2、監聽器正常啟動,但是監聽資訊有問題
監聽埠改動:正常的1521埠被佔用,改為其他埠,客戶端也應該作相應修改
監聽的資料庫設定有問題:設定了錯誤的資料庫SID,在9i這個錯誤被資料庫修正,真正的資料庫資訊可以動態註冊,所以一般不會出錯


3、伺服器配置問題
安裝了防火牆:有些防火牆預設會阻擋客戶端發出的連線包請求,另外防火牆可能會禁用一些埠,其中可能會包括監聽埠
安裝了防毒軟體:有些防毒軟體也會阻擋連線請求,曾經用過瑞星遇到過這種問題
伺服器禁用了監聽的埠或者被其他軟體佔用監聽埠
沒有安裝相關的網路協議:客戶端和服務端通常情況下需要相同的網路協議(除非使用連線管理器)

4、客戶端配置問題
配置了不正確的tnsnames.ora檔案,包括了監聽器主機名或ip地址錯誤,監聽埠錯誤,連線的資料庫沒有被監聽器監聽或者不存在
安裝了多個Oracle軟體,存在多個主目錄:因為有多個主目錄,所以出現多個tnsnames.ora檔案,為不同的軟體配置相應的tnsnames.ora檔案。這種情況也多見,在安裝了資料庫和oracle的developer後,出現兩個主目錄,每個主目錄中都有network目錄,需要分別進行配置,使用者最好確定當前使用的主目錄是不是存放了正確連線服務命名的目錄,當然,一種簡單的方法是乾脆讓這些tnsnames.ora檔案都一樣的內容,就沒那麼多麻煩了


5、系統問題
沒有做域名解析:使用者配置的檔案中使用了主機名稱,但是沒有相應的域名解析,無法解析成正確的ip地址
使用連線管理器進行了訪問控制:察看是否在連線管理器中設定了訪問控制
在protocol.ora(9i在sqlnet.ora)中設定了訪問控制:是否設定了訪問控制
連線的資料庫未啟動:在伺服器端檢查連線的資料庫是否已經啟動

6、網路問題
網路硬體問題,例如網線、交換機、路由器、網路卡等網路裝置故障:最簡單的方法ping
網路設定問題,存在硬體防火牆,交換機或者路由設定問題:同樣,測試是否能夠連通

7、其他
連線過於頻繁:同時的併發連線太頻繁造成,可以設定較大的QUEUESIZE,或者建立連個監聽器同時監聽,當然了,使用了兩個埠
監聽器引數設定有誤:這個就自己看吧
配置了命名伺服器或者ldap:因為需要在命名伺服器或者ldap伺服器上解析服務命名,所以如果這些部分出問題也一樣表現為連線出錯
不能啟動專用連線程式:在客戶端是否選擇了專用連線方式,另外,也可能設定的程式數、會話數或者環路被共享連線耗盡也會產生類似的這種錯誤
ORA-12520: TNS: 監聽程式無法找到需要的伺服器型別的可用控制程式碼:專用伺服器選擇了共享連線方式,修改tnsnames.ora檔案


補充一點。在安裝了oracle的機器上,應儘量避免使用“windows最佳化大師”、“魔法兔子”等最佳化工具。
有時會將oracle監聽的登錄檔資訊刪除,解決方法是修改登錄檔。

在HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/下的Services和CurrentControlSet/Services下找到OracleOraHome92TNSListener項,在右邊視窗按右鍵,新建/字串,取名ImagePath。

雙擊新見的建,在“數值資料”項輸入D:oracleora92inTNSLSNR.EXE(根據你自己的實際情況進行修改),確定完成。

再次在服務中雙擊開啟OracleOraHome92TNSListener的服務看到其“可執行檔案的路徑”一欄已經顯示了其正確的值。這時你可以啟動監聽了。

同樣也可以對OracleServiceSID進行操作,不過將ImagePath的值改為D:oracleora92inoracle.exe SID即可。

以上轉自“http://www.itpub.net/644673,1.html”

在實際工作中的遇到的問題

1.計算機改名造成監聽服務啟動出錯

2.防毒軟體、防火牆

防毒軟體和防火牆會對應用程式的執行進行監控,如果ORCLE.EXE,LSNRCTL.EXE等執行檔案沒有得到允許通行,會導致服務直接無法啟動

在江民中可以新增到白名單中允許通行

在卡巴斯基中就遇到ORCLE.EXE沒有允許通行,而直接把檔案給隔離掉了

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-921708/,如需轉載,請註明出處,否則將追究法律責任。

相關文章