美文网首页
Oracle数据库SID和ServiceName的区别

Oracle数据库SID和ServiceName的区别

作者: Jackeroo | 来源:发表于2019-05-29 09:14 被阅读0次

    最近在为客户做监控系统、数据库的项目,用的是Zabbix平台。在最终实施的时候,发现有的Oracle数据库可以正常连接,有的报错……

    ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: 
    

    在咨询过数据库运维人员发现,有的数据库给的是SID,有的给的是Service Name。而jdbc连接数据库有三种方式。

    1. ServiceName方式

    这种方式是Oracle推荐的,对于集群来说,每个节点的SID可能不一致,但ServiceName是一致的,包含所有节点。

    ServiceName连接方式,是在Oracle 8i之后加入的。

    jdbc:oracle:thine:@<host>:<port>/<ServiceName>
    

    2. SID方式

    这是我们在部署的时候预置的连接方式,格式为:

    jdbc:oracle:thine:@<host>:<port>:<SID>
    

    3. TNSName方式

    TNSName连接方式是在Oracle 10.2.0.1之后加入的。

    jdbc:oracle:thin:@<TNSName>
    

    4. ServiceName和SID的区别

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

    相关文章

      网友评论

          本文标题:Oracle数据库SID和ServiceName的区别

          本文链接:https://www.haomeiwen.com/subject/czzstctx.html