數據庫名(DB_NAME)、數據庫實例名(INSTANCE_NAME)、操作系統環境變量ORACLE_SID、數據庫服務名 (SERVICE_NAME)、數據庫域名(DB_DOMAIN)以及全局數據庫名(GLOBAL_DB_NAME)是幾個使用Oracle數據庫容易混 淆的概念。
1、數據庫名與實例名
×數據庫名(DB_NAME):是區分數據的內部標識(即是給Oracle數據庫內部使用的),因為其在數據庫多處保存,并且控制文件中保存是二進制的,所以很難改變其名字(是難不是不可以,當初設計好數據庫了還改它干嘛)
在pfile中有db_name參數就是它。
數據庫名作用:內部標記,在數據庫安裝、創建、創建控制文件、修改數據庫結構、使用數據庫備份與恢復時都使用數據庫名(注意這些時候不是用什么sid。。。)
如alter database時都是使用該數值
查看:可以看參數(多種方法,show parameter db_name等)或者查v$database視圖
修改數據庫名:略,壇子里有
×實例名
實例名(Instance_name):用于和操作系統間聯系(對外連接使用),一個數據庫可以有多個實例(并行服務)。要和一個數據庫服務器相連,必須知道其實例名,光知道數據庫名是沒用的。
在pfile中有instance_name參數,其實一般設置與數據庫名稱是相同的(不相同是自找麻煩),可以較容易改變該參數
查看:看參數
INSTANCE_NAME與ORALCE_SID區別:
都是指數據庫實例名,但ORACLE_SID是操作系統的環境變量設置,用于和操作系統交互,其取值必須與INSTANCE_NAME相同,而INSTANCE_NAME可在參數文件中查到(說明白了嗎)
(2000下需要注意到注冊表中定義修改相關參數即ORACLE_SID)
在網絡服務配置中(舊的協議不說了),net8i里面有一個選項就是sid配置就是指ORALCE_SID名稱!(9i的新的服務配置后面有說明)
2、數據庫域名與服務名(8i以后版本引入的名稱)
×數據庫域名:類似網絡域名的概念,(所以一個數據庫名db_name在不同的域里可以相同)
在安裝時確定(全局數據庫名中填寫),定義規則也相似于網絡定義。
參數文件中db_domain,沒有該項則全局數據庫名和數據庫名相同,該數據庫沒有使用域名
查詢:
×全局數據庫名:=db_name+db_domain,若沒有db_domain,則...
×數據庫服務名(SERVICE_NAMES);這可不是你在客戶端配置的網絡服務的概念(要分清!!!),這是數據庫本身的概念!!!
定義為=全局數據庫名(參照全局數據庫名的定義,則有分支,如果有域名,則服務名=...,無域名則。。。)
參數文件中service_names
在9i新提供的Net Services網絡服務中,推薦使用該種方式連接(Net8i也可配)
域名可以容易修改(改參數重起實例可)