数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

数据库名、实例名、ORACLE


发布日期:2024年02月09日
 
数据库名、实例名、ORACLE

最近因看到论坛有人问起这方面的东西将自己的理解加上查阅相关资料整理如下如果不全或不当的地方望指正并补全它

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

在ORACLE数据库中只有数据库名(db_name)和数据库实例名(instance_name)在ORACLEii中出现了新的参数即数据库域名(db_domain)服务名(service_name)以及操作系统环境变量(ORACLE_SID)这些都存在于同一个数据库中的标识用于区分不同数据库的参数

什么是数据库名(db_name)?

数据库名是用于区分数据的内部标识是以二进制方式存储于数据库控制文件中的参数在数据安装或创建之后将不得修改数据库安装完成后该参数被写入数据库参数文件pfile中格式如下

[code::aaf]

db_name=orcl #(不允许修改)

db_domain=

instance_name=orcl

service_names=or

control_file=(

[/code::aaf]

在每一个运行的ORACLEi数据库中都有一个数据库名(db_name)如果一个服务器程序中创建了两个数据库则有两个数据库名其控制参数据分属在不同的pfile中控制着相关的数据库

什么是数据库实例名(instance_name)

数据库实例名则用于和操作系统之间的联系用于对外部连接时使用在操作系统中要取得与数据库之间的交互必须使用数据库实例名例如要和某一个数据库server连接就必须知道其数据库实例名只知道数据库名是没有用的与数据库名不同在数据安装或创建数据库之后实例名可以被修改数据库安装完成后该实例名被写入数据库参数文件pfile中格式如下

[code::aaf]

db_name=orcl #(不允许修改)

db_domain=

instance_name=orcl #(可以修改可以与db_name相同也可不同)

service_names=or

control_file=(

[/code::aaf]

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

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

但在ii的并行服务器结构中数据库与实例之间不存在一一对应关系而是一对多关系(一个数据库对应多个实例同一时间内用户只一个实例相联系当某一实例出现故障其它实例自动服务以保证数据库安全运行)

操作系统环境变量(ORACLE_SID)

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

[code::aaf]

(ORACLE_SID)

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

[/code::aaf]

上图表示实例名instance_nameORACLE_SID与数据库及操作系统之间的关系虽然这里列出的两个参数都是数据库实例名但instance_name参数是ORACLE数据库的参数此参数可以在参数文件中查询到而ORACLE_SID参数则是操作系统环境变量

操作系统环境变量ORACLE_SID用于和操作系统交互也就是说在操作系统中要想得到实例名就必须使用ORACLE_SID此参数与ORACLE_BASEORACLE_HOME等用法相同在数据库安装之后ORACLE_SID被用于定义数据库参数文件的名称

$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SIDora

定义方法:

[code::aaf]

export ORACLE_SID=orcl

[/code::aaf]

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

还可以用

[code::aaf]

[oracle@Datacent]$ oraenv

[/code::aaf]

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

上一篇:显示表空间的使用情况的SQL语句

下一篇:开发篇之—Oracle触发器心得体会