數據庫名是用于區分數據庫的一個內部標識,是以二進制方式存儲在數據庫控制文件中的參數。數據庫創建之后不能再修改這個參數。數據庫創建后,它被寫入數據庫參數文件pfile或Spfile中。格式如下:
...
db_name="orcl"
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
...
數據庫實例名
數據庫實例是操作數據庫的實體,用戶通過實例與數據庫交互。實例名用來標識這個數據庫實例。數據庫創建后,實例名可以被修改。也在數據庫參數文件pfile或Spfile中。格式如下:
...
instance_name=orcl
service_names=orcl.dbcenter.toys.com
...
數據庫名與實例名可以相同。一個數據庫對應一個實例的情況下設置成相同的便于標識數據庫。但是在8i,9i的并行服務器中,數據庫與實例不存在一一對應關系,而是一對多關系,一個數據庫對應多個實例。不過一個用戶只能與一個實例相連。(這里才讓人恍然大悟,實例名與數據庫名的區別就很容易理解了)
數據庫域名
在分布式數據庫系統中,不同版本的數據庫服務器之間,不論運行的操作系統是unix或是windows,各服務器之間都可以通過數據庫鏈路進行遠程復制,數據庫域名主要用于oracle分布式環境中的復制。舉例說明如:
全國交通運政系統的分布式數據庫,其中:
福建節點: fj.jtyz
福建廈門節點: xm.fj.jtyz
江西: jx.jtyz
江西上饒:sr.jx.jtyz
這就是數據庫域名。
數據庫域名在存在于參數文件中,他的參數是db_domain.
操作系統環境變量(ORACLE_SID)
數據庫實例名有時使用實例名(Instance_name),有時使用ORACLE_SID。這兩個都是數據庫實例名,不易區分。實際上,instance_name參數是ORACLE數據庫的參數,可以再初始化參數文件中查詢到,而ORACLE_SID參數則是操作系統的環境變量。
在多個實例的服務器中,ORACLE通過ORACLE_SID決定啟動哪個實例。一般,如果服務器只有一個實例,ORACLE_SID的值和實例的名稱以及數據庫名稱相同。
舉例:在CMD中輸入sqlplus/nolog
再輸入connect
/ as sysdba;
那么:有2個數據庫實例,它怎么知道選擇哪一個呢?
其中就是我設置的環境變量起了作用。