2014-03-31 47 views
2

我已经在Fedora 20虚拟机上安装了Oracle 11g XE,配置了它并设置了环境变量(运行oracle_env.sh)。尝试通过jdbc将Eclipse与数据库连接时出现此错误,使用此字符串"jdbc.databaseurl=jdbc:oracle:thin:@192.168.88.134:1521:XE"ORA-12505,TNS:侦听器当前不知道连接描述符中给出的SID。 Eclipse和Fedora 20通过JDBC

我可以通过SQL * Plus(sqlplus/as sysdba)连接到虚拟机中的数据库。

$ORACLE_SID变量没问题(XE)。我已经尝试停止并启动侦听器,然后启动数据库,并使用alter system register;命令。

也静态注册数据库没有成功(我不能认为我没有错误这样做,所以如果有人认为这可以解决我的问题,我会再试一次)。

这里是listener.ora文件:

# listener.ora Network Configuration File: 

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) 
     (PROGRAM = extproc) 
    ) 
) 



LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.134)(PORT = 1521)) 
    ) 
) 

DEFAULT_SERVICE_LISTENER = (XE) 

而且tnsnames.ora文件:

# tnsnames.ora Network Configuration File: 

XE = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.134)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

EXTPROC_CONNECTION_DATA = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
     (SID = PLSExtProc) 
     (PRESENTATION = RO) 
    ) 
) 

而且lsnrctl status

LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 31-MAR-2014 01:22:35 

Copyright (c) 1991, 2011, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for Linux: Version 11.2.0.2.0 - Production 
Start Date    30-MAR-2014 22:41:35 
Uptime     0 days 2 hr. 41 min. 1 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Default Service   XE 
Listener Parameter File /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora 
Listener Log File   /u01/app/oracle/product/11.2.0/xe/log/diag/tnslsnr/192/listener/alert/log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.88.134)(PORT=1521))) 
Services Summary... 
Service "PLSExtProc" has 1 instance(s). 
    Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 

我几乎可以肯定的是,问题是,监听者不知道数据库。上面的命令应该显示,除了它已经具备了,像

Service XE has 1 instance. 
Instance "XE", status READY, has 1 handler for this service 

...但它没有,我不知道如何解决这个问题。

我是新来的,主要是在Linux上,所以我会很感谢你提出的解决方案的每一个细节。

+0

您的虚拟机是否有多个IP地址,并且它的名称(从'uname -n')解析到'/ etc/hosts'中并通过'dig'进行解析?只需检查一下,你可以从SQL * Plus会话中发出'alter system register',然后再次检查'lsnrctl services'输出;并检查'show parameters local_listener'是否显示空白值? –

+0

据我所知它只有一个IP地址。我尝试了“更改系统寄存器”而没有成功,监听器状态保持不变。 – Tony

+0

我刚刚看到你试图注册,对不起。但是你的机器名是什么(来自'uname'),以及'/ etc/hosts'对这个名字有什么作用? –

回答

6

这听起来像你的数据库试图注册使用错误的IP地址来联系侦听器。您的监听器被配置为侦听192.168.88.134,但可能数据库将假定为localhost(127.0.0.1),或者如果配置发生更改,则可能会使用旧的IP值。

默认情况下,数据库将尝试注册服务器的外部主机名(the default when local_listener is blank),但您可能会从中获得意想不到的值 - 那么/etc/hosts中机器名称的含义是什么。无论如何,注册似乎失败了。

你可以明确地告诉DB使用实际监听地址注册:

alter system set local_listener = '192.168.88.134:1521' scope=memory; 
alter system register; 

如果这样的作品和lsnrctl services现在显示XE,然后重复set命令scope=both使它贴在接下来的DB重启。

+0

我试过了,现在“lsnrctl status”最终显示XE,并且JDBC连接完美工作。实际上,这是有道理的,因为我必须更改侦听器正在侦听的IP地址以使其正常工作。奇怪的是,在我的搜索中我没有看到任何有关这方面的信息。非常感谢你! – Tony

+0

哇,这救了我 – taruntejae

0

在你的listener.ora:

(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.88。134)(PORT = 1521))

默认情况下通常这里有一个主机名而不是IP地址。你做了一些特别的事情,以便你在那里拥有那个IP(192.168.88.134)?

2

故障排除:

  1. 删除的listener.ora(此初始设置,你不需要它做一个备份。)
  2. LSNRCTL重装

将XE添加到您的SID_LIST中,例如:

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = XE) 
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) 
    )  
    (SID_DESC = 
     (SID_NAME = PLSExtProc) 
     (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) 
     (PROGRAM = extproc) 
    ) 
) 

lsnrctl加载

检查警报日志中的消息。

+0

谢谢,它解决了我与Sql Developer的问题。 –

相关问题