viernes, 29 de septiembre de 2017

Como Enviar e-mail en Oracle Database 12C


Como Enviar e-mail en Oracle Database 12C

Lo primero que hay que hacer es instalar el paquete UTL_MAIL el cual se encuentra en los binarios del Oracle home de la base de datos, para ello se debe de realizar la ejecucion de los siguiente paquetes:

  • To install UTL_MAIL:
sqlplus sys/<pwd>
SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb

Instalacion de los paquetes:


Luego de realizar la instalacion de los paquetes se debe de asignar el servidor SMTP de salida a nivel de parametros de inicializacion de Oracle, el parametro que se debe de modificar es SMTP_OUT_SERVER  esta parametro es de tipo dinamico por lo cual no se requiere bajar la base de datos.

Ejemplo:

Servidor de correo es: smtp.example.com

Para agregar el servidor de correo al parametro SMTP_OUT_SERVER

SQL> alter system set smtp_out_server='smtp.example.com';

System altered.

Por ultimo si se requiere crear un sinonimo publico para acceder al paquete de envio e mail desde cualquier schema de base de datos.


SQL> GRANT EXECUTE ON utl_mail TO PUBLIC;

Grant succeeded.

Finalmente recordar que se debe de crear una ACL para que la base de datos permita acceder al servidor de correo smtp.example.com.

Para hacer uso del paquete, se muestra el siguiente ejemplo:

begin
    UTL_MAIL.send(sender     => 'fgconsultoresti@gmail.com',
                recipients => 'FMESA@CGIAR.ORG',
                subject    => 'Test utl_mail.send procedure',
                MESSAGE    => 'If you are reading this it worked!');
end;


jueves, 28 de septiembre de 2017

Oracle Database 12C - Borrar archivos viejos de trace y auditoria en Oracle 12C


Borrar archivos viejos de Logs Audit y trace en Oracle Database

En un cliente se requeria borrar los archivos de auditoria y de trace de manera periodica debido a que se estaba llenando la particion /oracle, esta particion es donde se instalo el software de Oracle y el Oracle Grid Infrastructure.

La variable de entorno $ORACLE_BASE= /oracle

El requerimiento era la eliminacion de los archivos de auditoria y trace de mas de 2 dias, para este las rutas donde se alojan los archivos es en las siguientes rutas:

Ruta de trace  /oracle/admin/database_name/bdump
Ruta de audit /oracle/app/12.1.0/db/rdbms/audit

Ahora para programarlo se realizaria de la siguiente manera:

[ICEQAS][DB12C]oradb@apolo:admin $ /usr/bin/crontab -l
#Logs Audit
0 0 * * * find /oracle/admin/NOMINA/bdump -name "*.trc" -mtime +2 -exec rm {} \; 2> /dev/null
0 0 * * * find /oracle/admin/DSRLLO/bdump -name "*.trc" -mtime +2 -exec rm {} \; 2> /dev/null
0 0 * * * find /oracle/admin/HISTORIC/bdump -name "*.trc" -mtime +2 -exec rm {} \; 2> /dev/null
0 0 * * * find /oracle/admin/PRUEBA/bdump -name "*.trc" -mtime +2 -exec rm {} \; 2> /dev/null
0 0 * * * find /oracle/app/12.1.0/db/rdbms/audit -name "*.aud" -mtime +2 -exec rm {} \; 2> /dev/null

A continuacion una imagen de la configuracion del crontab en el servidor de produccion:



Saludos espero les haya servido.