DBMS_CLOUD_NOTIFICATIONパッケージ
DBMS_CLOUD_NOTIFICATIONパッケージを使用すると、メッセージまたはSQL問合せの出力をプロバイダに送信できます。
DBMS_CLOUD_NOTIFICATIONでサポートされるプロバイダは、電子メール、Microsoft Teams、OCI通知(ONS)およびSlackです。
DBMS_CLOUD_NOTIFICATIONパッケージでOCI通知サービスを使用する場合、DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEプロシージャのみがサポートされます(DBMS_CLOUD_NOTIFICATION.SEND_DATAプロシージャはサポートされていません)。
前提条件
アウトバウンド接続は、次に説明するようにフリート管理者がNATゲートウェイを使用して構成されている必要があります。
-
Oracle Cloud InfrastructureドキュメントのNAT Gatewayの作成の手順に従って、Autonomous AI Databaseリソースが存在しているVirtual Cloud Network (VCN)にNAT Gatewayを作成します。
-
NATゲートウェイを作成したら、Autonomous AI Databaseリソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・ルールを追加して、これらのリソースがゲートウェイを使用してAzure ADインスタンスから公開キーを取得できるようにします:
-
サブネットの「サブネットの詳細」ページに移動します。
-
「サブネット情報」タブで、サブネットの「ルート表」の名前をクリックして、その「ルート表の詳細」ページを表示します。
-
既存のルート・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:
-
宛先: 0.0.0.0/0
-
ターゲット・タイプ: NAT Gateway
-
ターゲット: VCN内に作成したNATゲートウェイの名前
そのようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。
-
-
サブネットの「サブネットの詳細」ページに戻ります。
-
サブネットの「セキュリティ・リスト」表で、サブネット セキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
-
サイド・メニュー内の「リソース」で、「エグレス・ルール」をクリックします。
-
既存のエグレス・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:
-
宛先タイプ:CIDR
-
宛先:0.0.0.0/0
-
IPプロトコル:TCP
-
ソース・ポート範囲:443
-
宛先ポート範囲:すべて
そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。
-
-
ご使用の環境のHTTPプロキシ設定では、データベースがクラウド・サービス・プロバイダにアクセスできるようにする必要があります。
これらの設定は、コンソールを使用したExadata Database Service on Cloud@Customerのプロビジョニングの説明に従って、Exadata Cloud@Customerインフラストラクチャの作成時にフリート管理者によって定義されます。
ノート: HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。アクティブ化した後は、これらの設定を編集できません。
すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。
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
);
Parameters
| パラメータ | 説明 |
|---|---|
provider |
プロバイダを指定します。 有効な値は、' このパラメータは必須です。 |
credential_name |
プロバイダにアクセスするための資格証明オブジェクトの名前。 電子メール・プロバイダの場合、資格証明は、ユーザー名とパスワードを含むSMTP承認済送信者の資格証明の名前です。 msteamsプロバイダの場合、資格証明は資格証明の名前です。 Slackプロバイダの場合、資格証明のユーザー名は このパラメータは必須です。 |
query |
実行するSQL問合せを指定します。結果がプロバイダに送信されました。 このパラメータは必須です。 |
params |
プロバイダ・タイプ
プロバイダ・タイプ
プロバイダ・タイプ
このパラメータは必須です。 |
使用上のノート
資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_name、usernameおよびpassword)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
emailプロバイダの場合、smtp_hostを取得するには、Email DeliveryサーバーのSMTP接続エンドポイントが必要です。ユーザーは、credential_nameを取得するためにEmail Deliveryサーバーで認証するために、SMTP承認済送信者およびその資格証明も必要です。SMTP接続を構成し、SMTP資格証明を生成して承認する必要があります。 -
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;
/
SEND_MESSAGEプロシージャ
プロシージャは、プロバイダにテキスト・メッセージを送信します。
構文
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
message IN CLOB,
params IN CLOB
);
Parameters
| パラメータ | 説明 |
|---|---|
provider |
プロバイダを指定します。 有効な値は、' このパラメータは必須です。 |
credential_name |
プロバイダにアクセスするための資格証明オブジェクトの名前。 電子メール・プロバイダの場合、資格証明は、ユーザー名とパスワードを含むSMTP承認済送信者の資格証明の名前です。 msteamsプロバイダの場合、資格証明にはユーザー名およびパスワードの両方に Slackプロバイダの場合、資格証明のユーザー名は
このパラメータは必須です。 |
message |
メッセージ・テキストを指定します。 このパラメータは必須です。 |
params |
プロバイダ・タイプ
プロバイダ・タイプ
プロバイダ・タイプ
タイプが
チャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、チャネルIDを「About」タブで確認できます。 このパラメータは必須です。 |
使用上のノート
資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_name、usernameおよびpassword)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
emailプロバイダの場合、smtp_hostを取得するには、Email DeliveryサーバーのSMTP接続エンドポイントが必要です。ユーザーは、credential_nameを取得するためにEmail Deliveryサーバーで認証するために、SMTP承認済送信者およびその資格証明も必要です。SMTP接続を構成し、SMTP資格証明を生成して承認する必要があります。 -
msteamsプロバイダの場合、ユーザーはMicrosoft Teamsアプリケーションとそれで構成されたボットを必要とします。アプリケーションは、管理センターから管理者から承認を取得した後に、組織に公開してインストールする必要があります。また、ユーザーは、Azure PortalからGraph APIのFiles.ReadWrite.AllおよびChannelSettings.Read.All権限にアクセスする必要があります。必要なトークンを生成するには、ユーザー名にbot_id、パスワードにbot_secretが必要です。 -
slackプロバイダの場合、username値は任意の有効な文字列にでき、passwordはSlackボット・トークンです。 -
DBMS_CLOUD_NOTIFICATIONは、OCI通知プロバイダをサポートしています。OCI通知プロバイダの詳細は、通知の概要を参照してください。-
OCI通知プロバイダを使用するには、次を実行する必要があります。
-
トピックの作成トピックの作成の詳細は、トピックの作成を参照してください
-
必要なサブスクリプションを作成します。サブスクリプションの作成の詳細は、サブスクリプションの作成を参照してください
-
サブスクリプションを作成したら、サブスクリプションを確認します。メッセージは、確認済のサブスクリプションにのみ公開されます。サブスクリプションの確認の詳細は、サブスクリプションの確認を参照してください。
-
-
Autonomous AI Databaseインスタンス、資格証明(ユーザー資格証明を使用している場合)、およびサブスクリプション・トピックがすべて同じリージョンに配置されている必要があります。
-
次の制限があるので注意してください。
-
メッセージ・サイズ制限: リクエスト当たりのメッセージ・サイズ制限は64KBです。このサイズを超えるメッセージは、単一のリクエスト内で送信または処理できません。
-
Message Delivery Rate Limit: 使用されるプロトコルに応じて異なるメッセージ配信率制限があります。
emailプロトコル: 制限はエンドポイント当たり10メッセージ/分です。
この制限は、メッセージの送受信速度に影響を与える可能性があります。
-
Transactions Per Minute (TPM) per-Tenancy Limit: この操作には、トピック当たり60のTPM制限があります。この制限は、特定のトピックに対して処理または処理できる1分当たりの最大メッセージ数を表します。この制限を超えると、メッセージが処理または処理されない速度が遅くなる可能性があります。
-
-
例
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;
/