關於資料庫中的一些name
如果接觸資料庫有些時間了,可能會碰到很多關於資料庫相關的名字,比如ORACLE_SID,db_name,instance_name,db_unique_name等等。可能一下子都有些糊塗了,就一股腦兒認為都應該是一致的,其實不然。如果你接觸的環境比較單一,可能會有這種錯覺。
我們來簡單對比一下單例項和多例項下的資料庫中的這些名詞。
首先來看看單例項的。
[ora11g@rac1 ~]$ echo $ORACLE_SID
TEST01
[ora11g@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 24 03:40:26 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter name --檢視資料庫中涉及到name的引數
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string TEST01
db_unique_name string TEST01
global_names boolean FALSE
instance_name string TEST01
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string TEST01
這麼看好像都是一致的,沒有任何區別。
再來看看多例項的環境。
-bash-4.1$ echo $ORACLE_SID
RACDB1
-bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 24 03:42:52 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Oracle Label Security, OLAP,
Data Mining and Real Application Testing options
SQL> show parameter name --檢視資料庫中涉及到name的引數
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string RACDB
db_unique_name string RACDB
global_names boolean FALSE
instance_name string RACDB1
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string RACDB
SQL>
從這個例子就能很明顯的看出來instance_name和db_name的不同。db_name代表資料庫名,這個是唯一的。長度最長為8位,根據oracle的體系結構,一個資料庫可以對應多個例項,那麼對應的多個例項名稱就不可能都相同,在rac環境中,instance_name就可以對應多個不同的例項名,單例項環境中instance_name和db_name事一致的。
對於ORACLE_SID,這個是基於作業系統級的變數,而且是大小寫敏感的。它的名字和instance_name是對應的。
既然db_name是資料庫名,那麼要修改就是很困難而且有一定得風險的。不能直接透過引數檔案直接去修改的。需要重建控制檔案。
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string TEST01
SQL> alter system set db_name=test01 scope=spfile;
alter system set db_name=test01 scope=spfile
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-32016: parameter "db_name" cannot be updated in SPFILE
繼續來看看service_name相關的一些東西。
檢視監聽的情況,可以看到rac有連個監聽,其中一個是透過IP漂移來動態控制的。LISTENER_SCAN1,但是不管監聽的名稱如何,對應的service_name都和db_name是一致的。
-bash-4.1$ ps -ef|grep tns
root 13 2 0 Nov19 ? 00:00:00 [netns]
ora11g 2333 1 0 Nov19 ? 00:00:03 /u03/ora11g/product/11.2.0/dbhome_1/bin/tnslsnr list -inherit
grid 22803 1 0 03:34 ? 00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 22807 1 0 03:34 ? 00:00:00 /u04/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
grid 23134 21458 0 03:46 pts/0 00:00:00 grep tns
-bash-4.1$ tnsping racdb
TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 24-NOV-2014 03:47:18
Copyright (c) 1997, 2011, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RACDB)))
OK (10 msec)
-bash-4.1$ lsnrctl status racdb
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 24-NOV-2014 03:45:28
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac-scan)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RACDB)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 24-NOV-2014 03:34:31
Uptime 0 days 0 hr. 10 min. 57 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u04/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u04/app/11.2.0/grid/log/diag/tnslsnr/rac1/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.100)(PORT=1521)))
Services Summary...
Service "RACDB" has 1 instance(s).
Instance "RACDB1", status READY, has 1 handler(s) for this service...
Service "RACDBXDB" has 1 instance(s).
Instance "RACDB1", status READY, has 1 handler(s) for this service...
The command completed successfully
對於db_unique_name,這個是在dataguard中需要設定的一個引數,在10g開始啟用,關於為什麼有這麼一個引數,其實可以這麼理解,如果某個主庫有一個備庫,採用dataguard來實現,並且在同一臺機器上,那麼就可以使用db_unique_name來在dg環境中為db設定一個唯一的值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1346951/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於redis快取資料庫的一些思考Redis快取資料庫
- 關於資料庫連線的一些小問題資料庫
- 關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- 關於資料庫事務和鎖的一些分析資料庫
- 關於SQL資料庫一些簡單的筆記SQL資料庫筆記
- oracle資料庫中讓人容易混淆的“name”Oracle資料庫
- 資料庫的一些有關資料庫
- (轉)關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- 基於mysql資料庫 關於sql優化的一些問題MySql資料庫優化
- 轉貼:關於資料庫名(db_name)、例項名(instance_name)、ORACLE_SID資料庫Oracle
- Oracle 資料庫的眾多 “NAME”Oracle資料庫
- 關於資料庫故障資料庫
- 關於Oracle中重啟資料庫的一個bugOracle資料庫
- oracle中於資料庫相關的常用命令????Oracle資料庫
- 關於使用ThreadLocal管理資料庫連線的一些疑問thread資料庫
- 3.3.1 關於關閉資料庫資料庫
- 修改資料庫db_name的方法資料庫
- ORACLE資料庫修改資料庫名db_nameOracle資料庫
- 關於order by中的資料排序排序
- 關於大資料的一些真知灼見大資料
- 【筆記】關於大資料的一些想法筆記大資料
- 關於大資料和資料庫的討論大資料資料庫
- 2.5.1 關於建立資料庫的子句資料庫
- 關於資料庫鎖的總結資料庫
- 關於資料庫open的深入探究資料庫
- 2.1 關於建立資料庫資料庫
- 關於資料庫碎片管理資料庫
- 關於資料庫驅動資料庫
- 關於PHP往mysql資料庫中批次插入資料例項教程PHPMySql資料庫
- Oracle中關於資料庫例項名與資料庫服務名(轉載)Oracle資料庫
- 關於 iOS 中的庫iOS
- 關於高階複製的一些資料同步
- 資料庫中主庫和從庫的關係資料庫
- 關於LOG4J寫入SQLServer資料庫中的求助!!SQLServer資料庫
- 關於Oracle資料庫與MySQL資料庫的幾點區別Oracle資料庫MySql
- 關於資料庫安全的五點思考資料庫
- 關於資料庫open的深入探究(轉)資料庫
- 關於資料庫系統的學習資料庫