Oracle SID、DB Name、DB Domain、全局数据库名、服务名、服务别名、实例名之间的区别

Oracle SID、DB Name、DB Domain、全局数据库名、服务名、服务别名、实例名之间的区别

Oracle 中的 SID、数据库名称、数据库域、全局数据库名称、服务名称、服务别名和实例名称有什么区别?

答案1

SID = 标识数据库实例(数据库名称 + 实例编号)。因此,如果您的数据库名称是 somedb,实例编号是 3,那么您的 SID 就是 somedb3。

DB 名称 = 数据库的名称(数据库可以由多个实例共享)

DB 域 = 通常与您的公司域相同 (somecompany.com)

全局数据库名称 = 数据库名称 + 数据库域(somedb.somecompany.com)

服务名称 = 一个或多个实例的“连接器”。在 RAC 环境中创建额外的服务名称通常很有用,因为可以修改服务以使用特定 SID 作为主要或次要连接,或者根本不使用某些 SID。

服务别名 = 服务名称的别名(就像 CNAME 等)。假设您为服务名称取一个对 dba 有意义的名字,但可能有点深奥。创建一个服务别名并将其命名为对用户有意义的名字。

实例名称 = 与 SID 相同

答案2

您描述 SID 的方式只是 RAC 配置中的默认行为。SID (== instance_name) 就是:您的实例的名称。

我总是这样看待它:一个实例是 RDBMS 软件的一个实例。一个实例装载一个控制文件,(alter database mount)在这个控制文件中写入了数据文件的位置。数据文件集合(好的,还有控制文件)== 数据库。

数据库有一个名称,即 db_name,以及(可选)域 (db_domain) --> 合起来就是 global_db_name。现在假设您正在复制 (DataGuard) 您的数据库。您想保持 DB_name 不变,对吗?(我的意思是:从数据上讲,它是同一个数据库)但是,如何识别数据库的两个“版本”?输入“DB_UNIQUE_NAME”... 是的,这让人感到困惑...

我个人的做法是将 INSTANCE 命名为 DataGuard 设置中的 db_unique_name,并在 RAC 设置中坚持使用 RAC 名称(db_name+Instance_Number)。然后,我编写的 db_unique_name 通常类似于 db_name + 1 个字母的后缀(MYDBa MYDBb 等)。

欢呼吧,保罗

答案3

SID 是实例。最好避免使用术语“数据库实例”,只使用实例。

“SID = 标识数据库实例(数据库名称 + 实例编号)”是错误的。“实例,是 RDBMS 软件的一个实例”是错误的。卸载或安装的 DBMS 都是 DBMS。

应避免使用“DB 域 = 通常与您的公司域相同”。我在使用域时遇到了问题,而当不使用域时,问题就会消失。

“全局数据库名称 = 数据库名称 + 数据库域”也是错误的。全局数据库名称就是服务名称。就这么简单。

“SID = 标识数据库实例(数据库名称 + 实例编号)。因此,如果您的数据库名称是 somedb,实例编号是 3,那么您的 SID 就是 somedb3。”是错误的。不存在这样的标识或名称连接。

答案4

我建议你参考

Knowledge Xpert for Oracle Administration > Oracle Architecture > Oracle instance, files and processes

如果您安装了 Toad,即使是试用版。

它完整​​地描述了整个画面。

相关内容