Oracle数据库名、实例名、数据库域名、数据库服务名、全局数据库名的辨析

时间:2023-03-08 15:48:23

我也是看着各位大婶的博客然后一点点的来学习,不求全会,留个印象

数据库名

数据库名就是一个数据库的标识,用参数DB_NAME表示。

如果一台机器上安装了多个数据库,那么每一个数据库都有一个数据库名。

查看当前数据库名

select name from v$database;

show parameter db;

查看参数文件

数据库名在一开始准备建库的时候就应该考虑好,不要等到后面才来该数据库名,这样会很麻烦。也容易出问题。

数据库实例名

数据库实例名是操作系统和数据库进行交互时所用到的名称。

数据库实例名也被写入参数文件中,用instance_name表示,如果在windows下也会被写入注册表中。

一般来说实例名和数据库名是一对一的关系,但是如果实在oracle集群中,数据库名和实例名是一对多的关系。

数据库实例名与ORACLE_SID

instance_name是oracle数据库参数,而ORACLE_SID是操作系统的环境变量。

在数据库连接过程中,ORACLE_SID必须与instance_name的值一致,否则报错:

unix下:oracle not available

win下:TNS:协议适配器错误

数据库实例名还是网络连接的oracle服务器标识。

当配置oracle主机连接串的时候,就需要指定实例名,当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。

数据库域名

在分布式数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix还是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle分布式环境中的复制。

比如全国交通运政系统的分布式数据库,其中

福建节点:fj.jtyz

福建厦门节点:xm.fj.jtyz

这就是数据库域名。

数据库域名存在于参数文件中,其参数是db_domain

select value from v$parameter where name='db_domain';

show parameter domain

在参数文件中查看

全局数据库名

全局数据库名=数据库名+数据库域名

如前所述福建节点的全局数据库名是:oradb.fj.jtyz

数据库服务名

从oracle9i开始,引入了一个新的参数,即数据库服务名,参数为SERVICE_NAME。

如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据服务名与数据库名相同。

select value from v$parameter where name = 'service_name';

show parameter service_name;

在参数文件中查询

数据库服务名与网络连接

从oracle8i开始的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名。