50 DBMS_CLOUD_NOTIFICATION
DBMS_CLOUD_NOTIFICATIONパッケージを使用すると、メッセージ、またはSQL問合せの出力をプロバイダに送信できます。
50.1 DBMS_CLOUD_NOTIFICATIONの概要
DBMS_CLOUD_NOTIFICATIONパッケージの設定と使用について説明します。
サポートされているプロバイダは、Email、Microsoft TeamsおよびSlackです。
50.2 DBMS_CLOUD_NOTIFICATIONサブプログラムの要約
この表は、このパッケージに含まれているサブプログラムの概要を示しています。
| サブプログラム | 説明 |
|---|---|
|
SQL問合せの出力をプロバイダに送信します。 |
|
|
プロバイダにテキスト・メッセージを送信します。 |
50.2.1 SEND_DATAプロシージャ
SEND_DATAプロシージャは、指定された問合せの結果をプロバイダに送信します。
構文
DBMS_CLOUD_NOTIFICATION.SEND_DATA(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロバイダを指定します。 有効な値は、' このパラメータは必須です。 |
|
|
プロバイダにアクセスするための資格証明オブジェクトの名前。 emailプロバイダの場合、この資格証明は、そのユーザー名およびパスワードを含むSMTP承認済送信者の資格証明の名前です。 msteamsプロバイダの場合、この資格証明は、この資格証明の名前です。 Slackプロバイダの場合、この資格証明のユーザー名は このパラメータは必須です。 |
|
|
実行するSQL問合せを指定します。結果がプロバイダに送信されます。 このパラメータは必須です。 |
|
|
プロバイダ・タイプ
プロバイダ・タイプ
プロバイダ・タイプ
このパラメータは必須です。 |
使用上のノート
-
資格証明オブジェクトを作成するには、プロシージャ
DBMS_CLOUD.CREATE_CREDENTIAL(credential_name、username、password)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
emailプロバイダの場合は、次の点に注意してください:-
ユーザーは、
smtp_hostを取得するために、電子メール配信サーバーのSMTP接続エンドポイントが必要です。ユーザーは、credential_nameを取得するために、SMTP承認済送信者と、電子メール配信サーバーでの認証のためのその資格証明も必要です。SMTP接続を構成する必要があり、SMTP資格証明を生成し承認を受ける必要があります。 -
emailプロバイダを指定してDBMS_CLOUD_NOTIFICATION.SEND_DATAを使用するときの、サポートされている最大メッセージ・サイズは32KBです。 -
DBMS_CLOUD_NOTIFICATIONは、Autonomous AI Databaseバージョン19.21以上でのメール通知にのみ使用できます。
-
-
msteamsプロバイダの場合、ユーザーは、Microsoft Teamsアプリケーションが必要であり、それにボットが構成されている必要があります。管理センターから管理者による承認を得た後、このアプリケーションを組織に公開し、インストールする必要があります。ユーザーは、Azure Portalから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;
/
50.2.2 SEND_MESSAGEプロシージャ
このプロシージャは、プロバイダにテキスト・メッセージを送信します。
構文
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
message IN CLOB,
params IN CLOB
);
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
プロバイダを指定します。 有効な値は、' このパラメータは必須です。 |
|
|
プロバイダにアクセスするための資格証明オブジェクトの名前。 emailプロバイダの場合、この資格証明は、そのユーザー名およびパスワードを含む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 Portalから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;
/