每次都好像了解了,但是过不多久就忘了,因为一般也很少真去区分。
DB_NAME,标志一数据库,是create database时确定的。用命令是不可修改的,除非手动修改spfile。
DB_DOMAIN,在一个数据库分布在多个地方的情况下,多了一个概念:域。这种情况下下为了特定某个域里的数据库,必须用DB_NAME.DB_DOMAIN来标志。这两个加起来,也就是GLOBAL_NAME了。
GLOBAL_NAME是一个数据库的唯一标志,缺省就是DB_NAME.DB_DOMAIN。GLOBAL_NAME和DB_NAME以及DB_DOMAIN没有必然联系,相互修改并不影响对方。GLOBAL_NAME也可以胡乱起。
SERVICE_NAME也是一个数据库的唯一标志,oracle 8i以前,用SID了标志一个数据库实例,但是后来Oracle可并行,一个数据库可以对应多个实例,为了定位,就多了SERVICE_NAME,SERVICE_NAME缺省就是DB_NAME.DB_DOMAIN,也就是等于GLOBAL_NAME。
一个数据库,可以有多个SERVICE_NAME。SERVICE_NAME也可以胡乱起,并不一定要和SID保持一致。
INSTANCE_NAME是一个数据库实例。
ORACLE_SID是oracle和os打交道的环境变量,,比如用在了文件名命名里,它不是oracle自身的参数( v$parameter里能看到)。INSTANCE_NAME却是oracle自身的参数。
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora
我感觉 ORACLE_SID和INSTANCE_NAME应该总是一样,就是同一个东西的两个名字,用在不同的地方:在oracle里面用INSTANCE_NAME,在os里面用sid。
没有评论:
发表评论