前言

编写这边文章的初衷与上一篇文章一样,一些细节问题这里不在赘述
更详细的解释可以看上一篇文章:Windows下自动备份MySQL数据库



一、数据库备份的脚本文件

1、脚本处理文件

先使用txt文档把下面内容复制进去,然后修改后缀.txt为.bat即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@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数据库
那里有很详细的定时任务设置




借鉴链接

windows中oracle自动备份



声明

借鉴部分均注明了原文出处,可在文章的`借鉴链接`处获取原文出处
文中若内容有涉及原版权,请邮件联系elvin-chen@qq.com,涉及的相关文章或内容将会及时更改或取消发布