1. 程式人生 > >Oracle資料庫名、例項名、全域性資料庫名、服務名、網路服務名區別和聯絡

Oracle資料庫名、例項名、全域性資料庫名、服務名、網路服務名區別和聯絡

資料庫名、例項名、資料庫域名、全域性資料庫名、服務名,網路服務名,這是幾個令很多初學者容易混淆的概念。相信很多初學者都與我一樣被標題上這些個概念搞得一頭霧水。我們現在就來把它們弄個明白。

一、資料庫名
資料庫名就是一個數據庫的標識,就像人的身份證號一樣。他用引數DB_NAME表示,如果一臺機器上裝了多全資料庫,那麼每一個數據庫都有一個數據庫名。在資料庫安裝或建立完成之後,引數DB_NAME被寫入引數檔案之中。格式如下:
DB_NAME=myorcl
在建立資料庫時就應考慮好資料庫名,並且在建立完資料庫之後,資料庫名不宜修改,即使要修改也會很麻煩。因為,資料庫名還被寫入控制檔案中,控制檔案是以 二進位制型式儲存的,使用者無法修改控制檔案的內容。假設使用者修改了引數檔案中的資料庫名,即修改DB_NAME的值。但是在Oracle啟動時,由於引數文 件中的DB_NAME與控制檔案中的資料庫名不一致,導致資料庫啟動失敗,將返回ORA-01103錯誤。

資料庫名的作用
資料庫名是在安裝資料庫、建立新的資料庫、建立資料庫控制檔案、修改資料結構、備份與恢復資料庫時都需要使用到的。
有很多Oracle安裝檔案目錄是與資料庫名相關的,如:
winnt: d:\oracle\product\10.1.0\oradata\DB_NAME…
Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/…
pfile:
winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora
Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora
跟蹤檔案目錄:
winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/…
另外,在建立資料時,careate database命令中的資料庫名也要與引數檔案中DB_NAME引數的值一致,否則將產生錯誤。
同樣,修改資料庫結構的語句alter database, 當然也要指出要修改的資料庫的名稱。
如果控制檔案損壞或丟失,資料庫將不能載入,這時要重新建立控制檔案,方法是以nomount方式啟動例項,然後以create controlfile命令建立控制檔案,當然這個命令中也是指指DB_NAME。
還有在備份或恢復資料庫時,都需要用到資料庫名。
總之,資料庫名很重要,要準確理解它的作用。

    查詢當前資料名
             方法一:select name from v$database;
             方法二:show parameter db
             方法三:檢視引數檔案。

    修改資料庫名
     前面建議:應在建立資料庫時就確定好資料庫名,資料庫名不應作修改,因為修改資料庫名是一件比較複雜的事情。那麼現在就來說明一下,如何在已建立資料之後,修改資料庫名。步驟如下:
     1.關閉資料庫。
     2.修改資料庫引數檔案中的DB_NAME引數的值為新的資料庫名。
     3.以NOMOUNT方式啟動例項,修建控制檔案(有關建立控制檔案的命令語法,請參考oracle文件)

二、資料庫例項名
資料庫例項名是用於和作業系統進行聯絡的標識,就是說資料庫和作業系統之間的互動用的是資料庫例項名。例項名也被寫入引數檔案中,該引數為instance_name,在winnt平臺中,例項名同時也被寫入登錄檔。
資料庫名和例項名可以相同也可以不同。
在一般情況下,資料庫名和例項名是一對一的關係,但如果在oracle並行伺服器架構(即oracle實時應用叢集)中,資料庫名和例項名是一對多的關係。這一點在第一篇中已有圖例說明。

    查詢當前資料庫例項名
             方法一:select instance_name from v$instance;
             方法二:show parameter instance
             方法三:在引數檔案中查詢。

資料庫例項名與ORACLE_SID
雖然兩者都表是oracle例項,但兩者是有區別的。instance_name是oracle資料庫引數。而ORACLE_SID是作業系統的環境變數。 ORACLD_SID用於與作業系統互動,也就是說,從作業系統的角度訪問例項名,必須通過ORACLE_SID。在winnt不臺, ORACLE_SID還需存在於登錄檔中。且ORACLE_SID必須與instance_name的值一致,否則,你將會收到一個錯誤,在unix平臺,是“ORACLE not available”,在winnt平臺,是“TNS:協議介面卡錯誤”。

資料庫例項名與網路連線
資料庫例項名除了與作業系統互動外,還用於網路連線的oracle伺服器標識。當你配置oracle主機連線串的時候,就需要指定例項名。當然Oracle8i以後版本的網路元件要求使用的是服務名SERVICE_NAME。這個概念接下來說明 。

