要排除用戶端與伺服器端的串連問題,首先檢查用戶端配置是否正確(用戶端配置必須與資料庫伺服器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的串連問題:
1、 ORA-12541: TNS: 沒有監聽器
顯而易見,伺服器端的監聽器沒有啟動,另外檢查用戶端IP地址或連接埠填寫是否正確。啟動監聽器(可能要在Oracle使用者下啟動):
$ lsnrctl start
或
C:\lsnrctl start
2、 ORA-12500: TNS: 監聽程式無法啟動專用伺服器處理序
對於Windows而言,沒有啟動Oracle執行個體服務。啟動執行個體服務:
C:\oradim –startup -sid myoracle
3、 ORA-12535: TNS: 操作逾時
出現這個問題的原因很多,但主要跟網路有關。解決這個問題,首先檢查用戶端與服務端的網路是否暢通,如果網路連通,則檢查兩端的防火牆是否阻擋了串連。
4、 ORA-12154: TNS: 無法處理服務名
檢查輸入的服務名與配置的服務名是否一致。另外注意產生的本地服務名檔案(Windows下如D:\oracle\ora92\network\admin\tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)裡每項服務的首行服務名稱前不能有空格。
5、 ORA-12514: TNS: 監聽進程不能解析在串連描述符中給出的 SERVICE_NAME
開啟Net Manager,選中服務名稱,檢查服務識別欄裡的服務名輸入是否正確。該服務名必須與伺服器端監聽器配置的全域資料庫名一致。
6、 Windows下啟動監聽服務提示找不到路徑
用命令或在服務視窗中啟動監聽提示找不到路徑,或監聽服務啟動異常。開啟註冊表,進入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener項,查看ImagePath字串項是否存在,如果沒有,設定值為D:\oracle\ora92\BIN\TNSLSNR,不同的安裝路徑設定值做相應的更改。這種方法同樣適用於Oracle執行個體服務,同上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE項,查看ImagePath字串項是否存在,如果沒有,則建立,設定值為d:\oracle\ora92\binORACLE.EXE MYORACLE。
以上是Oracle用戶端串連伺服器端常見的一些問題,當然不能囊括所有的串連異常。解決問題的關鍵在於方法與思路,而不是每種問題都有固定的答案。
7、TNS-01155: Incorrectly specified SID_LIST_LISTENER parameter in LISTENER.ORA
TNS-01155: Incorrectly specified SID_LIST_LISTENER parameter in LISTENER.ORA 這個錯誤的原因是我們更改了listener.ora檔案:所以導致lsnrctl無法啟動oracle 1521連接埠。具體解決辦法如下:
修改$ORACLE_HOME/network/admin/listener.ora(下面是改好的).(曾經按照網上的改法修改後,仍然不能解決此問題,最後只能參照網上的改法,以及 $ORACLE_HOME/network/admin/samples/listener.ora檔案的文法規則變更後才得以解決此問題)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
# (SID_NAME = PLSExtProc)
(ORACLE_HOME = /usr/oracle_db/product/10.2.0/)
(SID_NAME = orcl)
# (PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
)