script for cold backup in windows
Posted by Pavan DBA on March 26, 2012
###########################
COLD BACKUP IN WINDOWS
#############################
rem ——————————————————————————————-
rem ——————————————————————————————-
rem -*-
rem -*- Description: Cold backup script for Oracle NT database main program
rem -*-
rem -*- Source file: %ora_utl_dir%\cb_cold_backup.bat
rem -*-
rem -*- Instructions:
rem -*- 1. Create the following directories:
rem -*- ora_back_dir
rem -*- ora_log_dir
rem -*- ora_utl_dir
rem -*- ora_vbs_dir
rem -*- ora_recv_dir
rem -*-
rem -*- 2. Change variables below as needed
rem -*-
rem -*- 3. In order to execute the cscript.exe %ora_vbs_dir%\sendmailattach.vbs
rem -*- you must have the SNMP service running, cscript.exe and ste50en.exe
rem -*-
rem -*- Author : Diana Farazi
rem -*- Date Written: 03/24/2000
rem -*-
rem -*- Modification log:
rem -*- Mod Ver Date Who Desciption
rem -*- ——- ———- ——– ——————————————————
rem -*- 1.1 09/08/2000 farazid added CALL %ora_vbs_dir%\upper_case.bat %search_for%
rem -*- set search_for=%RET%
rem -*- created upper_case.bat in the %ora_vbs_dir%
rem -*- 1.2 09/22/2003 farazid added Net Stop and Net Start SampleManager services
rem -*- sections (must be executed in this order!):
rem -*-
rem -*- Net STOP SampleManager services:
rem -*- (1)smpbackVGLP,(2) smwVGLP,(3)smpVGLP
rem -*-
rem -*- 2.0 01/29/2004 farazid Oracle9i modified and tested
rem ——————————————————————————————-
rem ——————————————————————————————-
set ora_sid=PRD2
set ORACLE_SID=%ora_sid%
set tns=bp1tulap151_%ora_sid%
set ora_sys_id=”sys/rsdbsite as sysdba”
set ora_system_id=”system/rsdbsite as sysdba”
set ora_sqlplus=sqlplus
set ora_ocopy=ocopy
set ora_bin_dir=i:\d001\oracle\920\bin
set ora_home=i:\d001\oracle\920\database
set ora_back_dir=o:\d902\oracle\%ora_sid%\colddmps
set ora_log_dir=i:\d002\oracle\%ora_sid%\utillogs\cb
set ora_utl_dir=i:\d002\oracle\%ora_sid%\utilitys\cb
set ora_vbs_dir=i:\d002\oracle\vbs
set ora_recv_dir=i:\d002\oracle\%ora_sid%\utilitys\recv
###set init_ora=%ora_home%\spfile%ORACLE_SID%.ora
set init_ora=%ora_home%\init%ORACLE_SID%.ora
set pwd_ora=%ora_home%\pwd%ORACLE_SID%.ora
set cb_cold_backup_log=%ora_log_dir%\cb_cold_backup.log
set save_cb_cold_backup_log=%ora_log_dir%\save_cb_cold_backup.log
set cb_ping_db_log=%ora_log_dir%\cb_ping_db.log
set cb_recv_log=%ora_log_dir%\cb_recv.log
set cb_recv_dat=%ora_recv_dir%\cb_recv.dat
set email=dba_ora_offshore@bp.com
rem set email2=dba_ora_offshore@bp.com
rem set email2=dba_ora_onshore@bp.com
set email_message=
set search_for=”%ORACLE_SID%”
set search_for2=”Statement processed”
set search_for3=”ORACLE instance shut down”
set search_for4=”Database opened”
set line=—————————————————————————
set star=*
set error_count=0
del %ora_log_dir%\cb*.*
echo %line% > %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
now Cold Backup START for %tns% database >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo This is: %0 script >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . Checking if database %ORACLE_SID% is up
rem ———————————————————————————————
echo . . . Checking if database %ORACLE_SID% is up >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_system_id% @%ora_utl_dir%\cb_ping_db.sql
CALL %ora_vbs_dir%\upper_case.bat %search_for%
set search_for=%RET%
type %cb_ping_db_log% | find.exe %search_for% > nul
IF %errorlevel% EQU 0 goto :SKIP0
set /a error_count=error_count+1
set email_message=ALERT: database %tns% is DOWN – Cold Backup terminating!
echo ALERT: database %tns% is DOWN – Cold Backup terminating! >> %cb_cold_backup_log%
goto :END
rem ———————————————————————————————
rem — . . . Archive log list
rem ———————————————————————————————
:SKIP0
echo . . . Proceeding with Cold Backup >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Archive log list >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_sys_id% @%ora_utl_dir%\cb_archive_log_list.sql
echo %star% >> %cb_cold_backup_log%
type %ora_log_dir%\cb_archive_log_list.log >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . Building the file list
rem ———————————————————————————————
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_system_id% @%ora_utl_dir%\cb_file_list.sql
echo . . . Building the file list >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
type %ora_log_dir%\cb_file_list.log >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . See %ora_log_dir%\cb_file_list.log >> %cb_cold_backup_log%
rem ———————————————————————————————
rem ———————————————————————————————
rem — . . . Shutting down database %ORACLE_SID% immediate
rem ———————————————————————————————
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Shutting down database %ORACLE_SID% immediate >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_sys_id% @%ora_utl_dir%\cb_shutdown.sql
type %ora_log_dir%\cb_shutdown.log >> %cb_cold_backup_log%
type %ora_log_dir%\cb_shutdown.log | find.exe %search_for3% > nul
IF %errorlevel% EQU 0 goto :SKIP1
set /a error_count=error_count+1
set email_message=ALERT: Error shutting down %tns% database – Cold Backup terminating!
echo ALERT: Error shutting down %tns% database – Cold Backup terminating! >> %cb_cold_backup_log%
goto :END
rem ———————————————————————————————
rem — . . . Starting Oracle file backups
rem ———————————————————————————————
:SKIP1
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo . . . Starting Oracle file backups >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
FOR /f %%I in (%ora_log_dir%\cb_file_list.log) DO (@CALL %ora_utl_dir%\cb_file_backup.bat %%I) & (echo %%I >> %cb_cold_backup_log%) & (echo %%I >> %cb_recv_log%)
IF %error_count% NEQ 0 goto :END
rem ———————————————————————————————
rem — . . . Backing up the %init_ora% and %pwd_ora% files
rem ———————————————————————————————
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Backing up the init%ORACLE_SID%.ora and pwd%ORACLE_SID%.ora files >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
xcopy %init_ora% %ora_back_dir%\ /h/f/y >> %cb_cold_backup_log%
xcopy %pwd_ora% %ora_back_dir%\ /h/f/y >> %cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . Startup open database %ORACLE_SID%
rem ———————————————————————————————
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Startup open database %ORACLE_SID% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_sys_id% @%ora_utl_dir%\cb_startup.sql
type %ora_log_dir%\cb_startup.log >> %cb_cold_backup_log%
type %ora_log_dir%\cb_startup.log | find.exe %search_for4% > nul
IF %errorlevel% EQU 0 goto :SKIP2
set /a error_count=error_count+1
set email_message=ALERT: Error starting %tns% database – Cold Backup terminating!
echo ALERT: Error starting %tns% database – Cold Backup terminating! >> %cb_cold_backup_log%
goto :END
rem ———————————————————————————————
rem ———————————————————————————————
rem — . . . Backing up the control file
rem ———————————————————————————————
:SKIP2
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Backing up the control file >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_sys_id% @%ora_utl_dir%\cb_backup_control_file.sql
erase %ora_back_dir%\prev_backup_control_file.ctl
move %ora_back_dir%\backup_control_file.ctl %ora_back_dir%\prev_backup_control_file.ctl
move %ora_home%\backup_control_file.ctl %ora_back_dir%\backup_control_file.ctl
rem ———————————————————————————————
rem — . . . Archive log list
rem ———————————————————————————————
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Archive log list >> %cb_cold_backup_log%
CALL %ora_bin_dir%\%ora_sqlplus%.exe -s %ora_sys_id% @%ora_utl_dir%\cb_archive_log_list.sql
echo %star% >> %cb_cold_backup_log%
type %ora_log_dir%\cb_archive_log_list.log >> %cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . Building the recovery script
rem ———————————————————————————————
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo . . . Building the recovery script >> %cb_cold_backup_log%
echo %line% > %cb_recv_dat%
echo — . . . Remove the datasets below that you do not want to restore >> %cb_recv_dat%
echo %line% >> %cb_recv_dat%
FOR /f %%Z in (%cb_recv_log%) DO (@CALL %ora_utl_dir%\cb_build_recv_file.bat %%Z)
echo %star% >> %cb_cold_backup_log%
echo . . . See %ora_recv_dir%\cb_recv.dat >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . End Cold Backup
rem ———————————————————————————————
:END
echo %line% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
now Error_count=%error_count% %email_message% >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
now Cold Backup END >> %cb_cold_backup_log%
echo %star% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
echo %line% >> %cb_cold_backup_log%
type %cb_cold_backup_log% >> %save_cb_cold_backup_log%
rem ———————————————————————————————
rem — . . . If an error was detected, send an e-mail
rem ———————————————————————————————
IF %error_count% EQU 0 goto :EOF
cscript.exe %ora_vbs_dir%\sendmailattach.vbs -t %email% -f %email% -s “Alert: %tns% Cold Backup Failed!” -b ” %email_message%” -a %cb_cold_backup_log%
If {%email2%}=={} goto :EOF
cscript.exe %ora_vbs_dir%\sendmailattach.vbs -t %email2% -f %email2% -s “Alert: %tns% Cold Backup Failed!” -b ” %email_message%” -a %cb_cold_backup_log%
:EOF
Leave a Reply