DBMS_CLOUD REST API

本節涵蓋專用 Exadata 基礎架構上自治式 AI 資料庫隨附的 DBMS_CLOUD REST API。

必備條件

身為開發人員,您可以將 DBMS_CLOUD 程序與部署在 Oracle Public Cloud、Multicloud 或 Exadata Cloud@Customer 上的 Autonomous AI 資料庫搭配使用。

視部署選項而定,必須符合下列先決條件,才能將 DBMS_CLOUD 程序與 Amazon S3、Azure Blob Storage 及 Google Cloud Storage 服務提供者搭配使用。

DBMS_CLOUD REST API 摘要

本節涵蓋自治式 AI 資料庫隨附的 DBMS_CLOUD REST API。

REST API 描述
GET_RESPONSE_HEADERS 函數 此函數會將 HTTP 回應標頭傳回為自治式 AI 資料庫中 JSON 物件的 JSON 資料。
GET_RESPONSE_TEXT 函數 此函數會傳回自治式 AI 資料庫中 TEXT 格式 (VARCHAR2CLOB) 的 HTTP 回應。大多數雲端 REST API 通常都會以文字格式傳回 JSON 回應。如果您預期 HTTP 回應為文字格式,此函數會很有用。
GET_API_RESULT_CACHE_SIZE 函數 此函數會傳回設定的結果快取大小。
SEND_REQUEST 函數和程序 此函數會開始 HTTP 要求、取得回應,並且結束自治式 AI 資料庫中的回應。此函數提供工作流程以傳送含有引數的雲端 REST API 要求,以及傳回回應代碼和有效負載。
SET_API_RESULT_CACHE_SIZE 程序 此程序會設定目前階段作業的快取大小上限。

DBMS_CLOUD REST API 概要

當您在應用程式中使用 PL/SQL,且需要呼叫雲端 REST API 時,您可以使用 DBMS_CLOUD.SEND_REQUEST 來傳送 REST API 要求。

DBMS_CLOUD REST API 函數可讓您使用 DBMS_CLOUD.SEND_REQUEST 提出 HTTP 要求,並取得和儲存結果。這些函數提供一般 API,可讓您透過下列支援的雲端服務呼叫任何 REST API:

DBMS_CLOUD REST API 常數

描述使用 DBMS_CLOUD.SEND_REQUEST 進行 HTTP 要求的 DBMS_CLOUD 常數。

DBMS_CLOUD 支援 GETPUTPOSTHEADDELETE HTTP 方法。用於 HTTP 要求的 REST API 方法通常記錄在雲端 REST API 文件中。

名稱 Type 數值
METHOD_DELETE VARCHAR2(6) 'DELETE'
METHOD_GET VARCHAR2(3) 'GET'
METHOD_HEAD VARCHAR2(4) 'HEAD'
METHOD_POST VARCHAR2(4) 'POST'
METHOD_PUT VARCHAR2(3) 'PUT'

DBMS_CLOUD REST API 結果快取

當您使用 DBMS_CLOUD.SEND_REQUESTcache 參數設為 true 時,可以儲存 DBMS_CLOUD REST API 結果。SESSION_CLOUD_API_RESULTS 檢視描述儲存 REST API 結果時可以使用的資料欄。

依照預設,DBMS_CLOUD REST API 呼叫不會儲存階段作業的結果。在此情況下,您可以使用 DBMS_CLOUD.SEND_REQUEST 函數來傳回結果。

當您使用 DBMS_CLOUD.SEND_REQUEST 並將 cache 參數設為 TRUE 時,系統會儲存結果,您可以在 SESSION_CLOUD_API_RESULTS 檢視中檢視過去的結果。儲存和查詢 DBMS_CLOUD REST API 要求的歷史結果,可協助您在需要處理應用程式中先前的結果。

例如,若要查詢最近的 DBMS_CLOUD REST API 結果,請使用 SESSION_CLOUD_API_RESULTS 檢視:

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

