Oracle 9I 安裝在Win2003上,WIN2003只開放埠1521埠,則遠端telnet 1521埠能通,但是資料庫連接不上。原因如下:
 
Oracle用戶端連接伺服器,首先去找1521監聽埠,伺服器的1521監聽埠再向server process進程發出請求,並返回一個隨機埠,返回給用戶端,用戶端再來連接這個埠。
 
Matalink上提供了三種解決辦法,實際上USE_SHARED_SOCKET 是最有效最方便的。
 
方法一:
 
在windows2003的註冊表中,hkey_local_machine\software\oracle\home0\下加入字串值:
USE_SHARED_SOCKET=TRUE,在伺服器上開啟TCP「1521」埠,重啟ORCALE伺服器即可!
 
方法二:
 
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)
 
另:
安裝完Windows版的Oracle 10G 後,開啟了windows 2003自帶的防火牆,發現在本機可以訪問oracle資料庫,但在遠端不能連接,一直都在報連接逾時。關閉防火牆後,可以用遠端連線Oracle 10G 資料庫。但開啟防火牆後,又不能連接,說明問題出在防火牆上,防火牆開啟TCP 1521埠,仍然不能連接資料庫。解決問題的辦法如下:
1.如果是Oracle 8i ,修改註冊表HKLM\Software\Oracle,增加一個字串值USE_SHARED_SOCKET = TRUE。
2.如果是非Oracle 9i,打開%Oracle_Home%\bin\oracle.key檔,按裡面的路徑HKLM增加一個字串值USE_SHARED_SOCKET = TRUE。
3.增加以後重啟機子讓註冊表生效。
 
如果是Linux下的Oracle,只要在防火牆中打開TCP 1521埠就可以連接了。
 
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()