DBMS_CLOUD_NOTIFICATION 套裝軟體
DBMS_CLOUD_NOTIFICATION
套裝軟體可讓您將訊息或 SQL 查詢的輸出傳送給提供者。
先決條件
- 請依照 Oracle Cloud Infrastructure 文件中建立 NAT 閘道的指示,在 Autonomous Database 資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
- 建立 NAT 閘道之後,請在 Autonomous Database 資源所在的每個子網路新增路由規則和傳出安全規則 (在 VCN 中),以便這些資源能夠使用此閘道從您的 Azure AD 執行處理取得公開金鑰:
- 移至子網路的子網路詳細資訊頁面。
- 在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
- 在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
- 目標:0.0.0.0/0
- 目標類型:NAT 閘道
- 目標:剛在 VCN 中建立的 NAT 閘道名稱
如果沒有這類規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
- 返回子網路的子網路詳細資訊頁面。
- 在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
- 在側邊功能表的資源下,按一下傳出規則。
- 在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
- 目標類型: CIDR
- 目的地:0.0.0.0/0
- IP 協定: TCP
- 來源連接埠範圍: 443
- 目的地連接埠範圍:全部
如果該規則不存在,請按一下新增輸出規則,然後新增具有這些特性的輸出規則。
您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。
附註:
必須等到 Exadata 基礎架構為需要啟用狀態後,才能編輯網路組態 (包括 HTTP 代理主機)。啟用之後,您就無法編輯這些設定值。在 My Oracle Support 中設定已啟動設定之 Exadata 基礎架構的 HTTP 代理主機時,必須要有服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求瞭解詳細資訊。
SEND_DATA 程序
SEND_DATA
程序會將指定查詢的結果傳送給提供者。
語法
DBMS_CLOUD_NOTIFICATION.SEND_DATA
(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
參數
Parameter - 參數 | 描述 |
---|---|
|
指定提供者。 有效值為:' 此為必要參數。 |
|
要存取提供者的證明資料物件名稱。 對於電子郵件提供者而言,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。 對於 msteams 提供者,證明資料是證明資料的名稱。 對於 Slack 提供者,證明資料的使用者名稱必須是 此為必要參數。 |
|
指定要執行的 SQL 查詢。結果會傳送給供應商。 此為必要參數。 |
|
以 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 入口網站存取 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 - 參數 | 描述 |
---|---|
|
指定提供者。 有效值為:' 此為必要參數。 |
|
要存取提供者的證明資料物件名稱。 對於電子郵件提供者而言,證明資料是包含其使用者名稱和密碼之 SMTP 核准寄件者的證明資料名稱。 對於 msteams 提供者,證明資料必須同時包含使用者名稱和密碼的 對於 Slack 提供者,證明資料的使用者名稱必須是 此為必要參數。 |
|
指定訊息文字。 此為必要參數。 |
|
以 JSON 格式指定 對於提供者類型
email ,有效參數為:
對於提供者類型
msteams ,有效參數為:
對於提供者類型
slack ,有效參數為:
通路 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 入口網站存取 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;
/