當您使用 DBMS_CLOUD.SEND_REQUEST 儲存 DBMS_CLOUD REST API 結果時,儲存的資料只能在同一個階段作業 (連線) 內使用。階段作業結束後,儲存的資料就無法再使用。

使用 DBMS_CLOUD.GET_API_RESULT_CACHE_SIZEDBMS_CLOUD.SET_API_RESULT_CACHE_SIZE 來檢視和設定 DBMS_CLOUD REST API 快取大小,以及停用快取功能。

DBMS_CLOUD REST API 結果 cache_scope 參數

當您以 DBMS_CLOUD.SEND_REQUEST 儲存 DBMS_CLOUD REST API 結果時,系統會根據 cache_scope 的值提供 SESSION_CLOUD_API_RESULTS 中結果的存取權。

依照預設,cache_scope'PRIVATE',只有階段作業的目前使用者可以存取結果。如果您將 cache_scope 設為 'PUBLIC',則所有階段作業使用者都可以存取結果。cache_scope 的預設值指定每個使用者只能看到以呼叫者權限呼叫的程序所產生的 DBMS_CLOUD.SEND_REQUEST REST API 結果。當您在階段作業中呼叫 DBMS_CLOUD.SEND_REQUEST 時,會根據 cache_scope 值,判斷目前使用者是否可以在快取中看到結果:

DBMS_CLOUD REST API SESSION_CLOUD_API_RESULTS 檢視

當您使用 DBMS_CLOUD.SEND_REQUESTcache 參數設為 true 時,可以儲存 DBMS_CLOUD REST API 結果。SESSION_CLOUD_API_RESULTS 檢視描述儲存 REST API 結果時可以使用的資料欄。

如果使用 DBMS_CLOUD.SEND_REQUEST 快取結果,則檢視 SESSION_CLOUD_API_RESULTS 會是建立的檢視。您可以查詢屬於使用者階段作業的歷史結果。階段作業結束時,會永久清除 SESSION_CLOUD_API_RESULTS 中的資料。

描述
URI DBMS_CLOUD REST API 要求 URL
TIMESTAMP DBMS_CLOUD REST API 回應時戳
CLOUD_TYPE DBMS_CLOUD REST API 雲端類型,例如 Oracle Cloud Infrastructure 和 AZURE_BLOB
REQUEST_METHOD DBMS_CLOUD REST API 要求方法,例如 GETPUTHEAD
REQUEST_HEADERS DBMS_CLOUD REST API 要求標頭
REQUEST_BODY_TEXT CLOB 中的 DBMS_CLOUD REST API 要求主體
RESPONSE_STATUS_CODE DBMS_CLOUD REST API 回應狀態代碼,例如 200(OK)404(Not Found)
RESPONSE_HEADERS DBMS_CLOUD REST API 回應標頭
RESPONSE_BODY_TEXT CLOB 中的 DBMS_CLOUD REST API 回應主體
SCOPE DBMS_CLOUD.SEND_REQUEST 設定的 cache_scope。有效值為 PUBLICPRIVATE

GET_RESPONSE_HEADERS 函數

此函數會將 HTTP 回應標頭傳回為 JSON 物件中的 JSON 資料。

語法

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

參數

Parameter - 參數 描述
resp DBMS_CLOUD.SEND_REQUEST 傳回的 HTTP 回應類型。

異常狀況

例外 發生錯誤 描述
invalid_response ORA-20025 傳遞至 DBMS_CLOUD.GET_RESPONSE_HEADERS 的回應類型物件無效。

GET_RESPONSE_TEXT 函數

此函數會傳回 TEXT 格式 (VARCHAR2CLOB) 的 HTTP 回應。大多數雲端 REST API 通常都會以文字格式傳回 JSON 回應。如果您預期 HTTP 回應為文字格式,此函數會很有用。

語法

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

參數

Parameter - 參數 描述
resp DBMS_CLOUD.SEND_REQUEST 傳回的 HTTP 回應類型。

