Oracle:拒绝连接监听器错误

问题描述:

我尝试使用Java连接Oracle数据库。Oracle:拒绝连接监听器错误

我收到以下错误:

Cannot create PoolableConnectionFactory (Listener refused the connection with the following error: 
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 

我相信,我的Java代码是好的,因为我成功了早期连接PostgresDB。

这是我context.xml

<Resource  name="jdbc/TestDB" 
       auth="Container" 
       type="javax.sql.DataSource" 
       username="admin" 
       password="password" 
       driverClassName="oracle.jdbc.driver.OracleDriver" 
       url="jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:cuat/"/> 

也许我的连接URL是在一个错误的格式。提前致谢。

+0

你可以发布创建连接的代码吗? 'context.xml'本身不足以进行调试。 – vish4071

该URL看起来正确。您收到的错误是您的计算机上的tns监听器(查找名为tnsnames.ora的文件)与您的数据库不完全一致。刷新这个文件,连接应该工作。

+0

对不起,我不知道它。连接oracle数据库在不同的pc上。是否需要创建tnsname.ora?必须放置在哪里? – needreebas

侦听器未维修数据库SID或服务名为“cuat”

检查监听器,并确保你有名字吧。

在服务器上,您可以针对服务列表运行“lsnrctl status”。

+0

相同的网址和sid我在db visualizer IDE中提供,我可以连接数据库。但不能通过应用程序。 – needreebas

+0

数据库不在我的机器,那么我有多大的文件。我只是试图通过应用程序连接。还可以通过ide我能够连接 – needreebas

+0

什么版本的Oracle,11或12?在dbvisualizer – thatjeffsmith

如果我没记错,Oracle会区分服务名称和SID-s(标识符)。您可以尝试

URL = “的jdbc:神谕:薄:@ XX.XX.XX.XX:1521/cuat”(如果cuat是一个服务名称,而不是一个SID,使用/,而不是:)

无论如何,请检查tnsnames.ora文件。

+0

中发布连接属性的屏幕截图,因为cuat是sid – needreebas

+0

那么,tnsnames.ora文件中有什么? (服务名称和SID-s应该在那里声明) –

+0

一些工具,特别是与Oracle9兼容的工具,对服务名称/ SID差异不是很敏感,但它对于精简驱动程序来说很重要。只要尝试其他网址格式,看看它是否有效。 –