在專用 Exadata 基礎架構上從自治式 AI 資料庫傳送 Slack 通知

您可以設定 Slack 使用 DBMS_CLOUD_NOTIFICATION 套裝程式,將查詢的訊息、警示或輸出從專用 Exadata 基礎架構上的自治式 AI 資料庫傳送至 Slack 通道。

準備從 Autonomous AI Database 傳送 Slack 通知

若要傳送 Slack 通知,您必須將 Slack 應用程式設定為接收來自 Autonomous AI Database 的訊息。接著,建立要與 DBMS_CLOUD_NOTIFICATION 程序搭配使用的證明資料,以從 Autonomous AI Database 傳送 Slack 通知。

若要搭配 DBMS_CLOUD_NOTIFICATION 程序使用 Slack,請執行下列動作:

  1. 建立您的 Slack 應用程式。

    Slack 應用程式會安裝在 Slack 工作區中,而 Slack 工作區則有可傳送訊息的通道。Slack 應用程式的機器人權杖必須定義下列權限範圍:

    channels:read
    chat:write
    files:write

    如需有關設定 Slack 應用程式的資訊,請參閱建立應用程式

  2. 讓您的 Slack 管理員新增 Slack App 至 DBMS_CLOUD_NOTIFICATION 可以透過通道中的「整合」選項傳送訊息的通道。

    如需詳細資訊,請參閱基本應用程式設定

  3. https://app.slack.com 下的 Slack 應用程式特定頁面中找出應用程式的機器人權杖。

    如需詳細資訊,請參閱基本應用程式設定

  4. 在 Exadata Cloud@Customer 上,設定您環境中的 HTTP 代理主機設定值以允許資料庫存取 Slack。請參閱使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務,瞭解在建立 Exadata Cloud@Customer 基礎架構時設定 HTTP 代理主機設定值的資訊。

    附註:

    Exadata 基礎架構為「需要啟用」狀態之前,才能編輯網路組態 (包括 HTTP 代理主機)。啟用之後,您就無法編輯這些設定值。

    若要為已經佈建的 Exadata 基礎架構設定 HTTP 代理主機,請在 My Oracle Support 中送出服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求瞭解詳細資訊。

  5. 建立證明資料物件以從 Autonomous AI Database 存取 Slack 應用程式。

    秘訣:

    如果您無法順利使用 CREATE_CREDENTIAL 程序,請洽詢 ADMIN 使用者以授與 DBMS_CLOUD 套裝程式的執行存取權。

    證明資料的使用者名稱是 SLACK_TOKEN,密碼則是機器人記號。

    舉例而言:

    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'SLACK_CRED',
         username    => 'SLACK_TOKEN',
         password    => 'xoxb-34....96-34....52-zW....cy');
    END;
    /

    如需詳細資訊,請參閱CREATE_CREDENTIAL 程序

  6. 設定存取控制,以允許使用者存取外部網路服務 (Slack)。
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;
  7. 如果您要傳送 SQL,請設定存取控制以允許使用 DBMS_CLOUD_NOTIFICATION.SEND_DATA 傳送輸出。
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;

    請參閱 Oracle Database 19c Security Guide 中的 Configuring Access Control for External Network ServicesOracle Database 26ai Security Guide ,瞭解詳細資訊。

傳送訊息至 Slack 通道

依照準備從自治式 AI 資料庫傳送 Slack 通知所述建立 Slack 證明資料物件之後,您可以使用 DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE 程序將訊息傳送至 Slack 通道。
範例:
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Alert from Autonomous Database...',
      params            => json_object('channel' value 'C0....08'));
END;
/ 

使用 params 參數指定 Slack 通道。

  • channel:指定通道 ID。

    通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通路詳細資料時,您可以在「關於」頁標上找到通路 ID。請參閱 How to Find your Slack Team ID and Slack Channel ID 瞭解詳細資訊。

如需詳細資訊,請參閱SEND_MESSAGE 程序

將查詢結果傳送至 Slack 通道

依照準備從自治式 AI 資料庫傳送 Slack 通知所述建立 Slack 證明資料物件之後,您可以使用 DBMS_CLOUD_NOTIFICATION.SEND_DATA 程序將查詢的輸出傳送至 Slack 通道。
範例:
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;
/

使用 params 參數指定 Slack 通道和資料類型:

  • channel:指定通道 ID。

    通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通路詳細資料時,您可以在「關於」頁標上找到通路 ID。請參閱 How to Find your Slack Team ID and Slack Channel ID 瞭解詳細資訊。

  • type:指定輸出類型。有效值為:'csv' 或 'json'。

如需詳細資訊,請參閱SEND_DATA 程序