ORACLE如何穿越防火牆

2021-04-20 22:29:16 字數 1447 閱讀 8150

應用程式如果要穿越防火牆,一般來說只需要將相應的埠在防火牆上開通,或者將伺服器的ip對映到防火牆的外口即可。但是oracle的埠有點特殊,程式訪問oracle的埠是1521(預設),但是這個埠只是oracle的偵聽器用(network listener),listener 只起乙個中介作用,當客戶連線它時,它根據配置尋找到相應的資料庫例項程序,然後spawned乙個新的資料庫連線,這個連線埠由network listener傳遞給客戶機,此後客戶機就不再和打交道了,即使listener停止了工作。這個新的連線埠是隨機的,不一定是1521或其它指定埠,因而會被防火牆阻止。

根據網上搜尋資料,大致有三種方法:

方法一:

在windows2000的登錄檔中,hkey_local_machinesoftwareoraclehome0下加入字串值:use_shared_socket=true,即可。  

方法二:

1、首先將資料庫例項改為shared server模式;

2、以sysdba登入sqlplus,通過sqlplus生成系統當前的引數設定檔案pfile:create pfile='d:init.ora' from spfile;

3、修改d:init.ora檔案,在其中增加(用editplus編輯):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521)(dispatchers=1)'

4、生成新的spfile:create spfile from pfile='d:init.ora';

5、重啟動資料庫。

6、在防火牆中開放1521埠。  

方法三:

在資料庫端(也可以是另外的機器,但是cman的機器必須和資料庫都在防火牆的後面)安裝了cman的前提下,啟動cman,然後開放防火牆端的1630埠(看cman開的是什麼埠啦),最後在客戶端的tnsnames.ora檔案中新增:

cmantest = (description = (address_list = (address = <- first address is to cman (protocol=tcp) (host=hostname or ip of cman) (port=1610) ) (address= <- second address is to listener (protocol=tcp) (host=hostname or ip of listener) (port=1521) ) ) (connect_data = (sid = sidname)) (source_route = yes)

根據自己的實施操作,方法一好象對9i及10g無用,可能是對8i有用,沒試過;

方法二在9i和10g上是可行的,一直都用這種方法;

方法三在9i和10g上是不行的,沒有做成功過;

如果是linux下的oracle,只要在防火牆中開啟tcp 1521埠就可以連線了。

Oracle服務穿越防火牆

環境 資料庫伺服器在vpn網內,作業系統為w2k3 server sp2,vpn使用了防火牆,資料庫為oracle10g,專用伺服器模式。問題 在vpn外不能連線oracle,伺服器上的防火牆已經關閉,vpn防火牆開啟了1521監聽埠。原因 只是負責監聽請求,預設使用1521埠。客戶端請求連線通過 ...

如何穿越防火牆NAT

如何穿越防火牆nat,首先需要計算機節點可以自動判斷自己的nat狀態,計算機節點內部內建了 判斷邏輯,在外部需要一台stun的伺服器,通過傳送請求後可以計算機節點自己所在nat的情況.在處理full cone nat時由於ip位址和通訊埠都不做限制可以說它在通訊層面的級別和公網節 點是一致的.穿越這...

oracle 穿越防火牆 網閘

方法一 在windows的登錄檔中,hkey local machine software oracle home0 下加入字串值 use shared socket true,即可 方法二 1 首先將資料庫例項改為shared server模式 2 以sysdba登入sqlplus,通過sqlpl...