三、資料庫域名
在分佈工資料庫系統中,不同版本的資料庫伺服器之間,不論執行的作業系統是unix或是windows,各伺服器之間都可以通過資料庫鏈路進行遠端複製,資料庫域名主要用於oracle分散式環境中的複製。舉例說明如:
全國交通運政系統的分散式資料庫,其中:
福建節點: fj.jtyz
福建廈門節點: xm.fj.jtyz
江西: jx.jtyz
江西上饒:sr.jx.jtyz
這就是資料庫域名。
資料庫域名在存在於引數檔案中,他的引數是db_domain.

    查詢資料庫域名
             方法一:select value from v$parameter where name = 'db_domain';
             方法二:show parameter domain
             方法三:在引數檔案中查詢。

    全域性資料庫名
     全域性資料庫名=資料庫名+資料庫域名,如前述福建節點的全域性資料庫名是:oradb.fj.jtyz

四、資料庫服務名
從oracle9i版本開始,引入了一個新的引數,即資料庫服務名。資料庫的邏輯表示,它是資料庫呈現給客戶機的方式。引數名是SERVICE_NAME。如果資料庫有域名,則資料庫服務名就是全域性資料庫名;否則,資料庫服務名與資料庫名相同。

    查詢資料庫服務名
             方法一:select value from v$parameter where name = 'service_name';
             方法二:show parameter service_name
             方法三:在引數檔案中查詢。

    資料庫服務名與網路連線
     從oracle8i以後的版本,資料庫與客戶端的連線主機串使用資料庫服務名。之前如Oracle7,Oracle8是通過例項名來連線資料庫。

    建立Oracle資料庫(以Oracle10g為例)

    有兩種建立資料庫的方式,一種是以命令列指令碼方式,即手動方式建立;另一種是利用Oracle提供的資料庫配置嚮導來建立。本篇主要介紹在Unix和Windows下以命令列指令碼方式建立Oracle資料庫。

    一個完整的資料庫系統,應包括一個物理結構、一個邏輯結構、一個記憶體結構和一個程序結構,如果要建立一個新的資料庫,則這些結構都必須完整的建立起來。

五:網路服務名(NET SERVICES NAME)
它是“連線描述符”簡稱,連線描述符是網路連線目標特殊格式的描述,它包括網路協議、主機名稱或地址、和目標服務
在Oracle7和Oracle8版本,目標服務由Oracle系統識別符號(SID)來標識,而Oracle8i、Oracle9i則通過資料庫服務名來來標識。儲存tnsnames.ora檔案中在格式如下:
myDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testDB.ChinaMobile.com)
)
)

相關推薦

Oracle資料庫例項全域性資料庫服務網路服務區別聯絡

資料庫名、例項名、資料庫域名、全域性資料庫名、服務名,網路服務名,這是幾個令很多初學者容易混淆的概念。相信很多初學者都與我一樣被標題上這些個概念搞得一頭霧水。我們現在就來把它們弄個明白。 一、資料庫名 資料庫名就是一個數據庫的標識,就像人的

類方法靜態方法例項方法的區別聯絡

Python中至少有三種比較常見的方法型別,即例項方法,類方法、靜態方法。它們是如何定義的呢?如何呼叫的呢?它們又有何區別和作用呢?且看下文。 首先,這三種方法都定義在類中。下面我先簡單說一下怎麼定義和呼叫的。(PS:例項物件的許可權最大。) 例項方法     定義

【小家java】POP(面向過程程式設計)OOP(面向物件程式設計)AOP(面向切面程式設計)三種程式設計思想的區別聯絡

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

【小家java】SessionCookie的區別聯絡分散式session的幾種實現方式

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

ThreadRunnable的區別聯絡多次start一個執行緒會怎麼樣

一、Java有兩種方式實現多執行緒,第一個是繼承Thread類,第二個是實現Runnable介面。他們之間的聯絡:     1、Thread類實現了Runable介面。   2、都需要重寫裡面Run方法。 二、實現Runnable介面相對於繼承Thread類來說,有如下顯著的好處:

ubuntu中環境變數檔案/etc/profile.profile.bashrc/etc/bash.bashrc之間的區別聯絡(轉)

寫在前面:不同的發行版裡面檔案的命名可能有所不同,如有的發行版etc目錄下有bashrc,有的發行版下面是bash.bashrc。這個根據每個人不同的發行版注意下具體的檔名稱。 /etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/pro

