📄 rman_db.bat
字号:
call I:\example\backup\rman_backup_script_win\set_env.bat
@echo.
@echo ************************************* rman_db.sh file run begin *******************************"
@echo.
@IF NOT EXIST %DBS_RMAN_LOG_DIC% (
mkdir %DBS_RMAN_LOG_DIC%
)
@echo.
@echo Warm database backup of $ORACLE_SID Using RMAN
@echo Log will be written to %DBS_RMAN_LOG_DIC%\rman_db_%ORACLE_SID%.log
@echo.
@rem --the standard output is redirected to the log file
@rem --the err output is redirect to the log file
@rem exec >> %DBS_RMAN_LOG_DIC%\rman_db_%ORACLE_SID%.log
@rem exec 2>&1
@echo echo %date% %time% rman_db_bak_begin > %DBS_TAG_DIC%\rman_db_bak.flag
@rem display the Environment Variable Value
@echo DBS_BACKUP_BASE : %DBS_BACKUP_BASE%
@echo DBS_BACKUP_DATA_DIC : %DBS_BACKUP_DATA_DIC%
@echo DBS_GEN_SQL_DIC : %DBS_GEN_SQL_DIC%
@echo DBS_BAK_ARCH_DIC1 : %DBS_BAK_ARCH_DIC1%
@echo DBS_TAG_DIC : %DBS_TAG_DIC%
@echo DBS_BAK_ARCH_DIC2 : %DBS_BAK_ARCH_DIC2%
@echo ARCH_DEST2 : %ARCH_DEST2%
@sqlplus -s %USERPASS% @%DBS_CONF_FILE_DIC%\test_conn.sql
@IF %ERRORLEVEL% EQU 1 (
echo xxxxxxxxxxxxxxx ERROR: Cann't connect to Oracle Database xxxxxxxxxxxxxxx
echo.
echo xxxxxxxxxxxxxxx Backup aborted at %date% %time% xxxxxxxxxxxxxxx
echo.
exit 1
)
@echo whether the responsible directory exist
@IF NOT EXIST %DBS_BACKUP_BASE% (
mkdir %DBS_BACKUP_BASE%
)
@IF NOT EXIST %DBS_BACKUP_DATA_DIC% (
mkdir %DBS_BACKUP_DATA_DIC%
)
@IF NOT EXIST %DBS_GEN_SQL_DIC% (
mkdir %DBS_GEN_SQL_DIC%
)
@IF NOT EXIST %DBS_BAK_ARCH_DIC1% (
mkdir %DBS_BAK_ARCH_DIC1%
)
@IF NOT EXIST %DBS_BAK_ARCH_DIC2% (
mkdir %DBS_BAK_ARCH_DIC2%
)
IF NOT EXIST %DBS_TAG_DIC% (
mkdir %DBS_TAG_DIC%
)
IF NOT EXIST %DBS_RMAN_LOG_DIC% (
mkdir %DBS_RMAN_LOG_DIC%
)
IF NOT EXIST %DBS_APP_LOG_DIC% (
mkdir %DBS_APP_LOG_DIC%
)
IF NOT EXIST %DBS_BAK_GEN_FILE_DIC% (
mkdir %DBS_BAK_GEN_FILE_DIC%
)
IF NOT EXIST %DBS_RES_GEN_FILE_DIC% (
mkdir %DBS_RES_GEN_FILE_DIC%
)
@IF NOT EXIST %DBS_TAG_DIC%\db_bak_success.flag (
echo yes > %DBS_TAG_DIC%\db_bak_success.flag
)
@IF NOT EXIST %DBS_TAG_DIC%\db_scp_bak.flag (
echo yes > %DBS_TAG_DIC%\db_scp_bak.flag
)
@IF NOT EXIST %DBS_TAG_DIC%\arch_scp_bak.flag (
echo yes > %DBS_TAG_DIC%\arch_scp_bak.flag
)
@IF NOT EXIST %DBS_TAG_DIC%\db_scp_bak_err.flag (
echo no > %DBS_TAG_DIC%\db_scp_bak_err.flag
)
@IF NOT EXIST %DBS_TAG_DIC%\arch_scp_bak_err.flag (
echo no > %DBS_TAG_DIC%\arch_scp_bak_err.flag
)
@echo display and write the err tag, if the previous scp to the backup server operation was failed
%DBS_BIN_FILE_DIC%\cat.exe %DBS_TAG_DIC%\db_scp_bak.flag | %DBS_BIN_FILE_DIC%\grep.exe yes
@IF ERRORLEVEL 1 (
echo xxxxxxxxxxxxxxx ERROR: " %DBS_TAG_DIC%\db_scp_bak.flag " is no xxxxxxxxxxxxxxx
echo.
echo xxxxxxxxxxxxxxx The operation of scping RMAN backup Files to backup server Failed xxxxxxxxxxxxxxx
echo.
echo yes > %DBS_TAG_DIC%\db_scp_bak_err.flag
)
@echo delete the backup file from the DBS_BACKUP_DATA_DIC directory. Otherwise, do nothing.
@cd %DBS_GEN_SQL_DIC%
@echo y | del %DBS_GEN_SQL_DIC%\*.*
@echo y | del %DBS_BACKUP_DATA_DIC%\*.*
@echo y | del %DBS_BAK_ARCH_DIC1%\*.*
@echo y | del %DBS_BAK_ARCH_DIC2%\*.*
@echo no > %DBS_TAG_DIC%\db_bak_success.flag
@echo get list of files to backup
@echo (modify sqlplus line to accommodate your usr/pwd)
@echo Getting profile of the database ...
@sqlplus -s %USERPASS% @%DBS_CONF_FILE_DIC%\db_profile.sql >%DBS_GEN_SQL_DIC%\database%ORACLE_SID%.profile
@echo Generate the sql for add temp files to temporary tablespace ...
@sqlplus -s %USERPASS% @%DBS_CONF_FILE_DIC%\add_temp_files.sql >%DBS_GEN_SQL_DIC%\add_files_to_temp_ts.sql
@echo Using RMAN crosscheck the archived logs
@SET SPEC_CHAR=%%%
@echo run { > %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
@echo allocate channel node1 type disk format '%DBS_BAK_ARCH_DIC1%\df_%SPEC_CHAR%d_%SPEC_CHAR%s_%SPEC_CHAR%p_%SPEC_CHAR%c'; >> %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
@echo change archivelog all crosscheck; >> %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
@echo release channel node1; >> %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
@echo } >> %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
@echo generate RMAN backup script
@echo run { > %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo allocate channel node1 type disk format '%DBS_BACKUP_DATA_DIC%\df_%SPEC_CHAR%d_%SPEC_CHAR%s_%SPEC_CHAR%p_%SPEC_CHAR%c'; >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo set limit channel node1 kbytes = 1572864000; >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo backup incremental level 0 (database filesperset = 1 include current controlfile); >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo sql "ALTER SYSTEM ARCHIVE LOG CURRENT"; >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo backup >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo (archivelog like '%ARCH_DEST1%\%SPEC_CHAR%.DBF' filesperset 20 delete all input channel node1 ); >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
rem @echo (archivelog like '%ARCH_DEST2%\%SPEC_CHAR%.DBF' filesperset 20 delete all input channel node1 ); >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo backup current controlfile TAG "control.bak"; >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo release channel node1; >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo } >> %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo Crosscheck begining
@rman target / nocatalog log %DBS_RMAN_LOG_DIC%\rman_arch_cr.log cmdfile %DBS_BAK_GEN_FILE_DIC%\rman_arch_cr_g.rman
echo RMAN DATABASE backup begining
@rman target / nocatalog log %DBS_RMAN_LOG_DIC%\rman_db.log cmdfile %DBS_BAK_GEN_FILE_DIC%\rman_db_backup_g.rman
@echo backup password file
@copy %ORACLE_PWFILE% %DBS_BACKUP_DATA_DIC%\
@echo backup initfile or spfile files
@IF "%ORACLE_INITFILE_TYPE%" == "ALL" (
copy %ORACLE_INITFILE% %DBS_BACKUP_DATA_DIC%\
copy %ORACLE_SPFILE% %DBS_BACKUP_DATA_DIC%\
)
@IF "%ORACLE_INITFILE_TYPE%" == "INITFILE" (
copy %ORACLE_INITFILE% %DBS_BACKUP_DATA_DIC%\
)
@IF "%ORACLE_INITFILE_TYPE%" == "SPFILE" (
copy %ORACLE_SPFILE% %DBS_BACKUP_DATA_DIC%\
)
@echo set the Local backup success falg
@echo yes > %DBS_TAG_DIC%\db_bak_success.flag
@echo reset the scp backup flag
@echo no > %DBS_TAG_DIC%\db_scp_bak.flag
@echo reset the scp backup flag
@echo no > %DBS_TAG_DIC%\db_scp_bak_err.flag
@echo.
@echo **** Oracle RMAN Backup finished at %date% %time% ****
@echo.
@echo %date% rman_db_bak_end > %DBS_TAG_DIC%\rman_db_bak.flag
@rem *************************** generate the scp backup script end **************************
@echo.
@echo ************************************* rman_db.sh file run end *******************************"
@echo.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -