Oracle中SID INSTANCE_NAME Service_Name DB_Name等的介绍
Oracle_SID & SID & INSTANCE_NAME
Oracle中SID的作用类似于一个“开关变量”—引导Oracle在实例启动时如何去默认位置下读取适当的参数文件并加载,以正确启动实例,通过SID来命名后台进程。
操作系统也必须通过SID来和Oracle实例打交道,操作系统并不知道什么INSTANCE_NAME,只知道Oracle_SID,在Oracle内部由Oracle自己根据这个SID去识别不同的实例。所以ORACLE_SID更多的是Oracle和外部操作系统沟通的一个窗口。
OS(Oracle_SID) <--------> ORACLE 数据库 <----- (instance_name(实例名))
上图表示实例名instance_name、Oracle_SID与数据库及操作系统之间的关系
虽然这里两个参数都是数据库实例名,但 instance_name参数是Oracle数据库的参数,此参数可以在参数文件中查询到;而Oracle_SID参数则是操作系统环境变量,与 Oracle_BASE、Oracle_HOME等用法相同,用于和操作系统交互。
也就是说,在操作系统中要想得到实例名,就必须使用 Oracle_SID。且Oracle_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“Oracle not available”,在winnt平台,是“TNS:协议适配器错误”。
简单来说就是: Oracle_SID = SID = INSTANCE_NAME
1 |
|
Service_Name
Service_Name是Oracle实例提供的服务名。是从oracle 9i,10g开始引入的参数。用Service_names表示。数据库服务名与全局数据库名相同。它隔离了Oracle实例,客户端仅仅需要知道Service_Name就可以访问实例。而不需要知道实例的SID。更不需要知道DB_NAME等信息。
Service_names为实例定义一个或多个Service_name,这样可以通过多个Service_name将不同的用户连接区分开来。
Service_Name似乎应该分为两种,一种是实例服务名 instance service name,一种是网络服务名 net service name (也叫TNSName),如下tnsnames.ora所示:
1 |
|
1 |
|
DB_NAME
是用于区分一个数据的内部标示,即Oracle数据库的内部表示。是以二进制方式存储于数据库的控制文件的参数。在数据库安装或创建之后不得修改。
DB_NAME唯一性地标识了 oracle database,与数据库物理文件相关;而SID唯一性地标识了oracle instance,与所有进程相关。而oracle database和oracle instance一起组成了oracle server。
SID和DB_NAME在非RAC环境默认是相等的。但是二者相等与否,无关紧要。在RAC环境,因为一个DB_NAME对应多个SID,所以不可能相等了。
1 |
|
数据库域名
在Oracle10g中db_domain表示域名。与数据库名,数据库实例名一样数据库域名在安装数据库时候已经确定。abc.xxx.com.cn。后面的xxx.com.cn则表示域名。
1 |
|
全局数据库名
则表示数据库名和域名的总和。如果没有域名,全局数据库名就与数据库名相同。
JDBC连接ORACLE
1 |
|
蚂蚁🐜再小也是肉🥩!
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付