前言
在企业级应用程序中,数据是非常重要的资源。因此,我们需要定期备份数据以确保其安全性和完整性。在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自带的任务计划程序来设置定时任务。以下是设置定时任务的步骤:
-
打开“控制面板”,选择“管理工具”,然后打开“任务计划程序”。
-
在任务计划程序中,选择“创建基本任务”选项,然后按照提示输入名称和说明。
-
选择备份脚本执行时间和频率。
-
选择要运行的程序或脚本,然后输入backup.bat文件的路径。
-
点击“完成”完成设置。
现在,你已经成功地设置了一个定时任务,以便自动运行备份脚本。
步骤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.
)
任务计划
邮件效果
两天备份一次,发送到邮件