欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle DB_UNIQUE_NAME和DB_NAME的理解

程序员文章站 2022-04-21 18:41:01
...

DB_UNIQUE_NAME这在另一个HA的应用,Dataguard会经常提及的,和DB_NAME不一样的作用,在DG里,要求物理DG,主从库都有一样的DB_N

DB_UNIQUE_NAME
DB_NAME

在一般的数据库里我们看到倒是没有什么特殊的差异的,不过在多实例多数据系统里,这两个倒是经常被提及。不小心就把两个看成一个东东了。其实不然。

这里个人吧对其的理解归纳如下。

DB_NAME 数据库名称,也就是数据库的名字标示。这里,数据库里可能有多个实例,比如RAC里的多节点,这多个节点是不同的实例,但是却有相同的名字,他们的 DB_NAME是相同的但是Instance_name是不同的。DB_NAME会保持在数据文件头里,所以更改DB_NAME不能仅仅修改parameter,还需要用nid 来进行更改,并且更改后还需要手工做些工作,是其生效。

DB_UNIQUE_NAME这在另一个HA的应用,Dataguard会经常提及的,和DB_NAME不一样的作用,在DG里,要求物理DG,主从库都有一样的DB_NAME,虽然他们和RAC不一样,并不是同一个库。这里是数据库的唯一名字。但是他们的DB_UNIQUE_NAME是不一样的,用以进行不同的标示。DB_UNQUIE_NAME的会影响到Service_names,也会影响到动态监听的时候的service_name

比如如下片段
Service "zxdbdg1" has 1 instance(s).
Instance "zxdb", status BLOCKED, has 1 handler(s) for this service...
Service "zxdbdg1_XPT" has 1 instance(s).
Instance "zxdb", status BLOCKED, has 1 handler(s) for this service...
The command completed successfully

这里的zxdbdg1就是dg中的从库。从库的db_name和主库保持一样为zxdb,DB_UNIQUE_NAME不同。在动态监听后,注册为
zxdbdg1的service,启动的instance_name还是zxdb

Instance_name简单讲就是Oracle_SID,oracle里通过ORSCLE_SID来管理不同的数据库实例。

另,上面的动态监听信息里出现了Instance "zxdb", status BLOCKED

这里是因为我的从库数据库不是open状态。

NinGoo :db_unique_name 一般是在同一台机器上有两个数据库的db_name一样的时候需要设置,比较典型的情况是单机上做Data Guard的时候。

Oracle DB_UNIQUE_NAME和DB_NAME的理解