SID、ORACLE_SID、INSTANCE_NAME、DB_NAME、SERVER_NAMES、GLOBAL_DBNAME等區別
監聽中動態註冊時的服務名(即lsnrctl status顯示的的service對應的名稱):
(優先順序別service_names.db_domain=db_unique_name.db_domain>db_name.db_domain)
如果有引數值service_names\db_unique_name,
則拼接service_names、db_unique_name引數值和db_domain引數值註冊到監聽,即兩個值
如果只有引數值service_names,且值和db_name值不一樣
則拼接service_names、db_name引數值和db_domain引數值註冊到監聽,即兩個值
如果只有引數值db_unique_name,且值和db_name值不一樣
則拼接db_unique_name引數值和db_domain引數值註冊到監聽,即一個值
datagard環境:所以編輯tnsname.ora時,tns中standby的service_name=db_unique_name.db_domain即可(primary庫一般不設定db_unique_name,這樣primary庫的db_unique_name就預設為db_name)
監聽中靜態註冊時的服務名(即lsnrctl status顯示的的service對應的名稱):
使用listener.ora中的GLOBAL_DBNAME,如果listener.ora中沒有GLOBAL_DBNAME,則使用listener.ora中的SID_NAME
SID:非引數,字面意思就是System Identifier,存放在tnsname.ora中匹配伺服器listener.ora中的sid_name
SID_NAME:非引數,存在在listener.ora中的靜態監聽配置中區分大小寫,來自Instance_name而非ORACLE_SID,因為lsntctl時顯示的SID_NAME就是Instance(如果沒service_name、db_unique_name引數則lsnrctl 顯示的Service也是SID_NAME)
listener.ora File Parameter(SID_NAME)
The Oracle system identifier (SID) of the instance. You can obtain the SID value from the INSTANCE_NAME parameter in the initialization parameter file.
listener.ora檔案引數(SID_NAME)
例項的Oracle系統識別符號(SID)。 您可以從初始化引數檔案中的INSTANCE_NAME引數獲取SID值。
如果沒有區分大小寫,Service、Instance都是orcl,但是實際INSTANCE_NAME是ORCL,rman使用tns配置SERVICE_NAME為orcl或ORCL登入時,不會報tns或lsn的錯誤(因為SERVICE_NAME不區分大小寫),但是會報錯ORA-01017: invalid username/password; logon denied
例子1:
listener.ora配置SID_NAME=prod2_std,但是引數instance_name是PROD2_STD,啟動例項到nomount狀態,則重啟監聽,資訊為
Service "prod2_std" has 2 instance(s).
Instance "PROD2_STD", status BLOCKED, has 1 handler(s) for this service...
Instance "prod2_std", status UNKNOWN, has 1 handler(s) for this service...
這時rman使用tns中SERVICE_NAME = prod2_std或SERVICE_NAME =PROD2_STD的別名登入都會報錯ORA-01017: invalid username/password; logon denied(直接sqlplus而不使用as sysdba時是無法使用tns登入nomount的資料庫的,但是rman是可以的,在duplicate時極其容易有這個錯誤,一旦出現這個錯誤還以為密碼有問題,繞來繞去搞密碼永遠都解決不了)
例子2:
listener.ora配置SID_NAME = DW
(SID_DESC =(ORACLE_HOME= /iso/db/11.2.0)(SID_NAME = DW))
service_names引數為PROD1,instance_name引數值為PROD1
lsnectl start顯示資訊如下
Service "DW" has 1 instance(s).
Instance "DW", status UNKNOWN, has 1 handler(s) for this service...
Service "PROD1" has 2 instance(s).
Instance "PROD1", status READY, has 1 handler(s) for this service...
例子3:
listener.ora配置SID_NAME=PRODSTD88,GLOBAL_DBNAME=PRODSTD77
(SID_DESC=(GLOBAL_DBNAME=PRODSTD77)(ORACLE_HOME=/u01/app/oracle)(SID_NAME=PRODSTD88))
service_names為PRODSTD,instance_name引數為PRODSTD
lsnrctl start顯示資訊如下
Service "PRODSTD" has 1 instance(s).
Instance "PRODSTD", status READY, has 1 handler(s) for this service...
Service "PRODSTD77" has 1 instance(s).
Instance "PRODSTD88", status UNKNOWN, has 1 handler(s) for this service...
GLOBAL_DBNAME:非引數,存在在listener.ora中的靜態監聽配置中,可以隨便定義
listener.ora File Parameter(GLOBAL_DBNAME)
While processing a client connection request, the listener tries to match the value of this parameter with the value of the SERVICE_NAME parameter in the client connect descriptor. If the client connect descriptor uses the SID parameter, then the listener does not attempt to map the values. This parameter is primarily intended for configurations with Oracle8 databases (where dynamic service registration is not supported for dedicated servers). This parameter may also be required for use with Oracle8i and later database services by some configurations.
The value for this parameter is typically obtained from the combination of the DB_NAME and DB_DOMAIN parameters (DB_NAME.DB_DOMAIN) in the initialization parameter file, but the value can also contain any valid name used by clients to identify the service.
listener.ora檔案引數(GLOBAL_DBNAME)
在處理客戶端連線請求時,監聽器嘗試將此引數的值與客戶端連線描述符中的SERVICE_NAME引數值相匹配。 如果客戶端連線描述符使用SID引數,那麼偵聽器不會嘗試對映這些值。 此引數主要用於Oracle8資料庫的配置(專用伺服器不支援動態服務註冊)。 透過某些配置,此引數對於Oracle8i及更高版本的資料庫服務也可能是必需的。
此引數的值通常是從初始化引數檔案中DB_NAME和DB_DOMAIN引數(DB_NAME.DB_DOMAIN)的組合中獲得的,但該值也可以包含客戶端用來標識服務的任何有效名稱。
比如靜態監聽LISTENER中(GLOBAL_DBNAME=PRODSTD222),而引數service_names值是PRODSTD,則lsnrctl status結果如下
Service "PRODSTD" has 1 instance(s).
Instance "PRODSTD", status READY, has 1 handler(s) for this service...
Service "PRODSTD222" has 1 instance(s).
Instance "PRODSTD", status UNKNOWN, has 1 handler(s) for this service...
GLOBAL_NAMES:引數,和dblink相關,specifies whether a database link is required to have the same name
as the database to which it connects
SERVICE_NAME:非引數,存在tnsname.ora中,標明監聽器的服務名稱,匹配引數service_names或listener.ora中global_name的值(如listener中沒有global_name則匹配listener中的SID_NAME),資料庫直連就是IP:port/Service_name,對應lsnrctl status顯示的service對應的名稱
比如靜態監聽LISTENER中(GLOBAL_DBNAME=PRODSTD222),而引數service_names值是PRODSTD,則lsnrctl status結果如下
Service "PRODSTD" has 1 instance(s).
Instance "PRODSTD", status READY, has 1 handler(s) for this service...
Service "PRODSTD222" has 1 instance(s).
Instance "PRODSTD", status UNKNOWN, has 1 handler(s) for this service...
SERVICE_NAMES:引數,specifies one or more names by which clients can connect to the instance,
DB_NAME:引數,資料庫名,安裝資料庫時建立的,安裝好後儘量不要去修改,可以單獨更改,也可以和Db_id一起更改
Db_id:非引數,資料庫id,在dataguard中db_name一致則db_id也一致,安裝好後儘量不要去修改,可以單獨更改,也可以和Db_name一起更改
INSTANCE_NAME:引數,資料庫例項名
Db_unique_name:引數,只在dataguard中有效,區別具有相同db_name、instance_name的資料庫,可以隨便命名
ORACLE_SID: 非引數,ORACLE_SID就是ORACLE System Identifier,用於oracle和os進行聯絡的,以環境變數形式出現,當ORACLE啟動時OS上fork的程式必須透過ORACLE_SID將例項與其他例項區分開來,oracle的後臺程式的名稱就是透過ORACLE_SID決定的,ORACLE啟動需要引數檔案,而這預設引數檔案的名稱就是由ORACLE_SID決定的,如init.ora和spfile.ora。
一臺伺服器上有多個例項時,登陸選擇某個例項的方法如下:
Linux:export ORACLE_SID=XX或直接ORACLE_SID=XX
Windows:set ORACLE_SID=XX
ORACLE_SID和Instance_name區別:不同的ORACLE_SID(例項)可以有相同的Instance_name(例項名),透過簡單的引數檔案複製即可實現(如複製一個檔案init.ora為initnew.ora,再ORACLE_SID=ORACLE_SIDnew後sqlplus / as sysdba 進行startup,可以在伺服器上發現兩個例項,一個為ORACLE_SID,一個為ORACLE_SIDnew,但是兩者的instance_name都是一樣的)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-1846929/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- instance_name、db_name、ORACLE_SID、db_name等的區別Oracle
- [轉]ORACLE中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAMEOracle
- ORACLE_SID,INSTANCE_NAME和DB_NAMEOracle
- ORACL中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介紹Oracle
- ORACLE中的DB_NAME,SERVICE_NAME,INSTANCE_NAME,ORACLE_SID,GLOBAL_DBNAME介紹Oracle
- oracle sid,instance_name,db_name,oracle_sid之間的關係Oracle
- 關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- (轉)關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- 轉貼:關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- 關於ORACLE_SID和DB_NAME的理解Oracle
- DB_NAME、DB_UNIQUE_NAME、SERVICE_NAME和INSTANCE_NAME等的區別
- 關於db_name,oracle_sid,service_names,global_names等的總結說明Oracle
- Oracle中DB_NAME,SID,DB_DOMAIN,SERVICE_NAME等之間的區別OracleAI
- 關於db_name,instance_name等近似概念的理解????
- How to Rename Database/Change DB_NAME or ORACLE_SID/Instance Name-15390.1DatabaseOracle
- oracle_sid與netmgr listener的sidOracle
- export ORACLE_SID=founder exportExportOracle
- Oracle - 資料庫名、例項名、服務名、ORACLE_SID 的說明和區別Oracle資料庫
- 檢視window下預設ORACLE_SIDOracle
- shell 指令碼讀多個oracle_sid指令碼Oracle
- 利用nid工具修改db_name和instance_name
- The database owner SID recorded in the master database differs from the database owner SID recorded in database 'DB_NAME'DatabaseAST
- 更改資料庫SID名和db_name名資料庫
- DB_NAME DB_UNIQUE_NAME 和 SID 的理解
- ORACLE SPID/PID/SID區別Oracle
- dataguard 搭建 oracle_sid不同 2節點 primary+standbyOracle
- dataguard 搭建 oracle_sid相同 2節點 primary+standbyOracle
- 解決客戶資料庫oracle_sid問題資料庫Oracle
- What is the $ORACLE_HOME/dbs/hc_<ORACLE_SID>.dat fileOracle
- ORACLE_SID環境變數設定的問題Oracle變數
- db_name和db_unique_name的區別
- Oracle修改instance_name、db_name、db_unique_name、service_namesOracle
- oracle 10g中的幾個概念(sid/db_name/....)Oracle 10g
- linux下設定ORACLE_SID和ORACLE_HOME變數LinuxOracle變數
- 修改oracle例項名(sid)和資料庫名(db_name)Oracle資料庫
- rman duplicate建立異地auxiliary Database oracle_11g oracle_sid不同UXDatabaseOracle
- rman duplicate建立異地auxiliary Database oracle_11g oracle_sid相同UXDatabaseOracle
- Oracle SID和Service_Name有什麼區別?Oracle