有人可以向我解释什么是SID,数据库名称,数据库域,全局数据库名称,服务名称,服务别名和实例名称在Oracle中的区别?
感谢迈克尔
SID =标识数据库实例(数据库名称+实例编号)。 所以如果你的数据库名是somedb,你的实例号是3,那么你的SID是somedb3。
数据库名称=数据库的名称(数据库可以共享b / t多个实例)
数据库域=通常与您的公司域(somecompany.com)相同
全局数据库名称=数据库名称+数据库域(somedb.somecompany.com)
服务名称=一个或多个实例的“连接器”。 在RAC环境中创build附加服务名称通常很有用,因为可以修改该服务以将特定的SID用作主要或次要连接,或根本不使用某些SID。
服务别名=服务名称的别名(就像CNAME等)。 说你让你的服务名称有意义的dba,但也许有点深奥。 创build一个服务别名并将其命名为对用户有意义的内容。
实例名称=与SID相同
您描述SID的方式只是RACconfiguration中的DEFAULT行为。 SID(== instance_name)就是:你的实例的名字。
我总是这样看待:一个实例,是RDBMS软件的一个实例。 一个实例MOUNTS一个控制文件,(alter database mount)在这个控制文件中写入数据文件的位置。 数据文件的收集(好的,和控制文件)==数据库。
数据库具有名称,db_name和(可选)域(db_domain) – > global global_db_name。 现在想象你正在复制(DataGuard)你的数据库。 你想保持DB_name一样,对吧? (我的意思是:数据明智的,这是同一个数据库)但是,那么如何确定你的数据库的两个“版本”? input'DB_UNIQUE_NAME'…是的,它变得困惑…
我个人的做法是在DataGuard设置中将实例命名为db_unique_name,并在RAC设置中使用RAC名称(db_name + Instance_Number)。 然后,我编写的db_unique_names通常就像db_name + 1个字母后缀(MYDBa MYDBb等)
干杯,保罗
SID是实例。 最好避免使用“数据库实例”这个词,只是实例。
“SID =标识数据库实例(数据库名称+实例编号)”是错误的。 “一个实例,是RDBMS软件的一个实例”是错误的。 卸载或安装的DBMS只是DBMS。
应该避免使用“数据库域=通常与您的公司域相同”。 我遇到了使用域的问题,而不使用域时问题就消失了。
“全球数据库名称=数据库名称+数据库域”也是错误的。 全局数据库名称是服务名称。 就这么简单。
“SID =标识数据库实例(数据库名+实例号),所以如果你的数据库名是somedb,你的实例号是3,那么你的SID是somedb3。 是错的。 没有这样的身份或名称的连锁。
我build议你参考
Knowledge Xpert for Oracle Administration > Oracle Architecture > Oracle instance, files and processes
如果你有安装蟾蜍,甚至试用版本。
它完整地描述了整个画面。