zoukankan      html  css  js  c++  java
  • Oracle 服务名/实例名,Service_name 和Sid的区别

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

    可以简单的这样理解:
    一个公司比喻成一台服务器,数据库是这个公司中的一个部门。
    SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,就好像一个部门里,每个人都有一个自己的名字。
    SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,
    看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。

    一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。

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

    格式一: Oracle JDBC Thin using a ServiceName: 
    jdbc:oracle:thin:@//<host>:<port>/<service_name> 
    Example: 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> 
    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> 
    Example: jdbc:oracle:thin:@GL 
    Note: 
    Support for TNSNames was added in the driver release 10.2.0.1``
  • 相关阅读:
    Win7 64位 php-5.5.13+Apache 2.4.9+mysql-5.6.19 配置
    C# .NET 使用第三方类库DotNetZip解压/压缩Zip rar文件
    64位window7,php5.5.10 +IIS7 配置
    eclipse下编译openfire3.9.1源码
    asp.net 解决IE11下 From身份验证失效问题
    MySQL 数据类型 详解
    ASP.NET安全
    Microsoft Anti-Cross Site Scripting Library V4.2 下载地址
    Entityframework Core去掉外键
    VS2019发布Docker实践
  • 原文地址:https://www.cnblogs.com/matd/p/11051884.html
Copyright © 2011-2022 走看看