標題很唬人,最後很崩潰。。
下午在伺服器(win2003 64bit)上建好oracle執行個體,在用戶端本地配置好tnsname.ora裡的服務名。
testxgd =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testxgd)
)
)
結果plsql連不上。
開啟伺服器上的監聽程式:
開啟遠程監聽服務:
lsnrctl start
關閉遠程監聽服務:
lsnrctl stop
查看監聽狀態:
lsnrctl status
伺服器本地可以測試:
c:>tnsping testxgd
如果用戶端本地裝了oracle用戶端,可執行遠程測試:
c:>tnsping 192.168.1.132:1521/testxgd
結果因為伺服器本地測試一直失敗,然後苦苦研究D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目錄下的三個ora設定檔,各種改。
還是不行。最後把三個檔案還改成原來的配置,如下:
tnsname.ora:
testxgd =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = svctag-8d8bk2x)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testxgd)
)
)
listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = svctag-8d8bk2x)(PORT = 1521))
)
)
sqlnet.ora:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
特此記錄下來,以防以後忘了亂改。。
突然想起了防火牆。。於是跑到組裡其他oracle伺服器上一看,防火牆果然都關了,雖然這不太安全,但是。。顧不了那麼多了。。
於是把132的防火牆狠狠的關了,也不選擇過濾規則了。。結果一連,鬆鬆的就成功了!
雖然此時本地tnsping testxgd還是報無效的TNS 03505 :無法解析名稱的錯誤。補充一下,後來我把執行個體刪除,重建立了一下,就完美了。
好傷。。
結論:不要輕易把問題想得很複雜,先從常識入手。防火牆。。。