異常狀況

例外 發生錯誤 描述
invalid_response ORA-20025 傳遞至 DBMS_CLOUD.GET_RESPONSE_TEXT 的回應類型物件無效。

GET_API_RESULT_CACHE_SIZE 函數

此函數會傳回設定的結果快取大小。快取大小值僅適用於目前的階段作業。

語法

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST 函數和程序

此函數和程序會開始 HTTP 要求、取得回應,然後結束回應。此函數提供使用引數傳送雲端 REST API 要求的工作流程,而且函數會傳回回應代碼和有效負載。如果您使用程序,可以使用 SESSION_CLOUD_API_RESULTS 檢視,從已儲存的結果檢視結果和回應詳細資訊。

語法

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL)
   RETURN DBMS_CLOUD_TYPES.resp;

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL);

參數

Parameter - 參數 描述
credential_name 用以向對應雲端原生 API 進行認證的證明資料名稱。
uri 執行要求的 HTTP URI。
method

HTTP 要求方法:GETPUTPOSTHEADDELETE。使用 DBMS_CLOUD 套裝軟體常數來指定方法。

請參閱 DBMS_CLOUD REST API 常數以瞭解詳細資訊。

headers 對應之雲端原生 API 的 HTTP 要求標頭 (JSON 格式)。認證標頭會自動設定,只傳送自訂標頭。
async_request_url

非同步要求 URL。

若要取得 URL,請從 API 清單中選取您的要求 API (請參閱 https://docs.cloud.oracle.com/en-us/iaas/api/)。然後,瀏覽在左窗格中尋找您要求的 API。例如,Database Services API -> Autonomous AI Database -> StopAutonomousDatabase。此頁面顯示 API 本位目錄 (並顯示基本端點)。然後,使用為您的工作要求 WorkRequest 連結取得的相對路徑附加基礎端點。

wait_for_states

等待狀態是 DBMS_CLOUD_TYPES.wait_for_states_t 類型的狀態。下列是預期狀態的有效值:'ACTIVE'、'CANCELED'、'COMPLETED'、'DELETED'、'FAILED'、'SUCCEEDED'。

wait_for_states 允許使用多個狀態。wait_for_states 的預設值是等待任何預期狀態:'ACTIVE'、'CANCELED'、'COMPLETED'、'DELETED'、'FAILED'、'SUCCEEDED'。

timeout

指定非同步要求與參數 async_request_urlwait_for_states 的逾時 (秒)。

預設值為 0。這表示等待請求完成,無任何逾時。

cache

如果 TRUE 指定應在 REST 結果 API 快取中快取要求。

預設值為 FALSE,表示不會快取 REST API 要求。

cache_scope 指定每個人是否可以存取此要求結果快取。有效值:"PRIVATE""PUBLIC"。預設值為 "PRIVATE"
body PUTPOST 要求的 HTTP 要求主體。

異常狀況

例外 發生錯誤 描述
invalid_req_method ORA-20023 傳送至 DBMS_CLOUD.SEND_REQUEST 的要求方法無效。
invalid_req_header ORA-20024 傳送至 DBMS_CLOUD.SEND_REQUEST 的要求標頭不是有效的 JSON 格式。

使用注意事項

SET_API_RESULT_CACHE_SIZE 程序

此程序會設定目前階段作業的快取大小上限。快取大小值僅適用於目前的階段作業。

語法

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

參數

Parameter - 參數 描述
cache_size

將快取大小上限設為指定的值 cache_size。如果新的快取大小上限小於目前的快取大小,則會刪除較舊的記錄,直到資料列數目等於指定的快取大小上限為止。最大值為 10000

如果快取大小設為 0,階段作業中就會停用快取功能。

預設的快取大小為 10

異常狀況

例外 發生錯誤 描述
invalid API result cache size ORA-20032 最小值為 0,最大值為 10000。當輸入值小於 0 或大於 10000 時,會顯示此例外。

範例

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

相關內容