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

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

準備從自治式 AI 資料庫傳送 Slack 通知

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

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

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

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

     channels:read
     chat:write
     files:write
    

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

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

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

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

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

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

    注意:只有在 Exadata 基礎架構為「需要啟用」狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。

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

  5. 建立證明資料物件以從自治式 AI 資料庫存取 Slack App。

    提示:如果您無法順利使用 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。如需詳細資訊,請參閱如何尋找您的 Slack 團隊 ID 和 Slack 頻道 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 通道和資料類型:

相關主題