连接到通过同一端口侦听的同一机器上的数据库时出现ORA-12505错误



我有一个数据库,它在同一台名为DB1和DB2的机器中复制。

我正在尝试通过SQL Developer连接到这两个数据库。我的窗口上没有安装Oracle客户端。

tnsnames。ORA看起来像这样:

DB1 =
(DESCRIPTION = 
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB1)
)
)
DB2 =
(DESCRIPTION = 
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB2)
)
)

listener.ora如下所示:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtPROC)
(ORACLE_HOME = /product/11.2.0.4/)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver.com)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB1)
(SID_NAME = DB1)
(ORACLE_HOME = /product/11.2.0.4/)
(PRESPAWN_MAX = 50)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB2)
(SID_NAME = DB2)
(ORACLE_HOME = /product/11.2.0.4/)
(PRESPAWN_MAX = 50)
)
)

我可以连接到DB2,但不能连接到DB1。当我从SQL Developer连接到DB1时,我得到了ORA-12505错误。

当我运行$ps -ef | grep pmon时,我得到两个进程-ora_DB1和ora_DB2

当我运行$ps -ef | grep tns时,我得到1个进程-LISTENER

当我运行$lsnrctl status LISTENER时,我得到输出

服务摘要

服务"DB2"有1个实例。实例"DB2",状态为UNKNOWN,有1个用于此服务的处理程序。。。

为什么我无法连接到"DB1"?

为DB2创建另一个侦听器,并在listener.ora文件中用1522更改端口,然后就可以连接了。此外,您的SID_LIST_LISTNER名称也是相同的。您有2个SID_LIST_LISTENER,它们查找DB1和DB2,但名称相同。更改它们的名称,如SID_LIST_LISTENER1和SID_LIST-LISTENER2。

不要忘记重新启动侦听器

(可选(您不需要添加另一个SID_LIST_LISTNER。如果你愿意,你可以像那样在默认的SID_LIST_LISTNER中添加一个SID_DESC;

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB1)
(SID_NAME = DB1)
(ORACLE_HOME = /product/11.2.0.4/)
(PRESPAWN_MAX = 50)
)
(SID_DESC =
(GLOBAL_DBNAME = DB2)
(SID_NAME = DB2)
(ORACLE_HOME = /product/11.2.0.4/)
(PRESPAWN_MAX = 50)
)
)

感谢大家的帮助!

这与动态注册有关。在listener.ora文件的第一行,它被设置为OFF。一旦被评论掉,一切都很好。端口保持不变,不需要通过另一个端口进行侦听。

此外,很明显,当我运行$lsnrctl状态LISTENER时,由于动态注册被关闭,我得到了状态为UKNOWN的输出

Service "DB2" has 1 instance(s). Instance "DB2", status UNKNOWN, has 1 handler(s) for this service...

因此,同一台机器上的2个数据库可以配置为通过同一端口侦听。

相关内容

  • 没有找到相关文章

最新更新