当我想在SQLDeveloper中连接到我的数据库时,我得到一个TNS监听器错误消息。 当我在我的服务中停止OracleOraClient11g_home1_32bitTNSListener并重试连接时,它可以正常工作。然后OracleXETnsListener正在运行。 如何避免停止另一个可以启动的一个监听器?
我有两个配置端口1521的listener.ora文件。所以我认为它与端口有关?
答案 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上更改端口,如果这是您配置它的方式。