DBMS_CLOUD_NOTIFICATION 패키지
DBMS_CLOUD_NOTIFICATION
패키지를 사용하면 SQL 질의의 메시지나 출력을 제공자에게 보낼 수 있습니다.
필요 조건
- Oracle Cloud Infrastructure 문서의 NAT 게이트웨이 생성 지침에 따라 Autonomous Database 리소스가 상주하는 VCN(가상 클라우드 네트워크)에서 NAT 게이트웨이를 생성합니다.
- NAT 게이트웨이를 생성한 후 각 서브넷(VCN 내)에 경로 규칙 및 송신 보안 규칙을 추가합니다. 여기서 Autonomous Database 리소스는 게이트웨이를 사용하여 Azure AD 인스턴스에서 퍼블릭 키를 얻을 수 있습니다.
- 서브넷의 서브넷 세부 정보 페이지로 이동합니다.
- 서브넷 정보 탭에서 서브넷의 경로 테이블 이름을 눌러 경로 테이블 세부정보 페이지를 표시합니다.
- 기존 경로 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
- 대상: 0.0.0.0/0
- 대상 유형: NAT 게이트웨이
- 대상: VCN에서 방금 생성한 NAT 게이트웨이의 이름입니다.
해당 규칙이 없는 경우 경로 규칙 추가를 누르고 해당 특성을 가진 경로 규칙을 추가합니다.
- 서브넷에 대한 서브넷 세부정보 페이지로 돌아갑니다.
- 서브넷의 보안 목록 테이블에서 서브넷의 보안 목록 이름을 눌러 해당 보안 목록 세부정보 페이지를 표시합니다.
- 사이드 메뉴의 리소스에서 송신 규칙을 누릅니다.
- 기존 송신 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
- 대상 유형: CIDR
- 대상: 0.0.0.0/0
- IP 프로토콜: TCP
- 소스 포트 범위: 443
- 대상 포트 범위: 모두
해당 규칙이 없으면 Add Egress Rules를 누르고 이러한 특성을 가진 송신 규칙을 추가합니다.
환경의 HTTP 프록시 설정에서 데이터베이스가 클라우드 서비스 공급자에 액세스할 수 있도록 허용해야 합니다.
주:
HTTP 프록시를 포함한 네트워크 구성은 Exadata 인프라가 활성화 필요 상태가 될 때까지만 편집할 수 있습니다. 활성화된 후에는 해당 설정을 편집할 수 없습니다.이미 프로비전된 Exadata 인프라에 대해 HTTP 프록시를 설정하려면 My Oracle Support에서 SR(서비스 요청)이 필요합니다. 자세한 내용은 My Oracle Support에서 서비스 요청 생성을 참조하십시오.
DBMS_CLOUD_NOTIFICATION 서브 프로그램 요약
이 표에는 패키지에 포함된 서브 프로그램이 요약되어 있습니다.
하위 프로그램 | 설명 |
---|---|
제공자에게 SQL 질의 출력을 보냅니다. |
|
제공자에게 텍스트 메시지를 전송합니다. |
SEND_DATA 프로시저
SEND_DATA
프로시저는 지정된 질의의 결과를 제공자에게 전송합니다.
구문
DBMS_CLOUD_NOTIFICATION.SEND_DATA
(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
매개변수
매개변수 | 설명 |
---|---|
|
제공자를 지정합니다. 적합한 값은 ' 이 매개변수는 필수입니다. |
|
제공자에 액세스할 인증서 객체의 이름입니다. 전자 메일 제공자의 경우 자격 증명은 해당 사용자 이름과 암호를 포함하는 SMTP 승인 발신자의 자격 증명 이름입니다. msteams 제공자의 경우 자격 증명은 자격 증명 이름입니다. Slack 제공자의 경우 인증서의 사용자 이름은 이 매개변수는 필수입니다. |
|
실행할 SQL 질의를 지정합니다. 결과가 제공자에게 전송됩니다. 이 매개변수는 필수입니다. |
|
제공자 유형
제공자 유형
제공자 유형
이 매개변수는 필수입니다. |
사용법 참고
DBMS_CLOUD.CREATE_CREDENTIAL
(credential_name
, username
, password)
절차를 사용하여 자격 증명 객체를 만듭니다. 자세한 내용은 CREATE_CREDENTIAL Procedure를 참조하십시오.
email
제공자의 경우 전자메일 전송 서버가smtp_host
를 가져오려면 사용자에게 SMTP 접속 끝점이 필요합니다. 또한 사용자는credential_name
을 얻기 위해 전자메일 전송 서버로 인증하기 위해 SMTP 승인 발신자 및 해당 인증서가 필요합니다. SMTP 연결을 구성하고 SMTP 자격 증명을 생성하고 승인해야 합니다.msteams
제공자의 경우 사용자에게 Microsoft Teams 앱 및 봇이 구성되어 있어야 합니다. 관리 센터에서 관리자로부터 승인을 받은 후 앱을 조직에 게시하고 설치해야 합니다. 사용자는 또한 Azure 포털에서 Graph API에 대한Files.ReadWrite.All
및ChannelSettings.Read.All
권한에 대한 액세스도 필요합니다. 필요한 토큰을 생성하려면 사용자가 사용자 이름에bot_id
, 비밀번호에bot_secret
가 필요합니다. Microsoft Teams에 대해DBMS_CLOUD_NOTIFICATION.SEND_DATA
를 사용할 때 지원되는 최대 파일 크기는 4MB입니다.slack
제공자의 경우username
값은 적합한 문자열일 수 있으며password
는 Slack 봇 토큰입니다.
예
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
);
매개변수
매개변수 | 설명 |
---|---|
|
제공자를 지정합니다. 적합한 값은 ' 이 매개변수는 필수입니다. |
|
제공자에 액세스할 인증서 객체의 이름입니다. 전자 메일 제공자의 경우 자격 증명은 해당 사용자 이름과 암호를 포함하는 SMTP 승인 발신자의 자격 증명 이름입니다. msteams 제공자의 경우 인증서에 사용자 이름과 비밀번호 모두에 Slack 제공자의 경우 인증서의 사용자 이름은 이 매개변수는 필수입니다. |
|
메시지 텍스트를 지정합니다. 이 매개변수는 필수입니다. |
|
제공자 유형
email 의 경우 적합한 매개변수는 다음과 같습니다.
제공자 유형
msteams 의 경우 적합한 매개변수는 다음과 같습니다.
제공자 유형
slack 의 경우 적합한 매개변수는 다음과 같습니다.
채널 ID는 채널의 고유 ID이며 채널 이름과 다릅니다. Slack의 채널 세부 정보를 볼 때 "About" 탭에서 채널 ID를 찾을 수 있습니다. 이 매개변수는 필수입니다. |
사용법 참고
DBMS_CLOUD.CREATE_CREDENTIAL
(credential_name
, username
, password)
절차를 사용하여 자격 증명 객체를 만듭니다. 자세한 내용은 CREATE_CREDENTIAL 프로시저를 참조하십시오.
email
제공자의 경우 전자메일 전송 서버가smtp_host
를 가져오려면 사용자에게 SMTP 접속 끝점이 필요합니다. 또한 사용자는credential_name
을 얻기 위해 전자메일 전송 서버로 인증하기 위해 SMTP 승인 발신자 및 해당 인증서가 필요합니다. SMTP 연결을 구성하고 SMTP 자격 증명을 생성하고 승인해야 합니다.msteams
제공자의 경우 사용자에게 Microsoft Teams 앱 및 봇이 구성되어 있어야 합니다. 관리 센터에서 관리자로부터 승인을 받은 후 앱을 조직에 게시하고 설치해야 합니다. 사용자는 또한 Azure 포털에서 Graph API에 대한Files.ReadWrite.All
및ChannelSettings.Read.All
권한에 대한 액세스도 필요합니다. 필요한 토큰을 생성하려면 사용자가 사용자 이름에bot_id
, 비밀번호에bot_secret
가 필요합니다.slack
제공자의 경우username
값은 적합한 문자열일 수 있으며password
는 Slack 봇 토큰입니다.
예
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 Database.',
params => json_object('channel' value 'C0....08'));
END;
/