Oracle 连接数据库的几种方法以及sid与server_name的区别

本文解析了在Java通过JDBC Thin Driver连接Oracle数据库时,使用SID和Service_Name的区别,强调了Service_Name的灵活性和集群环境下的优势,并提供了三种连接格式实例。
摘要由CSDN通过智能技术生成

jdbc连接数据库使用sid和service_name的区别

问题描述:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: 

10.xx.xxx.84:1521:xxxx 

发现问题: oracle数据的tnsnames.ora中配置的是:SERVICE_NAME =xxxx。经过查询发现,是jdbc中的连接串使用的不正确。

Java JDBC Thin Driver 连接 Oracle有三种方法,如下:

格式一: Oracle JDBC Thin using a ServiceName:

jdbc:oracle:thin:@//host>:port>/service_name>

//注意服务名,使用"/",这是与sid的区别

eg: jdbc:oracle:thin:@//192.168.2.1:1521/XE

注意这里的格式,@后面有//, 这是与使用SID的主要区别。 这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。

格式二: Oracle JDBC Thin using an SID:

jdbc:oracle:thin:@host>:port>:SID> //sid 如orcl 等使用“:”

Example: jdbc:oracle:thin:@192.168.2.1:1521:X01A

Note: Support for SID is being phased out. Oracle recommends that users switch over to usingservice names.

格式三:Oracle JDBC Thin using a TNSName:

jdbc:oracle:thin:@TNSName> "监听的名字,就是配置的TNS的名字" Example: jdbc:oracle:thin:@GL Note: Support for TNSNames was added in the driver release 10.2.0.1

Service_name 和Sid的区别

  Service_name:该参数是由oracle8i引进的。在8i以前,使用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。Sid是数据库实例的名字,每个实例各不相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher-qin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值