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 |
指定要更新的用戶群組。 視工作負載而定,有效值為: |
使用注意事項
呼叫此程序時,程序會將階段作業切換至指定的服務與相關用戶群組。如果指定的服務不存在於該資料庫中,系統會提供錯誤訊息。例如,如果您在資料倉儲工作負載上指定 'TP' 作為服務名稱,錯誤會指出它不是有效的服務名稱。如果目前的服務和指定的服務相同,則不會報告任何錯誤。
程序不會重設階段作業屬性。在呼叫此程序之前,使用者為其階段作業所設定的任何項目都會繼續保持原樣。例如,如果修改了階段作業參數,之後階段作業切換至其他服務,則參數值會維持不變。
範例
BEGIN
CS_SESSION.SWITCH_SERVICE('HIGH');
END;
/
安全性與存取
ADMIN
使用者被授與 CS_SESSION
上具有 GRANT OPTION
的 EXECUTE
權限。權限也未授予 GRANT OPTION
給 DWROLE
。
其他安全考量
如果使用者被授與此程序的 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 | 服務切換失敗。 | 無法切換至新服務。 |
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
取得 Oracle 支援
Oracle 客戶對於 Oracle 支援服務的取得及使用,應以其 Oracle 訂單中針對適用服務所指定的條款與條件為依據。