在工作中也遇到了这种情况,使用oracle这么长时间一直使用的都是SID的概念。也是给自己扩充了一下知识,所以后面在配置oracle数据库连接的时候需要确认拿到的是service还是sid再进行相应的配置。

来源

参考

注意下面格式一的配置

@后面两个斜线
端口号和service_name中间变成斜线了,不是原来SID的冒号
jdbc:oracle:thin:@//<host>:<port>/<service_name>

内容说明

    实例是操作系统中访问数据库所需要的一系列的进程和内存的集合。即使没有任何数据文件,实例也可以启动。但是要想访问数据库,必须把数据库文件加载进实例中。实例和数据库的区别可以简单概括为:实例是临时的,它只在相关的进程和内存集合存在时存在,而数据库是永久的,只要文件存在它就存在。一个实例只能对应一个数据库,但是一个数据库可以由多个实例对应(如RAC)。RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每台机器运行一个实例,每个实例都打开同一个数据库 (这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

    SID即INSTANCE_NAME是用来唯一标示实例的。SERVICE_NAME是oracle8i新引进的,8i之前,一个数据库只能由一个实例对应,但是随着高性能的需求,并行技术的使用,一个数据库可以由多个实例对应了,比较典型的应用如RAC。为了充分利用所有实例,并且令客户端连接配置简单,ORACLE提出了SERVICE_NAME的概念。该参数直接对应数据库,而不是某个实例。
     
了解了SID和SERVICE_NAME之后,我突然觉得前面故事中使用的解决方案并不是最佳的解决方案,因为SERVICE_NAME的出现就是为了应对并发技术,简化客户端连接配置。通过SERVICE_NAME应该能找到更好的解决方案。通过查找JDBC帮助得知JDBC连接ORACLE的方法由三种: 格式一:jdbc:oracle:thin:@//<host>:<port>/<service_name>
格式二:jdbc:oracle:thin:@<host>:<port>:<SID>
格式三:jdbc:oracle:thin:@<TNSName> 不难看出,故事中使用RAC之前,JDBC是使用格式二连接的,使用RAC后实例增多了,SID已经不唯一,格式二已经无法完全利用所有资源。研发参考PL/SQL的连接方法刚好碰巧使用了格式三。因为java应用服务器跟数据库服务器是分离的,应用服务器上没有oracle的服务端以及客户端。虽然解决方案中没有使用TNSName,但是使用了TNSName的连接描述,效果是一样的。既然JDBC有三种连接方案,我们不妨再看一下第一种方案。再加上前面的讲解内容,我想大家已经都知道故事中的问题该怎么修改了,只要改成jdbc:oracle:thin:@//10.2.0.2:1521/orcl就可以了,而且这种格式也支持单实例数据库。这也是ORACLE在8i之后增加SERVICE_NAME的初衷。

最新文章

  1. Filter 数组过滤函数精解示例
  2. 基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理
  3. java.io.Serializable 序列化问题
  4. [SAP ABAP开发技术总结]局部变量、全局变量
  5. Android 隐藏Fragment
  6. 黄聪:深入理解PHP Opcode缓存原理
  7. Git教程之远程仓库(9)
  8. [Unity3d]小地图的制作
  9. int 指令
  10. 也谈android开发图像压缩
  11. 大整数相乘的C实现
  12. SCOI2014 方伯伯的OJ onlinejudge
  13. 不用标准库实现memmove,借助一个缓冲区temp,即使src和dest所指的内存有重叠也能正确拷贝
  14. 【原】手写一个promise
  15. Ajax笔记 XHR XMLHttpRequest
  16. 将常用的Android adb shell 命令行封装为C#静态函数
  17. Android的ANR详解(原因和方案)
  18. ABP框架系列之五:(Unit Of Work-工作单元)
  19. 【Spring】12、Spring Security 四种使用方式
  20. pyspark遇到报错:_PYSPARK_DRIVER_CONN_INFO_PATH

热门文章

  1. node之events 模块,并通过实例化 EventEmitter 类来绑定和监听事件
  2. LOJ #2718. 「NOI2018」归程 Dijkstra+可持久化并查集
  3. 论文阅读:Offloading Distributed Applications onto SmartNICs using iPipe
  4. 翻译一篇英文文章,主要是给自己看的——在ASP.NET Core Web Api中如何刷新token
  5. Selenium 文件下载
  6. hexo的流程
  7. R_Studio(决策树算法)鸢尾花卉数据集Iris是一类多重变量分析的数据集【精】
  8. SQLMAP自注入--INJECTION TECGBUQUES FINGERPRINT
  9. 个推CTO深度解析数据智能之多维度分析系统的选型方法
  10. 使用 SpringBoot+Dubbo 搭建一个简单分布式服务