DBMS_CLOUD_NOTIFICATION 套裝程式

DBMS_CLOUD_NOTIFICATION 套裝程式可讓您將訊息或 SQL 查詢的輸出傳送給提供者。

具備 DBMS_CLOUD_NOTIFICATION 的支援供應商包括:電子郵件、Microsoft Teams、OCI Notifications (ONS) 和 Slack。

將 OCI 通知服務與 DBMS_CLOUD_NOTIFICATION 套裝軟體搭配使用時,僅支援 DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE 程序 (不支援 DBMS_CLOUD_NOTIFICATION.SEND_DATA 程序)。

必備條件

DBMS_CLOUD_NOTIFICATION 子程式摘要

此表格總結列出套件中包含的子程式。

子程式 描述
SEND_DATA 程序 傳送 SQL 查詢輸出給提供者。
SEND_MESSAGE 程序 請傳送簡訊給供應商。

SEND_DATA 程序

SEND_DATA 程序會將指定查詢的結果傳送給提供者。

語法

DBMS_CLOUD_NOTIFICATION.SEND_DATA(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       query              IN  CLOB,
       params             IN  CLOB
 );

參數

Parameter - 參數 描述
provider

指定提供程式。

有效值為:'email'、'msteams' 及 'slack'

此參數為必要參數。

credential_name

用以存取提供者的證明資料物件名稱。

對於電子郵件提供者,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。

若為 msteams 提供者,憑證是憑證的名稱。

對於 Slack 提供者,證明資料的使用者名稱必須是 "SLACK_TOKEN",而 password 是 Slack 機器人權杖。

此參數為必要參數。

query

指定要執行的 SQL 查詢。結果會傳送給提供者。

此參數為必要參數。

params

以 JSON 格式指定 provider 的特定參數。

對於提供者類型 email,有效參數為:

  • sender. 這會以 String 值指定核准寄件者的電子郵件 ID。
  • smtp_host. 這會以 String 值指定 SMTP 主機名稱。
  • subject. 這會以 String 值指定電子郵件的主旨。大小上限為 100 個字元。
  • recipient. 這會在 String 值中指定收件者的電子郵件 ID。有多個收件者時,在電子郵件 ID 之間使用逗號。
  • to_cc. 這會指定接收電子郵件副本的電子郵件 ID。它是 String 值。有多個副本收件者時,在電子郵件 ID 之間使用逗號。
  • to_bcc. 這會指定接收電子郵件密件副本的電子郵件 ID。它是 String 值。有多個密件副本收件者時,在電子郵件 ID 之間使用逗號。
  • message. 這會指定 String 值中的訊息文字。
  • type. 這會將 String 值的輸出格式指定為 CSV 或 JSON。
  • title. 這會在 String 值中指定 SQL 輸出附件的標題。標題值只能包含英文字母、數字、底線、連字號或點作為字元,因為它是用來產生檔案名稱。

對於提供者類型 msteams,有效參數為:

  • tenant. 這會以 String 格式指定用戶 ID。
  • team. 這會以 String 格式指定團隊 ID。
  • channel. 這會以 String 格式指定通道 ID。
  • title. 這會以 String 格式指定檔案的標題。大小上限為 50 個字元。
  • type. 這會以 String 值指定輸出格式。有效值為 CSV 或 JSON。

對於提供者類型 slack,有效參數為:

  • channel. 這會在 String 值中指定「通道 ID」。通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通道詳細資訊時,可以在「關於」頁籤中找到通道 ID。
  • type. 這會以 String 值指定輸出格式。有效值為 CSV 或 JSON。

此參數為必要參數。

使用注意事項

請使用 DBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernamepassword) 程序來建立證明資料物件。請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。

範例

使用 email 提供者傳送 SQL 輸出:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_DATA(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com1, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'type' value 'json',
                                       'title' value 'mytitle',
                                       'message' value 'This is the message',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

使用 msteams 提供者傳送 SQL 輸出:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',
        username        => '*bot_id*',
        password        => '*bot_secret*');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(provider => 'msteams',
        credential_name => 'TEAMS_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('tenant'value '5b743bc******c0286',
                                       'team'value '0ae401*********5d2bd',
                                       'channel'value '19%3a94be023*****%40thread.tacv2',
                                       'title'value 'today',
                                       'type'value 'csv'));
