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)打开本地任务计划程序创建任务
(2)设置任务名称及对应的描述
(3)设置触发器,每天触发任务的时间
(4)设置定时备份脚本路径,确定任务
(5)任务计划程序库中查看新建的任务状态
脚本功能
在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"