ORA-12170 Windows上Oracle開放防火牆埠問題

dukewyh發表於2013-07-12
    伺服器加了一個之後,連線報:ORA-12170:TNS:連線超時。在防火牆上開放服務要使Oracle客戶端能正常連線到設定有防火牆的上的Oracle伺服器,單開放一個1521或自定義的監聽埠是不夠的。
    我們有的時候需要對映埠遠端去訪問Oracle 資料庫,這裡有個防火牆的問題,在unix 上沒有問題,但是在win 平臺上卻無法正確訪問,下面的可以解決這個問題,從網上找到有如下資料:
    近來由於工作需要,在Windows XP平臺上安裝了Oracle9i資料庫作為測試之用,一切正常。但當客戶機連線時卻總是超時,我首先想到了防火牆,當我開啟1521埠時,連線操作仍然失敗。我又懷疑網路有問題,用telnet server_ip:1521嘗試,連線被接受,說明1521埠已經被開啟。
    network listener 只起一箇中介作用,當客戶連線它時,它根據配置尋找到相應的資料庫例項程式,然後spawned一個新的資料庫連線,這個連線埠由network listener傳遞給客戶機,此後客戶機就不再和打交道了,即使listener停止了工作。這個新的連線埠是不可預知的,因而會被防火牆阻止。
   Windows Socket2 規範有一個新的特性,就是Shared Socket, 所謂共享套接字是指一個程式共享另一個程式的套接字(詳見MSDN相關參考)。如果讓network listener與資料庫服務程式共享套接字,那麼連線埠就不會變化。
    如何設定Shared Socket?

在登錄檔:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0上新建一個字串值:USE_SHARED_SOCKET=TRUE。如果安裝了多個目錄,則每個類似的目錄都要設定:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEx (x目錄編號)

    設定後請重新啟動例項和listener

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

相關文章