暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

干货攻略|DM JOB作业的邮件发送

达梦大学 2021-04-21
879

/ 这是我的第206篇文章

达梦干货攻略

【Date:2021.04.16】


MY ARTICLE

对于DBA来说,有时需要及时了解重要JOB的执行结果,此时可以设置定时作业的邮件发送,当作业执行完成后,将执行结果知会相关责任人。

本章介绍两种JOB邮件发送方法:使用DM作业系统和使用DBMS_SCHEDULER系统包。


本章内容已在如下环境上测试:

源数据库:中标麒麟7,达梦数据库DM8;

相关关键字:JOB作业、DBMS_SCHEDULER、邮件发送


GAN HUO

DM作业系统邮件发送


1、创建代理环境(初始化作业环境)

使用DM作业系统之前,需要使用SP_INIT_JOB_SYS函数初始化作业环境。

    call SP_INIT_JOB_SYS(1);
    复制

    或者在DM管理工具界面创建代理环境。

    使用SYSDBA登录DM管理工具,右击“代理”,选择“创建代理环境”。

    创建代理环境之后,“代理”页签下生成作业、警报、操作员三个页签功能。

    2、配置监控作业

    监控作业把作业的运行情况通过电子邮件发送给作业操作员。邮件成功发送的前提有两个:一是为监控服务配置管理员;二是开启监控服务。

    ① 配置代理属性(添加管理员)

    在创建的代理环境页签,右击选择“配置代理属性”:

    打开“配置代理环境属性”页签,选择“添加”打开代理属性页签,填写登录名(用户名为数据库中实际存在的用户,不能同名)、登录密码、邮箱服务器等信息;如果邮箱服务器要求身份验证,则需填写验证的用户名、密码信息。

    配置完成之后可以看到添加的管理员信息。

    也可以直接使用存储过程添加配置管理员代理属性。

      call sp_add_mail_info(
      login_name => 'SYSDBA',
      login_pwd=> 'SYSDBA',
      smtp_server => 'smtp.dameng.com',
      email => 'test@dameng.com',
      user_name => 'test@dameng.com',
      user_pwd => '******');
      复制

       

      ② 配置和启动DmJobMonitorService服务

      可以使用DM服务查看器配置和启动DmJobMonitorService作业服务:

      也可以执行dmjmon命令启动作业服务(启动时需指定连接的数据库用户名、密码、IP、端口等信息):

        [dmdba@localhost ~]$ dmjmon userid=SYSDBA/dameng123:5236
        initial monitor system ...
        SYSTEM IS READY.
        复制

        3、创建操作员

        在代理页签下,选择“操作员”,右击选择“新建操作员”,输入操作员信息。

        或者直接执行存储过程创建操作员:

          call sp_create_operator(
          opr_name => upper('operator01'),
          enabled => 1,
          emailaddr => 'test01@dameng.com',
          netsend_ip => '127.0.0.1');
          复制

           4、创建作业,开启邮件发送

          新建作业,或者修改已有的作业,设置开启邮件发送,发送给相关操作员。

          5、运行作业,检验邮件发送是否成功

          等待作业自动运行,或者手工调用JOB:

            select * from dba_jobs;
            call dbms_job.run(1618542973);
            复制

            查看JOB历史运行信息,可以看到邮件发送成功:






            GAN HUO


            DBMS_SCHEDULER邮件发送


            DBMS_SCHEDULER系统包兼容Oracle的DBMS_SCHEDULER包的常用方法,提供一系列调度相关的存储过程及方法,支持作业的邮件发送。

            1、创建DBMS_SCHEDULER环境

            DM数据库实例创建之后,默认不创建DBMS_SCHEDULER系统包,第一次使用需要调用SP_INIT_DBMS_SCHEDULER_SYS创建DBMS_SCHEDULER系统包环境。

              call SP_INIT_DBMS_SCHEDULER_SYS(1);
              复制

              2、配置全局调度属性

              使用邮件发送功能,需要设置邮件发送的相关属性,比如邮件服务器、端口、邮箱地址等信息,调用SET_SCHEDULER_ATTRIBUTE方法设置调度属性:‍‍‍‍‍‍‍‍‍‍‍

                begin
                dbms_scheduler.set_scheduler_attribute(
                'email_server', 'smtp.dameng.com');
                dbms_scheduler.set_scheduler_attribute(
                'email_sender', 'test@dameng.com');
                dbms_scheduler.set_scheduler_attribute(
                'email_port', '25');
                dbms_scheduler.set_scheduler_attribute(
                'email_password', '******');
                dbms_scheduler.set_scheduler_attribute(
                'email_mimetype', 'TEXT/PLAIN; CHARSET=GB18030');
                end;
                /
                复制

                3、创建作业

                DBMS_SCHEDULER创建作业的方法有多种,支持调用SQL脚本和存储过程,使用时间日历表达式,这里直接使用CREATE_JOB调用存储过程创建JOB:

                  begin
                  dbms_scheduler.create_job(
                  job_name => upper('test_scheulerjob01'),
                  job_type => 'STORED_PROCEDURE',
                  job_action => 'p_test_scheduler',
                  repeat_interval => 'FREQ=minutely;INTERVAL=10;bysecond=30',
                  enabled => true);
                  commit;
                  end;
                  复制

                  4、添加作业邮件通知

                  调用ADD_JOB_EMAIL_NOTIFICATION方法添加该作业的邮件通知:

                    begin
                    dbms_scheduler.add_job_email_notification(
                    Job_name => 'test_scheulerjob01',
                    Recipients => 'test@dameng.com',
                    Sender => 'test@dameng.com',
                    events => 'JOB_ALL_EVENTS');
                    end;
                    /
                    复制

                    5、运行作业,检验邮件发送是否成功

                    等待作业自动运行,或者手工调用JOB,查看邮件发送情况:

                      call dbms_scheduler.run_job(upper('test_scheulerjob01'));
                      复制





                      好,以上是本次分享内容,希望能给大家带来帮助。


                      往期回顾

                      干货丨达梦数据库审计

                      干货丨使用ODBC创建DBLINK实现DM数据库间的跨平台访问

                      DCA开班丨在线培训招生(4月26日-28日)

                      DCP开班丨在线培训招生(4月26日-29日)

                      公开课DMETL数据交换平台(直播:4月16日)



                      关注我们

                      微信号DaMeng-University

                      QQ2908982381 


                      END


                      【内容】:程青

                      【编辑】:王

                      文章转载自达梦大学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论