客戶程序 服務程序 連線 會話淺解

2021-08-31 22:32:53 字數 1748 閱讀 8778

大部分情況下,我們使用專用連線方式。對專用連線來說,使用者在客戶端啟動了乙個應用程式,比如sql*plus,於是就在客戶端本地啟動了乙個使用者程序。與oracle伺服器成功建立連線以後,就會在資料庫伺服器端生成乙個對應的伺服器程序,該伺服器程序作為使用者程序的**程序,也叫影子程序,從而代替客戶端去執行各種命令並將結果返回。也就是說,使用者在客戶端輸入的各種命令,都是通過位於客戶端的使用者程序傳送到伺服器端對應的伺服器程序,並由伺服器程序代替使用者程序去執行具體的命令及返回結果。使用者程序是不能直接訪問資料庫的。在專用連線模式下,使用者程序與伺服器程序一一對應,使用者程序一旦終止,伺服器程序也隨之終止。

另外,我們還有一種連線方式,叫共享連線。在共享連線情況下,dba可以定義伺服器程序的個數。在啟動資料庫時,oracle會預先在例項中建立指定個數的伺服器程序。這時,使用者程序不再與伺服器程序產生一對一的關係,而是一對多的關係。也就是乙個使用者程序可以對應多個伺服器程序,多個伺服器程序都可以處理同乙個使用者發出的不同命令。共享連線比較少見,因此我們不多討論。以下只要沒有特殊說明,都是指專用連線。

當使用者成功的建立連線以後,會在伺服器端生成對應的伺服器程序,同時建立乙個會話(session)。所謂session就是一段記憶體空間,該空間裡記錄了使用者採用了什麼應用程式連線到資料庫、客戶端機器的名稱、以哪個使用者名稱登入等資訊。這裡需要解釋oracle中的兩個容易混淆的概念:連線(connection)和會話(session)。

所謂連線,指的是物理概念。也就是從客戶端到伺服器端的通訊通道。

有以下三種連線型別。

1、本機登入:直接從資料庫所在的伺服器上登入到資料庫。這時採用內部通訊機制進行連線。

2、c/s模式:客戶機和伺服器都在同乙個區域網內,而終端使用者從客戶端登入資料庫,並借助oracle的網路元件,通過網路裝置與資料庫伺服器建立連線。例如在客戶端使用oracle的emterprise console連線到伺服器。

3、b/s模式:也叫三層模式。客戶端不具有oracle網路元件,通過瀏覽器與應用伺服器建立連線,然後在應用伺服器上預先建立的連線池中挑選連線通道。

我們以本機登入為例,來看一下使用者程序與伺服器程序的概念。我們啟動sql*plus,並登入到資料庫例項。

$ ps -ef|grep sqlplus

oracle    2651  2650  0 01:01 pts/2    00:00:00 sqlplus   as sysdba

oracle    2783  2758  0 01:16 pts/3    00:00:00 grep sqlplus

可以看到2651即為我們啟動的使用者程序。繼續如下查詢

$ ps -ef|grep 2651

oracle    2651  2650  0 01:01 pts/2    00:00:00 sqlplus   as sysdba

oracle    2757  2651  0 01:16 ?        00:00:00 oracleczmmiao (description=(local=yes)(address=(protocol=beq)))

可以看到2651號程序衍生出了乙個程序,也就是2757號程序,這個程序就是oracle為使用者程序(程序號為2757)建立的伺服器程序。從該伺服器程序的描述資訊中可以看到, local=yes表明該程序由於與資料庫本身在同乙個伺服器上執行的另乙個程序而啟動,也就是本機登入。protocol=beq說明採用的是bequeath協議登入,而不是採用tcp協議。一旦使用者與資料庫伺服器建立連線,就可以發出各種命令,開始使用oracle資料庫了。

參考至:《教你如何成為10g ocp》韓思捷著

如有錯誤,歡迎指正

程序 程序組 會話

1.程序組 每個程序屬於乙個程序組,程序組是乙個或多個程序的集合,每個程序有乙個唯一的程序組id。獲取程序組的兩個函式 include pid t getpgrp void pid t getpgrp pid t pid 程序組可以有乙個組長程序,組長程序的標識是,其程序組id等於其程序id。程序組...

Linux 守護程序 淺解

守護程序 什麼是守護程序 守護程序,也稱daemon程序 守護程序,是linux的後台服務程序。普通程序和終端的關係 使用者與系統交流的介面,稱為 終端 當在某個終端上執行某個程序時,該終端就稱為該程序的 控制終端 當控制終端關閉時,它對應的程序 在該終端上啟動的程序 都將被自動關閉。守護程序和終端...

會話 程序組 程序個人理解

1 程序必定屬於乙個程序組,也只能屬於乙個程序組。乙個程序組中可以包含多個程序。程序組的生命週期從被建立開始,到其內所有程序終止或離開該組。獲取當前程序所在程序組id使用函式getpgrp 建立或加入其他組使用函式setpgid 2 假設條件 pid1程序屬於pgid1程序組 pid2屬於pgid2...