DBMS_CLOUD_NOTIFICATION 套裝程式
DBMS_CLOUD_NOTIFICATION 套裝程式可讓您將訊息或 SQL 查詢的輸出傳送給提供者。
具備 DBMS_CLOUD_NOTIFICATION 的支援供應商包括:電子郵件、Microsoft Teams、OCI Notifications (ONS) 和 Slack。
將 OCI 通知服務與 DBMS_CLOUD_NOTIFICATION 套裝軟體搭配使用時,僅支援 DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE 程序 (不支援 DBMS_CLOUD_NOTIFICATION.SEND_DATA 程序)。
必備條件
您的機組管理員必須使用 NAT 閘道設定輸出連線,如下所述:
-
請依照 Oracle Cloud Infrastructure 文件中 Create a NAT Gateway 的指示,在您自治式 AI 資料庫資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
-
建立 NAT 閘道之後,請在自治式 AI 資料庫資源所在的每個子網路 (VCN 中) 新增路由規則和輸出安全規則,讓這些資源能夠使用閘道從您的 Azure AD 執行處理取得公開金鑰:
-
移至子網路的子網路詳細資訊頁面。
-
在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
-
在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地:0.0.0.0/0
-
目標類型:NAT 閘道
-
目標:您剛剛在 VCN 中建立的 NAT 閘道名稱
如果沒有這樣的規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
-
-
返回子網路的子網路詳細資訊頁面。
-
在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
-
在側邊功能表的資源底下,按一下傳出規則。
-
在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地類型: CIDR
-
目的地:0.0.0.0/0
-
IP 協定: TCP
-
來源連接埠範圍:443
-
目的地連接埠範圍:全部
如果沒有這類規則,請按一下新增傳出規則,然後新增含有這些特性的傳出規則。
-
-
您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。
這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時所定義,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。
注意:只有在 Exadata 基礎架構為需要啟用狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。
若為已經佈建的 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
provider |
指定提供程式。 有效值為:' 此參數為必要參數。 |
credential_name |
用以存取提供者的證明資料物件名稱。 對於電子郵件提供者,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。 若為 msteams 提供者,憑證是憑證的名稱。 對於 Slack 提供者,證明資料的使用者名稱必須是 此參數為必要參數。 |
query |
指定要執行的 SQL 查詢。結果會傳送給提供者。 此參數為必要參數。 |
params |
以 JSON 格式指定 對於提供者類型
對於提供者類型
對於提供者類型
此參數為必要參數。 |
使用注意事項
請使用 DBMS_CLOUD.CREATE_CREDENTIAL(credential_name、username、password) 程序來建立證明資料物件。請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。
-
對於
email提供者,使用者需要 SMTP 連線端點,電子郵件傳遞伺服器才能取得smtp_host。使用者還需要 SMTP 核准的寄件者及其認證,才能與 Email Delivery 伺服器進行認證,以取得credential_name。必須設定 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
);
參數
| Parameter - 參數 | 描述 |
|---|---|
provider |
指定提供程式。 有效值為:' 此參數為必要參數。 |
credential_name |
用以存取提供者的證明資料物件名稱。 對於電子郵件提供者,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。 若為 msteams 提供者,證明資料必須包含使用者名稱和密碼中的 對於 Slack 提供者,證明資料的使用者名稱必須是 對於 此參數為必要參數。 |
message |
指定訊息文字。 此參數為必要參數。 |
params |
以 JSON 格式指定 對於提供者類型
對於提供者類型
對於提供者類型
對於類型為
使用
通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通道詳細資訊時,可以在「關於」頁籤中找到通道 ID。 此參數為必要參數。 |
使用注意事項
請使用 DBMS_CLOUD.CREATE_CREDENTIAL(credential_name、username、password) 程序來建立證明資料物件。請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。
-
對於
email提供者,使用者需要 SMTP 連線端點,電子郵件傳遞伺服器才能取得smtp_host。使用者還需要 SMTP 核准的寄件者及其認證,才能與 Email Delivery 伺服器進行認證,以取得credential_name。必須設定 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 通知提供者,您必須執行下列動作:
-
自治式 AI 資料庫執行處理、證明資料 (如果您使用使用者證明資料) 以及訂閱主題都必須位於相同的區域中。
-
請注意下列限制:
-
訊息大小限制:每一要求的訊息大小限制為 64KB。超過此大小的訊息無法在單一要求內傳送或處理。
-
訊息傳遞速率限制:根據使用的協定,有不同的訊息傳遞速率限制。
email通訊協定:每個端點的限制為每分鐘 10 則訊息。
此限制可能會影響訊息的傳輸和接收速度。
-
每一租用戶交易數限制 (TPM):此作業的每個主題 TPM 限制為 60。此限制代表指定主題每分鐘可處理或處理的訊息數目上限。若超過此限制,則不會以較慢的速度處理或處理訊息。
-
-
範例
傳送一則文字訊息給 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;
/