應用程式與 Oracle Net Services 架構
本章定義應用程式架構,並描述 Oracle 資料庫和資料庫應用程式如何在分散式處理環境中運作。此資料幾乎適用於所有類型的 Oracle AI Database 環境。
-
Oracle Application Architecture 簡介在本章的內容中,應用程式架構是指資料庫應用程式連接到 Oracle 資料庫的運算環境。
-
Oracle Net Services 是一套網路元件,可在分散式異質運算環境中提供全企業的連線解決方案。
-
程式介面簡介 程式介面是資料庫應用程式與 Oracle AI Database 之間的軟體層。
-
Oracle True Cache 概要 True Cache 是 Oracle AI Database 前方的記憶體內唯讀快取。
Oracle Application Architecture 概要
在本章的內容中,應用程式架構是指資料庫應用程式連線至 Oracle 資料庫的運算環境。
-
從屬端 / 伺服器架構簡介:在 Oracle AI Database 環境中,資料庫應用程式和資料庫會被區隔成從屬端 / 伺服器架構。
-
多層架構簡介 在傳統的多層架構中,應用程式伺服器會為從屬端提供資料,並作為從屬端與資料庫伺服器之間的介面。
-
Grid Architecture 概要在 Oracle AI Database 環境中,網格運算是一個運算架構,有效地將大量伺服器和儲存聚集成靈活的隨選運算資源。
用戶端 / 伺服器架構概要
在 Oracle AI Database 環境中,資料庫應用程式和資料庫會分隔成從屬端 / 伺服器架構。
元件如下所示:
-
從屬端會執行資料庫應用程式,例如 SQL*Plus 或 Visual Basic 資料輸入程式,以存取資料庫資訊並與使用者互動。
-
伺服器會執行 Oracle AI Database 軟體,並處理 Oracle 資料庫並行、共用資料存取所需的功能。
雖然用戶端應用程式和資料庫可以在同一台電腦上執行,但當用戶端部分和伺服器部分是由透過網路連線的不同電腦執行時,通常會達到更高的效率。下列各節探討 Oracle AI Database 從屬端 / 伺服器架構中的變化。
-
分散式處理:使用多個主機來處理個別的工作稱為分散式處理。
-
用戶端 / 伺服器架構的優點分散式處理環境中的 Oracle AI Database 用戶端 / 伺服器架構提供許多優點。
分散式處理
使用多個主機來處理個別工作稱為分散式處理。
前端和後端處理發生在不同的電腦上。在圖 19-1 中,從屬端與伺服器位於透過 Oracle Net Services 連線的不同主機上。
圖 1:用戶端 / 伺服器架構與分散式處理

圖 19-2 表示分散式資料庫的變化。在此範例中,一個主機上的資料庫會存取位於不同主機上之個別資料庫上的資料。
圖 2:用戶端 / 伺服器架構和分散式資料庫

注意:本章的其餘部分適用於在一個伺服器上有一個資料庫的環境。
用戶端 / 伺服器架構的優點
分散式處理環境中的 Oracle AI Database 用戶端 / 伺服器架構提供許多優點。
優點包括:
-
用戶端應用程式不負責執行資料處理。而是向使用者要求輸入、向伺服器要求資料,然後使用用戶端工作站或終端機 (例如使用圖形或試算表) 的顯示功能來分析和呈現此資料。
-
用戶端應用程式與資料的實體位置無關。即使資料被移動或分發到其他資料庫伺服器,應用程式也幾乎沒有修改,仍然可以繼續運作。
-
Oracle AI Database 利用其基礎作業系統的多工作業和共用記憶體設備。因此,它可以為其用戶端應用程式提供最高程度的並行、資料完整性和效能。
-
用戶端工作站或終端機可以針對資料的呈現方式 (例如,提供圖形和滑鼠支援) 進行最佳化,而伺服器則可以針對資料的處理和儲存進行最佳化 (例如,擁有大量的記憶體和磁碟空間)。
-
在網路環境中,您可以使用成本低廉的用戶端工作站,有效地存取伺服器的遠端資料。
-
資料庫可以隨著系統的成長而擴展。您可以新增多部伺服器,將資料庫處理負載分散到整個網路 (水平調整),也可以將資料庫移到迷你電腦或大型主機,以利用更大的系統效能 (垂直調整)。無論是哪一種情況,資料和應用程式幾乎不需要修改,因為 Oracle AI Database 可在系統之間移植。
-
在網路環境中,共用資料儲存在伺服器上而非所有電腦上,因此可更輕鬆且更有效率地管理並行存取。
-
在網路環境中,從屬端應用程式會使用 SQL 敘述句將資料庫要求提交給伺服器。收到 SQL 敘述句後,伺服器會處理每個 SQL 敘述句,並將結果傳回從屬端。網路流量會最小化,因為只有要求和結果會透過網路傳送。
另請參閱:Oracle AI Database Administrator's Guide,深入瞭解分散式資料庫
多層架構概要
在傳統的多層架構中,應用程式伺服器會為用戶端提供資料,並做為用戶端與資料庫伺服器之間的介面。
此架構可讓應用程式伺服器:
-
驗證從屬端的證明資料,例如 Web 瀏覽器
-
連接至資料庫伺服器
-
執行要求的作業
圖 19-3 顯示多層架構的範例。
圖 3:多層架構環境

