程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 三架馬車保障Oracle網絡的連通性

三架馬車保障Oracle網絡的連通性

編輯:Oracle數據庫基礎
 Oracle數據庫是網絡數據庫的典型代表。用戶可以通過網絡來訪問Oracle數據庫。Oracle數據庫提供了網絡互聯的各種方案,包括結構和驅動程序,其網絡通信協議結構類似於OSI-RM,但又有自己的分層機制。也就是說,Oracle的網絡是基於計算機網絡的,通過網絡使Oracle實現了數據共享、數據完整性控制、數據安全傳輸、跨操作系統平台(可以同時運行在Linux或者微軟的操作系統平台上)、在多硬件平台之間的數據相互操作。

  那麼是什麼保障了Oracle網絡的連通性呢?簡單的說,是全局數據庫名、監聽程序與網絡服務名這三架馬車保障了Oracle網絡的連通性。

  第一架馬車:全局數據庫名。

  在談到全局數據庫名之前,筆者要先談談這個www.chinaitlab.com的域名。這個互聯網上的域名就相當於我們現實生活中的門牌號碼一樣,可以在紛繁蕪雜的網絡世界裡准確無誤地把我們指引到我們要訪問的站點。從這個www.chinaitlab.com域名來看,它是由幾個不同的部分組成的。這幾個不同的部分彼此之間具有上下的層次關系。其中最後的.CN是域名的第一層,.COM是域名的第二層,而.Ctocio則是真正的域名,處在第三層,依次類推。至此我們可以看出域名從後到前的層次結構類似於一個倒立的樹型結構。其中第一層的.CN叫做地理頂級域名。在這些地理頂級域名下,還可以再根據需要定義次一級的域名。如在我國的頂級域名.CN下又設立了.COM,.Net,.ORG,.GOV,.EDU,以及我國各個行政區劃的字母代表如.BJ代表北京,.SH代表上海等等。故當訪問網站時,只需要輸入域名(www.chinaitlab.com)即可以打開相應的網站,而不需要輸入難以記憶的IP地址。

  而Oracle數據庫系統是一個大型的分布式數據庫系統。有時候出於性能等的考慮,往往需要在企業的多個地方部署多個數據庫系統,這就構成了Oracle分布式網絡環境。為了保障每個數據庫名字的唯一性,Oracle數據庫系統借鑒了域名的命名規則,使用域名結構來命名分布在各地的數據庫。即一個數據庫的全局名字由其數據庫名和該數據庫所在的域名組成。假設現在某一家企業在浙江有寧波、杭州、舟山三個辦事處,分別部署了三個Oracle數據庫,其中杭州為總部。結構圖如下:

  根據全局數據庫名命名規則,杭州公司數據庫名字為ORAL.DTM 寧波公司的數據庫名字為ORAL.NINGBO.DTM,舟山公司的數據庫名字為ORAL.ZHOUZHAN.DTM。此時如果應用程序要連接不同部門的得數據庫就非常的方便。可以通過全局數據庫名字來指定需要訪問的數據對象。只需要經過簡單的修改,用戶就可以連接到所需要連接的數據庫。另為,還可以在網絡環境配置一個默認域,如此訪問默認域中的數據庫對象不需要指定域名。

  利用全局數據庫名能夠起到兩個好處。一是易於數據庫進行擴充。如現在企業可能只用一個數據庫來處理業務。但是當企業規模擴大的時候,可能一個數據庫不能夠滿足性能上的需求。或者是因為企業合並等原因,需要部署分布式的數據庫環境。此時不需要更改原先的存在的數據庫,就可以對數據庫環境進行擴充。二是方便數據庫的連接。當用戶在不同的數據庫之間進行更換時,使用全局數據庫名將會非常的方便。

  故筆者建議數據庫管理員,即使企業當前只有一台Oracle數據庫時,最好對其進行命名時也能夠根據全局數據庫命名規則來定義其名字。以利益後續數據庫的擴充,同時也便於數據庫管理員的日常維護。

  第二架馬車:網絡服務名。

  當管理員利用conn system/system @tsh命令連接數據庫的時候,@後面的內容就是網絡服務名。網絡服務名是數據庫服務器在客戶端的名稱。換句話說,就是數據庫的別名。通常情況下,一個數據庫可以有多個網絡服務名。網絡服務名主要用來將連接標識符解析為連接描述符,幫助客戶端應用程序准確的連接到指定的數據庫服務器。一般來說,網絡服務器主要提供兩方面的信息。一是服務名稱,默認情況下服務名稱就是數據庫全局名稱;二是路由信息,即達到指定服務的網絡路由,或者說是監聽程序的網絡地址。當應用程序連接數據庫時,其連接字符串中的網絡服務名就指出了所需要連接到的數據庫服務器。另外,在客戶端上,也必須配置有於服務器協議地址相同的連接描述符才能夠向監聽程序發出連接請求。

  可見網絡服務名這架馬車,在Oracle網絡連接中就好像其起到一個馬夫手中皮鞭的作用,指揮著這輛馬車的前進方向。但是,這架馬車比較嬌貴,動不動就會出現問題。

  如當某個客戶端非正常關機後,重新啟動。可能會發現無法正常連接到客戶端,提示網絡服務器名錯誤而無法正常連接到客戶端。再如有時候會因為無法解析全局數據庫名字而客戶端無法連接到數據庫。為了防止網絡服務名出現錯誤,筆者有以下幾個建議。

  一是網絡服務名的信息通常情況下是保存在TNSNAMES.ORA這個文件中。如果意外關機等情況,這個文件中的信息可能會丟失。為此最好對這個文件進行獨立的備份。在遇到因為網絡服務名錯誤而無法連接到數據庫的時候,可以先利用這個文件進行恢復。通常情況下,都可以解決問題。

  二是最好不要手工更改這個文件。雖然這個文件看起來比較簡單,但是修改起來比較麻煩。除非你是這方面的專家,否則的話最好不要手工更改這文件。通常情況下,最好采用Oracle數據庫自帶的工具來配置。筆者建議的作法是,先利用TNS工具把原先的配置文件刪除,然後再重新建立一個。這是一個不錯的選擇。

  三是當客戶端與Oracle數據庫服務器進行連接的時候,如果出現提示網絡服務器的錯誤提示時(監聽程序無法找到適用於客戶機連接的例程),有部分原因是無法解析數據庫全局名所造成的。此時,管理員可以嘗試著修改這個文件中的全局數據庫名。即把全局數據庫名修改為數據庫服務器對應的IP地址。如果幸運的話,這麼修改後就可以解決客戶端的連接問題了。

  另外需要注意,有時候系統提示網絡服務名錯誤無法連接到數據庫時,有可能不是網絡服務名錯誤所造成。有可能使其他的原因。如有時候如果存在防火牆,系統也會提示這個錯誤信息。如一次用戶在Linux系統上安裝Oralce數據庫。而默認情況下,Linux系統的防火牆是開啟的。在事後沒有個防火牆關閉,導致Oralce無法正常連接。Oracle數據庫並不是不能夠通過防火牆,而是需要在防火牆上進行額外的設置。故如果是出於學習的需要,筆者建議可以先把Linux等操作系統的防火牆服務暫時關閉掉。

  第三架馬車:監聽程序。

  監聽程序是運行在服務器端的一個單獨的服務進程。他的作用就是通過監聽端口,監聽網絡上的客戶機對服務器的連接請求,並管理客戶機與服務器之間的網絡通信量。如果做一個形象的比喻,監聽程序就好像是賓館前面的保安。看到有客人來了,就開門來其進去。如果客人沒付錢就走人,保安就會攔住客戶不讓其走。監聽程序其的作用就是跟這個保安的作用非常類似。每次客戶端請求連接服務器時,監聽程序就會第一時間接收到這個請求。然後監聽程序會把這個請求匯報給服務器。另外,監聽程序還會對用戶的合法性做出辨別。如果客戶端提供的連接信息與監聽程序保存在配置文件中的信息(如協議、端口、數據庫等等信息)匹配的話,則監聽程序就授權客戶機連接到服務器。否則的話,就會拒絕客戶機的連接請求。可見,監聽程序這架馬車,在數據庫連接中起著舉足輕重的作用。

  當服務器端的監聽程序沒有正常啟動時,客戶端將無法通過網絡連接到數據庫服務器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved