成都网站建设设计

将想法与焦点和您一起共享

oracle怎么提示邮件,oracle 发邮件

oracle数据库备份可设置邮件提醒?

Oracle自动备份的三种方法:

成都创新互联公司专注于井冈山企业网站建设,成都响应式网站建设公司,电子商务商城网站建设。井冈山网站建设公司,为井冈山等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

Oracle自动备份数据库不外乎以下三种方式:

WINDOWS下的任务计划(At命令)

UNIX下的Crontab

第三方工具如Viritas

在以上三种方式中Viritas属于第三方工具,很多人可能都没有接触,主要说一下windows的任务计划与unix的cron

1、生成脚本文件,如backup.rcv 假定文件内容如下:

$cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format ‘/u01/oradata/backup/arch%u_%s_%p’ archivelog all delete input; release channel c1; release channel c2; release channel c3; }

2、生成执行文件在windows上生成backup_archive.bat,内容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,内容包括oracle/ramn/rman cmdfile = backup.rcv

3、加入调度在windows中用任务计划向导即可,或使用at命令。在unix中,在目标机器上编写一个文件,用以启动Oracle自动备份进程。假定文件名为ORACLE,文件将放在/var/spool/cron/crontabs目录下

$cat oracle

0 23 * * 0 backup_archive.sh

#表示星期天23点对数据库备份

0 12,18 * * * backup_archive.sh

#表示每天12点,18点备份

Crontab文件的每一行由六个域(minutes,hours,day of month,month,day of week,command)组成,域之间用空格或Tab分隔开来。

Oracle 存储过程发邮件

在 Oracle 的运维过程中,常常需要监控任务执行情况,这时候如果用 Java 或 Python 都可以自定义一个发邮件提醒的功能,但如果能调用 Oracle 自带的的一些包来实现邮件提醒,不仅调用方便,而且提醒的灵活度更高(可以插在存储过程的任意一个犄角旮旯里)。

这里有两篇文章,详细介绍了调用 Oracle 系统包实现邮件提醒功能的两种方法:

我在使用这两个包的时候,遇到了“ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝”的报错。我先检查了用户权限,然后检查了邮件服务器的端口权限,都没问题,于是在网络上搜索答案,原来真的报错提示很明显,就是 ACL 权限问题,不是其他。

于是参照 ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝 这篇文章中的方法重新设置,一调试,果然可以正常发邮件了。

oracle 当表中数据发生变化insert或者update 发送邮件(邮件内容随意,只是为了提醒)。

分两步做,

1.oracle 当表中数据发生变化insert或者update

这个需要触发器的,但是触发器的作用也无非是数据库层面的操作,这样最好触发添加一条记录到邮件通知表,这个表加个状态state=0

2.用程序轮训定时扫描这个邮件通知表,周期可以设置为30秒扫描一次,扫描到的记录,进行邮件发送以及这个表记录的状态修改为state=1

如何在Oracle中发送Email

用数据库发送,附上代码,复制进数据库使用即可,部分内容根据所在环境进行调整

CREATE OR REPLACE PROCEDURE send_mail(

  p_recipient VARCHAR2, -- 邮件接收人

  p_subject   VARCHAR2, -- 邮件标题

  p_message   VARCHAR2  -- 邮件正文

)

IS

 --下面四个变量请根据实际邮件服务器进行赋值

 v_mailhost  VARCHAR2(30) := 'smtp.XXX.com';    --SMTP服务器地址

 v_user      VARCHAR2(30) := 'user';            --登录SMTP服务器的用户名

 v_pass      VARCHAR2(20) := 'pwd';             --登录SMTP服务器的密码

 v_sender    VARCHAR2(50) := 'user@XXX.com';    --发送者邮箱,一般与 ps_user 对应

 

 v_conn  UTL_SMTP. connection ; --到邮件服务器的连接

 v_msg varchar2(4000);  --邮件内容

BEGIN

 v_conn := UTL_SMTP.open_connection(v_mailhost, 25);

 UTL_SMTP.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo() 函数

 --否则会报:ORA-29279: SMTP 永久性错误: 503 5.5.2 Send hello first.

 UTL_SMTP.command(v_conn, 'AUTH LOGIN' );   -- smtp服务器登录校验

 UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));

 UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));

 UTL_SMTP.mail(v_conn, v_sender);     --设置发件人

 UTL_SMTP.rcpt(v_conn, p_recipient);  --设置收件人

 -- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行

 v_msg := 'Date:' || TO_CHAR(SYSDATE, 'dd mon yy hh24:mi:ss' )

     || UTL_TCP.CRLF || 'From: ' || '' || v_sender || ''

     || UTL_TCP.CRLF || 'To: ' || '' || p_recipient || ''

     || UTL_TCP.CRLF || 'Subject: ' || p_subject

     || UTL_TCP.CRLF || UTL_TCP.CRLF  -- 这前面是报头信息

     || p_message;    -- 这个是邮件正文

 UTL_SMTP.open_data(v_conn); --打开流

 UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); --这样写标题和内容都能用中文

 UTL_SMTP.close_data(v_conn); --关闭流

 UTL_SMTP.quit(v_conn); --关闭连接

 

EXCEPTION

 WHEN OTHERS THEN

     DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);

     DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);

END send_mail;

写一个脚本,将oracle备份是否成功的信息发邮件,或者写到一个表中,发短信通知我。怎么实现

你这种情况最合适用事件驱动类提醒服务,了解一下:喵提醒,通过一个http请求就可以给你发手机信息,支持传参,还支持短信和语音电话。

oracle如何做到邮件提醒

Oracle 提供了一个SendMail的套件: utl_smtp.

可以利用utl_smtp来在PL/SQL发送邮件。

utl_smtp相关函数以及用法如下所示。

declare

mailhost  VARCHAR2(50) := 'XXX.XXX.com';

mail_conn utl_smtp.connection;  --定义

begin

-- 开启 Mail Connection

mail_conn := utl_smtp.open_connection(mailhost);

-- 建立连接

utl_smtp.helo(mail_conn, mailhost);

-- 设定发件者

utl_smtp.mail(mail_conn, 'yun@xxx.com');

-- 设定收件者

utl_smtp.rcpt(mail_conn, 'feng@xxx.com');

-- 设定邮件内容

utl_smtp.data(mail_conn, 'Subject:Oracle Send Mail Test' || utl_tcp.CRLF ||

'To:feng@xxx.com' || utl_tcp.CRLF ||

'Cc:lei@xxx.com' || utl_tcp.CRLF ||

'Hello World!'

);

-- 关闭连接

utl_smtp.quit(mail_conn);


网站标题:oracle怎么提示邮件,oracle 发邮件
转载源于:http://chengdu.cdxwcx.cn/article/dsggjjo.html