Oracle连接串解读

Posted by Futari on 2024-07-02
Estimated Reading Time 1 Minutes
Words 380 In Total
Viewed Times

我们在常常在SpringBoot配置文件中配置连接数据库,如图:

首先:Oracle JDBC连接一共有三种方式,分别是:SERVICE_NAME、SID和TNSName。

我们常常使用的是服务名,只有在旧版本使用SID,原因是一个SID对应一个一个Oracle实例,而服务名是在集群多实例的情况下诞生的,所以一个服务对应多个实例,我们连接串port后的默认就是服务名

:::success
声明: @hostname:port/XXX ,这个才是简易链接串,前面的jdbc:oracle:thin:为JDBC协议头

:::

对于简易连接串来说,不支持SID的连接方式,需要使用完整连接描述符:

1
2
3
spring:
datasource:
url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SID=ORCLSID)))

@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))(CONNECT_DATA=(SID=ORCLSID)))这个串是完整的连接串而不是简易的,即@hostname:port/XXX 格式不能直接指定 SID 、

连接问题

既然SERVICE_NAME、SID存在区别,为什么同样的用户密码和ip,使用navicat连接时选择Basic连接,不管选择SID还是服务名都能连接成功?

原因是不管什么方式,都连接上了同一实例, 比如在配置Oracle时,`SID``Service Name` 可能设置成相同的值,导致不论选择哪种方式,连接都能成功。 ,一般在 在配置文件 `tnsnames.ora` 中 。 或 Oracle 会为每个实例创建一个默认的服务,这个服务名通常和 `SID` 一致 。

如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !