原文链接:Windows下自动备份Oracle数据库 | Elvin
前言
编写这边文章的初衷与上一篇文章一样,一些细节问题这里不在赘述,更详细的解释可以看上一篇文章:Windows下自动备份MySQL数据库
一、数据库备份的脚本文件
1、脚本处理文件
先使用txt文档把下面内容复制进去,然后修改后缀.txt为.bat即可
@echo off
echo ================================================
echo Windows环境下Oracle11.2g数据库的自动备份脚本
echo 1. 使用data_当前日期命名备份文件
echo 2. 自动删除7天前的备份,防止文件越来越多
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
echo =====================当天时间=====================
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%
echo ================================================
::设置用户名、密码和要备份的数据库
set USER=robot
set PASSWORD=robot123456
set DATABASE=134.175.59.49/orcl
::创建备份目录
if not exist "C:\oraclebackup\data" mkdir C:\oraclebackup\data
if not exist "C:\oraclebackup\log" mkdir C:\oraclebackup\log
set DATADIR=C:\oraclebackup\data
set LOGDIR=C:\oraclebackup\log
echo =====================开始备份=====================
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=’%LOGDIR%\log_%BACKUPDATE%.log‘
echo ================================================
echo 备份完成
::删除7天前的备份
forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
::exit
pause>nul
⚠️:log=’%LOGDIR%\log_%BACKUPDATE%.log‘
=后面这里的变量一定要用英文单引号‘’
括起来
2、脚本处理文件解析
- ::以“YYYYMMDD”格式取出当前时间。
解释:该命令与rem是同一个,使用::比rem命令更严谨
- exp
解释:该命令执行后会生成一个dmp文件,里面是保存的数据库数据;具体自行百度了解
- exit
解释:使用exit会直接退出执行窗口,使用pause>nul则需要按任意键退出
3、脚本需要更改处
- ::设置用户名、密码和要备份的数据库
USER、PASSWORD、DATABASE这三个参数分别要改为自己的数据库用户名、密码和要备份的数据库
- ::创建备份目录
自己定义好存放备份文件和日志文件的位置
4、脚本执行乱码错误
如果出现乱码错误,可以使用文档编辑.bat文件,选择功能另存为
,选择编码格式为ANSI
如果还是出现中文乱码,可以文件内容最顶部加入以下代码,即@echo off
这一行代码上面
rem 标注为使用936编码格式编译中文
chcp 936
@echo off
5、空表没有保存到dmp文件
我们在备份时可能会出现没有数据的表没有办法保存到dmp文件,所以我们需要搞点别的操作来确保空的表也能正常保存到文件中,具体可以参考这篇文章《Oracle 11g导出空表、少表的解决办法》
我自己这里的表比较多,然后选择了文章中的方法三
二、Windows定时任务
详细参考上一篇文章:Windows下自动备份MySQL数据库
那里有很详细的定时任务设置
借鉴链接
更多知识持续更新中!!!
声明
借鉴部分均注明了原文出处,可在文章的借鉴链接处获取原文出处
文中若内容有涉及原版权,请邮件联系elvin-chen@qq.com,涉及的相关文章或内容将会及时更改或取消发布