马虎大意,Oracle导出脚本上的两个点

今天须要给现场准备一个备份策略,打算使用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' 复制代码

由于本身的马虎大意,小白浪费了好多时间啊,因此记录下来。

相关文章
相关标签/搜索