jdbc连接Oralce有三种方式
方式一:jdbc:oracle:thin:@//<host>:<port>/<service_name>
方式二:jdbc:oracle:thin:@<host>:<port>:<sid>
方式三:jdbc:oracle:thin:@<TNSName>
方式一通过service_name来进行数据库连接;
方式二通过数据库sid连接;
方式三通过局域网的TNSName进行连接;
数据库连接的我们通常使用方式二sid
的方案连接,但是有些时候不能用sid方式,例如单实例数据库(Oracle10g)的项目迁移到Oracle(Oracle12c)的RAC环境(real application clusters “实时应用集群”)的时候就出现了项目无法回收数据库连接,大致原因是因为本地开发调试的时候使用单实例数据库,线上部署后的环境是数据库集群,项目提示无法关闭数据库连接,容易导致内存泄漏,之后是无法简历数据库连接,然后项目宕机了;
通过测试之后发现是使用sid连接,将sid
模式替换成service_name
连接,则没有出现这样的问题;
在Oracle8i之前,一个数据库只对应一个实例,但是后续版本一个数据库可以同时对应多个实例,比如RAC,为了客户端连接配置简单,Oracle提出了service_name概念,这个参数是直接对应数据库 ,而不是某个实例,如果平时使用sid方式连接部署发生有bug,可以试试切换成service_name的方式来连接调试下;