2015-11-19 128 views
0

當我想在SQLDeveloper中連接到我的數據庫時,我收到一個TNS偵聽器錯誤消息。 當我在我的服務中停止OracleOraClient11g_home1_32bitTNSListener並重試連接時,它工作正常。然後OracleXETnsListener正在運行。 如何避免停止另一個可以啓動的偵聽器?兩個Oracle TNS偵聽器

我有兩個listener.ora文件,其中端口1521的配置。所以我認爲它與端口有關?

two tns listener

enter image description here

+0

是;但爲什麼你想運行兩個聽衆?你會得到什麼錯誤? –

+0

請參閱更新。當我終止正在運行的oracleClient11g TNS偵聽器時,它可以工作。那麼XETNS Listener正在運行 –

回答

2

在任何操作系統上,你不準有2個進程監聽同一端口上(在這種情況下,1521)在同一個網絡inteface(我要去承擔你只有1個網絡接口)。否則操作系統將如何知道將端口連接交給哪個進程!

正如Alex所提到的,您不需要運行多個偵聽器。禁用其中一個服務並編輯指向正確服務的listener.ora - 默認情況下,這位於oracle_home/network/admin目錄下,但是如果您已更改系統上的TNS_ADMIN變量值,它將在那裏。如果您願意,您可以爲SID /服務名稱添加另一個偵聽器,但在Windows的情況下,它將自動拾取系統上運行的所有實例。

以防萬一你真的想運行2個監聽器(例如,如果你有一個非常老的RDBMS版本,你只需要這樣做),你可以編輯一個listener.ora文件並改變端口來說1522下面是一個例子:直接

SCN = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = ROBS)(PORT = 1522)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = SCN) 
    ) 
) 

或用的SQLDeveloper您可以更改端口上:

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = ROBS)(PORT = 1522)) 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
    ) 
) 

之後再更改的tnsnames.ora的連接指向該端口像這樣帶有TNS直接選項的IDE,如果這是您配置的方式。

相關問題