程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> TCP/IP連接的基本原理-----連接Oracle

TCP/IP連接的基本原理-----連接Oracle

編輯:Oracle數據庫基礎
這裡將分析網絡上最常見的一種情形:在TCP/IP連接上建立一個基於網絡的連接請求。在這種情況下,客戶在一台機器上,而服務器駐留在另一台機器上,這兩台機器通過一個TCP/IP網絡連接。客戶率先行動,使用Oracle客戶軟件(Oracle提供的一組應用程序接口,或API)建立一個請求,力圖連接數據庫。例如,客戶可以發出以下命令:


這裡,客戶是程序SQL*Plus,scott/tiger為用戶名/密碼,ora10g.localdomain是一個TNS服務名。TNS代表透明網絡底層(Transparent Network Substrate),這是Oracle客戶中處理遠程連接的“基礎”軟件,有了它才有可能建立對等通信。TNS連接串告訴Oracle軟件如何與遠程數據庫連接。一般地,你的機器上運行的客戶軟件會讀取一個tnsnames.ora文件。這是一個純文本的配置文件,通常放在 [ORACLE_HOME]\network\admin 目錄下([ORACLE_HOME] 表示Oracle安裝目錄的完整路徑)。如果有以下配置:


根據這個配置信息,Oracle客戶軟件可以把我們使用的TNS連接串ora10g.localdomain映射到某些有用的信息,也就是主機名、該主機上“監聽器”進程接受(監聽)連接的端口、該主機上所連接數據庫的服務名,等等。服務名表示具有公共屬性、服務級阈值和優先級的應用組。提供服務的實例數量對應用是透明的,每個數據庫實例可以向監聽器注冊,表示要提供多個服務。所以,服務就映射到物理的數據庫實例,並允許DBA為之關聯阈值和優先級。
這個串(ora10g.localdomain)還可以用其他方式來解析。例如,可以使用Oracle Internet目錄(Oracle Internet Directory,OID),這是一個分布式輕量級目錄訪問協議(Lightweight Directory Access Protocol,LDAP)服務器,其作用就相當於解析主機名的DNS。不過,tnsnames.ora文件通常只適用於大多數小到中型安裝,在這些情況下,這個配置文件的副本不算太多,尚可管理。
既然客戶軟件知道要連接到哪裡,它會與主機名為localhost.localdomain的服務器在端口1521上打開一條TCP/IP socket連接。如果服務器DBA安裝並配置了Oracle Net,並且有一個監聽器在端口1521上監聽連接請求,就會收到這個連接。在網絡環境中,我們會在服務器上運行一個稱為TNS監聽器的進程。就是這個監聽器進程能讓我們與數據庫物理連接。當它收到入站連接請求時,它會使用自己的配置文件檢查這個請求,可能會拒絕請求(例如,因為沒有這樣的數據庫,或者可能我們的IP地址受到限制,不允許連接這個主機),也可能會接受請求,並真正建立連接。
如果建立一條專用服務器連接,監聽器進程就會為我們創建一個專用服務器。在UNIX上,這是通過fork()和exec()系統調用做到的(在UNIX中,要在初始化之後創建新進程,惟一的辦法就是通過fork())。這個新的專用服務器進程繼承了監聽器建立的連接,現在就與數據庫物理地連接上了。在Windows上,監聽器進程請求數據庫進程為連接創建一個新線程。一旦創建了這個線程,客戶就會“重定向”到該線程,相應地就能建立物理連接。圖2-4顯示了UNIX上的監聽器進程和專用服務器連接。

圖2-4 監聽器進程和專用服務器連接
另一方面,如果我們發出共享服務器連接請求,監聽器的表現則會有所不同。監聽器進程知道實例中運行了哪些調度器。接收到連接請求後,監聽器會從可用的調度器池中選擇一個調度器進程。監聽器會向客戶返回連接信息,其中說明了客戶如何與調度器進程連接;如果可能的話,還可以把連接“轉發”給調度器進程(這依賴於不同的操作系統和數據庫版本,不過實際效果是一樣的)。監聽器發回連接信息後,它的工作就結束了,因為監聽器一直在特定主機的特定端口上運行(主機名和端口號大家都知道),而調度器會在服務器上隨意指派的端口上接受連接。監聽器要知道調度器指定的這些隨機端口號,並為我們選擇一個調度器。客戶再與監聽器斷開連接,並與調度器直接連接。現在就與數據庫有了一個物理連接。這個過程如圖2-5所示。 


圖2-5  監聽器進程和共享服務器連接

BPingURL">

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