【问题标题】:Two Oracle TNS Listener两个 Oracle TNS 监听器
【发布时间】:2015-11-19 20:23:18
【问题描述】:

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

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

【问题讨论】:

  • 是的;但是为什么要运行两个侦听器?你得到什么错误?
  • 查看更新。当我终止正在运行的 oracleClient11g TNS 侦听器时,它可以工作。然后 XETNS 监听器正在运行

标签: oracle oracle11g tns


【解决方案1】:

在任何操作系统上,都不允许有 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 上更改端口(如果您是这样配置的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多