-
從屬端:從屬端會起始要求,要求在資料庫伺服器上執行作業。
-
應用程式伺服器:應用程式伺服器可讓您存取從屬端的資料。它可作為從屬端與一或多個資料庫伺服器之間的介面,並代管應用程式。
-
資料庫伺服器 - 資料庫伺服器提供應用程式伺服器代表從屬端要求的資料。資料庫會執行查詢處理。
-
服務導向架構 (SOA) 資料庫可作為傳統多層或服務導向架構 (SOA) 環境中的 Web 服務提供者。
從屬端
從屬端會起始要求,要求在資料庫伺服器上執行作業。
用戶端可以是 Web 瀏覽器或其他一般使用者程式。在多層架構中,從屬端會透過一或多個應用程式伺服器連線至資料庫伺服器。
應用程式伺服器
應用程式伺服器可讓您存取用戶端的資料。它可作為從屬端與一或多個資料庫伺服器之間的介面,並代管應用程式。
應用程式伺服器允許精簡型用戶端 (用戶端配備最少的軟體組態) 存取應用程式,而不需要持續維護用戶端電腦。應用程式伺服器也可以為用戶端執行資料重新格式化,以減少用戶端工作站的負載。
應用程式伺服器會在此從屬端的資料庫伺服器上執行作業時,假設從屬端的識別。最佳作法是限制應用程式伺服器的權限,以防止它在從屬端作業期間執行不需要和不想要的作業。
資料庫伺服器
資料庫伺服器會代表從屬端提供應用程式伺服器要求的資料。資料庫會執行查詢處理。
資料庫伺服器可以代表從屬端及代表從屬端稽核應用程式伺服器所執行的作業。例如,從屬端作業可以要求在從屬端顯示資訊,而應用程式伺服器作業則可以要求連線資料庫伺服器。
在統一稽核中,資料庫可以將應用程式相關資訊環境 (應用程式特定的名稱值組) 附加到統一稽核歷程檔中的記錄。您可以設定資料庫寫入資料庫稽核記錄的應用程式相關資訊環境。
另請參閱:Oracle AI Database Security Guide,瞭解稽核簡介
服務導向架構 (SOA)
資料庫可作為傳統多層或服務導向架構 (SOA) 環境中的 Web 服務提供者。
SOA 是多層架構,依賴支援透過網路進行電腦與電腦互動的服務。在 SOA 的相關資訊環境中,服務是一種功能性自足的端點,具有定義完善的功能和服務層次協議,可以受到監督和管理,並可協助實施原則規範。
SOA 服務通常以透過 HTTP 協定存取的 Web 服務實作。它們是以 XML 標準為基礎,例如 WSDL 和 SOAP。
Oracle AI Database Web 服務功能 (作為 Oracle XML DB 的一部分) 必須由 DBA 明確啟用。應用程式接著可以透過資料庫 Web 服務完成下列工作:
-
以 XML 形式提交 SQL 或 XQuery 查詢並接收結果
-
呼叫獨立 PL/SQL 函數並接收結果
-
呼叫 PL/SQL 套裝程式函數並接收結果
資料庫 Web 服務提供一種將 Web 服務新增至應用程式環境的簡單方法,不需要應用程式伺服器。不過,透過應用程式伺服器 (例如 Oracle Fusion Middleware) 呼叫 Web 服務時,會在 SOA 環境中提供安全性、擴展性、UDDI 註冊以及可靠的訊息傳遞。不過,因為資料庫 Web 服務可與 Oracle Fusion Middleware 輕鬆整合,所以它們可能適用於最佳化 SOA 解決方案。
另請參閱:
-
Oracle XML Developer's Kit Programmer's Guide,瞭解有關啟用及使用資料庫 Web 服務的資訊
-
Oracle Fusion Middleware 文件,瞭解有關 SOA 和 Web 服務的詳細資訊
Grid Architecture 概要
在 Oracle AI Database 環境中,網格運算是一種運算架構,可有效地將大量伺服器和儲存聚集成靈活的隨選運算資源。
您可以視需要連接和重新加入模組化的硬體和軟體元件,以滿足不斷變化的業務需求。
另請參閱:Oracle Clusterware Administration and Deployment Guide,瞭解有關伺服器與儲存網格的詳細資訊
Oracle Net Services 架構概要
Oracle Net Services 是一套網路元件,可在分散式異質運算環境中提供全企業的連線解決方案。
Oracle Net Services 可讓網路階段作業從應用程式到資料庫執行處理,以及從資料庫執行處理轉換到另一個資料庫執行處理。
Oracle Net Services 提供位置透明度、集中式組態與管理,以及快速的安裝與組態設定。它還能讓您最大化系統資源並提高效能。共用伺服器架構可增加應用程式的擴展性,以及同時連線至資料庫的從屬端數目。虛擬介面 (VI) 通訊協定將大部分的訊息負擔放在高速網路硬體上,釋放 CPU。
Oracle Net Services 使用廣泛網路支援的通訊協定或應用程式設計介面 (API),來提供分散式資料庫和分散式處理。建立網路階段作業之後,Oracle Net Services 會成為從屬端應用程式和資料庫伺服器的資料信差,建立和維護連線和交換訊息。Oracle Net Services 可以執行這些作業,因為它存在於網路中的每部電腦上。
-
Oracle Net Services 如何運作 Oracle AI Database 通訊協定接受來自 Oracle 應用程式介面的 SQL 陳述式,然後封裝它們以傳輸至 Oracle AI Database。
-
Oracle Net Listener :Oracle Net Listener (監聽器) 是伺服器端處理作業,可監聽內送從屬端連線要求並管理通往資料庫的流量。當資料庫執行處理在其生命中的各種時間啟動時,執行處理會聯絡監聽器,並建立此執行處理的通訊路徑。
-
專用伺服器架構 在專用伺服器架構中,代表每個從屬端處理作業建立的伺服器處理作業稱為專用伺服器處理作業 (或陰影處理作業 )。
-
共用伺服器架構:在共用伺服器架構中,分配器會將多個內送網路階段作業要求導向至共用伺服器處理作業集區
-
資料庫常駐連線集區資料庫常駐連線集區 (DRCP) 會為一般 Web 應用程式案例提供專用伺服器的連線集區。另請參閱:Oracle AI Database Net Services Administrator's Guide,瞭解 Oracle Net 架構的簡介
Oracle Net Services 的運作方式
Oracle AI Database 通訊協定接受來自 Oracle 應用程式介面的 SQL 陳述式,然後將其封裝以傳輸至 Oracle AI Database。
透過支援的業界標準更高層級通訊協定或 API 進行傳輸。Oracle AI Database 的回覆是透過同一個更高層級的通訊機制進行封裝。此工作會獨立於網路作業系統之外。
視執行 Oracle AI Database 的作業系統而定,資料庫伺服器的 Oracle Net Services 軟體可能包括驅動程式軟體,並啟動其他背景處理作業。
另請參閱:Oracle AI Database Net Services Administrator's Guide,瞭解 Oracle Net Services 運作方式的詳細資訊
Oracle Net Listener
Oracle Net Listener (監聽器) 是伺服器端程序,可監聽內送的從屬端連線要求並管理資料庫的流量。當資料庫執行處理在其生命中的各種時間啟動時,執行處理會聯絡監聽器,並建立此執行處理的通訊路徑。
服務註冊可讓監聽器判斷資料庫服務及其服務處理程式是否可用。服務處理程式是專用伺服器處理作業或分配器,可作為資料庫的連線點。在註冊期間,LREG 處理作業會為監聽器提供執行處理名稱、資料庫服務名稱,以及服務處理程式的類型與位址。此資訊可讓監聽器在從屬端要求到達時啟動服務處理程式。
下圖顯示兩個資料庫,每個資料庫在不同的主機上。資料庫環境有兩個監聽器提供服務,每個監聽器各位於不同的主機上。在每個資料庫執行處理中執行的 LREG 處理作業會與兩個監聽器通訊以註冊資料庫。
圖 4:兩個監聽器

