I was getting error while trying to send email from database
SQL> declare
2 begin
3 UTL_MAIL.SEND(mime_type => 'text/html; charset=us-ascii',
4 sender => 'harvey@example.com',
5 recipients => 'harvey@example.com',
6 subject => 'Test email Harvey',
7 message => 'This is a test email from rac01');
8 end;
9 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.UTL_MAIL", line 654
ORA-06512: at "SYS.UTL_MAIL", line 671
ORA-06512: at line 3
SQL>
What I have found was that the parameter smtp_out_server was not set up
SQL> show parameter smtp_out_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
smtp_out_server string
SQL>
SQL> declare
2 begin
3 UTL_MAIL.SEND(mime_type => 'text/html; charset=us-ascii',
4 sender => 'harvey@example.com',
5 recipients => 'harvey@example.com',
6 subject => 'Test email Harvey',
7 message => 'This is a test email from rac01');
8 end;
9 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.UTL_MAIL", line 654
ORA-06512: at "SYS.UTL_MAIL", line 671
ORA-06512: at line 3
SQL>
What I have found was that the parameter smtp_out_server was not set up
SQL> show parameter smtp_out_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
smtp_out_server string
SQL>
By setting the parameter to mail server it worked all good
SQL> alter system set smtp_out_server='mailhost.example.com' scope=both sid='*';
System altered.
SQL> show parameter smtp_out_server
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
smtp_out_server string mailhost.example.com
SQL>
SQL> declare
2 begin
3 UTL_MAIL.SEND(mime_type => 'text/html; charset=us-ascii',
4 sender => 'harvey@example.com',
5 recipients => 'harvey@example.com',
6 subject => 'Test email Harvey',
7 message => 'This is a test email from rac01');
8 end;
9 /
PL/SQL procedure successfully completed.
SQL>
Please note that I had to make sure that ACLs are configured right as well
SQL> col acl format a30
SQL> col host format a30
SQL> col principal format a30
SQL> col end_date format a30
SQL> col start_date format a30
SQL> select * from DBA_NETWORK_ACLS;
HOST LOWER_PORT UPPER_PORT ACL ACLID
------------------------------ ---------- ---------- ------------------------------ --------------------------------
mailhost.csu.edu.au 25 25 /sys/acls/mailserver_acl.xml 2023FDE3E03E3B45E0511C60040A3C26
SQL> select * from DBA_NETWORK_ACL_PRIVILEGES;
ACL ACLID PRINCIPAL PRIVILE IS_GRANT INVER START_DATE END_DATE
------------------------------ -------------------------------- ------------------------------ ------- -------------------- ----- ------------------------------ ------------------------------
/sys/acls/mailserver_acl.xml 2023FDE3E03E3B45E0511C60040A3C26 HARV connect true false
SQL>
SQL>