《Oracle数据库定时自动备份批处理代码.pdf》由会员分享,可在线阅读,更多相关《Oracle数据库定时自动备份批处理代码.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、echo off set pweek=%date:-1%set fn=e:bakdbgdosys_dqgis%Date:0,4%Date:5,2%Date:8,2%if%pweek%equ 日(exp system/sysorcl file=%fn%.dmp owner=gdosys,dqgis log=%fn%.log rar a%fn%.rar%fn%.*del%fn%.dmp del%fn%.log)else(exp system/sysorcl file=d:bakweek%date:8,2%.dmp owner=gdosys,dqgis log=d:bakweek%date:8,2%
2、.log rem exp system/sysorcl file=d:bakweek%date:11,3%.dmp owner=gdosys log=d:bakweek%date:11,3%.log)hi.baidu./lvns/blog/item/beb171d3c2fa2cd6a8ec9a2d.html 这是最近写的一个 Oracle 数据库自动备份的批处理,经过测试正常运行,记录如下。包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导!注:这些容是本人经过一番学习和多次测试调试后的结果,如果想,请以连接的形式,合作!第一部分,逻辑备份 下面是:AutoBackup_Lo
3、gic.bat-逻辑备份的主文件,直接在计划任务中调用就可以了。echo off rem rem 需要配置的参数说明:rem BAT_HOME:即本批处理所在的目录;rem DUMP_DIR:即要备份到的数据文件目录,存在与数据字典表:dba_directories 中。rem set BAT_HOME=E:BAT set DUMP_DIR=E:TempDBBackup set BKFILE=%Date:0,4%Date:5,2%Date:8,2%set HHMMSS=%time:0,2%time:3,2%time:6,2%call%BAT_HOME%LogicBackup.bat%DUMP_
4、DIR%BAT_HOME%LogicBackup_%BKFILE%HHMMSS%.log echo Completed!下面是:LogicBackup.bat echo off rem call LogicBackup.bat%DUMP_DIR%rem=rem 本批处理实现支持 expdp 数据泵的 Oracle 数据库版本的数据库逻辑备份,流程为:导出数据到 rem dump_dir 数据库目录下,然后把 dmp 文件以 rar 格式放入当天备份日期命名的目录下,便于以后按 rem 照日期恢复。rem rem 需要配置的参数说明:rem BAT_HOME:即本批处理所在的目录;rem BKD
5、IR:是调用本批处理时传进来的参数 dump_dir,即要备份到的数据文件目录。rem rem Author:Sanlavo rem Time:2007-06-07 rem=rem echo 备份开始.echo 当前的时间是:%DATE%time%set BAT_HOME=E:BAT set BKDIR=%1 set BKFILE=%Date:0,4%Date:5,2%Date:8,2%set HHMMSS=%time:0,2%time:3,2%time:6,2%expdp system/sys parfile=%BAT_HOME%ScriptsLibparfiletest.sql if no
6、t exist%BKDIR%BKFILE%_LOGIC(md%BKDIR%BKFILE%_LOGIC )else(echo 目录%BKDIR%BKFILE%_LOGIC 已经存在 )echo 开始压缩文件.rar a%BKDIR%BKFILE%_LOGIC%BKFILE%HHMMSS%_LOGIC_FULL.rar%BKDIR%*.dmp echo 压缩文件%BKFILE%HHMMSS%_LOGIC_FULL.rar 完成 echo 开始移动文件.move%BKDIR%*.dmp%BKDIR%BKFILE%_LOGIC move%BKDIR%*.log%BKDIR%BKFILE%_LOGIC
7、echo 移动文件完成 echo 开始删除 dmp 文件.del/f/s/q%BKDIR%BKFILE%_LOGIC*.dmp echo 删除 dmp 文件完成 net send%userdomain%数据库逻辑备份已于:%DATE%time%完成!echo.echo 备份已于:%DATE%time%完成!echo.rem 移动批处理的日志文件到备份目录下面 xcopy%BAT_HOME%LogicBackup_%BKFILE%*.log%BKDIR%BKFILE%_LOGIC echo Successfully Completed!下面是 expdp 的 parfile 参数的文件(parf
8、iletest.sql)容:directory=dump_dir dumpfile=DBBackup_Logic_%U.dmp logfile=DBBackup_Logic.log filesize=80M full=y job_name=EXP_DB_FULL 到此,逻辑备份批处理完成,可以用命令来定时执行,例如:c:at 06:06/every:S E:BATAutoBackup_Logic.bat 这样,逻辑备份将会在每周星期六凌晨六点六分执行。第二部分,冷备份:下面是:AutoBackup.bat-主文件 echo off set BAT_HOME=E:BAT set DUMP_DIR
9、=E:TempDBBackup call ColdBackup.bat orcl%DUMP_DIR%BAT_HOME%ColdBackup_%DATE:0,10%.log pause 下面是备份流程文件:ColdBackup.batecho off rem E:BATColdBackup.bat orcl E:TempDBBackup rem rem=rem 要备份的文件列表有:参数文件、控制文件、数据文件、重做日志文件 rem rem 参数文件有:rem%ORACLE_HOME%databasespfile.ora rem%ORACLE_HOME%databasePWD.ora rem%OR
10、ACLE_HOME%databasepfile.ora rem rem 控制文件:可以通过查询数据字典视图 v$control 确认控制文件的位置和清单 rem select status,name from v$controlfile;rem rem 数据文件:可以通过查询数据字典视图 dba_data_files 确定数据文件的位置和清单 rem select status,file_name from dba_data_files;rem rem 重做日志文件:查询数据字典 v$logfile 可以确认联机重做日志文件的位置和清单 rem select group#,status,mem
11、ber from v$logfile;rem Author:Sanlavo rem Time:11:35 2007-5-31 rem=rem rem 请在这里配置好本批处理程序所放的路径 BAT_HOME 以及 ORACLE_HOME:set ORACLE_HOME=D:oracleproduct10.2.0db_1 set BAT_HOME=E:BAT set BKFILE=%Date:0,4%Date:5,2%Date:8,2%set HHMMSS=%time:0,2%time:3,2%time:6,2%rem 数据库脱机 call%BAT_HOME%ShutdownDB.bat%1 re
12、m%1 为数据库%2 为备份文件路径 rem 创建备份目录 if exist%2%BKFILE%_DBBackup(echo%2%BKFILE%_DBBackup 已经存在 )else(mkdir%2%BKFILE%_DBBackup echo%2%BKFILE%_DBBackup 已经创建 )rem copy 备份文件到备份目录中 rem call xcopyfiles.bat%1%2 rem begin=echo 数据库%1 冷备份开始.rem 备份 dbs 目录下参数文件 xcopy%ORACLE_HOME%dbs*.*%2%BKFILE%_DBBackupdbs/S/I/C/Y/F r
13、em 备份%ORACLE_HOME%database 目录下参数文件 xcopy%ORACLE_HOME%database*.*%2%BKFILE%_DBBackupdatabase/S/I/C/Y/EXCLUDE:ScriptsLibdatabaseExclude.lst/F rem 备份数据库控制文件、数据文件、重做日志文件 rem 创建数据库命名的文件夹,存放相关文件 if not exist%2%BKFILE%_DBBackup%1(md%2%BKFILE%_DBBackup%1 )rem 从 filepath.txt 中读取文件路径信息并 copy 到目标路径 for/f%i in(
14、%BAT_HOME%ScriptsLibfilepath.txt)do(xcopy%i%2%BKFILE%_DBBackup%1/S/I/C/Y/F )echo 数据库%1 冷备份完成!rem end=echo 启动数据库 rem 上面的操作过程中以及修改了环境路径,所以掉不到该批处理文件%BAT_HOME:0,2%cd%BAT_HOME%call%BAT_HOME%StartupDB.bat%1 :Operation :End rem if exist*.dmp(rem move*.dmp%BKFILE%_DBBackup&goto End1 rem echo Move dump file
15、successfull rem)else(rem echo 不存在数据库备份文件&goto End1 rem)rem End rem:把日期目录下的文件移动到当前目录 rem:move%BKFILE%_DBBackup*.bat rem:End1 rem echo*rem echo Operation Successfully rem echo*pause 上文中的:databaseExclude.lst 容如下:.log .exe 即,排除日志文件和 exe 文件,其他的全部备份。上文中的:filepath.txt 容是经过数据字典查询后得到的比如控制文件、数据文件、日志文件等的路径列表,例
16、如:D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL D:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF D:ORACLEPRODUCT10.2.0ORAD
17、ATAORCLSYSTEM01.DBF D:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF D:SDEDB.DBF E:SDEDBSDE_DATA01.DBF E:SDEDBSDE_INDEX01.DBF D:ORACLEPRODUCT10.2.0ORADATAORCLWJ01.DBF D:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG D:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG D:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG .在冷备份中涉
18、及到数据库的关闭和启动,这里不在罗索了。关于冷备份的执行,也可以模仿逻辑备份部分,在计划任务中调用。第三部分,热备份:rem script:hotbak.sql rem creater:chenjiping rem date:4.4.2002 rem desc:backup database datafile in archive -connect database connect internal/virpure;-archive alter system checkpoint;alter system archive log all;alter system switch logfile;
19、-start alter tablespace afis_remote begin backup;!xcopy e:orantdatabaseremote_data1.ora e:databak/H/R;!xcopy e:orantdatabaseremote_data2.ora e:databak/H/R;alter tablespace afis_remote end backup;alter tablespace afis_rmtafis begin backup;!xcopy e:orantdatabasermtafis_data1.ora e:databak/H/R;!xcopy e
20、:orantdatabasermtafis_data2.ora e:databak/H/R;alter tablespace afis_rmtafis end backup;alter tablespace afis_lquser begin backup;!xcopy e:orantdatabaselquser_data.ora e:databak/H/R;alter tablespace afis_lquser end backup;alter tablespace afis_transf begin backup;!xcopy e:orantdatabasetransf1_data.or
21、a e:databak/H/R;!xcopy e:orantdatabasetransf2_data.ora e:databak/H/R;alter tablespace afis_transf end backup;alter tablespace system begin backup;!xcopy e:orantdatabasesys1afis.ora e:databak/H/R;alter tablespace system end backup;alter tablespace rbs begin backup;!xcopy e:orantdatabaserbs1afis.ora e
22、:databak/H/R;alter tablespace rbs end backup;alter tablespace usr begin backup;!xcopy e:orantdatabaseusr1afis.ora e:databak/H/R;alter tablespace usr end backup;alter tablespace temporary begin backup;!xcopy e:orantdatabasetmp1afis.ora e:databak/H/R;alter tablespace temporary end backup;-end -bak con
23、trol file -bin alter database backup controlfile to e:databakcontrolbinbak.000;-ascii alter database backup controlfile to trace;alter system switch logfile;alter system switch logfile;以下是调用以上脚本的 bat,照样可以加到任务计划中,一般热备份每周备份一次就够了,主要看情况不同而定。rem script:hotbak.bat rem creater:chenjiping rem date:4.4.2002 rem desc:backup database datafile in archive echo del old temp backup file del f:datatmp*.*/q del e:datatmp*.*/q echo bak backup file to temp move e:databak*.*e:datatmp move f:Archive*.*f:datatmp echo start new bak to e:databak svrmgrl e:sqlhotbak.sql (完)
限制150内