END;
/

使用 slack 提供者傳送 SQL 輸出:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
BEGIN
  DBMS_CLOUD_NOTIFICATION.SEND_DATA(
      provider        => 'slack',
      credential_name => 'SLACK_CRED',
      query           => 'SELECT username, account_status, expiry_date FROM USER_USERS WHERE rownum < 5',
      params          => json_object('channel' value 'C0....08','type' value 'csv'));
END;
/

SEND_MESSAGE 程序

程序會傳送簡訊給提供者。

語法

DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       message            IN  CLOB,
       params             IN  CLOB
 );

參數

Parameter - 參數 描述
provider

指定提供程式。

有效值為:'email'、'msteams'、'slack' 及 'oci'。

此參數為必要參數。

credential_name

用以存取提供者的證明資料物件名稱。

對於電子郵件提供者,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。

若為 msteams 提供者,證明資料必須包含使用者名稱和密碼中的 bot_idbot_secret 金鑰。

對於 Slack 提供者,證明資料的使用者名稱必須是 "SLACK_TOKEN",而 password 是 Slack 機器人權杖。

對於 oci 提供者,證明資料是有效的 Oracle Cloud Infrastructure 簽署金鑰型證明資料。

此參數為必要參數。

message

指定訊息文字。

此參數為必要參數。

params

以 JSON 格式指定 provider 的特定參數。

對於提供者類型 email,有效參數為:

  • sender. 這會以 String 值指定核准寄件者的電子郵件 ID。
  • smtp_host. 這會以 String 值指定 SMTP 主機名稱。
  • subject. 這會以 String 值指定電子郵件的主旨。大小上限為 100 個字元。
  • recipient. 這會在 String 值中指定收件者的電子郵件 ID。有多個收件者時,在電子郵件 ID 之間使用逗號。
  • to_cc. 這會指定接收電子郵件副本的電子郵件 ID。有多個副本收件者時,在電子郵件 ID 之間使用逗號。
  • to_bcc. 這會指定接收電子郵件密件副本的電子郵件 ID。有多個密件副本收件者時,在電子郵件 ID 之間使用逗號。

對於提供者類型 msteams,有效參數為:

  • channel. 這會在 String 值中指定「通道 ID」。

對於提供者類型 slack,有效參數為:

  • channel. 這會在 String 值中指定「通道 ID」。

對於類型為 oci 的提供者「OCI 通知」,有效參數為:

  • topic_ocid:指定
  • title:指定訊息的主旨行。

使用 oci 提供者時,訊息會根據訂閱而有不同的可能端點。title 參數的處理方式不同於不同的訂閱:

  • 電子郵件:title 指定訊息的主旨行。
  • Slack:不使用 title 值。如果包含該值,則會忽略該值。

通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通道詳細資訊時,可以在「關於」頁籤中找到通道 ID。

此參數為必要參數。

使用注意事項

請使用 DBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernamepassword) 程序來建立證明資料物件。請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。

範例

傳送一則文字訊息給 email 提供者:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        message         => 'Subject content',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

傳送一則文字訊息給 msteams 提供者:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',
        username        => '*bot_id*',
        password        => '*bot_secret*');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'msteams',
        credential_name => 'TEAMS_CRED',
        message         => 'text from new teams api',
        params          => json_object('channel'value 'C0....08'),'region'value 'india');
END;
/

傳送一則文字訊息給 slack 提供者:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Send text from Autonomous AI Database.',
      params            => json_object('channel' value 'C0....08'));
END;
/

傳送含有 OCI 通知的簡訊,輸入 oci 提供者:

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'oci',
      credential_name  => 'OCI_CRED',
      message          => 'Text message for you.',
      params           => json_object('topic_ocid'  value 'oci********pa',
      'title'  value 'Title for message subject' ));
END;
/