ORACLE_SID,INSTANCE_NAME和DB_NAME

jane_pop發表於2014-10-22
ORACLE_SID:
我們知道例項啟動的時候必須制定pfile/spfile:
pfile:init.ora
spfile:spfile.ora
當我們啟動一個例項的時候,會執行export ORACLE_SID=XXX,這時候oracle根據ORACLE_SID就可以在預設路徑下找到對應的引數檔案進行讀取,根據引數檔案的內容就可以分配記憶體啟動後臺程式,例項成功啟動。
所以,ORACLE_SID是一個作業系統環境變數,用於和作業系統互動,可以看做是orale和作業系統溝通的一個視窗。

INSTANCE_NAME:
這是一個實實在在存在的引數,用於識別資料庫的例項名。在oracle10g之前,這個引數還存在引數檔案當中,10g之後就從引數檔案中消失了。
來看看官方文件是如何描述這一引數的:
Property Description
Parameter type String
Syntax INSTANCE_NAME = instance_id
Default value The instance's SID

Note: The SID identifies the instance's shared memory on a host, but may not uniquely distinguish this instance from other instances.

Modifiable No
Range of values Any alphanumeric characters and the underscore (_) character
Basic No

In a Real Application Clusters environment, multiple instances can be associated with a single database service. Clients can override Oracle's connection load balancing by specifying a particular instance by which to connect to the database. INSTANCE_NAME specifies the unique name of this instance.

In a single-instance database system, the instance name is usually the same as the database name.

可以看到,在RAC環境中,不同的例項用於連線不同的資料庫服務,INSTANCE_NAME標誌了一個唯一的例項名。
而在單例項環境中,例項名通常和資料庫的名字相同。
資料庫名和例項名通常都是一對一的關係,有一個資料庫名那麼對應的就有一個例項名,如果有兩個資料庫,那麼必然存在兩個例項名。


DB_NAME:
就是資料庫的名稱,透過DB_NAME,我們可以找到資料庫對應的控制檔案,日誌檔案和資料檔案的位置。
看看官方文件對於這一引數的描述:
Property Description
Parameter type String
Syntax DB_NAME = database_name
Default value There is no default value.
Modifiable No
Basic Yes
Oracle RAC You must set this parameter for every instance. Multiple instances must have the same value, or the same value must be specified in the STARTUP OPEN SQL*Plus command or the ALTER DATABASE MOUNT SQL statement.

DB_NAME specifies a database identifier of up to 8 characters. This parameter must be specified and must correspond to the name specified in the CREATE DATABASE statement.

If you have multiple databases, the value of this parameter should match the Oracle instance identifier of each one to avoid confusion with other databases running on the system. The value of DB_NAME should be the same in both the standby and production initialization parameter files.

The database name specified in either the STARTUP command or the ALTER DATABASE ... MOUNT statement for each instance of the cluster database must correspond to the DB_NAME initialization parameter setting.

The following characters are valid in a database name: alphanumeric characters, underscore (_), number sign (#), and dollar sign ($). No other characters are valid. Oracle removes double quotation marks before processing the database name. Therefore you cannot use double quotation marks to embed other characters in the name. The database name is case insensitive.

可以看到,如果你的系統上執行著多個資料庫,那麼透過DB_NAME這個引數,就可以找到對應的資料庫資料檔案日誌檔案等而不會造成混淆。
DB_NAME是在建立資料庫的時候就被指定的,一旦確定了就不能修改,因為DB_NAME會同時儲存在pfile/spfile,控制檔案,資料檔案,日誌檔案中。
我們只能手動修改pfile/spfile中DB_NAME的值,卻不能修改控制檔案,資料檔案和日誌檔案中的值,所以一旦修改了之後就會引起與其他檔案中的值不匹配的問題,
從而導致資料庫無法正常啟動。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29800581/viewspace-1307517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章