本文主要是介绍oracle 备份软件——定时备份(python apscheduler),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
延续前面提到的监控系统,这里我们想实现oracle的自动备份?这怎么实现呢,这里就谈谈
监控软件如何实现oracle的定时备份,这里使用了python apscheduler 定时库,关于apscheduler 网上有很多介绍,这里就不详细介绍,直接上代码
web:
通过web可以自己定义rman的备份任务,具体如下:
我们这里选择如下
配置
显示结果如下:
以上就是前端的界面,那后端如何实现呢?
后端我是采用flask的框架,具体的代码实现如下:
@blueprint.route('/addJobs/', methods=['PUT'])
@require_permission('oracle_bru_manage')
def saveBackup():form, error = JsonParser('f_instances_id','f_bak_name','f_bak_type','f_bak_control','f_bak_local_dir','f_compressed','f_redundancy_control','f_redundancy_num','f_tracking','f_archive_control','f_archive_num','f_offline','f_channel','f_bak_level','f_bak_plan','f_bak_interval','f_bak_week','f_start_time','f_bak_comment','f_bak_person').parse()if error is None:backupInfo = t_oracle_backup_jobs(**form)res = backupInfo.save()if res:scheduler.addJob(form.f_bak_plan, form.f_bak_name, custom_time(form.f_start_time), form.f_bak_interval)return json_response(data='保存成功', message='success')else:return json_response(data=error, message='err')# 新增定时任务API
def addJob(trig, job_name, job_time, interval_time):scheduler.print_jobs()if trig == 1:scheduler.add_job(func=__name__ + ":runJob", id=job_name, args=[job_name, 1], trigger='date',run_date=job_time, replace_existing=True)elif trig == 2:print(interval_time)scheduler.add_job(func=__name__ + ":runJob", id=job_name, args=[job_name, 1], trigger='interval',minutes=int(interval_time), start_date=job_time, replace_existing=True)scheduler.print_jobs()
这里为了测试,把间隔按天改成按分钟,也就是每隔1分钟会自动执行一次定时job
为了每次重启的时候能能自动从数据库表里面读取到定时任务,这里定义了一个initJob 初始化函数,这样每次重启flask的时候就会自动加载备份任务,具体如下:
def initJob():result = t_oracle_backup_jobs.query.all()for job in result:addJob(job.f_bak_plan, job.f_bak_name, custom_time(job.f_start_time), job.f_bak_interval)
具体看如下运行日志:
这里也把具体执行的rman 命令也打印出来
这篇关于oracle 备份软件——定时备份(python apscheduler)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!