首页 > 数据库 > Oracle > oracle数据库名、实例名、服务名等区分
DB_NAME :
① 是数据库名,长度不能超过 8 个字符,记录在 datafile 、 redolog 和 control file 中
② 在 DataGuard 环境中 DB_NAME 相同而 DB_UNIQUE_NAME 不同
③ 在 RAC 环境中,各个节点的 DB_NAME 都相同,但是 INSTANCE_NAME 不同
④DB_NAME 还在动态注册监听的时候起作用,无论是否定义了 SERVICE_NAME,PMON 进程都会使用 DB_NAME 动态注册监听
DBID :
①DBID 可以看做是 DB_NAME 在数据库内部的表示,它是在数据库创建的时候用 DB_NAME 结合算法计算出来的
② 它存在于 datafile 和 control file 中,用来表示数据文件的归属,所以 DBID 是仅有的,对于不同的数据库, DB_NAME 可以是相同的,但是 DBID 一定是仅有一个的,例如在 DataGuard 中,主备库的 DB_NAME 相同,但是 DBID 一定不同(看过一个很形象的例子,就是可以有同名的人,但是身份证号码一定不同)
DB_UNIQUE_NAME :
① 在 DataGuard 中,主备库拥有相同的 DB_NAME ,为了区别,就必须有不同的 DB_UNIQUE_NAME
②DB_UNIQUE_NAME 在 DG 中会影响动态注册的 SERVICE_NAME ,即如果采用的是动态注册,则注册的 SERVICE_NAME 为 DB_UNIQUE_NAME ,但是实例还是 INSTANCE_NAME ,即 SID
INSTANCE_NAME :
① 数据库实例的名称, INSTANCE_NAME 默认值是 SID ,一般情况下和数据库名称( DB_NAME) 相同,也可不同
②initSID.ora 和 orapwSID 文件要与 INSTANCE_NAME 保持一致
③INSTANCE_NAME 会影响进程的名称
SID :
① 是操作系统中的环境变量,和 ORACLE_HOME,ORACLE_BASE 用法相同
② 在操作系统中要想得到实例名,就必须使用 ORACLE_SID 。且 ORACLE_SID 必须与 INSTANCE_NAME 的值一致
SERVICE_NAME :
① 数据库和客户端相连是使用的服务名
② 在 DataGuard 中,如果采用动态注册,建议在主备库使用相同的 service_names
③ 在 DataGuard 中,如果采用静态注册,建议在主备库上的 listener 中输入相同的服务名 (service_name)
④ 如果采监听采用了静态注册,那么 SERVICE_NAME 就等于 Listener.ora 文件中的 GLOBAL_DATABASE_NAME 的值
GLOBAL_DATABASE_NAME :
①GLOBAL_DATABASE_NAME 是 listener 配置的对外网络连接名称,可以是任意值
② 在客户端配置监听的 tnsnames.ora 文件中的 service_name 与这个 GLOBAL_DBNAME 保持一致就可以了
③ 配置静态监听注册时,需要输入 SID 和 GLOBAL_NAME
GLOBAL_NAMES
select * from global_name;
show parameter global_names
当 GLOBAL_NAMES 参数设置为 TRUE 时,使用 DATABASE LINK 时, DATABASE LINK 的名称必须与被连接库的 GLOBAL_NAME 一致。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70013625/viewspace-3009215/ ,如需转载,请注明出处,否则将追究法律责任。