您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页ORACLE数据库名、实例名、ORACLE_SID的区别

ORACLE数据库名、实例名、ORACLE_SID的区别

来源:化拓教育网
ORACLE数据库名、实例名、ORACLE_SID的区别

----------------------------------------------------------------------------------------------------------------------------------我的总结:ORACLE_SID是在开启数据库startup的时候找默认的参数⽂件(spfile

只是为了⽅便找到参数⽂件,这也就是为什么在只安装数据库软件的时候可以指定ORACLE_SID的原因,因为它和数据库和实例没有根本的关系,只是为了⽅便

数据库中的instance_name可以和ORACLE_SID不同,也可以和db_name不同Linux命令 ps -ef|grep ora_ 后台进程ora_smon_orcl

ora oracle数据库进程smon进程名

orcl 数据库服务器实例名 --⽼师讲错了,应该是ORACLE_SID

----------------------------------------------------------------------------------------------------------------------------------

数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)

  在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同⼀个数据库中的标识,⽤于区分不同数据库的参数。

  ⼀、什么是数据库名(db_name)?

  数据库名是⽤于区分数据的内部标识,是以⼆进制⽅式存储于数据库控制⽂件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写⼊数据库参数⽂件pfile中,格式如下:.........

db_name=\"orcl\" #(不允许修改) db_domain=dbcenter.toys.com instance_name=orcl

service_names=orcl.dbcenter.toys.com control_file=(............... .........

  在每⼀个运⾏的ORACLE8i数据库中都有⼀个数据库名(db_name),如果⼀个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。  ⼆、什么是数据库实例名(instance_name)

  数据库实例名则⽤于和操作系统之间的联系,⽤于对外部连接时使⽤。在操作系统中要取得与数据库之间的交互,必须使⽤数据库实例名。例如,要和某⼀个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有⽤的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写⼊数据库参数⽂件pfile中,格式如下:db_name=\"orcl\" #(不允许修改) db_domain=dbcenter.toys.com

instance_name=orcl #(可以修改,可以与db_name相同也可不同) service_names=orcl.dbcenter.toys.com control_file=(............... .........

  数据库名与实例名之间的关系。

  数据库名与实例名之间的关系⼀般是⼀⼀对应关系,有⼀个数据库名就有⼀个实例名,如果在⼀个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,⽤两个标识确定⼀个数据库,⽤户和实例相连接。

  但在8i、9i的并⾏服务器结构中,数据库与实例之间不存在⼀⼀对应关系,⽽是⼀对多关系,(⼀个数据库对应多个实例,同⼀时间内⽤户只⼀个实例相联系,当某⼀实例出现故障,其它实例⾃动服务,以保证数据库安全运⾏。)  三、操作系统环境变量(ORACLE_SID)

  在实际中,对于数据库实例名的描述有时使⽤实例名(instance_name)参数,有时使⽤ORACLE_SID参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混)

(ORACLE_SID)

OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))

  上图表⽰实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这⾥列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数⽂件中查询到,⽽ORACLE_SID参数则是操作系统环境变量。

操作系统环境变量ORACLE_SID⽤于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使⽤ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等⽤法相同。在数据库安装之后,ORACLE_SID被⽤于定义数据库参数⽂件的名称。如:$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。定义⽅法:

export ORACLE_SID=orcl

  如果在同⼀服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。还可以⽤

[oracle@Datacent]$ . oraenv

  来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

Oracle数据库系统中实例名(即SID)和ORACLE_SID的区别

⼩结:

ORACLE_SID是⼀个环境变量,⽽数据库实例名就是instance_name,或说system identifier (SID)。

当有多个数据库存在时,我们可以通过“set ORACLE_SID=你所要登录的那个数据库的数据库实例名”,之后就可以通过如sqlplus / assysdba 登录到你所要登录的那个数据库上。这个就是ORACLE_SID这个环境变量的作⽤。

⾄于说为什么可以通过“set ORACLE_SID=你所要登录的那个数据库的数据库实例名”就可以 登录到你所要登录的那个数据库上,其本质原因表述如下:

oracle数据库软件系统通过当前的ORACLE_SID值来找到对应参数⽂件(即spfile.ora),通过读取参数⽂件⾥的各个参数值(如instance_name、buffer_cache等)来创建⼀个数据库实例。所以,如果参数⽂件spfile.ora⾥的参数instance_name的值与ORACLE_SID值相同,那么通过“set ORACLE_SID=你所要登录的那个数据库的数据库实例名instance_name”⾃然是可以 登录到你所要登录的那个数据库上去,⽽如果参数⽂件spfile.ora⾥的参数instance_name的值与ORACLE_SID值不相同,那么通过“set ORACLE_SID=你所要登录的那个数据库的数据库实例名instance_name”则会登录到参数⽂件spfile.ora⾥的参数instance_name的值对应的那个数据库上去。

上述也就是对创建⼀个数据库实例过程的表述。

2012-11-21 11:26:30| 分类:| 标签:|字号⼤中⼩

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务