圖 19-5 顯示建立 HTTP 連線的瀏覽器,以及透過監聽器建立資料庫連線的從屬端。監聽器不需要位於資料庫主機上。
圖 5:監聽器架構

從屬端透過監聽器建立連線的基本步驟如下:
-
從屬端處理作業或其他資料庫要求連線。
-
監聽器會選取適當的服務處理程式來服務從屬端要求,並將要求轉送至處理程式。
-
從屬端處理作業會直接連線服務處理程式。監聽器已不再參與通訊。
-
服務名稱:服務名稱是用於從屬端連線之服務的邏輯表示法。
-
多用戶環境中的服務從屬端必須使用服務連線至 PDB 或應用程式根目錄。
-
服務註冊 在 Oracle Net 中,服務註冊是一項功能,LREG 處理作業會透過監聽器動態註冊執行處理資訊。另請參閱:「從屬端處理作業簡介」和「伺服器處理作業簡介」
服務名稱
服務名稱是用於從屬端連線之服務的邏輯表示法。
當從屬端連線至監聽器時,會要求服務連線。當資料庫執行處理啟動時,它會向監聽器自行註冊,以按照名稱提供一或多個服務。因此,監聽器會作為從屬端與執行處理之間的中介,並將連線要求遞送至正確的位置。
單一服務 (由監聽器所知) 可以識別一或多個資料庫執行處理。此外,單一資料庫執行處理也可以向監聽器註冊一或多個服務。連線至服務的從屬端不需要指定需要的執行處理。圖 19-6 顯示一個與兩個服務 (book.example.com 和 soft.example.com) 關聯的單一執行處理資料庫。服務可讓不同的從屬端以不同的方式識別相同的資料庫。資料庫管理員可以限制或保留系統資源,允許對要求其中一項服務的用戶端進行較佳的資源配置。
圖 6:與一個資料庫關聯的多個服務

