尽量一次把“数据库name”说清楚

日常运维中,很少有人关心db_name、INSTANCE_NAME、DB_UNIQUE_NAME、SID、GLOBAL_DBNAME有什么区别,通常设置成一样的了事,但是当你配置ADG的时候,就不得不区别这些名称了。


关于概念

DB_NAME:
1>顾名思义,数据库名,长度不能超过8个字符,在datafile、redolog和control file中都有记录
2>在DataGuard环境中DB_NAME相同而DB_UNIQUE_NAME不同
3>在RAC环境中,各个节点的DB_NAME都相同,但是INSTANCE_NAME不同
4>DB_NAME还在动态注册监听的时候起作用,无论是否定义了SERVICE_NAME,PMON进程都会使用DB_NAME动态注册监听
5>查询 SQL> select name from v$database;

INSTANCE_NAME:
1>默认是SID,单实例数据库中,和DB_NAME也相同。相对于DB_NAME我们可能更关注的是INSTANCE_NAME。oracle=实例+数据文件
2>initSID.ora、密码文件、进程名称都和INSTANCE_NAME保持一致
3>查询 SQL> select instance_name from v$instance;

SID:
1>SID是用来在OS中标识DB的名称,也就是在OS中用来指定连接哪个数据库的。ORACLE_SID与INSTANCE_NAME的值一致。单数据库环境,SID和DB_NAME相同。
2>查询 [oracle@dgp ~]$ cat ~/.bash_profile | grep ORACLE_SID

DB_UNIQUE_NAME:
1>在DG中区别数据库的重要标识
2>DB_UNIQUE_NAME在DG中会影响动态注册的SERVICE_NAME,即如果采用的是动态注册,则注册的SERVICE_NAME为DB_UNIQUE_NAME,但是实例还是INSTANCE_NAME,即SID
3>查询 cat $ORACLE_HOME/dbs/init$ORACLE_SID.ora | grep db_unique_name

GLOBAL_DBNAME:
1>对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name.Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值。

SERVICE_NAME:
1>用于数据库和客户端相连的标识
2>存在于tnsname.ora(SERVICE_NAME)和listener.ora(和GLOBAL_DBNAME相同)文件中

关于修改:

首先想说的是,没事尽量别改,比如DB_NAME改了,有很多文件夹也要改(当然也可以不改,但时间久了你确定自己不会懵就行)

修改 DB_NAME 一般有两种方式
1>修改spfile,备份修改控制文件,resetlogs打开数据库
2>通过nid 命令修改(推荐)

修改DB_UNIQUE_NAME:
参数文件中修改

修改Global_name:
只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令进行修改,然后修改相应参数。
 

概括:

如果实在分不清,起码要知道rac中instance_name和db_name的关系;DG中db_name和db_unique_name的关系。其他情况都尽量用一个名字也罢了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值