Windows上Oracle设置定时任务数据泵全备数据库,将备份文件传输至Linux系统备份目录下

参考文档

1.为输出路径建立一个数据库的directory对象。
登录windows数据库创建一个expdp导出本地的路径

sqlplus / as sysdba
create directory dumpfull as 'd:\bakup';

2.windows服务器上创建备份脚本

脚本名:expdp_bak_script.bat

@echo off   
::ORA环境变量。
set ORACLE_SID=orcl
set ORACLE_HOME=D:\app\Administrator\product\11.2.0\dbhome_1
::以“YYYYMMDD”格式取出当前时间。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::设置导出的路径
set BAKDIR=D:\bakup
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
expdp \" / as sysdba \"  directory=dumpfull dumpfile=expbak_%ORACLE_SID%_%BACKUPDATE%.dmp logfile=expbak_%ORACLE_SID%_%BACKUPDATE%.log full=y

::压缩备份文件
zip -r %BAKDIR%\expbak_%ORACLE_SID%_%BACKUPDATE%.zip %BAKDIR%\expbak_%ORACLE_SID%_%BACKUPDATE%.dmp

::传输备份文件至Linux系统对应目录

Echo open 10.10.10.10 21 >ftp.up
Echo orabak>>ftp.up
Echo cd /oraclebakup >>ftp.up
Echo binary>>ftp.up
Echo put "%BAKDIR%\expbak_%ORACLE_SID%_%BACKUPDATE%.zip">>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q


@echo::删除1天前的备份。  

forfiles /p %BAKDIR% /s /m *.dmp /d -1 /c "cmd /c del @path" 

forfiles /p %BAKDIR% /s /m *.zip /d -1 /c "cmd /c del @path" 

exit

3.Windows创建定时任务

(1)打开本地任务计划程序创建任务

Oracle数据泵定时备份Windows_expdp

(2)设置任务名称及对应的描述

Oracle数据泵定时备份Windows_expdp_02

(3)设置触发器,每天触发任务的时间

Oracle数据泵定时备份Windows_windows_03

(4)设置定时备份脚本路径,确定任务

Oracle数据泵定时备份Windows_windows_04

(5)任务计划程序库中查看新建的任务状态

Oracle数据泵定时备份Windows_windows_05


脚本功能

在windows平台,使用定时任务导出数据库备份,异机存放。脚本可以定时删除超期备份。将脚本修改为实际生产参数后和数据保留期限后,保存为bat批量可执行程序,使用windows的计划任务进行调用。

脚本使用示例

rem expdp sz
set sz_file=orcl_%date:~0,4%%date:~5,2%%date:~8,2%.dmp
set sz_logfile=orcl_%date:~0,4%%date:~5,2%%date:~8,2%.log
expdp \"/ as sysdba \" directory=DMP DUMPFILE=%sz_file% logfile=%sz_logfile% compression=all full='y'

rem delete 7 days files
forfiles /p "\\10.xxx.xxx.xxx\share\bak\" /d  -7 /c "cmd /c echo deleting @file ... && del /f @path"