Pacote DBMS_CLOUD_NOTIFICATION
O pacote DBMS_CLOUD_NOTIFICATION permite que você envie mensagens ou a saída de uma consulta SQL para um provedor.
Os provedores suportados com DBMS_CLOUD_NOTIFICATION são: E-mail, Microsoft Teams, OCI Notifications (ONS) e Slack.
Quando você usa o serviço OCI Notifications com o pacote DBMS_CLOUD_NOTIFICATION, só há suporte para o procedimento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE (o procedimento DBMS_CLOUD_NOTIFICATION.SEND_DATA não é suportado).
Pré-requisitos
- Crie um gateway NAT na VCN (Rede Virtual na Nuvem) em que seus recursos do Autonomous AI Database residem seguindo as instruções em Criar um Gateway NAT na Documentação do Oracle Cloud Infrastructure.
- Após criar o gateway NAT, adicione uma regra da rota e uma regra da segurança da saída a cada sub-rede (na VCN) na qual os recursos do Autonomous AI Database residem para que esses recursos possam usar o gateway para obter a chave pública da sua instância doAzure AD
- Vá para a página Detalhes da Sub-rede da sub-rede.
- Na guia Informações da Sub-rede, clique no nome da Tabela de Rota da sub-rede para exibir sua respectiva página Detalhes da Tabela de Rota.
- Na tabela de Regras de Roteamento existentes, verifique se já existe uma regra com as seguintes características:
- Destino: 0.0.0.0/0
- Tipo de Destino: Gateway NAT
- Alvo: O nome do gateway NAT recém-criado na VCN
Se essa regra não existir, clique em Adicionar Regras de Rota e adicione uma regra de roteamento com essas características.
- Retorne à página Detalhes da Sub-rede da sub-rede.
- Na tabela Listas de Segurança da sub-rede, clique no nome da lista de segurança da sub-rede para exibir a página Detalhes da Lista de Segurança.
- No menu lateral, em Recursos, clique em Regras de Saída.
- Na tabela de Regras de Saída existentes, verifique se já existe uma regra com as seguintes características:
- Tipo de Destino: CIDR
- Destino: 0.0.0.0/0
- Protocolo IP: TCP
- Faixa de Portas de Origem: 443
- Faixa de Portas de Destino: Todas
Se essa regra não existir, clique em Adicionar Regras de Saída e adicione uma regra de saída com essas características.
As definições de Proxy HTTP em seu ambiente devem permitir que o banco de dados acesse o provedor de serviços em nuvem.
Observação:
A configuração de rede, incluindo o Proxy HTTP, só poderá ser editada até que o Exadata Infrastructure esteja no estado Exige Ativação. Depois de ativado, você não poderá editar essas configurações.A configuração de um Proxy HTTP para uma Infraestrutura do Exadata já provisionada precisa de uma Solicitação de Serviço (SR) no My Oracle Support. Consulte Criar uma Solicitação de Serviço no My Oracle Support para obter detalhes.
Resumo de Subprogramas DBMS_CLOUD_NOTIFICATION
Esta tabela resume os subprogramas incluídos no pacote.
| Subprograma | Descrição |
|---|---|
|
Enviar a saída da consulta SQL a um provedor. |
|
|
Enviar uma mensagem de texto para um profissional de saúde. |
Procedimento SEND_DATA
O procedimento SEND_DATA envia os resultados da consulta especificada para um provedor.
Sintaxe
DBMS_CLOUD_NOTIFICATION.SEND_DATA(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
Parâmetros
| Parâmetro | Descrição |
|---|---|
|
|
Especifica o provedor. Os valores válidos são: ' Esse parâmetro é obrigatório. |
|
|
O nome do objeto de credencial para acessar o provedor. Para o provedor de e-mail, a credencial é o nome da credencial do remetente aprovado pelo SMTP que contém seu nome de usuário e senha. Para o provedor de msteams, a credencial é o nome da credencial. Para o provedor do Slack, o nome de usuário da credencial deve ser Esse parâmetro é obrigatório. |
|
|
Especifica a consulta SQL a ser executada. Os resultados são enviados ao profissional de saúde. Esse parâmetro é obrigatório. |
|
|
Especifica parâmetros específicos para Para o tipo de provedor
Para o tipo de provedor
Para o tipo de provedor
Esse parâmetro é obrigatório. |
Observações sobre Uso
Use o procedimento DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username e password) para criar o objeto de credencial. Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
- Para o provedor
email, o usuário requer um ponto final de conexão SMTP para que o servidor Email Delivery obtenhasmtp_host. O usuário também requer um remetente aprovado pelo SMTP e suas credenciais para autenticação no servidor Email Delivery para obter ocredential_name. A conexão SMTP deve ser configurada e as credenciais SMTP devem ser geradas e aprovadas. - Para o provedor
msteams, o usuário requer o Aplicativo Microsoft Teams e um bot configurado nele. O aplicativo precisa ser publicado na organização e instalado após obter a aprovação do administrador no centro de administração. O usuário também requer acesso à permissãoFiles.ReadWrite.AlleChannelSettings.Read.Allpara a API de Gráfico do Portal do Azure. Para gerar o token necessário, o usuário requerbot_idno nome de usuário ebot_secretna senha. O tamanho máximo de arquivo suportado ao usarDBMS_CLOUD_NOTIFICATION.SEND_DATApara o Microsoft Teams é de 4 MB. - Para o provedor
slack, o valorusernamepode ser qualquer string válida epasswordé o token de bot do Slack.
Exemplo
Envie a saída SQL com o provedor email:
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;
/Envie a saída SQL com o provedor 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',
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;
/
Envie a saída SQL com o provedor slack:
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;
/
Procedimento SEND_MESSAGE
O procedimento envia uma mensagem de texto para um profissional de saúde.
Sintaxe
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
message IN CLOB,
params IN CLOB
);
Parâmetros
| Parâmetro | Descrição |
|---|---|
|
|
Especifica o provedor. Os valores válidos são: ' Esse parâmetro é obrigatório. |
|
|
O nome do objeto de credencial para acessar o provedor. Para o provedor de e-mail, a credencial é o nome da credencial do remetente aprovado pelo SMTP que contém seu nome de usuário e senha. Para o provedor msteams, a credencial deve conter o Para o provedor do Slack, o nome de usuário da credencial deve ser Para o provedor Esse parâmetro é obrigatório. |
|
|
Especifica o texto da mensagem. Esse parâmetro é obrigatório. |
|
|
Especifica parâmetros específicos para Para o tipo de provedor
email, os parâmetros válidos são:
Para o tipo de provedor
msteams, o parâmetro válido é:
Para o tipo de provedor
slack, o parâmetro válido é:
Para o provedor OCI Notifications com o tipo
oci, os parâmetros válidos são:
Com o provedor
oci, há diferentes pontos finais possíveis para uma mensagem, com base nas assinaturas. O parâmetro title é tratado de maneira diferente para diferentes assinaturas:
O ID do Canal é um ID exclusivo para um canal e é diferente do nome do canal. No Slack, ao exibir detalhes do canal, você pode encontrar o ID do Canal na guia "Sobre". Esse parâmetro é obrigatório. |
Observações sobre Uso
Use o procedimento DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) para criar o objeto de credencial. Consulte CREATE_CREDENTIAL Procedures para obter mais informações.
- Para o provedor
email, o usuário requer um ponto final de conexão SMTP para que o servidor Email Delivery obtenhasmtp_host. O usuário também requer um remetente aprovado pelo SMTP e suas credenciais para autenticação no servidor Email Delivery para obter ocredential_name. A conexão SMTP deve ser configurada e as credenciais SMTP devem ser geradas e aprovadas. - Para o provedor
msteams, o usuário requer o Aplicativo Microsoft Teams e um bot configurado nele. O aplicativo precisa ser publicado na organização e instalado após obter a aprovação do administrador no centro de administração. O usuário também requer acesso à permissãoFiles.ReadWrite.AlleChannelSettings.Read.Allpara a API de Gráfico do Portal do Azure. Para gerar o token necessário, o usuário requerbot_idno nome de usuário ebot_secretna senha. - Para o provedor
slack, o valorusernamepode ser qualquer string válida epasswordé o token de bot do Slack. -
O
DBMS_CLOUD_NOTIFICATIONsuporta o provedor do OCI Notifications. Consulte Visão Geral do Serviço Notifications para obter detalhes sobre o provedor do OCI Notifications.- Para usar o provedor do OCI Notifications, faça o seguinte:
- Criar um tópico. Consulte Criando um Tópico para obter detalhes sobre como criar um tópico
- Crie as assinaturas necessárias. Consulte Criando uma Assinatura para obter detalhes sobre a criação de uma assinatura.
- Depois de criar as assinaturas, confirme-as. As mensagens só são publicadas em assinaturas confirmadas. Consulte Confirmando uma Assinatura para obter detalhes sobre a confirmação de assinaturas.
- A instância do Autonomous AI Database, a credencial (se você estiver usando credenciais do usuário) e o tópico de assinatura devem estar localizados na mesma região.
- Observe as seguintes limitações:
- Limite de Tamanho da Mensagem: O limite de tamanho da mensagem por solicitação é de 64 KB. Mensagens que excedem este tamanho não podem ser enviadas ou processadas em uma única solicitação.
- Limite de Taxa de Entrega de Mensagens: Existem diferentes limites de taxa de entrega de mensagens, dependendo do protocolo usado.
- Protocolo
email: o limite é de 10 mensagens por minuto por ponto final.
Esta restrição pode afetar a velocidade com que as mensagens podem ser transmitidas e recebidas.
- Protocolo
- Limite de Transações por Minuto (TPM) por Tenancy: Há um limite de TPM de 60 por tópico para esta operação. Esse limite representa o número máximo de mensagens por minuto que podem ser processadas ou tratadas para um determinado tópico. Exceder esse limite pode resultar em mensagens não sendo processadas ou processadas em uma taxa mais lenta.
- Para usar o provedor do OCI Notifications, faça o seguinte:
Exemplos
Envie uma mensagem de texto com o provedor 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;
/Envie uma mensagem de texto com o provedor 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;
/
Envie uma mensagem de texto com o provedor 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;
/
Envie uma mensagem de texto com o OCI Notifications, digite o provedor 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;
/