jdbc连接oracleORACLE中SID和SERVICE_NAME的区别定义
实例(SID)是操作系统中访问数据库所需要的⼀系列的进程和内存的集合。即使没有任何数据⽂件,实例也可以启动。但是要想访问数据库,必须把数据库⽂件加载进实例中。实例和数据库的区别可以简单概括为:实例是临时的,它只在相关的进程和内存集合存在时存在,⽽数据库是永久的,只要⽂件存在它就存在。⼀个实例只能对应⼀个数据库,但是⼀个数据库可以由多个实例对应(如RAC)。RAC就是多个实例同时打开⼀个数据库⽂件的系统,在结构上是多台机器,每台机器运⾏⼀个实例,每个实例都打开同⼀个数据库(这个是⽤磁盘共享技术实现的),这些实例之间需要同步⾼速缓存,这样保证多个实例是完全⼀致的,不会相互冲突乃⾄覆盖。
SERVER_NAME参数是由oracle8i开始引进的。在8i以前,使⽤SID来表⽰标识数据库的⼀个实例,但是在Oracle的并⾏环境中,⼀个数据库对应多个实例,这样就需要多个⽹络服务名,设置繁琐。为了⽅便并⾏环境中的设置,引进了Service_name参数,该参数对应⼀个数据库,⽽不是⼀个实例,⽽且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。⼀个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID⼀样,⽽sid是数据库实例的名字,每个实例各不相同。
JDBC连接配置
1. 使⽤service_name,配置⽅式:jdbc:oracle:thin:@//<host>:<port>/<service_name>
2. 使⽤SID,配置⽅式:jdbc:oracle:thin:@<host>:<port>/<SID>
3. 使⽤SID,配置⽅式:jdbc:oracle:thin:@<host>:<port>:<SID>
鉴于以上情况,建议使⽤第⼀种连接字符串
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论