另請參閱:Oracle AI Database Net Services Administrator's Guide 以進一步瞭解命名方法
多用戶環境中的服務
用戶端必須使用服務連線到 PDB 或應用程式根目錄。
使用服務名稱的連線會在 PDB 或應用程式根目錄中啟動新的階段作業。前景處理作業 (因此階段作業) 在其存留時間的每個時刻都有唯一定義的目前容器。
下圖顯示兩個從屬端使用兩個不同的監聽器連線至 PDB。
圖 7:CDB 中的服務

-
建立服務:當您執行
CREATE PLUGGABLE DATABASE敘述句來建立 PDB 時,資料庫會自動在 CDB 內建立並啟動服務。 -
連線到 CDB 中的容器一般而言,CDB 管理員必須具備適當的權限才能啟動設定 PDB 和連線到各種容器。CDB 管理員是通用使用者。
服務建立
當您執行 CREATE PLUGGABLE DATABASE 敘述句以建立 PDB 時,資料庫會自動建立並在 CDB 內啟動服務。
預設服務有一個特性,可將 PDB 識別為服務的初始目前容器。特性會顯示在 DBA_SERVICES.PDB 資料欄中。
-
預設服務:預設服務的名稱與 PDB 相同。PDB 名稱必須是有效的服務名稱,在 CDB 中必須是唯一的。
-
非預設服務您可以為每個 PDB 建立額外服務,每個 PDB 最多只能有 10,000 個。每個額外服務都會將其 PDB 視為初始的目前容器。
預設服務
預設服務的名稱與 PDB 的名稱相同。PDB 名稱必須是有效的服務名稱,在 CDB 中必須是唯一的。
當您建立需要指定 AS APPLICATION CONTAINER 子句的應用程式容器時,Oracle AI Database 會自動為應用程式根目錄建立新的預設服務。服務的名稱與應用程式容器相同。用戶端必須正確設定 Oracle Net Services 才能存取此服務。同樣地,每個應用程式 PDB 都有自己的預設服務名稱,而應用程式原始內建值 PDB 都有自己的預設服務名稱。
範例 19-1 使用預設服務切換至 PDB
此範例使用與 PDB 相同名稱的預設服務切換至 PDB 名稱 salespdb:
ALTER SESSION SET CONTAINER = salespdb;
非預設服務
您可以為每個 PDB 建立額外服務,每個 PDB 最多可達 10,000 個。每個額外服務都會將其 PDB 視為初始的目前容器。
在圖 19-7 中,erppdb 和 hrpdb 存在非預設服務。例如,在圖 19-7 中,名為 hrpdb 的 PDB 具有名為 hrpdb 的預設服務。無法刪除預設服務。
當您使用 ALTER SESSION SET CONTAINER 切換至容器時,階段作業會使用容器的預設服務。或者,您可以指定 SERVICE = service_name (其中 service_name 是服務的名稱),為容器使用不同的服務。您可能想要使用特定服務,讓階段作業可以使用其服務屬性和功能,例如服務測量結果、負載平衡、「資源管理程式」設定值等等。
範例 19-2 使用非預設服務切換至 PDB
在此範例中,hrpdb 的預設服務不支援服務測量結果、FAN、負載平衡、Oracle AI Database Resource Manager、交易保全、應用程式連續性等所有服務屬性和功能。您可以切換至非預設服務,如下所示:
ALTER SESSION SET CONTAINER = hrpdb SERVICE = hrpdb_full;
CDB 中容器的連線
CDB 管理員通常必須具有適當的權限才能啟動設定 PDB 和連線到各種容器。CDB 管理員是通用使用者。
CDB 管理員可以使用下列其中一種技巧:
-
直接連線到 PDB 或應用程式 root。
使用者需要容器中的
CREATE SESSION權限。 -
使用
ALTER SESSION SET CONTAINER敘述句 (這對連線集區和進階 CDB 管理都很有用) 在容器之間切換。語法為ALTER SESSION SET CONTAINER = container_name [SERVICE = service_name]。例如,CDB 管理員可以在一個階段作業中連線到 root,然後在同一個階段作業中切換到 PDB。在此情況下,使用者需要容器中的
SET CONTAINER系統權限。
下表說明圖 19-7 中涉及 CDB 的分析藍本。每一列都描述在前一列的動作後所發生的動作。通用使用者 SYSTEM 會查詢目前容器的名稱以及 CDB 中 PDB 的名稱。
表 1 CDB 中的服務
| 作業 | 說明 |
|---|---|
|
SYSTEM 使用者 (CDB 中所有容器通用的) 是使用名為 prod 的服務連線至 root。 |
|
SYSTEM 使用 SQL*Plus 命令 SHOW CON_NAME 列出使用者目前連線的容器名稱。CDB$ROOT 是根容器的名稱。 |
|
V$SERVICES 的查詢顯示有三個 PDB 具有符合 PDB 名稱的服務名稱。hrpdb 和 erppdb 都有額外的服務。 |
|
SYSTEM 使用 ALTER SESSION 連線至 hrpdb。 |
|
查詢會確認目前的容器現在是 hrpdb。 |
另請參閱:Oracle AI Database SQL Language Reference,瞭解 ALTER SESSION SET CONTAINER 的語法和語意
服務註冊
在 Oracle Net 中,服務註冊是一項功能,LREG 處理作業會透過監聽器動態註冊執行處理資訊。
此資訊可讓監聽器將從屬端連線要求轉送至適當的服務處理程式。LREG 會將下列相關資訊提供給監聽器:
-
資料庫提供的資料庫服務名稱
-
與服務關聯的資料庫執行處理名稱,以及其目前與最大負載
-
執行處理可用的服務處理程式 (分配器和專用伺服器),包括其類型、協定位址以及目前和最大負載
服務註冊是動態的,不需要設定 listener.ora 檔案。動態註冊可減少多個資料庫或執行處理的管理負荷。
初始化參數 SERVICE_NAMES 列出執行處理所屬的服務。啟動時,每個執行處理都會向屬於相同服務之其他執行處理的監聽器註冊。在資料庫作業期間,每個服務的執行處理都會將 CPU 使用狀況和目前連線計數的相關資訊傳送給相同服務中的所有監聽器。此通訊可啟用動態負載平衡和連線容錯移轉。
另請參閱:
-
Oracle AI Database Net Services 管理員指南,瞭解有關服務註冊的詳細資訊
-
Oracle Real Application Clusters Administration and Deployment Guide,瞭解 Oracle RAC 中的執行處理註冊和從屬端 / 服務連線
專用伺服器架構
在專用伺服器架構中,代表每個從屬端處理作業建立的伺服器處理作業稱為專用伺服器處理作業 (或陰影處理作業 )。
專用伺服器處理作業會與從屬端處理作業分開,並僅代表它採取動作,如圖 19-8 所示。
圖 8:使用專用伺服器處理作業的 Oracle AI Database

