資料庫名(DB_NAME)、資料庫執行個體名(INSTANCE_NAME)、作業系統環境變數ORACLE_SID、資料庫服務名(SERVICE_NAME)、資料庫網域名稱(DB_DOMAIN)以及全域資料庫名(GLOBAL_DB_NAME)是幾個使用Oracle資料庫容易混淆的概念。
1、資料庫名與執行個體名
×資料庫名(DB_NAME):是區分資料的內部標識(即是給Oracle資料庫內部使用的),因為其在資料庫多處儲存,並且控制檔案中儲存是二進位的,所以很難改變其名字(是難不是不可以,當初設計好資料庫了還改它幹嘛)
在pfile中有db_name參數就是它。
資料庫名作用:內部標記,在資料庫安裝、建立、建立控制檔案、修改資料庫結構、使用Database Backup與恢複時都使用資料庫名(注意這些時候不是用什麼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也可配)
網域名稱可以容易修改(改參數重起執行個體可)