時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
Oracle服務(wù)端口方面會(huì)有很多的問(wèn)題,下面就將為您介紹在防火墻上開(kāi)放Oracle服務(wù)端口的方法,希望對(duì)您學(xué)習(xí)Oracle服務(wù)端口方面能有所幫助。
要使Oracle客戶端能正常連接到設(shè)置有防火墻的安裝在windows上的Oracle服務(wù)器,單開(kāi)放一個(gè)1521或自定義的監(jiān)聽(tīng)端口是不夠的。
我們有的時(shí)候需要映射端口遠(yuǎn)程去訪問(wèn)Oracle數(shù)據(jù)庫(kù),這里有個(gè)防火墻的問(wèn)題,在unix上沒(méi)有問(wèn)題,但是在win 平臺(tái)上卻無(wú)法正確訪問(wèn),下面的可以解決這個(gè)問(wèn)題,:
近來(lái)由于工作需要,在Windows XP平臺(tái)上安裝了Oracle9i數(shù)據(jù)庫(kù)作為測(cè)試之用,一切正常。但當(dāng)客戶機(jī)連接服務(wù)器時(shí)卻總是超時(shí),我首先想到了防火墻,當(dāng)我打開(kāi)1521端口時(shí),連接操作仍然失敗。我又懷疑網(wǎng)絡(luò)有問(wèn)題,用telnet server_ip:1521嘗試,連接被接受,說(shuō)明1521端口已經(jīng)被打開(kāi)。
沒(méi)有辦法,查詢Oracle資料后才明白,network listener只起一個(gè)中介作用,當(dāng)客戶連接它時(shí),它根據(jù)配置尋找到相應(yīng)的數(shù)據(jù)庫(kù)實(shí)例進(jìn)程,然后spawned一個(gè)新的數(shù)據(jù)庫(kù)連接,這個(gè)連接端口由network listener傳遞給客戶機(jī),此后客戶機(jī)就不再和打交道了,即使listener停止了工作。這個(gè)新的連接端口是不可預(yù)知的,因而會(huì)被防火墻阻止。
Windows Socket2 規(guī)范有一個(gè)新的特性,就是Shared Socket,所謂共享套接字是指一個(gè)進(jìn)程共享另一個(gè)進(jìn)程的套接字(詳見(jiàn)MSDN相關(guān)參考)。如果讓network listener與數(shù)據(jù)庫(kù)服務(wù)進(jìn)程共享套接字,那么連接端口就不會(huì)變化。
如何設(shè)置Shared Socket?
在注冊(cè)表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0上新建一個(gè)字符串值:USE_SHARED_SOCKET=true。如果安裝了多個(gè)目錄,則每個(gè)類似的目錄都要設(shè)置:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEx (x目錄編號(hào))
設(shè)置后要求重新啟動(dòng)實(shí)例(只重啟listener發(fā)現(xiàn)沒(méi)有效果)
Oracle客戶端連接服務(wù)器,首先去找1521監(jiān)聽(tīng)端口,服務(wù)器的1521監(jiān)聽(tīng)端口再向server process進(jìn)程發(fā)出請(qǐng)求,并返回一個(gè)隨機(jī)端口,返回給客戶端,客戶端再來(lái)連接這個(gè)端口。 這樣就給服務(wù)器上的防火墻設(shè)置帶來(lái)了麻煩,這個(gè)端口是隨機(jī)的,如何開(kāi)放?
windows平臺(tái)上的這個(gè)問(wèn)題成了一大難題,很多論壇都有人問(wèn),但很少有人能解決。unix平臺(tái)不用擔(dān)心,系統(tǒng)自動(dòng)會(huì)解決這個(gè)問(wèn)題. Matalink上提供了三種解決辦法,實(shí)際上USE_SHARED_SOCKET是最有效最方便的。但經(jīng)過(guò)無(wú)數(shù)次實(shí)現(xiàn),仍然沒(méi)有成功,最后終于發(fā)現(xiàn)是Oracle 8.1.7的bug 需要打補(bǔ)丁,升級(jí)到Oracle 8.1.7.1.2
需要在MTS模式下(共享模式) Oracle默認(rèn)是專用模式。
經(jīng)試驗(yàn)發(fā)現(xiàn),如果不在init文件中設(shè)參數(shù)的話,Oracle仍然會(huì)要求一個(gè)隨機(jī)端口和1521端口來(lái)共同通訊,只是這個(gè)隨機(jī)端口,并不隨客戶端會(huì)話和登錄的變化而變化,在沒(méi)有重啟服務(wù)器時(shí),是固定的。(試驗(yàn)發(fā)現(xiàn),在專用模式下,每次連接,oracle服務(wù)器會(huì)按+1方式,提供一個(gè)非1521的端口。)所以,還需要在init.ora文件的最后加上一條參數(shù):
mts_dispatchers="(address=(protocol=tcp)(host=myoradb)(port=1521))(dispatchers=1)"
設(shè)置后要求重新啟動(dòng)實(shí)例。
關(guān)鍵詞標(biāo)簽:Oracle,服務(wù)端口
相關(guān)閱讀
熱門(mén)文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法