基于BAT指令定时备份Oracle并发送邮件

news2024/11/28 14:16:15

前言

在企业级应用程序中,数据是非常重要的资源。因此,我们需要定期备份数据以确保其安全性和完整性。在Oracle数据库中,我们可以使用多种方法来备份数据,其中一种方法是使用BAT脚本来进行自动化备份。

在本文中,我们将介绍如何使用BAT脚本在Windows系统上定时备份Oracle数据库,并将备份文件通过电子邮件发送到指定的邮箱地址。

步骤1:创建备份脚本

首先,在Windows系统上创建一个名为backup.bat的文件,该文件将包含我们的备份脚本代码。打开记事本或任何其他文本编辑器,并将以下代码复制粘贴到文件中:

REM 设置日期格式
SET date=%date:~0,4%-%date:~5,2%-%date:~8,2%

REM 设置备份文件名
SET backup_file=backup-%date%.dmp

REM 执行oracle备份命令
expdp username/password@ORACLE_SID directory=data_pump_dir dumpfile=%backup_file% logfile=backup.log full=y

REM 发送备份文件到指定邮箱
blat "%backup_file%" -to admin@example.com -subject "Oracle Backup" -body "Please find the attached file."

请注意,以上代码仅仅是示例,你需要根据自己的情况进行修改。其中,我们使用命令expdp来备份Oracle数据库,该命令将生成一个名为backup-%date%.dmp的备份文件,并将其存储在指定目录中。同时,我们还使用了blat命令来发送电子邮件,将备份文件作为附件发送到指定邮箱。

步骤2:设置定时任务

要定期运行备份脚本,在Windows系统上设置定时任务是非常必要的。你可以使用Windows自带的任务计划程序来设置定时任务。以下是设置定时任务的步骤:

  1. 打开“控制面板”,选择“管理工具”,然后打开“任务计划程序”。

  2. 在任务计划程序中,选择“创建基本任务”选项,然后按照提示输入名称和说明。

  3. 选择备份脚本执行时间和频率。

  4. 选择要运行的程序或脚本,然后输入backup.bat文件的路径。

  5. 点击“完成”完成设置。

现在,你已经成功地设置了一个定时任务,以便自动运行备份脚本。

步骤3:测试备份脚本

在设置定时任务之前,最好先手动测试一下备份脚本是否能正常运行。在备份脚本所在的目录中,双击运行backup.bat文件。如果一切正常,你应该能看到备份文件已经生成,并已经通过电子邮件发送到指定的邮箱地址。

步骤4:设置环境变量

要运行备份脚本,需要设置一些环境变量。打开命令提示符,并输入以下命令:

SET ORACLE_HOME=C:\app\oracle\product\12.2.0\dbhome_1
SET PATH=%PATH%;%ORACLE_HOME%\bin
SET ORACLE_SID=orcl

其中,ORACLE_HOME是Oracle数据库的安装目录,而ORACLE_SID是Oracle实例的名称。

步骤5:设置Blat邮件客户端

blat -install smtp.163.com aikesls@163.com password -f aikesls@163.com

在发送电子邮件时,我们使用了一个名为Blat的命令行邮件客户端。要使用Blat,你需要将其下载并安装到计算机中。然后,在backup.bat文件中设置正确的路径以执行blat.exe。并且要提前执行上述指令

请注意,发送电子邮件时,需要提供SMTP服务器的地址和端口。如果SMTP服务器需要身份验证,则还需要提供用户名和密码。可以在backup.bat文件中设置这些参数以确保邮件成功发送。

总结

本文介绍了如何使用BAT脚本在Windows系统上定时备份Oracle数据库,并将备份文件通过电子邮件发送到指定的邮箱地址。我们还讨论了如何设置定时任务、环境变量、Blat邮件客户端以及对备份文件进行加密。这些技术可以帮助企业保护其重要数据并确保其完整性和安全性。

完整脚本

@echo off

::blat -install smtp.163.com aikesls@163.com password -f aikesls@163.com

set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
set filename=E:\aikes_DB\BAK\%BACKUPDATE%.DMP

::邮件 账号、密码、服务端地址、发件人、收件人(逗号分割多个收件人)
set recipient=aikesls@163.com,aikesls@163.com
set server=smtp.163.com
set username=aikesls@163.com
set mail_password=password

