一、Oracle客戶端與服務器端的通訊機制
    1、OracleNet協議
   如下圖所示,Oracle通過Oracle Net協議實現客戶端與服務器端的連接以及數據傳遞。OracleNet是同時駐留在Oracle數據庫服務器端和客戶端上的一個軟件層,它封裝了TCP/IP協議,負責建立與維護客戶端應用程序到數據庫服務器的連接。
     如下圖所示,客戶端發出的請求首先通過OracleNet協議轉換,轉換成可以通過網絡傳輸的信息,通過TCP/IP網絡將請求傳輸到數據庫服務器端;服務器端接受到客戶請求后要通過OracleNet協議轉換,將請求轉換成數據庫可以解釋執行的本地指令,并在服務器端執行(主要是一些輸入輸出操作),并將結果通過TCP/IP協議和OracleNet協議傳輸給客戶端顯示。           
 
   2、客戶端與服務器端的連接過程
   在分析客戶端與服務器端的連接機制之前,先要定義兩個概念,一個是Oracle監聽器,一個是Oracle網絡服務名。
   Oracle數據庫服務器通過一個名為“OracleNet監聽器”的組件接收來自客戶端的連接請求。監聽器是位于服務器端的一個后臺進程,發送給數據庫的客戶端連接請求,首先被服務器端的監聽器所偵聽,并將請求所轉交給對應的數據庫實例,從而建立起客戶端與服務器的連接。連接建立后,客戶端與服務器端就可以直接進行通訊,不再需要監聽器參與。
   要實現監聽器對客戶請求的監聽,需要對監聽器進行配置,包括監聽端口、監聽器所在數據庫的全局數據庫名稱、數據庫實例等信息。
   Oracle網絡服務名是一個標識符,它代表著客戶端連接服務器的配置信息(實際上就是連接請求的內容),包括數據庫主機地址、監聽端口、全局數據庫名稱等內容((有關全局數據庫、數據庫實例等,請參考Oracle數據庫安裝部分)。
 
   如圖所示,客戶端與服務端的連接過程為:
   (1)首先在服務器端有一個常駐的監聽器(監聽服務要打開)監聽客戶端發出的連接請求。
   (2)用戶在客戶端(企業服務器或SQL工具)輸入用戶名、口令及網絡服務名,或在SQL命令行中輸入類似“CONNECTusername/password@net_Service_name”的類似請求。
   (3)客戶端查看網絡服務配置文件tnsname.ora,將網絡服務名映射為包含Oracle服務器地址、監聽端口和全局數據庫名的連接描述符。
  (4)客戶端根據連接描述符定位監聽器,并通過網絡將連接信息傳遞給監聽器。
   (5)監聽器查詢監聽配置文件listener.ora,找出所要連接的數據庫服務器。