搜索

oracle 中sid是什么意思

发布网友 发布时间:2022-04-24 14:15

我来回答

4个回答

懂视网 时间:2022-05-02 04:28


    本文将通过个人口吻介绍在ORACLE中的Server_name和实例名SID的相关概念,在目前时间点【2017年5月22号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。



本文参考文献引用链接:

1、http://blog.csdn.net/luman1991/article/details/56286371

2、http://blog.csdn.net/yaksok/article/details/52130228




正文:


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


案例分析:


一、引入关系:

服务器=公司

数据库=运维支持部(数据库分为单机和集群环境,也就是部门的人数多少关系)

数据库集群环境=运维支持部门(假设部门有小丽,小美两名员工,对应SID1,SID2)

数据库连接请求=公司员工或者其他部门请求运维部提供技术支持

数据库服务器=装载了数据库的服务器,也就是拥有活跃运维部门的公司,当然服务器除了装载数据库,我还可以安装其他软件提供其他服务


二、工作过程:

1、老王是研发部门的一个员工,在连接数据库的发现无法连接,因此在公司内部沟通平台发送了一个请求,请求运维部查看下数据库服务是否异常。

2)运维部的小丽接受了这个问题,也就是小丽给老王提供了这次服务,最终顺利解决该问题

3)过了一周,老王又发现数据库连接有问题,又在公司内部沟通平台发送了一个请求,请求运维部查看下数据库服务是否异常。

4)运维部的小美接受了这个问题,也就是小美给老王提供了这次服务,最终顺利解决该问题


三、案例分析:

1、这里真实提供服务的就是SID(第一次是小丽SID1,第二次是小美SID2,第三次也是两者之一)

2、运维支持部门,在公司内部沟通平台对应有一个虚拟用户(Server_name),用户将反馈提交给该用户,然后由该虚拟用户去调度后方真实节点提供服务,使用过JIRA平台的小伙伴应该深有感触。

3、用户不用关系,真实给我提供服务的人是谁,每次只需要将问题提交给该虚拟用户(server_name),就会有支持人员来解决我的问题。


注意:在这里用户如果知道运维部里面具体有谁,也可以配置成直接将问题分配给比如小丽,也就是说,在配置数据库连接信息时,可以配置成直接连接SID,也可以配置成连接server_name,然后由server_name去SID去处理请求。


总结:


SID:

一个数据库可以有多个实例(如RAC集群环境),SID用来标识数据库内部每个实例的名字,就好像一个部门里,每个人都有一个自己的名字(小丽和小美等)。


SERVICE_NAME:

数据库对外宣称的名字,它就像一个部门的名字,这个部门的名称在数据库的看门大爷(listener)那里有登记。看门大爷一看你是要找SERVICE_NAME这个部门(运维部),就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。


对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 可以包含所有节点。


一句话来说就是:

SID是对内部来说的,是实例级别的一个名字,用于数据库内部之间称呼。

SERVICE_是对外的,是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。

你可以通过service_name参数指定这个名字是什么,可以有多个名字,名字随便起,叫老王,老张都没关系。如果你不指定,默认的是Db_name. Db_domain,也就是global_name。


这些易混淆的名字,你只要记住,他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪个名字,要看针对对象。是对数据库,还是对操作系统,还是对外部连接请求。分清楚这点,就不容易混了




结尾:



     感谢阅读,祝有收获的一天,谢谢!





本文出自 “清风揽月的博客” 博客,请务必保留此出处http://watchmen.blog.51cto.com/6091957/1928387

ORACLE中的Server_name和SID概念理解

标签:oracle   sid   server_name   

热心网友 时间:2022-05-02 01:36

SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System Identifier的缩写,在Oracle系统中,ORACLE_SID以环境变量的形式出现,在特定版本的Oracle软件安装(也就是ORACLE_HOME)下,当Oracle实例启动时,操作系统上fork的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作用。
Oracle的sid在不同的系统环境下,查看方式不相同,方法分别如下:
1、windows 下查看注册表
开始 输入regedit 查看
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1\ORACLE_SID就是
2、linux或者unix下可以
echo $ORACLE_SID
注意:ORACLE_SID要大写
3、在sql命令下可以查看
连接后查询:
SQL> select instance_name from v$instance;

热心网友 时间:2022-05-02 02:54

sid用于实例区分各个数据库,service name用于外部链接。

热心网友 时间:2022-05-02 04:29

System Identifier

参考Oracle文档
http://docs.oracle.com/cd/B19306_01/network.102/b14212/glossary.htm#sthref1963
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top