DB_NAME, DB_UNIQUE_NAME和INSTANCE_NAME

1,

DB_NAME指定了一个最多8个字符的数据库识别符。这个参数必须和CREATE DATABASE语句指定的名字相匹配。

如果你有多个数据库,那么这个参数应该和每个实例相匹配,防止和系统上其他数据库相混淆。这个值在备库和生产环境两边必须相同。

要注意的是,数据库跟实例是不一样的,这个参数指定的是数据库名字。同一个数据库可以有多个实例,但是这些实例都是同一个数据库,所以这个参数的值必须是一样的。

设置这个参数的时候,实例必须是mount状态。

DB_NAME的有效字符是字母字符,下划线"_",数字符号"#"以及美元符号"$",其他字符都是无效的。因此你不可以使用双引号。

数据库名字大小写不敏感。

2,

DB_UNIQUE_NAME指定了数据库的全局唯一名字,有着相同的DB_NAME和DB_DOMAIN的数据库(比如说,数据库的用于生成报表的复本数据库,或者一个物理备库),必须拥有唯一的DB_UNIQUE_NAME,企业内的每一个数据库的DB_UNIQUE_NAME必须是唯一的。

DB_UNIQUE_NAME最长可以是30个字符,这里依旧是指数据库的名字,所以主库不同实例的DB_UNIQUE_NAME还是一样的。

注意:有些数据库工具或者功能,会创建一个字符串来唯一识别一个数据库。这个字符串可能包括了数据库的DB_UNIQUE_NAME和其他标识数据库的信息。因为oracle数据库限制了30个字符,所以使用一个短一点的DB_UNIQUE_NAME可以有效避免ORA--00972 "identifier is too long"。

3,

INSTANCE_NAME, 默认值是实例的SID, SID标识了主机上实例的共享内存,但不一定是唯一标识,可能和其他实例一样。

在一个RAC环境里面,多个实例可以和同一个数据库服务进行交流。客户端可以通过指定特定的实例名字来忽略Oracle自身的连接负载均衡功能。

在一个单实例的数据库系统中,实例名字一般和数据库名字一样。

 

总结:

  单实例 RAC Dataguard
DB_NAME 本地唯一 不同实例相同  备库和主库相同 
DB_UNIQUE_NAME 全局唯一 不同实例相同 备库和主库不同
INSTANCE_NAME 不唯一,如果和数据库名字一样,则本地唯一 不同实例不同 备库和主库不同
posted @ 2019-06-30 17:43  Ryan_Wo  阅读(954)  评论(0)    收藏  举报