PL/SQL连接数据库正常,但JDBC却不行的问题

转载:http://bijian1013.iteye.com/blog/1830404

       用JAVA的JDBC连接ORACLE数据库,始终建立不了连接,驱动、用户名、密码都没问题。而奇怪的是用PL/SQL能连接上,查监听也没问题。但也应该不是JAVA的问题,第一:JAVA就是一个连接数据库,没有什么高深的技术,很简单的连接;第二:当前这程序在公司及在上一家客户那都能正常运行,且用的好好的,从来都没这方面的问题;第三:现在有些数据库连接不上,但有些数据库却能连接成功。
      最后发现是URL的问题,我的url是这样的jdbc.url=jdbc:oracle:thin:@192.8.190.1:1521:sznspos。注意这个sznspos,它是一个数据库名,问题也就出在这里。以前不知道,以为这是没问题的。其实不然,对于jdbc来说,这里不应该是数据库名,而应该是数据库的sid_name。对于PLSQL和SQLPlus来说,则只要是数据库名就好。大概以前的sid_name和数据库名一样,而没有注意到。于是,错误写法导致了如下错误:

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
The Connection descriptor used by the client was:
192.8.190.1:1521:sznspos

修正后的url应该是jdbc:oracle:thin:@192.8.190.1:1521:sznspdb,这个sznspdb是数据库的sid_name,链接成功。


附:

查询当前数据库名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件

 

查询当前数据库实例名(sid_name)
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询

 

查询数据库域名
方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter domain
方法三:在参数文件中查询

 

查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:在参数文件中查询

总结:工作中遇到了这个问题,搞确实可行,非常实用,转载一下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值