当前位置: 首页 > 工具软件 > Class::DBI > 使用案例 >

DBID,SID,DB name,DB global name的区别

朱博实
2023-12-01

参考

  • Difference between DB name, DB global name, DBID and SID (Doc ID 1277854.1),并使用两节点RAC作为示例。
  • https://serverfault.com/questions/49509/oracle-difference-between-sid-db-name-db-domain-global-database-name-service

DBID

按照这里的定义:

An internal, uniquely generated number that differentiates databases. Oracle creates this number automatically when you create the database.

获取DBID的方法可参见这里

示例,以下为2节点RAC,两个实例上执行的输出相同,因为是同一个数据库:

-- RAC 实例 1
SQL> select DBID from v$database;

      DBID
----------
1037029797

-- RAC 实例 2
SQL> select DBID from v$database;

      DBID
----------
1037029797

使用NID程序可以修改DBID, DBNAME。

DB NAME

唯一确定服务器上的数据库,也就是说,一个服务器上不能有两个数据库DB_NAME一样。
例如在RAC中,两个实例上的DB_NAME是一样的:

SQL> select name from v$database;

NAME
---------
DBRAC

使用NID程序可以修改DBID, DBNAME。

SID

唯一确定数据库中的实例。本例中就是DB_NAME加数字序号。

例如:

-- RAC 实例 1 或 2
SQL> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
DBRAC1
DBRAC2

-- RAC 实例 1
SQL> show parameter instance_number

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_number                      integer     1

SQL> SELECT sys_context('userenv','instance_name') FROM dual;

SYS_CONTEXT('USERENV','INSTANCE_NAME')
--------------------------------------------------------------------------------
DBRAC1

-- RAC 实例 2
SQL> show parameter instance_number

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_number                      integer     2

SQL> SELECT sys_context('userenv','instance_name') FROM dual;

SYS_CONTEXT('USERENV','INSTANCE_NAME')
--------------------------------------------------------------------------------
DBRAC2

可以看一下这篇文章

DB global name

唯一确定数据库,例如在多服务器的分布式系统中。格式为DB_NAME.DB_DOMAIN,详见Global Database Name Explained (Doc ID 115499.1)。

在RAC中所有实例的输出都一样:

SQL> show parameter domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string      sub07281611220.training.oracle
                                                 vcn.com

SQL> SELECT * FROM global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
DBRAC.SUB07281611220.TRAINING.ORACLEVCN.COM

SQL> SELECT * FROM props$ WHERE name='GLOBAL_DB_NAME';

NAME
--------------------------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
COMMENT$
--------------------------------------------------------------------------------
GLOBAL_DB_NAME
DBRAC.SUB07281611220.TRAINING.ORACLEVCN.COM
Global database name

使用ALTER DATABASE RENAME GLOBAL_NAME可以改名。

DB_UNIQUE_NAME

数据库的全局唯一名称:

SQL> show parameter DB_UNIQUE_NAME

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      DBRAC_21c

如何修改参考MOS文档:How to change the DB_UNIQUE_NAME in a RAC database (Doc ID 1604421.1)

从文档可知:

Databases with the same DB_NAME within the same DB_DOMAIN (for example, copies of a database created for reporting or a physical standby) must have a unique DB_UNIQUE_NAME. Every database’s DB_UNIQUE_NAME must be unique within the enterprise.

这个参数应该和DG相关,也就是说,主备库的DB_NAME和DB_DOMAIN相同,但DB_UNIQUE_NAME必须不同。

ADG环境

主库:

-- DBID相同
SQL> select DBID from v$database;

      DBID
----------
2501127265

-- DBNAME相同
SQL> select name from v$database;

NAME
---------
DB193H1

-- 实例名相同
SELECT sys_context('userenv','instance_name') FROM dual;

-- Same
SQL> show parameter domain

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_domain                            string

SQL> show parameter  DB_UNIQUE_NAME

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      DB193H1_STDBY

SQL> show parameter  DB_UNIQUE_NAME

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      DB193H1

备库:

SQL> select DBID from v$database;

      DBID
----------
2501127265

 类似资料: