近日在网上找了一下Oracle冷备的批处理脚本,结合自己的需求制作了一个冷备的批处理。共分为三个文件:backcold.bat、
bkcold1.sql、bkcold2.sql,本脚本仅适用于windows平台。调试环境为:Windows XP SP2、oracle
9.2.0.1.0
工作过程为:
一、正常卸载数据库
二、把需要备份的文件复到一个以当前日期和时间组成的目录中
三、启动数据库到打开状态
四、对复制出来的文件使用RAR压缩,压缩完成后删除这个目录
在编写和调试过程中遇到一个关于获取日期的问题,试了好多次,发现只有把获取日期的变量这句放在批处理文件最前面才会正常工作。
批处理获取系统时间的代码对照:
%date:~0,4% 获取年份
%date:~5,2% 获取月份
%date:~8,2% 获取日期
%date:~10,6% 获取星期几
%time:~0,2% 获取小时
%time:~3,2% 获取分钟
backcold.bat
========================================================
@ECHO OFF
REM Backup oracle database in cold mode
set day=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
set oracle_base_dir=c:\oracle
set bk_dir_source1=%oracle_base_dir%\admin
set bk_dir_source2=%oracle_base_dir%\ora92\database
set bk_dir_source3=%oracle_base_dir%\oradata\testdb
set bk_dir_dest=%oracle_base_dir%\%day%
set bk_dir_dest1=%bk_dir_dest%\admin
set bk_dir_dest2=%bk_dir_dest%\ora92\database
set bk_dir_dest3=%bk_dir_dest%\oradata\testdb
set bk_sdsql=%oracle_base_dir%\bkcold1.sql
set bk_stsql=%oracle_base_dir%\bkcold2.sql
set bk_arcfile=%oracle_base_dir%\testdb_%day%.rar
set oracle_sid=testdb
set path=%path%;c:\program files\winrar
cd %oracle_base_dir%
md %bk_dir_dest1%
md %bk_dir_dest2%
md %bk_dir_dest3%
sqlplus /nolog @%bk_sdsql%
xcopy %bk_dir_source1% %bk_dir_dest1% /e
xcopy %bk_dir_source2% %bk_dir_dest2% /e
xcopy %bk_dir_source3% %bk_dir_dest3% /e
sqlplus /nolog @%bk_stsql%
rar a -r -df %bk_arcfile% %oracle_base_dir%\%day%
========================================================
bkcold1.sql
========================================================
conn sys/bbb as sysdba;
shutdown immediate;
exit;
========================================================
bkcold2.sql
========================================================
conn sys/bbb as sysdba;
startup;
exit;
========================================================
阅读(615) | 评论(0) | 转发(0) |