echo Generating file...%filename%

::数据库  用户名、密码
set USER=aikes_aikes
set PASSWORD=aikes_aikes
expdp userid=%USER%/%PASSWORD%@192.168.5.147/orcl directory=dump_dir exclude=statistics compression=all schemas=%USER% dumpfile=%BACKUPDATE%.dmp logfile=%BACKUPDATE%.log

echo Sending email...

:SendEmail
if not exist %filename% (
    timeout /t 5
    goto SendEmail
) else (
    blat -to %recipient% -server %server% -u %username% -pw %mail_password% -subject "aikes_DB_BACKUP"  -body "<html><body>Hello,<br><br>Today is %BACKUPDATE%.<br><br>This is the new aikes database backup package.</body></html>" -html -attach %filename%
)

::发送成功删除备份包
if errorlevel 1 (
    echo Error sending email.
) else (
    echo Email sent successfully.
::    del %filename%
    echo File deleted successfully.
)

任务计划

 

 邮件效果

两天备份一次,发送到邮件

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】

前言 这是一款基于AI算法的实时变声器&#xff0c;如果你不懂AI也没事&#xff0c;直接使用我提供的一键安装包 链接&#xff1a;https://pan.baidu.com/s/1f3X6JdBVOgeTNPf0B3CRKg 提取码&#xff1a;k5v2 变声器安装使用 有两款变声器&#xff0c;都是基于RVC做的&#xf…

ctfshow——web入门 SSRF

web351web352web353web354web355web356web357web358web359web360 web351 通过hackbar post提交 urlhttp://127.0.0.1/flag.php 获得flag web352 将127.0.0.1和localhost给过滤了&#xff0c;但并不影响post提交 post urlhttp://127.0.0.1/flag.php web353 过滤了localhost和1…

python基础学习1

pyhton数据分析的优势&#xff1a; ①语法简单精炼 ②有很强大的库 ③功能强大 ④适用于构建生产系统 ⑤胶水语言 python数据分析常用的类库&#xff1a; ①IPython------科学计算标准工具集的组成部分 ②NumPy------python科学计算的基础包 ③SciPy--------解…

【手撕Spring源码】深度理解SpringBoot

文章目录 Tomcat内嵌容器Tomcat 基本结构创建Tomcat内嵌容器内嵌Tomcat集成Spring 容器 Boot 自动配置什么是自动配置类自动配置类原理Aop自动配置DataSource自动配置MyBatis自动配置事务自动配置MVC自动配置条件装配 附&#xff1a;注解小总EnableConfigurationPropertiesCond…

RWKV配上ChatGPTBox让我们在浏览器中感受AI带来的魅力

这次我们来讲讲RWKV搭配ChatGPTBox结合使用带来的功能体验&#xff0c;这两个项目都是同一个大神创建的&#xff0c;完全可以无缝搭配进行使用。 以下是我之前在本地部署了AI模型RWKV的教程&#xff0c;如果还没有本地部署过AI的童鞋可以查看我之前发布的教程&#xff0c;在自…

在线聊天项目

人事管理项目-在线聊天 后端接口实现前端实现 在线聊天是一个为了方便HR进行快速沟通提高工作效率而开发的功能&#xff0c;考虑到一个公司中的HR并不多&#xff0c;并发量不大&#xff0c;因此这里直接使用最基本的WebSocket来完成该功能。 后端接口实现 要使用WebSocket&…

【NLP】有限自动机的KMP算法

目录 一、说明 二、无策略直接匹配法 2.1 简单粗暴的无脑匹配: 2.2 跳过外循环的思路 2.3 跳过内循环的思路 2.4 KMP算法时间分析 三、KMP有限状态机 四、结论 一、说明 KMP算法问题&#xff1a;给定一个&#xff08;短&#xff09;模式和一个&#xff08;长&#xff…

PCB材料选择与性能比较

PCB板被广泛应用于电子行业&#xff0c;作为电子设备的重要组成部分之一&#xff0c;负责连接各种电子元件。PCB板的性能直接影响着电子设备的质量和稳定性。而PCB板的材料选择则是影响PCB板性能的关键因素之一。本文将对常见PCB材料进行比较分析&#xff0c;以便于选择适合的材…

西电网课UMOOCs《英美概况》1-15单元课后答案

