Oracle中ORACLE_SID,INSTANCE_NAME,DB_NAME几个名词的区别
admin
2023-04-26 10:43:22
0次

同事项目用到 Oracle,向我问起这些内容,虽本人忝列 OCP,但那是6年前的事了,这几年工作繁重,基本做了清零,受同事之托重新梳理了一遍。


涉及到的名字包括如:DB_NAME,DB_DOMAIN,ORACLE_SID,INSTANCE_NAME, SERVICE_NAME 等。


提起这些名字,首先要理解 ORACLE 的逻辑架构,我们通常说的可以访问的ORACLE DB。其实两部分组成:实例(包括一组进程,和SGA内存等) + 物理介质。介质包括控制文件,数据文件,日志文件,参数文件等。实例进程就是一堆操作物理介质的进程。再者实例进程可以不挂载(mount)任何物理介质,这时的实例叫 idle instance.


上面的名字先找简单的说: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、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...