Oracle 11g Express 错误:ORA-12505,TNS:侦听器当前不知道连接描述符中给出的 SID



我在Linux Centos 6.4上托管的Oracle 11g Express上遇到了问题。 此服务器从一个位置重新定位到另一个位置,此重新定位会更改服务器的 IP。我们已经更改了 tnsname.ora 和 listerner.ora 文件中的 IP。在这些更改之后,当我们尝试从服务器连接到数据库实例时,我们收到错误"连接到空闲实例"。如果我们尝试使用 SQL 开发人员从客户端连接,则会收到错误"状态:失败 - 测试失败:侦听器拒绝连接并出现以下错误:ORA-12505、TNS:侦听器当前不知道连接描述符中给出的 SID"。

我们已经多次重新启动此服务器和数据库(通过Oracle菜单下的"启动和停止数据库"选项),但仍然遇到相同的错误。

请您帮助解决此问题。

通过sqlplus user/passwd(而不是sqlplus user/passwd@TNSALIAS)的本地连接不受IP地址或tnsnames.ora内容的影响。它也根本不需要侦听器,侦听器可以在listener.ora中停止或根本不定义。换句话说,你在这里做错了什么。

我的猜测是,你被误导认为你已经启动了数据库,而实际上它并没有启动。检查是否有一个名为 ora_MYORACLE_pmon 的进程。

此外,文件tnsname.ora无关紧要;甲骨文只检查tnsnames.ora .

我们解决了这个问题,实际上我们在某些文件中缺少服务器地址,它仍然引用旧地址。

initXE.ora 缺少本地侦听器参数,然后我们将此参数添加到其中,它开始工作。

可能这不是通用的解决方案,但它在我们的例子中有效。

如果侦听器最初配置了ALTER SYSTEM命令(如 ALTER SYSTEM SET LOCAL_LISTENER='';),并且该命令指定了 SCOPE=MEMORY 选项,或者如果SCOPE保留为默认值并且数据库使用 pfile 启动,则会出现此行为。

要修复此问题,请重新发出重新启动之前的所有ALTER SYSTEM命令。 或者至少一个标识LOCAL_LISTENER. 并设置SCOPE=BOTH.

相关内容

最新更新