声明&#xff1a;本文CSDN作者原创投稿文章&#xff0c;未经许可禁止任何形式的转载&#xff0c;原文链接 如果图片挂了&#xff0c;可以移步至我的博客西电网课UMOOCs《英美概况》1-15单元课后答案 - 小木槌 文章目录 Quiz for Unit 1Quiz for Unit 2Quiz for Unit 3Quiz for…

C/C++基础补充

1. NULL和nullptr 有如下代码&#xff1a; void func(int a) {cout << "func(int)" << endl; }void func(int* p) {cout << "func(int*)" << endl; }void test() {func(0); // func(int);func(NULL); // func(int);fun…

带你探索400G光模块测试

随着移动互联网、云计算、大数据等技术快速发展&#xff0c;数据中心及云计算资源需求的爆发式地增长&#xff0c;核心网传输带宽需求大幅度的提升&#xff0c;同时也带动了超大规模云数据中心的发展&#xff0c;对数据中心内部和之间的互联的光模块带宽需求呈快速增长&#xf…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链 在本节中,我们将重点讨论要处理输出的任务,这些任务通常通过一系列步骤来获取输入并生成有用的输出。有时,在回答特定问题之前,模型详细推理问题是很重要的。如果你参加了我们之前为开发人…

项目管理软件大对比:2023年15款最佳项目管理工具

简单的项目只需要一个电子表格清单可能就管理好了&#xff0c;而复杂的项目则需要适当的规划、任务分配、设定截止日期&#xff0c;以确保每个人都遵守它们、大家进行紧密的协作&#xff0c;并追踪所花费的时间。 让项目量化、可视化&#xff0c;资源合理分配、更容易的协作和…

x265的DCT

文章目录 DCT相关背景知识DCT变换系数矩阵32x32变换矩阵系数其他尺寸变换矩阵系数 变换计算过程流程图 代码实现数据残差变换系数对应残差 我的简单实现实现细节实现代码 x265对应代码实现openHEVC代码实现 DCT相关背景知识 DCT变换系数矩阵 标准提供了32x32的系数矩阵&#…

Leetcode | 39 组合总和

Leetcode | 39 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数…

理解 Vue 中的 MVVM 思想

1. 什么是 Vue Vue 是一套用于构建用户界面的渐进式 JavaScript 框架, 与其他大型框架不同的是, Vue 被设计为可以自底向上逐层应用, Vue 的核心库只关心视图层, 方便与第三方库或既有项目整合. 2. JavaScript 框架了解 jQuery : 大家熟悉的 JavaScript 框架, 优点是简化了 D…

VulnHub项目:MONEY HEIST: 1.0.1

靶机地址&#xff1a;Money Heist: 1.0.1 ~ VulnHub 渗透过程&#xff1a; 确定靶机ip&#xff0c;攻击机kali的ip 对靶机进行端口检测 存在22、53、80、3000、3001端口&#xff0c;访问80端口 发现了登录注册按钮&#xff0c;尝试进行注册 注册成功后进行登录&#xff0c…

VulnHub项目:Gaara

项目地址&#xff1a;Gaara: 1 ~ VulnHub 我爱罗&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;火影前200集无敌存在&#xff01;&#xff01;&#xff01; 渗透过程&#xff1a; 收集三件套&#xff01;搞一手~&#xff0c;发现80&#xff0c;访问web&…

第四节 ogre 2.3实现一个简单的模型纹理贴图

本节简单介绍下如何使用Ogre 2.3加载模型&#xff0c;并给模型贴上纹理材质。 一. 安装ogre 2.3 主要有两种安装方法&#xff1a; 简单安装方法&#xff0c;使用scripts for Ogre 2.3 脚本,按照官网给出的步骤安装即可。需要注意的是脚本解压后的 *.bat 文件需要修改下 CMAK…

【Java|golang】2611. 老鼠和奶酪

有两只老鼠和 n 块不同类型的奶酪&#xff0c;每块奶酪都只能被其中一只老鼠吃掉。 下标为 i 处的奶酪被吃掉的得分为&#xff1a; 如果第一只老鼠吃掉&#xff0c;则得分为 reward1[i] 。 如果第二只老鼠吃掉&#xff0c;则得分为 reward2[i] 。 给你一个正整数数组 reward1…