用jdbc 连oracle 出现异常,运行pl/sql能连上oracle ,连别人的oracle也可以,不知道我机器哪里的毛病,求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用jdbc 连oracle 出现异常,运行pl/sql能连上oracle ,连别人的oracle也可以,不知道我机器哪里的毛病,求相关的知识,希望对你有一定的参考价值。

window7系统,用eclipse,jdk1.6,oracle 10g,三星本,急!!!在线等!!!
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.weikun.A.Test.testFunctionByCursor(Test.java:27)
at com.weikun.A.Test.main(Test.java:17)
java.lang.NullPointerException
at com.weikun.A.Test.testFunctionByCursor(Test.java:47)
at com.weikun.A.Test.main(Test.java:17)
java代码没问题 就不粘了 哪位大侠救救在下把......

1.有可能是你的侦听器没有启动
2.1521端口被防火墙拦截了。
3.你创建的侦听里是真实的IP,而你的程序里用了localhost追问

Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","hr","yst");
我把127.0.0.1 改成我的ip 192.168.1.88了 错误提示变成这样了
java.sql.SQLException: ORA-06550: 第 1 行, 第 13 列:
PLS-00201: 必须声明标识符 'F_GET_SALARY'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

追答

conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","hr","yst");
System.out.println(conn.isClose());
--------
在这里你输出一下看看,如果是false那就是连接上了。
--------

PLS-00201: 必须声明标识符 'F_GET_SALARY'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored

现在这些错误,我觉得是你调用SQL时产生的了。已尼不是连接错误了。

追问

是false 错误还是那样 我都粘上 大侠看看..java.sql.SQLException: ORA-06550: 第 1 行, 第 13 列:
PLS-00201: 必须声明标识符 'F_GET_SALARY';ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignoredat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)

追答

只能判断出来
F_GET_SALARY
这个是错误的,你应该没有声明就使用了,不知道它存在于那里。
把你调用代码贴出来吧,是执行的SQL,还是在调用存储过程

参考技术A 1.确认class12.jar包是不是被引入到lib里。
2.检查你的jdbc中 ip地址,sid,端口,用户名和密码是不是正确?
3.你的机器是不是没连局域网啊?若没有,jdbc配置的ip地址就用localhost好了。追问

lib下是ojdbc14.jar ip sid 什么的都对的 用localhost也没好使 我昨天上网查的

追答

pl/sql客户端能连上你本地的数据库,就证明你的数据库没问题。问题的原因,要不就是你的sid不正确,要不就是你的jdbc驱动包不正确,别的没什么原因。

追问

java代码没问题 在别人的机器试过了 我们的java软件都是一样的 (SID_NAME = PLSExtProc)
....唉 郁闷....

参考技术B 1、如果修改过IP或者主机名,检查%ORACLE_HOME%/network/admin/tnsnames.ora
2、去%ORACLE_HOME%/network/admin/目录下删掉sqlnet.ora可能配置了限制连接追问

tnsnames.ora应该没错 我在网上也没少查 ip SID 什么的 都 是对的,
sqlnet.ora 删了 还是没好使啊 大侠 还可能是哪里的事.......

追答

sqlnet.ora 删除后重启一下oracle.

追问

对 我直接重启电脑了 才试的 没好使....

追答

netstat -an|more看看1521端口启动了没

oracle 存储过程 权限问题 PL/SQL: ORA-01031: 权限不足

我是在toad 里面运行存存储过程的时候 出现的问题
单独的运行 可以 就是存储过程出现 权限不足的问题
怎么才能解决 在线等 。。望知道的朋友告之

权限不足就是说你还没有连接到服务器,或者你连接过了又断开了,再次连接上了就该不会出现权限问题。追问

链接上了 还是那个问题 是不是建表的时候 权限有问题

参考技术A 你是不是你当前的登录用户没有使用存储过程的权限呢?
先试一下sysdba用户下会不会出现这个问题,如果也这样那就GRANT权限一下本回答被提问者和网友采纳
参考技术B 存储过程中有涉及到其他用户的表吗? 参考技术C 登陆的用户没有执行存储过程的权限? 或者执行存储过程的某条语句登陆的用户没权限? 参考技术D 你们是不是用了 context 文件连接,
先drop ,然后重新建立也许就会好了

以上是关于用jdbc 连oracle 出现异常,运行pl/sql能连上oracle ,连别人的oracle也可以,不知道我机器哪里的毛病,求的主要内容,如果未能解决你的问题,请参考以下文章

oracle 存储过程 权限问题 PL/SQL: ORA-01031: 权限不足

如何使用 jdbc 连接到 oracle

jdbc是啥,和PL/SQL developer是啥关系?

求救:jdbc_odbc链接oracle数据库失败,代码如下,运行后,显示:常连接到数据库。 但没有抓到资料。

无法在 Linux 上通过 JDBC 将 Sqoop 连接到 Oracle TimesTen

Oracle中RAISE异常