两个Oracle TNS监听器

时间:2015-11-19 20:23:19

标签: oracle oracle11g tns

当我想在SQLDeveloper中连接到我的数据库时,我得到一个TNS监听器错误消息。 当我在我的服务中停止OracleOraClient11g_home1_32bitTNSListener并重试连接时,它可以正常工作。然后OracleXETnsListener正在运行。 如何避免停止另一个可以启动的一个监听器?

我有两个配置端口1521的listener.ora文件。所以我认为它与端口有关?

two tns listener

enter image description here

1 个答案:

答案 0 :(得分:2)

在任何操作系统上,不允许有2个进程在同一网络接口上侦听同一端口(在本例中为1521)(我假设您只有1个网络接口)。否则,操作系统将如何知道将端口连接交给哪个进程!

正如Alex所说,你不需要运行多个监听器。禁用其中一个服务并编辑指向正确服务的listener.ora - 默认情况下,它位于oracle_home / network / admin目录下,但如果您更改了系统上的TNS_ADMIN变量值,它将在那里。如果您愿意,可以为SID /服务名称添加另一个侦听器,但在Windows的情况下,它将自动获取系统上运行的所有实例。

万一你确实想要运行2个监听器(例如,如果你有一个非常旧的RDBMS版本,你只需要这样做)你可以编辑一个listener.ora文件并将端口更改为1522一个例子如下:

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

然后将连接的tnsnames.ora更改为指向该端口,如下所示:

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

或者使用SQLDeveloper,您可以使用TNS直接选项直接在IDE上更改端口,如果这是您配置它的方式。