⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rman_db.bat

📁 oracle数据库备份与恢复的详细资料集合
💻 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 + -