解決Oracle資料庫客戶端隨機埠連線的問題

2021-06-12 04:49:18 字數 1686 閱讀 5286

**

2009-03-06 11:03

要使oracle客戶端能正常連線到設定有防火牆的安裝在windows上的oracle伺服器,單開放乙個1521或自定義的監聽

埠是不夠的。

我們有的時候需要對映埠遠端去訪問oracle 資料庫,這裡有個防火牆的

問題,在unix 上沒有問題,但是在win 平台上卻無法正確訪問,下面的可以解決這個問題,從網上找到有如下資料:

資料一、

近來由於工作需要,在windows xp平台上安裝了oracle9i資料庫作為測試之用,一切正常。但當客戶機連線

伺服器時卻總是超時,我首先想到了防火牆,當我開啟1521埠時,連線操作仍然失敗。我又懷疑網路有問題,用telnet server_ip:1521嘗試,連線被接受,說明1521埠已經被開啟。

沒有辦法,查詢oracle資料後才明白,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發現沒有效果)

資料二、

oracle客戶端連線伺服器,首先去找1521監聽埠,伺服器的1521監聽埠再向server process程序發出請求,並返回乙個隨機埠,返回給客戶端,客戶端再來連線這個埠。 這樣就給伺服器上的防火牆設定帶來了麻煩,這個埠是隨機的,如何開放?

windows 平台上的這個問題成了一大難題,很多

論壇都 有人問,但很少有人能解決。 unix平台不用擔心,系統自動會解決這個問題. matalink上提供了三種解決辦法,實際上use_shared_socket 是最有效最方便的。但經過無數次實現,仍然沒有成功,最後終於發現是oracle 8.1.7的bug 需要打補丁,公升級到oracle 8.1.7.1.2

需要在mts模式下(共享模式) oracle預設是

專用模式。

經 試驗發現,如果不在init檔案中設引數的話,oracle仍然會要求乙個隨機埠和1521埠來共同通訊,只是這個隨機埠,並不隨客戶端會話和登入 的變化而變化,在沒有重啟伺服器時,是固定的。 (試驗發現,在專用模式下,每次連線,oracle伺服器會按+1方式,提供乙個非1521的埠。) 所以,還需要在init.ora檔案的最後加上一條引數:

mts_dispatchers="(address=(protocol=tcp)(host=myoradb)(port=1521))(dispatchers=1)"

設定後要求重新啟動例項(只重啟listener發現沒有效果)

這樣才真正實現只用乙個埠,穿過防火牆。

oracle資料庫客戶端登不了

新安裝的資料庫可以通過後台 連線資料庫即 第一步 sqlplus 第二步 輸入使用者名稱 scott 第三步 輸入密碼 tiger 以上三步可以連線到資料庫,但是通過命令 sqplus scott tiger orcl 不能連線到資料庫,可能報錯 error ora 12514 tns 監聽程式當前...

Oracle,客戶端遠端連線資料庫

用windows下的oracle客戶端工具 net manager遠端連線linux下的oracle資料庫。資料庫端的設定步驟 1.先確定能互相ping通。2.關閉資料庫伺服器的防火牆 root localhost service iptables stop iptables setting cha...

C SQL通用資料庫客戶端

通用sql客戶端通過提供統一的gui訪問介面,這些介面獲取資料可以呼叫標準的dal data access layer 介面定義來實現不同資料庫的資料適配,也就是說使用者只要按照dal定義的資料標準,實現相關的介面,就可以使用sqlclient來展示新型資料庫中的表,檢視,索引等。sqlclient...