您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle数据库定时自动备份批处理代码(Windows)
@echooffsetpweek=%date:~-1%setfn=e:\bakdb\gdosys_dqgis%Date:~0,4%%Date:~5,2%%Date:~8,2%if%pweek%equ日(expsystem/sys@orclfile=%fn%.dmpowner=gdosys,dqgislog=%fn%.lograra%fn%.rar%fn%.*del%fn%.dmpdel%fn%.log)else(expsystem/sys@orclfile=d:\bakweek\%date:~8,2%.dmpowner=gdosys,dqgislog=d:\bakweek\%date:~8,2%.logremexpsystem/sys@orclfile=d:\bakweek\%date:~11,3%.dmpowner=gdosyslog=d:\bakweek\%date:~11,3%.log)————————————————————————————————————————————,经过测试正常运行,记录如下。包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导!注:这些内容是本人经过一番学习和多次测试调试后的结果,如果想转载,请以连接的形式,谢谢合作!第一部分,逻辑备份下面是:AutoBackup_Logic.bat--逻辑备份的主文件,直接在计划任务中调用就可以了。@echooffremrem需要配置的参数说明:remBAT_HOME:即本批处理所在的目录;remDUMP_DIR:即要备份到的数据文件目录,存在与数据字典表:dba_directories中。remsetBAT_HOME=E:\BATsetDUMP_DIR=E:\Temp\DBBackupsetBKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%setHHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%call%BAT_HOME%\LogicBackup.bat%DUMP_DIR%%BAT_HOME%\LogicBackup_%BKFILE%%HHMMSS%.logechoCompleted!下面是:LogicBackup.bat@echooffremcallLogicBackup.bat%DUMP_DIR%rem==========================================================================================rem本批处理实现支持expdp数据泵的Oracle数据库版本的数据库逻辑备份,流程为:导出数据到remdump_dir数据库目录下,然后把dmp文件以rar格式放入当天备份日期命名的目录下,便于以后按rem照日期恢复。remrem需要配置的参数说明:remBAT_HOME:即本批处理所在的目录;remBKDIR:是调用本批处理时传进来的参数dump_dir,即要备份到的数据文件目录。remremAuthor:SanlavoremTime:2007-06-07rem==========================================================================================remecho备份开始...echo当前的时间是:%DATE%%time%setBAT_HOME=E:\BATsetBKDIR=%1setBKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%setHHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%expdpsystem/sysparfile=%BAT_HOME%\ScriptsLib\parfiletest.sqlifnotexist%BKDIR%\%BKFILE%_LOGIC(md%BKDIR%\%BKFILE%_LOGIC)else(echo目录%BKDIR%\%BKFILE%_LOGIC已经存在)echo开始压缩文件...rara%BKDIR%\%BKFILE%_LOGIC\%BKFILE%%HHMMSS%_LOGIC_FULL.rar%BKDIR%\*.dmpecho压缩文件%BKFILE%%HHMMSS%_LOGIC_FULL.rar完成echo开始移动文件...move%BKDIR%\*.dmp%BKDIR%\%BKFILE%_LOGIC\move%BKDIR%\*.log%BKDIR%\%BKFILE%_LOGIC\echo移动文件完成echo开始删除dmp文件...del/f/s/q%BKDIR%\%BKFILE%_LOGIC\*.dmpecho删除dmp文件完成netsend%userdomain%数据库逻辑备份已于:%DATE%%time%完成!echo.echo备份已于:%DATE%%time%完成!echo.rem移动批处理的日志文件到备份目录下面xcopy%BAT_HOME%\LogicBackup_%BKFILE%*.log%BKDIR%\%BKFILE%_LOGIC\echoSuccessfullyCompleted!下面是expdp的parfile参数的文件(parfiletest.sql)内容:directory=dump_dirdumpfile=DBBackup_Logic_%U.dmplogfile=DBBackup_Logic.logfilesize=80Mfull=yjob_name=EXP_DB_FULL到此,逻辑备份批处理完成,可以用命令来定时执行,例如:c:\at06:06/every:SE:\BAT\AutoBackup_Logic.bat这样,逻辑备份将会在每周星期六凌晨六点六分执行。第二部分,冷备份:下面是:AutoBackup.bat--主文件@echooffsetBAT_HOME=E:\BATsetDUMP_DIR=E:\Temp\DBBackupcallColdBackup.batorcl%DUMP_DIR%%BAT_HOME%\ColdBackup_%DATE:~0,10%.logpause下面是备份流程文件:ColdBackup.bat@echooffremE:\BATColdBackup.batorclE:\Temp\DBBackupremrem==============================================rem要备份的文件列表有:参数文件、控制文件、数据文件、重做日志文件remrem参数文件有:rem%ORACLE_HOME%\database\spfilesid.orarem%ORACLE_HOME%\database\PWDsid.orarem%ORACLE_HOME%\database\pfilesid.oraremrem控制文件:可以通过查询数据字典视图v$control确认控制文件的位置和清单remselectstatus,namefromv$controlfile;remrem数据文件:可以通过查询数据字典视图dba_data_files确定数据文件的位置和清单remselectstatus,file_namefromdba_data_files;remrem重做日志文件:查询数据字典v$logfile可以确认联机重做日志文件的位置和清单remselectgroup#,status,memberfromv$logfile;remAuthor:SanlavoremTime:11:352007-5-31rem==============================================remrem请在这里配置好本批处理程序所放的路径BAT_HOME以及ORACLE_HOME:setORACLE_HOME=D:\oracle\product\10.2.0\db_1setBAT_HOME=E:\BATsetBKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%setHHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%rem数据库脱机call%BAT_HOME%\ShutdownDB.bat%1rem%1为数据库SID%2为备份文件路径rem创建备份目录ifexist%2\%BKFILE%_DBBackup(echo%2\%BKFILE%_DBBackup已经存在)else(mkdir%2\%BKFILE%_DBBackupecho%2\%BKFILE%_DBBackup已经创建)remcopy备份文件到备份目录中remcallxcopyfiles.bat%1%2rembegin==============================================echo数据库%1冷备份开始...rem备份dbs目录下参数文件xcopy%ORACLE_HOME%\dbs\*.*%2\%BKFILE%_DBBackup\dbs/S/I/C/Y/Frem备份%ORACLE_HOME%\database目录下参数文件xcopy%ORACLE_HOME%\database\*.*%2\%BKFILE%_DBBackup\database/S/I/C/Y/EXCLUDE:ScriptsLib\databaseExclude.lst/Frem备份数据库控制文件、数据文件、重做日志文件rem创建数据库SID命名的文件夹,存放相关文件ifnotexist%2\%BKFILE%_DBBackup\%1(md%2\%BKFILE%_DBBackup\%1)rem从filepath.txt中读取文件路径信息并copy到目标路径for/f%%iin(%BAT_HOME%\ScriptsLib\filepath.txt)do(xcopy%%i%2\%BKFILE%_DBBackup\%1/S/I/C/Y/F)echo数据库%1冷备份完成!remend==============================================echo启动数据库rem上面的操作过程中以及修改了环境路径,所以掉不到该批处理文件%BAT_HOME:~0,2%cd%BAT_HOME%call%BAT_HOME%\StartupDB.bat%1:Operation:Endremifexist*.dmp(remmove*.dmp%BKFILE%_DBBackup&gotoEnd1remechoMovedumpfilesuccessfullrem)else(remecho不存在数据库备份文件&gotoEnd1rem)remEndrem::把日期目录下的文件移动到当前目录rem::move%BKFILE%_DBBackup\*.batrem:End1remecho*remechoOperationSuccessfullyremecho*pause上文中的:databaseExclude.lst内容如下:.log.exe即,排除日志文件和exe文件,其他的全部备份。上文中的:filepath.txt内容是经过数据字典查询后得到的比如控制文件、数据文件、日志文件等的路径列表,例如:D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTLD:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTLD:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTLD:\ORACLE\PRODUCT\
本文标题:Oracle数据库定时自动备份批处理代码(Windows)
链接地址:https://www.777doc.com/doc-12407 .html