今天须要给现场准备一个备份策略,打算使用exp的导出和增量备份作为这个备份策略的主旋律,因此备份的策略以下:数据库
数据库的备分任务能够作以下安排:
bash
星期一:彻底导出(export_1.dmp) oracle
星期二:增量导出(export_2.dmp) ui
星期三:增量导出(export_3.dmp) spa
星期四:增量导出(export_4.dmp) code
星期五:累计导出(export_5.dmp) cdn
星期六:增量导出(export_6.dmp) blog
星期日:增量导出(export_7.dmp)
rem
备份策略有了剩下的就是备份方法了,因此方法以下:cmd
(1)“彻底”增量导出(Complete)
备份整个数据库,脚本内容以下:
C:\>exp system/oracle inctype=complete file=D:\backup\data\exp_incr_full.dmp log=D:\backup\log\exp_incr_full.log 复制代码
(2)“增量型”增量导出(Incremental)
备份上一次备份后改变的数据,脚本内容以下:
C:\>exp system/oracle inctype=incremental file=D:\backup\data\exp_incr_incr.dmp log=D:\backup\log\exp_incr_incr.log 复制代码
(3)“累积型”增量导出(Cumulative)
备份自上次“彻底”导出以后数据库中变化了的数据。脚本内容以下:
C:\>exp system/oracle inctype=cumulative file=D:\backup\data\exp_incr_cum.dmp log=D:\backup\log\exp_incr_cum.log 复制代码
若是在周日数据库遭到意外破坏,数据库管理员可按照以下步骤恢复数据库:
第一步:用命令CREATE DATABASE从新生成数据库结构;
第二步:建立一个足够大的附加回滚,供imp使用。
第三步:彻底增量导入1:
imp system/manager inctype=RESTORE FULL=y FILE=A
复制代码
第四步:累计增量导入5:
imp system/manager inctype=RESTORE FULL=Y FILE=E
复制代码
第五步:最近增量导入6:
imp system/manager inctype=RESTORE FULL=Y FILE=F
复制代码
因此准备写一个exp的导出脚本,脚本内容以下:
@echo off
echo ================================================
echo Windows环境下Oracle数据库的自动备份脚本
echo 1. 使用当前日期命名备份文件。
echo 2. 自动删除7天前的备份。
echo ================================================
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::设置用户名、密码和要备份的数据库。
set USER=system
set PASSWORD=oracle
set DATABASE=prod
::建立备份目录。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data
set LOGDIR=D:\backup\log
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
::删除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
复制代码
将脚本使用txt文本编辑后改为bat格式执行发现报错,由于执行窗口报错太快看不到因此打算分步执行。
打开一个命令提示符窗口,执行如下命令:
通过分步执行后发现了问题,LRM-00108参数无效?怎么可能,难道是我打错了?我将用户密码从新敲一遍,没问题啊。根据报错上网查帖子,折腾一段时间后才找到,原来Windows下的备份脚本和LINUX不一样,须要给用户密码加上单引号。
加上单引号后成功度过第一个问题,又出现第二个问题,又是一顿查帖子找问题,发现仍是两个单引号的问题。好吧,小白表示白白浪费了时间。
exp '%USER%/%PASSWORD%@%DATABASE%' file=%DATADIR%\data_%BACKUPDATE%.dmp log='%LOGDIR%\log_%BACKUPDATE%.log' 复制代码
由于本身的马虎大意,小白浪费了好多时间啊,因此记录下来。