Michael Ellick Ang Asked: 2009-08-04 13:24:58 +0800 CST2009-08-04 13:24:58 +0800 CST 2009-08-04 13:24:58 +0800 CST Oracle SID、DB Name、DB Domain、Global Database Name、Service Name、Service Alias和Instance Name的区别 772 有人可以向我解释一下 Oracle 中 SID、数据库名称、数据库域、全局数据库名称、服务名称、服务别名和实例名称的区别吗? 谢谢迈克尔 oracle 4 个回答 Voted Best Answer jswoods7 2009-08-07T19:47:08+08:002009-08-07T19:47:08+08:00 SID = 标识数据库实例(数据库名称+实例号)。因此,如果您的数据库名称是 somedb 并且您的实例号是 3,那么您的 SID 是 somedb3。 DB Name = 数据库名称(数据库可以被多个实例共享) DB 域 = 通常与您的公司域相同 (somecompany.com) 全局数据库名称 = 数据库名称 + 数据库域 (somedb.somecompany.com) 服务名称 = 一个或多个实例的“连接器”。在 RAC 环境中创建附加服务名称通常很有用,因为可以修改服务以使用特定 SID 作为主要或辅助连接,或者根本不使用某些 SID。 服务别名 = 服务名称的别名(就像 CNAME 等)。假设您使您的服务名称对 dba 有意义,但也许它有点深奥。创建一个服务别名并将其命名为对用户有意义的名称。 实例名称 = 与 SID 相同 paul 2009-08-10T01:03:22+08:002009-08-10T01:03:22+08:00 您描述 SID 的方式只是 RAC 配置中的默认行为。SID (== instance_name) 就是:您的实例的名称。 我总是这样看:一个Instance,是RDBMS软件的一个Instance。一个实例 MOUNTS 一个控制文件,(alter database mount)在这个控制文件中写入了数据文件的位置。数据文件的集合(好的,以及控制文件)== 数据库。 数据库有一个名称、db_name 和(可选)一个域 (db_domain) --> 一起是 global_db_name。现在假设您正在复制(DataGuard)您的数据库。您想保持 DB_name 相同,对吗?(我的意思是:数据方面,它是相同的数据库)但是如何识别数据库的两个“版本”?输入“DB_UNIQUE_NAME”...是的,它变得很混乱... 我个人的做法是在 DataGuard 设置中将实例命名为 db_unique_name,并在 RAC 设置中坚持使用 RAC 名称(db_name+Instance_Number)。然后,我编的 db_unique_names,一般是 db_name + 1-letter-suffix (MYDBa MYDBb etc.) 干杯,保罗 Bernaridho 2014-11-22T18:17:04+08:002014-11-22T18:17:04+08:00 SID 是实例。最好避免使用术语“数据库实例”,仅使用实例。 “SID=标识数据库实例(数据库名+实例号)”是错误的。“一个实例,是关系型数据库软件的一个实例”是错误的。已卸载或已安装的 DBMS 只是 DBMS。 应避免使用“DB 域 = 通常与您的公司域相同”。我在使用域时遇到了问题,不使用域时问题消失了。 “全局数据库名称=数据库名称+数据库域”也是错误的。全局数据库名称是服务名称。就是这么简单。 “SID = 标识数据库实例(数据库名+实例号)。所以如果你的数据库名是somedb,你的实例号是3,那么你的SID就是somedb3。” 是错的。没有这种身份或姓名的联系。 user25414 2009-11-12T01:32:14+08:002009-11-12T01:32:14+08:00 建议你参考 Knowledge Xpert for Oracle Administration > Oracle Architecture > Oracle instance, files and processes 如果您安装了 Toad,甚至是试用版。 它彻底地描述了整个画面。
SID = 标识数据库实例(数据库名称+实例号)。因此,如果您的数据库名称是 somedb 并且您的实例号是 3,那么您的 SID 是 somedb3。
DB Name = 数据库名称(数据库可以被多个实例共享)
DB 域 = 通常与您的公司域相同 (somecompany.com)
全局数据库名称 = 数据库名称 + 数据库域 (somedb.somecompany.com)
服务名称 = 一个或多个实例的“连接器”。在 RAC 环境中创建附加服务名称通常很有用,因为可以修改服务以使用特定 SID 作为主要或辅助连接,或者根本不使用某些 SID。
服务别名 = 服务名称的别名(就像 CNAME 等)。假设您使您的服务名称对 dba 有意义,但也许它有点深奥。创建一个服务别名并将其命名为对用户有意义的名称。
实例名称 = 与 SID 相同
您描述 SID 的方式只是 RAC 配置中的默认行为。SID (== instance_name) 就是:您的实例的名称。
我总是这样看:一个Instance,是RDBMS软件的一个Instance。一个实例 MOUNTS 一个控制文件,(alter database mount)在这个控制文件中写入了数据文件的位置。数据文件的集合(好的,以及控制文件)== 数据库。
数据库有一个名称、db_name 和(可选)一个域 (db_domain) --> 一起是 global_db_name。现在假设您正在复制(DataGuard)您的数据库。您想保持 DB_name 相同,对吗?(我的意思是:数据方面,它是相同的数据库)但是如何识别数据库的两个“版本”?输入“DB_UNIQUE_NAME”...是的,它变得很混乱...
我个人的做法是在 DataGuard 设置中将实例命名为 db_unique_name,并在 RAC 设置中坚持使用 RAC 名称(db_name+Instance_Number)。然后,我编的 db_unique_names,一般是 db_name + 1-letter-suffix (MYDBa MYDBb etc.)
干杯,保罗
SID 是实例。最好避免使用术语“数据库实例”,仅使用实例。
“SID=标识数据库实例(数据库名+实例号)”是错误的。“一个实例,是关系型数据库软件的一个实例”是错误的。已卸载或已安装的 DBMS 只是 DBMS。
应避免使用“DB 域 = 通常与您的公司域相同”。我在使用域时遇到了问题,不使用域时问题消失了。
“全局数据库名称=数据库名称+数据库域”也是错误的。全局数据库名称是服务名称。就是这么简单。
“SID = 标识数据库实例(数据库名+实例号)。所以如果你的数据库名是somedb,你的实例号是3,那么你的SID就是somedb3。” 是错的。没有这种身份或姓名的联系。
建议你参考
如果您安装了 Toad,甚至是试用版。
它彻底地描述了整个画面。