Web Service平臺有三種元素構成:SOAPWSDLUDDI。區別聯絡

Web Service平臺有三種元素構成:SOAP、WSDL、UDDI。一個消費者可以在UDDI登錄檔查詢服務,取得服務的WSDL描述,然後通過SOAP來呼叫服務。SOAP、WSDL、UDDI的區別如下:1. SOAP(Simple Object Access Protocol,簡單物件訪問協議)① SOAP

echo語句print語句print_r有啥區別聯絡

echo語句、print語句、print_r有啥區別和聯絡? **echo是PHP語句, print和print_r是函式,語句沒有返回值,函式可以有返回值(即便沒有用) print() 只能打印出簡單型別變數的值(如int,string)** 例子 <?php $a=

人工智慧機器學習深度學習的區別聯絡

機器學習是一種實現人工智慧的方法,深度學習是一種實現機器學習的技術。 人工智慧 在1956年被提出,2012年之前一直飽受爭議,直到機器學習新演算法(深度學習)的出現,人工智慧迎來了大爆發。 人工智慧研究的分支有很多,包含:專家系統、機器學習、進化計算、模糊邏輯、計算機視覺、自然語言處理

KEILuVisionMDK區別聯絡

--------------------------------------------- -- 時間:2018-11-26 -- 建立人:Ruo_Xiao -- 郵箱:[email protected] ----------------------------------------

淺談程序執行緒協程三者之間的區別聯絡

一、程序、執行緒、協程 1,程序 經典定義:一個執行中程式的例項。系統中的每個程式都執行在某個程序的上下文中。(-摘自 CSAPP) 程序是系統資源分配的最小單位   2,執行緒(thread) 執行緒就是執行在程序上下文中的邏輯流。 執行緒是作業系統能夠進行運算排程的最小單位。 &

人工智慧機器學習深度學習之間的區別聯絡

人工智慧: 人工智慧的研究領域細分圖: 目前的科研工作都集中在弱人工智慧這部分,並很有希望在近期取得重大突破,電影裡的人工智慧多半都是在描繪強人工智慧,而這部分在目前的現實世界裡難以真正實現(通常將人工智慧分為弱人工智慧和強人工智慧,前者讓機器具備觀察和感知的能力,可

Statement PreparedStatement CallableStatement 區別聯絡

1. Statement、PreparedStatement和CallableStatement都是介面(interface)。  2. Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼

塊儲存物件儲存檔案儲存的區別聯絡

塊儲存、物件儲存、檔案儲存的區別和聯絡 塊儲存、物件儲存、檔案儲存的區別和聯絡 通常來講,磁碟陣列都是基於Block塊的儲存,而所有的NAS產品都是檔案級儲存。 1. 塊儲存:DAS   SAN a) DAS(Direct Attach Storage): 是直接

減治分治變治的區別聯絡

減治: 利用了一個問題給定例項的解和同樣問題較小例項的解之間的某種關係,常用的有n和n-1的關係,有了這種關係我們可以自頂向下地遞迴求解,也可以自底向上地迭代實現,從較小例項開始求解這一角度來看減治也叫增量法。 減治法的三種方式: 1***.減常量*** 每次迭

GradleGradle Wrapper與Android Plugin for Gradle的區別聯絡

原文連結:https://www.cnblogs.com/jiangxinnju/p/8229129.html 總結: Gradle:是一個專案構建系統,類似於Maven。Gradle並不是只能用於Android,而是Android引用裡Gradle。https://docs.gradle.

MVCMVVM的區別聯絡

網上的資料很多,面試也經常問到,為了進一步加深理解,還是以部落格的方式記錄下來。 **MVC** MVC是Model-View-Controller的簡寫, M是後端傳遞的json資料,V是指使用者看到的HTML頁面,C即處理頁面的js邏輯, MVC是單向通訊,也就是View和Model

徹底搞懂GradleGradle Wrapper與Android Plugin for Gradle的區別聯絡

歡迎和大家交流技術相關問題: 郵箱: [email protected] 部落格園地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/

Linux中profilebashrcbash_profile之間的區別聯絡

/etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/profile.d目錄的配置檔案中搜集shell的設定. 英文描述為: # /etc/profile # System wide environment and startup program

【iOS知識學習】_intNSIntegerNSUIntegerNSNumber的區別聯絡

1、首先先了解下NSNumber型別: NSNumber是NSValue的一個子類,它是一個物件來儲存數字值包括bool型,它提供了一系列的方法來儲存char a signed or unsigned char, short int, int, long int, lon