Autonomous Database on Dedicated Exadata Infrastructure에서 Slack 통지 전송

DBMS_CLOUD_NOTIFICATION 패키지를 사용하여 Autonomous Database on Dedicated Exadata Infrastructure에서 Slack 채널로 질의의 메시지, 경보 또는 출력을 전송하도록 Slack을 구성할 수 있습니다.

Autonomous Database에서 Slack 통지 전송 준비

Slack 통지를 전송하려면 Autonomous Database에서 메시지를 수신하도록 Slack 애플리케이션을 구성해야 합니다. 그런 다음 DBMS_CLOUD_NOTIFICATION 프로시저와 함께 사용할 인증서를 생성하여 Autonomous Database에서 Slack 통지를 전송합니다.

DBMS_CLOUD_NOTIFICATION 절차와 함께 Slack을 사용하려면 다음을 수행합니다.

  1. Slack 애플리케이션을 생성합니다.

    Slack 앱은 Slack Workspace에 설치되며 이 작업 영역에는 메시지가 전송될 수 있는 채널이 있습니다. Slack 앱의 봇 토큰에는 다음 권한 범위가 정의되어 있어야 합니다.

    channels:read
    chat:write
    files:write

    Slack 앱 설정에 대한 자세한 내용은 앱 생성을 참조하십시오.

  2. Slack 관리자가 채널의 "통합" 옵션을 통해 DBMS_CLOUD_NOTIFICATION에서 메시지를 전송할 수 있는 채널에 Slack 앱을 추가하도록 합니다.

    자세한 내용은 기본 앱 설정을 참조하십시오.

  3. https://app.slack.com 아래의 Slack 앱별 페이지에서 사용 가능한 앱의 봇 토큰을 찾습니다.

    자세한 내용은 기본 앱 설정을 참조하십시오.

  4. Exadata Cloud@Customer에서 데이터베이스가 Slack에 액세스할 수 있도록 환경의 HTTP 프록시 설정을 구성합니다. Exadata Cloud@Customer 인프라를 생성하는 동안 HTTP 프록시 설정을 설정하는 방법은 콘솔을 사용하여 Cloud@Customer에서 Exadata Database Service 프로비전을 참조하십시오.

    주:

    HTTP 프록시를 포함한 네트워크 구성은 Exadata 인프라가 [활성화 필요] 상태가 될 때까지만 편집할 수 있습니다. 활성화된 후에는 해당 설정을 편집할 수 없습니다.

    이미 프로비전된 Exadata 인프라에 대한 HTTP 프록시를 설정하려면 My Oracle Support에서 SR(서비스 요청)을 제출하십시오. 자세한 내용은 My Oracle Support에서 서비스 요청 생성을 참조하십시오.

  5. Autonomous 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 Procedure를 참조하십시오.

  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 GuideConfiguring Access Control for External Network Services 또는 Oracle Database 23ai Security Guide를 참조하십시오.

Slack 채널로 메시지 전송

Prepare to Send Slack Notifications from Autonomous Database에 설명된 대로 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의 채널 세부 정보를 볼 때 "About" 탭에서 채널 ID를 찾을 수 있습니다. 자세한 내용은 Slack 팀 ID 및 Slack 채널 ID를 찾는 방법을 참조하십시오.

자세한 내용은 SEND_MESSAGE Procedure를 참조하십시오.

Slack 채널로 질의 결과 전송

Prepare to Send Slack Notifications from Autonomous Database에 설명된 대로 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의 채널 세부 정보를 볼 때 "About" 탭에서 채널 ID를 찾을 수 있습니다. 자세한 내용은 Slack 팀 ID 및 Slack 채널 ID를 찾는 방법을 참조하십시오.

  • type: 출력 유형을 지정합니다. 적합한 값은 'csv' 또는 'json'입니다.

자세한 내용은 SEND_DATA Procedure를 참조하십시오.