如果現在使用一個專用服務器登錄數據庫,則會創建一個新的進程,提供專門的服務:
現在可以看到,線程有20個而不是19個,多加的這個線程就是我們的專用服務器進程(稍後會介紹專用服務器進程的更多內容)。注銷時,這個額外的線程也沒有了。在UNIX上,可以看到正在運行的Oracle進程列表上會多加一個進程,這就是我們的專用服務器。
再回過來看前面的那個圖。現在如果按最常用的配置連接Oracle,則如圖2-2所示。
圖2-2 典型的專用服務器配置
如前所述,在我登錄時,Oracle總會為我創建一個新的進程。這通常稱為專用服務器配置,因為這個服務器進程會在我的會話生存期中專門為我服務。對於每個會話,都會出現一個新的專用服務器,會話與專用服務器之間存在一對一的映射。按照定義,這個專用服務器不是實例的一部分。我的客戶進程(也就是想要連接數據庫的程序)會通過某種網絡通道(如TCP/IP socket)與這個專用服務器直接通信,並由這個服務器進程接收和執行我的SQL。如果必要,它會讀取數據文件,並在數據庫的緩存中查找我要的數據。也許它會完成我的更新語句,也可能會運行我的PL/SQL代碼。這個服務器進程的主要目標就是對我提交的SQL調用做出響應。