oracle 备份软件——定时备份(python apscheduler)

2023-12-07 04:32

本文主要是介绍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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464500

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',