從屬端處理作業與伺服器處理作業之間存在一對一的比率。即使使用者未主動提出資料庫要求,專用伺服器處理作業仍維持正常狀態,但它為非作用中狀態,並可在部分作業系統上移出頁面。圖 19-8 顯示在網路電腦上執行的使用者和伺服器處理作業。不過,如果同一部電腦同時執行從屬端應用程式和資料庫程式碼,但如果主機作業系統在單一處理作業中執行,則也會使用專用伺服器架構。Linux 是這類作業系統的範例。
在專用伺服器架構中,使用者與伺服器處理作業使用不同的機制進行通訊:
-
如果從屬端處理作業和專用伺服器處理作業在同一個電腦上執行,則程式介面會使用主機作業系統的處理作業間通訊機制來執行其工作。
-
如果從屬端處理作業和專用伺服器處理作業在不同的電腦上執行,則程式介面會提供程式之間的通訊機制 (例如網路軟體和 Oracle Net Services)。
未充分使用的專用伺服器有時會導致無效率地使用作業系統資源。例如具有專用伺服器處理作業的訂單輸入系統。客戶以辦事員的身分下單,將訂單輸入資料庫。對於大部分的交易,當職員的用戶端處理專用的伺服器處理閒置時,職員正在與客戶交談。在大部份的異動期間不需要伺服器處理程序,如果系統管理過多的處理程序,則其他職員輸入訂單的系統可能會變慢。對於此類型的應用程式,可能偏好共用伺服器架構。
另請參閱:Oracle AI Database Net Services Administrator's Guide,深入瞭解專用伺服器處理作業
共用伺服器架構
在共用伺服器架構中,分配器會將多個內送網路階段作業要求導向至共用伺服器處理作業集區
共用集區可免除每個連線的專用伺服器處理作業需求。一個來自池的閒置共享伺服器行程從共同佇列中挑選一個請求。
共用伺服器的潛在優點如下:
-
減少作業系統上的處理作業數目
少數共用伺服器可執行與專用伺服器相同數量的處理。
-
減少執行處理 PGA 記憶體
每個專用或共用伺服器都有 PGA。較少的伺服器處理作業表示較少的 PGA,而較少的處理作業管理。
-
提升應用程式擴充性,以及可同時連線至資料庫的從屬端數目
-
當從屬端連線和中斷連線的速率很高時,可能比專用伺服器快
共用伺服器有數種缺點,包括在某些情況下回應時間較慢、功能支援不完整,以及設定與調整的複雜性增加。一般的準則是,只有當資料庫的並行連線數目超過作業系統可以處理的數目時,才使用共用伺服器。
共用伺服器架構需要下列程序:
-
將從屬端處理作業連線至分配器或專用伺服器的網路監聽器 (監聽器是 Oracle Net Services 的一部分,而非 Oracle AI Database)
注意:若要使用共用伺服器,從屬端處理作業必須透過 Oracle Net Services 連線,即使處理作業是在與 Oracle AI Database 執行處理相同的電腦上執行。
-
一或多個分配器處理作業 (Dnnn)
-
一或多個共用伺服器處理作業
資料庫可以同時支援共用伺服器與專用伺服器連線。例如,一個從屬端可以使用專用伺服器來連線,而不同的從屬端則是使用共用伺服器來連線至相同的資料庫。
-
分配器要求和回應佇列:來自使用者的要求是屬於使用者 SQL 敘述句一部分的單一 API 呼叫。
-
共用伺服器的限制作業:連線至分配器處理作業 (包括關閉或啟動執行處理和媒體復原) 時,無法執行特定的管理活動。
另請參閱:
-
Oracle AI Database Net Services Administrator's Guide,瞭解共用伺服器架構的詳細資訊
-
Oracle AI Database Administrator's Guide,瞭解如何設定共用伺服器的資料庫
分配器要求與回應佇列
使用者的要求是單一 API 呼叫,屬於使用者 SQL 陳述式的一部分。
當使用者撥打電話時,會發生下列動作:
-
分配器會將要求置於要求佇列上,由下一個可用的共用伺服器處理作業挑選該要求。
要求佇列位於 SGA 中,而且是執行處理的所有分配器處理作業通用的。
-
共用伺服器處理作業會檢查新要求的通用要求佇列,並先從中取出新的要求。
-
一個共用伺服器處理作業會在佇列中挑選一個要求,然後對資料庫進行所有必要的呼叫來完成此要求。
不同的伺服器處理作業可以處理每個資料庫呼叫。因此,剖析查詢的要求、擷取第一個資料列、擷取下一個資料列,以及關閉結果集,都可由不同的共用伺服器處理。
-
當伺服器處理作業完成要求時,會將回應置於呼叫分配器的回應佇列中。每個分配器都有自己的回應佇列。
-
分配器會將已完成的要求傳回給適當的從屬端處理作業。
例如,在訂單輸入系統中,每個職員的用戶端程序都會連線至分配器。職員提出的每個要求都會傳送給此分配器,讓要求進入佇列中。下一個可用的共用伺服器會挑選要求、提供服務,並將回應置於回應佇列中。當要求完成時,工作人員會維持連線到分配器,但處理該要求的共用伺服器會釋出,並可供其他要求使用。當某位職員與某個客戶交談時,另一位職員可以使用相同的共用伺服器處理作業。圖 19-9 顯示從屬端處理作業如何與 API 的分配器通訊,以及分配器如何將使用者要求通訊至共用伺服器處理作業。
圖 9:共用伺服器組態與處理作業

