CS_SESSION 套件

CS_SESSION 套裝程式提供一個介面,可切換現有階段作業的資料庫服務與用戶群組。

附註:

從版本 19.28 開始,Oracle Database 19c 以及從版本 23.9 開始在 Oracle Database 23ai 中提供 CS_SESSION 套裝程式的支援。

使用 Autonomous Database 建立連線時,系統會將該階段作業指派給用戶群組。例如,可以使用與 Autonomous Database 的 LOW 服務連線來建立階段作業。您可以將用戶群組 (例如從 LOW 切換為 HIGH)。CS_SESSION 套裝軟體提供可切換的 API。如需詳細資訊,請參閱自治式資料庫的預先定義資料庫服務名稱

用戶群組決定並行性和平行程度 (DOP)。例如,與 LOW 資料庫服務建立之連線的敘述句會依序執行。建立至 HIGH 資料庫服務並行執行的連線敘述句。如果您有一個工作負載需要在少數敘述句切換為 HIGH 用戶群組時進行序列敘述句處理,則 CS_SESSION 套裝程式可讓您切換。

SWITCH_SERVICE 程序

此程序會切換目前階段作業的資料庫服務與用戶群組。

語法

CS_SESSION.SWITCH_SERVICE(service_name IN varchar2);

參數

Parameter - 參數 描述
service_name

指定要更新的用戶群組。

視工作負載而定,有效值為:HIGHMEDIUMLOWTPTPURGENT

使用注意事項

呼叫此程序時,程序會將階段作業切換至指定的服務與相關用戶群組。如果指定的服務不存在於該資料庫中,系統會提供錯誤訊息。例如,如果您在資料倉儲工作負載上指定 'TP' 作為服務名稱,錯誤會指出它不是有效的服務名稱。如果目前的服務和指定的服務相同,則不會報告任何錯誤。

程序不會重設階段作業屬性。在呼叫此程序之前,使用者為其階段作業所設定的任何項目都會繼續保持原樣。例如,如果修改了階段作業參數,之後階段作業切換至其他服務,則參數值會維持不變。

範例

BEGIN
  CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/

安全性與存取

ADMIN 使用者被授與 CS_SESSION 上具有 GRANT OPTIONEXECUTE 權限。權限也未授予 GRANT OPTIONDWROLE

其他安全考量

如果使用者被授與此程序的 EXECUTE 權限,而您不想讓該使用者切換至特定服務,則可以使用 AFTER SET CONTAINER 觸發程式來封鎖作業。您可以建立 AFTER SET CONTAINER 觸發程式來達到此目的。

CREATE OR REPLACE TRIGGER SESS_SWITCH
AFTER SET CONTAINER ON DATABASE
BEGIN
IF SYS_CONTEXT('USERENV','SESSION_USER') = 'USER' and
   SYS_CONTEXT('USERENV','SERVICE_NAME') = 'serviceexample_low.adwc.oraclecloud.com'
THEN
    NULL;
ELSE
    RAISE_APPLICATION_ERROR(-20001, 'Denied!  You are not allowed to switch service in the database');
END IF;
END;
/

錯誤訊息

下表說明 CS_SESSION 的例外

發生錯誤 訊息 原因
20001 服務名稱無效。有效值為 HIGH、MEDIUM、LOW。 對於資料倉儲工作負載,已指定 'HIGH'、'MEDIUM'、'LOW' 以外的值。
20001 服務名稱無效。有效值為 HIGH、MEDIUM、LOW、TP、TPURGENT。 針對異動處理工作負載,已指定 'HIGH'、'MEDIUM'、'LOW'、'TP'、'TPURGENT' 以外的值。
20002 服務切換失敗。 無法切換至新服務。