PL/SQL 用戶登錄出現ORA-12170:TNS:連接超時 等問題時,建議參考如下解決方案。

1.cmd ------ ping ip地址
查看網絡問題,能否ping通ip地址;
2.cmd ------ tnsping ip地址(或服務器的實例名SID
①如果出現"TNS-12535:操作超時" 提示,可能是服務器端防火牆沒有關閉,關閉防火牆即可;
②如果出現下圖顯示,則證明沒有問題;

3.cmd ------ netstat - na 查看1521端口是否關閉
①如果顯示關閉,則需要在防火牆設置中將1521端口設為例外;
②如果出現下圖顯示,則證明沒有問題;

4.cmd ------ lsnrctl status (重點:大部分錯誤集中於此)
lsnrctl是listener-control 監聽器的縮寫,查看監聽的狀態
當輸入命令后出現下圖所示

或出現監聽不支持服務等文字,基本可以確定我們安裝目錄product\11.2.0\dbhome_1\NETWORK\ADMIN 下的tnsnames.ora文件或listener.ora文件出現問題。
①檢查tnsnames.ora文件,查看代碼中HOST后面對應的是不是你的IP地址,如果不是修改為正確的IP 即可。(連接無線網絡的多注意,因為每次的IP是隨機分配的)如下顯示為正確的文件內容
-
LISTENER_ORCL =
-
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
-
-
-
ORACLR_CONNECTION_DATA =
-
(DESCRIPTION =
-
(ADDRESS_LIST =
-
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
-
)
-
(CONNECT_DATA =
-
(SID = CLRExtProc)
-
(PRESENTATION = RO)
-
)
-
)
-
-
ORCL =
-
(DESCRIPTION =
-
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.245.68)(PORT = 1521))
-
(CONNECT_DATA =
-
(SERVER = DEDICATED)
-
(SERVICE_NAME = orcl)
-
)
-
)
②檢查listener.ora文件,listener.ora文件我們需確保文件中至少存在如下代碼
-
LISTENER =
-
( DESCRIPTION_LIST =
-
( DESCRIPTION =
-
( ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
-
( ADDRESS = (PROTOCOL = TCP)(HOST = UPAS-20181130MI112)(PORT = 1521))
-
)
-
)
如果lsnrctl status命令下出現監聽不支持服務問題我們還需要在上面的基礎上加一段,如下為完整代碼
-
SID_LIST_LISTENER =
-
( SID_LIST =
-
( SID_DESC =
-
( GLOBAL_DBNAME = ORCL)
-
( SID_NAME = ORCL)
-
)
-
)
-
-
-
LISTENER =
-
( DESCRIPTION_LIST =
-
( DESCRIPTION =
-
( ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
-
( ADDRESS = (PROTOCOL = TCP)(HOST = UPAS-20181130MI112)(PORT = 1521))
-
)
-
)
