我在Linux Centos 6.4上托管Oracle 11g Express时遇到问题。此服务器从一个地方重新定位到另一个地方,此重定位会更改服务器的IP。 我们更改了tnsname.ora和listerner.ora文件中的IP。在我们尝试从服务器连接到数据库实例的这些更改之后,我们收到错误“已连接到空闲实例”。如果我们尝试使用SQL开发人员从客户端连接,我们会收到错误“状态:失败 - 测试失败:监听器拒绝连接时出现以下错误:ORA-12505,TNS:监听器当前不知道连接描述符中给出的SID ”
我们多次重启此服务器和数据库(通过Oracle菜单下的选项Start和Stop数据库)多次,但我们仍然遇到同样的错误。
请求您帮助解决此问题。
答案 0 :(得分:0)
通过sqlplus user/passwd
(而不是sqlplus user/passwd@TNSALIAS
)的本地连接不受IP地址或tnsnames.ora
内容的影响。它根本不需要监听器,监听器可以在listener.ora
中完全停止或不定义。换句话说,你在这里做错了。
我的猜测是,你误以为你已经启动了数据库,而事实上它并没有启动。检查您是否有名为ora_MYORACLE_pmon
的进程。
文件tnsname.ora
也无关紧要; Oracle仅检查tnsnames.ora
。
答案 1 :(得分:0)
我们解决了这个问题,实际上我们在某些文件中缺少服务器地址,它仍然是旧地址。
initXE.ora缺少本地侦听器参数,然后我们将此参数添加到它并开始工作。
可能这不是一般化的解决方案,但它适用于我们的情况。
答案 2 :(得分:0)
如果侦听器最初配置了ALTER SYSTEM
ALTER SYSTEM SET LOCAL_LISTENER='';
命令,并且该命令指定了SCOPE=MEMORY
option或者SCOPE
保留为默认值,则会出现此行为。数据库是用pfile启动的。
要解决此问题,请在重新启动之前重新发出所有ALTER SYSTEM
命令。或者至少有一个标识LOCAL_LISTENER
。并设置SCOPE=BOTH
。