DBMS_CLOUD_NOTIFICATION 패키지

DBMS_CLOUD_NOTIFICATION 패키지를 사용하면 메시지나 SQL 질의의 출력을 제공자에게 전송할 수 있습니다.

DBMS_CLOUD_NOTIFICATION에서 지원되는 제공자는 전자메일, Microsoft 팀, OCI 통지(ONS) 및 Slack입니다.

DBMS_CLOUD_NOTIFICATION 패키지와 함께 OCI 통지 서비스를 사용하는 경우 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
 );

매개변수

매개변수 설명
provider

제공자를 지정합니다.

적합한 값은 'email', 'msteams' 및 'slack'입니다.

이 매개변수는 필수입니다.

credential_name

제공자에 액세스할 자격 증명 객체의 이름입니다.

전자 메일 제공자의 경우 인증서는 사용자 이름과 암호를 포함하는 SMTP 승인 발신자의 인증서 이름입니다.

msteams 제공자의 경우 자격 증명은 자격 증명 이름입니다.

Slack 제공자의 경우 인증서의 사용자 이름은 "SLACK_TOKEN"이고 password은 Slack 봇 토큰입니다.

이 매개변수는 필수입니다.

query

실행할 SQL 질의를 지정합니다. 결과가 제공자에게 전송됩니다.

이 매개변수는 필수입니다.

params

provider에 대한 특정 매개변수를 JSON 형식으로 지정합니다.

제공자 유형 email의 경우 적합한 매개변수는 다음과 같습니다.

  • sender. 승인된 발신자의 전자메일 ID를 String 값으로 지정합니다.
  • 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. 테넌트 ID를 String 형식으로 지정합니다.
  • team. 팀 ID를 String 형식으로 지정합니다.
  • channel. 채널 ID를 String 형식으로 지정합니다.
  • title. 파일 제목을 String 형식으로 지정합니다. 최대 크기는 50자입니다.
  • type. 출력 형식을 String 값으로 지정합니다. 적합한 값은 CSV 또는 JSON입니다.

제공자 유형 slack의 경우 적합한 매개변수는 다음과 같습니다.

  • channel. String 값에 채널 ID를 지정합니다. 채널 ID는 채널에 대한 고유 ID이며 채널 이름과 다릅니다. Slack에서 채널 세부 정보를 볼 때 "정보" 탭에서 채널 ID를 찾을 수 있습니다.
  • type. 출력 형식을 String 값으로 지정합니다. 적합한 값은 CSV 또는 JSON입니다.

이 매개변수는 필수입니다.

사용법 참고

DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) 절차를 사용하여 자격 증명 객체를 만듭니다. 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

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
 );

매개변수

매개변수 설명
provider

제공자를 지정합니다.

적합한 값은 'email', 'msteams', 'slack' 및 'oci'입니다.

이 매개변수는 필수입니다.

credential_name

제공자에 액세스할 자격 증명 객체의 이름입니다.

전자 메일 제공자의 경우 인증서는 사용자 이름과 암호를 포함하는 SMTP 승인 발신자의 인증서 이름입니다.

msteams 제공자의 경우 자격 증명은 사용자 이름과 암호 모두에 bot_idbot_secret 키를 포함해야 합니다.

Slack 제공자의 경우 인증서의 사용자 이름은 "SLACK_TOKEN"이고 password은 Slack 봇 토큰입니다.

oci 제공자의 경우 인증서는 적합한 Oracle Cloud Infrastructure 서명 키 기반 인증서입니다.

이 매개변수는 필수입니다.

message

메시지 텍스트를 지정합니다.

이 매개변수는 필수입니다.

params

provider에 대한 특정 매개변수를 JSON 형식으로 지정합니다.

제공자 유형 email의 경우 적합한 매개변수는 다음과 같습니다.

  • sender. 승인된 발신자의 전자메일 ID를 String 값으로 지정합니다.
  • 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 매개변수는 가입마다 다르게 처리됩니다.

  • email: title는 메시지의 제목 행을 지정합니다.
  • Slack: title 값이 사용되지 않습니다. 포함된 경우 값이 무시됩니다.

채널 ID는 채널에 대한 고유 ID이며 채널 이름과 다릅니다. Slack에서 채널 세부 정보를 볼 때 "정보" 탭에서 채널 ID를 찾을 수 있습니다.

이 매개변수는 필수입니다.

사용법 참고

DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) 절차를 사용하여 자격 증명 객체를 만듭니다. 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.

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;
/