我已经在我的windows 7 64位操作系统中安装了Oracle 11g Express Edition Release 2,并试图执行JDBC程序,然后我得到了以下错误:

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
    at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
    ... 8 more

当前回答

我遇到这个问题是因为我在任务管理器中杀死了任务到“Oracle”任务。 要修复它,你需要打开cmd ->类型:服务。>找到服务“OracleServiceXE”->右键单击:启动。

其他回答

我找到了这个异常的一些原因。他们是

1)默认为数据库XE的名称。因此url将是“jdbc:oracle:thin:@localhost:1521:XE”。

2)确保OracleServiceXE,OracleXETNSListener正在运行。它将在控制面板\所有控制面板项\管理工具\服务

我遇到这个问题是因为我在任务管理器中杀死了任务到“Oracle”任务。 要修复它,你需要打开cmd ->类型:服务。>找到服务“OracleServiceXE”->右键单击:启动。

当我使用以下代码时,我的问题得到了解决:

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@IPAddress:1521/servicename","userName","Password");

如果您在Oracle SQL Developer中有一个工作连接,请使用连接菜单上的信息来构建您的url,如下图所示:

在上面的例子中,url将是:jdbc:oracle:thin:@ORADEV.myserver.com:1521/myservice

注意,如果您使用的是SID,那么在主机名后面有一个冒号(“:”)而不是斜杠(“/”)。

我通过在TNSNAMES中将“SID”更改为“SERVICE_NAME”来修复这个问题。ora文件。

请查看您的DB是否要求SID或SERVICE_NAME。

干杯