设为首页 收藏本站
查看: 982|回复: 0

[经验分享] Oracle中ORACLE_SID,INSTANCE_NAME,DB_NAME几个名词的区别

[复制链接]

尚未签到

发表于 2018-9-6 10:31:02 | 显示全部楼层 |阅读模式
  同事项目用到 Oracle,向我问起这些内容,虽本人忝列 OCP,但那是6年前的事了,这几年工作繁重,基本做了清零,受同事之托重新梳理了一遍。
  涉及到的名字包括如:DB_NAME,DB_DOMAIN,ORACLE_SID,INSTANCE_NAME, SERVICE_NAME 等。

  提起这些名字,首先要理解 ORACLE 的逻辑架构,我们通常说的可以访问的ORACLE DB。其实两部分组成:实例(包括一组进程,和SGA内存等) + 物理介质。介质包括控制文件,数据文件,日志文件,参数文件等。实例进程就是一堆操作物理介质的进程。再者实例进程可以不挂载(mount)任何物理介质,这时的实例叫>  上面的名字先找简单的说:DB_NAME。这两个东西创建数据库时指定,而且最具稳定性,DB_NAME遍布在数据文件,日志文件,参数文件中,99.9%情况下不会也不需要去变他。(虽然现在版本也可以修改了)。
  可以把他理解成物理介质的标记,这些物理介质都属这个DB。至于DB_DOMAIN只是为好分布式管理加的一个标识而已,意义不大,知道有这个东西即可。
  ORACLE_SID:一般ORACLE_SID作环境变量用,他是个操作系统层面的东西, 最常见的两个用处:
  决定Oracle实例 进程的名字,在linux下看,Oracle相应的进程,会发现都缀有ORACLE_SID。
  定位Oracle的启动参数文件,Oracle在启动时要寻找其配置文件(目前以这个顺序查找spfile.ora -> spfile.ora -> init.ora)。
  Oracle启动之后,这个参数也没多大用处了。
  注: 相同Oracle_HOME下,ORACLE_SID要不同,不同Oracle_HOME下,可相同。
  INSTANCE_NAME:DB_NAME是物理介质的标识,INSTANCE_NAME就是实例进程的标识。
  对ORACLE数据库,非RAC情况下,物理介质可以被任意实例进程挂载(mount)和打开(open)
  但同一时间,只能有一个实例进程打开他。 RAC情况下,则允许多个实例进程打开相同的物理介质。
  1+1变成了n+1,也就是说RAC情况下,多个实例对应着同一个物理介质。
  JAVAEE同学都记得JDBC的连接串为:jdbc:oracle:thin:@::
  这个SID就是INSTANCE_NAME。数据库连接,其实是连接到实例进程。大多数时候我们都当成了ORACLE_SID, 只是因为那个时候他们相同了。(关于各个参数的default值问题,这里不说子,码字累)。
  似乎有INSTANCE_NAME+DB_NAME已经完美的解决的实体的定位问题。直到RAC的出现,打破了这一宁静。出了多个实例同时打开同一个DB_NAME的情况。那个上面的JDBC的连接串就不好用了,这时SERVICE_NAME横空出世。
  简单的说,SERVICE_NAME代表整个数据库(进程+DB),一个SERVICE_NAME下面可以有多个实例,所以无论是RAC,还是单例数据库, jdbc:oracle:thin:@::都可以正常连接。
  SERVICE_NAME怎么发挥做的呢,我们知道Oracle监听在1521端口,因为存在一个监听器。在ORACLE实例启动时,PMON进程会将该实例注册到这个监听器上,当前也所括其所属性的服务名,这种叫动态注册,可能不易理解SERVICE_NAME(可以用lsnrctl status命令查看存在的service及instance),看一个静态注册的listener.ora:
SID_LIST_LISTENER =  
(SID_LIST =
  
(SID_DESC =
  
   (SID_NAME = ORCL) ---这里为INSTANCE_NAME
  
   (ORACLE_HOME = /mydatafile2/app/oracle/oracle/product/11.2.0/db_1)
  
   (GLOBAL_DBNAME=WOO.COM) ---这里为SERVICE_NAME。
  
  )
  
)
  连接到这个SERVICE,监听器就会按一定算法将连接负载到相应的实例上。
  综上看:访问数据库关注的大多为Instance_name和service_name.
  而管理数据库用到ORACLE_SID和DB_NAME
  先写这么多吧,后面再补。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563937-1-1.html 上篇帖子: Oracle:impdp导入等待statement suspended, wait error to be cleared-DBA Fighting! 下篇帖子: Oracle sql优化必知——表的访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表