Paquete DBMS_CLOUD_NOTIFICATION
El paquete DBMS_CLOUD_NOTIFICATION permite enviar mensajes o la salida de una consulta SQL a un proveedor.
Los proveedores soportados con DBMS_CLOUD_NOTIFICATION son: correo electrónico, Microsoft Teams, notificaciones de OCI (ONS) y Slack.
Al utilizar el servicio OCI Notifications con el paquete DBMS_CLOUD_NOTIFICATION, solo está soportado el procedimiento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE (el procedimiento DBMS_CLOUD_NOTIFICATION.SEND_DATA no está soportado).
Requisitos
El administrador del conjunto debe haber configurado una conectividad saliente mediante un gateway de NAT, como se describe a continuación:
-
Para crear un Gateway de NAT en la red virtual en la nube (VCN) donde residen los recursos de la base de datos de IA autónoma, siga las instrucciones de Creación de un Gateway de NAT en la documentación de Oracle Cloud Infrastructure.
-
Después de crear el gateway de NAT, agregue una regla de ruta y una regla de seguridad de salida a cada subred (en la VCN) en la cual residan las bases de datos de IA autónoma de modo que estos recursos puedan utilizar el gateway para obtener una clave pública de su instancia deAzure AD:
-
Vaya a la página Detalles de la subred de la subred.
-
En el separador Información de subredes, haga clic en el nombre de la Tabla de ruta de la subredes para mostrar su página Detalles de tabla de ruta.
-
En la tabla de Reglas de Ruta existentes, compruebe si ya hay una regla con las siguientes características:
-
Destination: 0.0.0.0/0 (Destino):
-
Tipo de destino: gateway de NAT
-
Destino: nombre del puerta de enlace de NAT que ha creado en la VCN
Si dicha regla no existe, haga clic en Agregar reglas de ruta y agregue una regla de ruta con estas características.
-
-
Vuelva a la página Detalles de la subred de la subred.
-
En la tabla Listas de seguridad de La subred, haga clic en el nombre de su lista de seguridad para mostrar su página Detalles de Lista de seguridad.
-
En el menú lateral, en Recursos, haga clic en Reglas de salida.
-
En la tabla de Reglas de salida existentes, compruebe si ya hay una regla con las siguientes características:
-
Tipo de destino:CIDR
-
Destino:0.0.0.0/0
-
Protocolo IP:TCP
-
Rango de puertos de origen:443
-
Rango de puertos de destino: todos
Si dicha regla no existe, haga clic en Agregar reglas de entrada y agregue una regla de salida con estas características.
-
-
La configuración de proxy HTTP del entorno debe permitir que la base de datos acceda al proveedor de servicios en la nube.
El administrador de conjunto define esta configuración al crear la infraestructura de Exadata Cloud@Customer, como se describe en Uso de la consola para aprovisionar Exadata Database Service on Cloud@Customer.
Nota: La configuración de red, incluido el proxy HTTP, solo se puede editar hasta que la infraestructura de Exadata tenga el estado Necesita activación. Una vez que se activa, no puede editar esa configuración.
La configuración de un proxy HTTP para una infraestructura de Exadata ya aprovisionada necesita una solicitud de servicio (SR) en My Oracle Support. Consulte Crear una solicitud de servicio en My Oracle Support para obtener más información.
Resumen de subprogramas DBMS_CLOUD_NOTIFICATION
En esta tabla, se resumen los subprogramas incluidos en el paquete.
| Subprograma | Descripción |
|---|---|
| Procedimiento SEND_DATA | Enviar salida de consulta SQL a un proveedor. |
| Procedimiento SEND_MESSAGE | Enviar un mensaje de texto a un proveedor. |
Procedimiento SEND_DATA
El procedimiento SEND_DATA envía los resultados de la consulta especificada a un proveedor.
Sintaxis
DBMS_CLOUD_NOTIFICATION.SEND_DATA(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
query IN CLOB,
params IN CLOB
);
Parámetros
| parámetro | Descripción |
|---|---|
provider |
Especifica el proveedor. Los valores válidos son: ' Este parámetro es obligatorio. |
credential_name |
Nombre del objeto de credencial para acceder al proveedor. Para el proveedor de correo electrónico, la credencial es el nombre de la credencial del remitente aprobado de SMTP que contiene su nombre de usuario y contraseña. Para el proveedor de msteams, la credencial es el nombre de la credencial. Para el proveedor de Slack, el nombre de usuario de la credencial debe ser Este parámetro es obligatorio. |
query |
Especifica la consulta SQL que se va a ejecutar. Los resultados se envían al proveedor. Este parámetro es obligatorio. |
params |
Especifica parámetros específicos para Para el tipo de proveedor
Para el tipo de proveedor
Para el tipo de proveedor
Este parámetro es obligatorio. |
Notas de uso
Utilice el procedimiento DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) para crear el objeto de credencial. Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.
-
Para el proveedor
email, el usuario necesita un punto final de conexión SMTP para que el servidor de Email Delivery obtengasmtp_host. El usuario también necesita un remitente aprobado por SMTP y sus credenciales para autenticarse con el servidor Email Delivery a fin de obtenercredential_name. Se debe configurar la conexión SMTP y se deben generar y aprobar credenciales SMTP. -
Para el proveedor
msteams, el usuario necesita la aplicación Microsoft Teams y un bot configurado en ella. La aplicación debe publicarse en la organización e instalarse después de obtener la aprobación del administrador del centro de administración. El usuario también necesita acceso para los permisosFiles.ReadWrite.AllyChannelSettings.Read.Allpara la API de Graph desde su portal de Azure. Para generar el token necesario, el usuario necesitabot_iden el nombre de usuario ybot_secreten la contraseña. El tamaño máximo de archivo admitido al utilizarDBMS_CLOUD_NOTIFICATION.SEND_DATApara Microsoft Teams es de 4 MB. -
Para el proveedor
slack, el valorusernamepuede ser cualquier cadena válida ypasswordes el token del bot de Slack.
Ejemplo
Enviar salida SQL con el proveedor 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;
/
Enviar salida SQL con el proveedor 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;
/
Enviar salida SQL con el proveedor 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;
/
Procedimiento SEND_MESSAGE
El procedimiento envía un mensaje de texto a un profesional asistencial.
Sintaxis
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider IN VARCHAR2,
credential_name IN VARCHAR2,
message IN CLOB,
params IN CLOB
);
Parámetros
| parámetro | Descripción |
|---|---|
provider |
Permite especificar el proveedor. Los valores válidos son: ' Este parámetro es obligatorio. |
credential_name |
Nombre del objeto de credencial para acceder al proveedor. Para el proveedor de correo electrónico, la credencial es el nombre de la credencial del remitente aprobado de SMTP que contiene su nombre de usuario y contraseña. Para el proveedor de msteams, la credencial debe contener la clave Para el proveedor de Slack, el nombre de usuario de la credencial debe ser Para el proveedor Este parámetro es obligatorio. |
message |
Especifica el texto del mensaje. Este parámetro es obligatorio. |
params |
Especifica parámetros específicos para Para el tipo de proveedor
Para el tipo de proveedor
Para el tipo de proveedor
Para el proveedor OCI Notifications con el tipo
Con el proveedor
El ID de canal es un ID único para un canal y es diferente del nombre del canal. En Slack, al ver los detalles del canal, puede encontrar el ID de canal en el separador "Acerca de". Este parámetro es obligatorio. |
Notas de uso
Utilice el procedimiento DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username, password) para crear el objeto de credencial. Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.
-
Para el proveedor
email, el usuario necesita un punto final de conexión SMTP para que el servidor de Email Delivery obtengasmtp_host. El usuario también necesita un remitente aprobado por SMTP y sus credenciales para autenticarse con el servidor Email Delivery a fin de obtenercredential_name. Se debe configurar la conexión SMTP y se deben generar y aprobar credenciales SMTP. -
Para el proveedor
msteams, el usuario necesita la aplicación Microsoft Teams y un bot configurado en ella. La aplicación debe publicarse en la organización e instalarse después de obtener la aprobación del administrador del centro de administración. El usuario también necesita acceso para los permisosFiles.ReadWrite.AllyChannelSettings.Read.Allpara la API de Graph desde su portal de Azure. Para generar el token necesario, el usuario necesitabot_iden el nombre de usuario ybot_secreten la contraseña. -
Para el proveedor
slack, el valorusernamepuede ser cualquier cadena válida ypasswordes el token del bot de Slack. -
DBMS_CLOUD_NOTIFICATIONsoporta el proveedor de notificaciones de OCI. Consulte Visión general de Notifications para obtener más información sobre el proveedor de OCI Notifications.-
Para utilizar el proveedor de notificaciones de OCI, debe hacer lo siguiente:
-
Crear un tema. Consulte Creación de un tema para obtener más información sobre la creación de un tema.
-
Cree las suscripciones necesarias. Consulte Creación de una suscripción para obtener más información sobre la creación de una suscripción.
-
Después de crear las suscripciones, confirme las suscripciones. Los mensajes solo se publican en suscripciones confirmadas. Consulte Confirmación de una suscripción para obtener más información sobre la confirmación de suscripciones.
-
-
La instancia de la base de datos de IA autónoma, la credencial (si utiliza credenciales de usuario) y el tema de suscripción deben estar ubicados en la misma región.
-
Tenga en cuenta las siguientes limitaciones:
-
Límite de tamaño de mensaje: el límite de tamaño de mensaje por solicitud es de 64 KB. Los mensajes que superen este tamaño no se pueden enviar ni procesar en una sola solicitud.
-
Límite de ratio de entrega de mensajes: hay diferentes límites de ratio de entrega de mensajes según el protocolo utilizado.
- Protocolo
email: el límite es de 10 mensajes por minuto por punto final.
Esta restricción puede afectar la velocidad a la que se pueden transmitir y recibir los mensajes.
- Protocolo
-
Límite de transacciones por minuto (TPM) por arrendamiento: hay un límite de TPM de 60 por tema para esta operación. Este límite representa el número máximo de mensajes por minuto que se pueden procesar o manejar para un tema determinado. Si se supera este límite, es posible que los mensajes no se procesen o procesen a un ritmo más lento.
-
-
Ejemplos
Envíe un mensaje de texto con el proveedor 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;
/
Envíe un mensaje de texto con el proveedor 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;
/
Envíe un mensaje de texto con el proveedor 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;
/
Envíe un mensaje de texto con OCI Notifications, escriba el proveedor 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;
/