网站建设资讯

NEWS

网站建设资讯

oracle如何提醒邮件,oracle 发邮件

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

Oracle自动备份的三种方法:

创新互联专注于企业营销型网站建设、网站重做改版、介休网站定制设计、自适应品牌网站建设、HTML5商城网站定制开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为介休等各大城市提供网站开发制作服务。

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 当表中数据发生变化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时提示server的email没有指定怎么解决

解决办法:

修改responseFile文件,将DECLINE_SECURITY_UPDATES=的值设为true,如果为空系统会假设该值为false,DECLINE_SECURITY_UPDATES=的值默认为空。

$ ./runInstaller -silent -responseFile /home/oracle/database/db_install.rsp

备注:

1.-responseFile参数后是空格,然后直接跟路径(-responseFile path),而不是-responseFile=/path


本文标题:oracle如何提醒邮件,oracle 发邮件
转载来于:http://cdweb.net/article/dssdeis.html