-
分配器處理作業 (Dnnn) :分配器處理作業可讓從屬端處理作業共用有限數目的伺服器處理作業。
-
共用伺服器處理作業 (Snnn) 每個共用伺服器處理作業都會服務共用伺服器組態中的多個從屬端要求。另請參閱:「大型集區」
分配器處理作業 (D nnn)
分配器處理作業可讓從屬端處理作業共用有限數目的伺服器處理作業。
您可以為單一資料庫執行處理建立多個分配器處理作業。視作業系統限制和每個處理作業的連線數目而定,分配器處理作業的最佳數目。
注意:連線至分配器的每個從屬端處理作業都必須使用 Oracle Net Services,即使兩個處理作業都是在相同的主機上執行。
分配器處理程序會以下列方式建立通訊:
-
執行處理啟動時,網路監聽器處理作業會開啟並建立使用者連線至 Oracle AI Database 的通訊路徑。
-
每個分配器處理作業都會提供監聽器處理作業一個位址,分配器會在此監聽連線要求。
必須為資料庫從屬端將使用的每個網路協定設定並啟動至少一個分配器處理作業。
-
當從屬端處理作業提出連線要求時,監聽器會決定從屬端處理作業是否應使用共用伺服器處理作業:
-
如果監聽器判斷需要共用伺服器處理作業,則監聽器會傳回負載最輕之分配器處理作業的位址,而從屬端處理作業會直接連線至分配器。
-
如果處理作業無法與分配器通訊,或者從屬端處理作業要求專用伺服器,監聽器就會建立專用伺服器處理作業並建立適當的連線。
-
另請參閱:Oracle AI Database Net Services Administrator's Guide,瞭解如何設定分配器
共用伺服器處理作業 (S nnn)
每個共用伺服器處理作業在共用伺服器組態中都有多個從屬端要求。
共用伺服器處理作業與專用伺服器處理作業提供相同的功能,但共用伺服器處理作業與特定的從屬端處理作業並無關聯。共用伺服器處理作業會改為服務共用伺服器組態中的任何從屬端要求。
共用伺服器處理作業的 PGA 不包含 UGA 資料,UGA 必須可供所有共用伺服器處理作業存取。共用伺服器 PGA 只包含處理作業特定資料。
所有階段作業相關資訊都包含在 SGA 中。每個共用伺服器處理作業都必須能夠存取所有階段作業的資料空間,如此一來,所有伺服器就能處理來自任何階段作業的要求。SGA 中會針對每個階段作業的資料空間配置空間。
另請參閱:「程式整體區域 (PGA) 簡介」
共用伺服器的限制作業
連線至分配器處理作業 (包括關閉或啟動執行處理和媒體復原) 時,無法執行特定的管理活動。
這些活動通常是在使用管理員權限連線時執行。若要使用設定共用伺服器之系統中的管理員權限連線,您必須指定使用專用伺服器處理作業。
另請參閱:Oracle AI Database Net Services Administrator's Guide,瞭解正確的連線字串語法
資料庫常駐連線集區
資料庫常駐連線集區 (DRCP) 提供專用伺服器的連線集區,適用於一般 Web 應用程式案例。
Web 應用程式通常會建立資料庫連線、簡短地使用連線,然後釋出連線。透過 DRCP,資料庫可以擴展到成千上萬個同時連線。
DRCP 可提供下列優點:
-
補足中間層連線集區,這些集區在中間層處理作業中共用繫線之間的連線。
-
讓資料庫連線能夠在多個中間層處理作業之間共用。這些中間層處理作業可能屬於相同或不同的中間層主機。
-
可大幅減少支援許多從屬端連線所需的金鑰資料庫資源。例如,DRCP 可減少資料庫所需的記憶體,並提升資料庫和中間層的擴展性。可用的伺服器集區也會降低重新建立從屬端連線的成本。
-
為具有多處理作業、單一繫線應用程式伺服器 (例如 PHP 和 Apache) 且無法進行中間層連線集區的架構提供集區。
DRCP 會使用集區伺服器,這等同於專用伺服器處理作業 (而非共用伺服器處理作業) 和結合的資料庫階段作業。集區伺服器模型可避免在短時間內,為每個需要伺服器的連線提供專用的伺服器。
從資料庫常駐連線集區取得連線的從屬端,會連線至稱為連線中介的 Oracle 背景處理作業。連線中介會在從屬端處理作業的內送連線之間實行集區功能和多工集區伺服器。
如圖 19-10 所示,當從屬端需要資料庫存取時,連線中介會從集區選取伺服器處理作業,然後將它交給從屬端。從屬端會直接連線至伺服器處理作業,直到提供要求為止。伺服器完成之後,伺服器處理作業就會釋出到集區中。從屬端的連線會回復到中介。
圖 10:DRCP

在 DRCP 中,釋出資源會使階段作業維持不變,但不再與連線 (伺服器處理作業) 相關聯。與共用伺服器不同,此階段作業會將其 UGA 儲存在 PGA 中,而非 SGA 中。從屬端可以在偵測活動時,以通透方式重新建立連線。
另請參閱:
方案介面概要
程式介面是資料庫應用程式與 Oracle AI Database 之間的軟體層。
程式介面會執行下列功能:
-
提供安全屏障,防止從屬端處理作業對 SGA 進行破壞性存取
-
做為通訊機制,格式化資訊請求,傳遞資料和補漏白並傳回錯誤
-
轉換並轉譯資料,尤其是不同類型的電腦或外部使用者程式資料類型之間
Oracle 程式碼可作為伺服器,代表應用程式 (從屬端) 執行資料庫作業,例如從資料區塊擷取資料列。程式介面包含數個部分,由 Oracle AI Database 軟體和作業系統特定軟體提供。
-
程式介面結構:程式介面包含數個不同的元件。
-
程式介面驅動程式:驅動程式是一種軟體,可傳輸資料 (通常跨網路)。
-
適用於作業系統的通訊軟體將使用者端連接至程式介面之 Oracle AI Database 端的最低層級軟體是主機作業系統所提供的通訊軟體。
方案介面結構
程式介面由數個不同的元件組成。
這些元件包括:
-
Oracle 呼叫介面 (OCI) 或 Oracle 程式實際執行程式庫 (SQLLIB)
-
程式介面的用戶端或使用者端
-
各種 Oracle Net Services 驅動程式 (協定特定的通訊軟體)
-
作業系統通訊軟體
-
程式介面的伺服器或 Oracle AI Database 端 (也稱為 OPI)
程式介面的使用者和 Oracle AI Database 側邊會執行 Oracle 軟體,就像驅動程式一樣。
程式介面驅動程式
驅動程式是一種軟體,可在網路上傳輸資料。
驅動程式會執行連線、中斷連線、訊號錯誤,以及測試錯誤等作業。驅動程式專屬於通訊協定。
預設驅動程式永遠存在。您可以安裝多個驅動程式 (例如非同步或 DECnet 驅動程式),並選取一個作為預設驅動程式,但是允許使用者在連線時指定驅動程式來使用其他驅動程式。
不同的程序可以使用不同的動因。處理作業可以使用不同的 Oracle Net Services 驅動程式,並行連線到單一資料庫或多個資料庫。
另請參閱:
-
您的系統安裝與組態設定指南,以取得選擇、安裝及增加驅動程式的詳細資訊
-
Oracle AI Database Net Services Administrator's Guide,瞭解 JDBC 驅動程式
作業系統的通訊軟體
將使用者端連接至程式介面的 Oracle AI Database 端的最低層級軟體是主機作業系統提供的通訊軟體。
例如 DECnet、TCP/IP、LU6.2 和 ASYNC。通訊軟體可由 Oracle 提供,但通常是由硬體供應商或第三方軟體供應商分開購買。
Oracle True Cache 概要
True Cache 是 Oracle AI Database 前方的記憶體內唯讀快取。
與 Oracle Active Data Guard 一樣,True Cache 是主要資料庫的完整功能唯讀複本,但主要資料庫大多是無本地磁碟。
現代應用程式通常需要大量的連線,以及快速、低延遲的資料存取。常見的方法是將快取放在資料庫前面,因為應用程式通常會執行比更新更多的讀取,而它們可以從快取中讀取,而不會影響資料庫效能。例如,航空公司預訂系統在人員購買航班時經常讀取資料,如果資料與資料庫中的資料不是最新資料,那麽就沒問題。只有當有人保留航班時,應用程式才需要存取最新資料。
與傳統快取不同,True Cache 會自動將最常存取的資料保存在快取中,並讓快取與主要資料庫、相同快取中的其他物件以及其他快取保持一致。它會快取所有 Oracle AI Database 物件和資料類型,包括 JSON。
因為 True Cache 實行了 Oracle AI Database 安全原則,所以您可以控制對快取的存取。這可讓您快取通常不會快取的機密資料,例如私人個人資訊。
相關主題