暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

windows RMAN备份脚本

原创 李曰福 2023-09-25
351

参考

https://www.dba-oracle.com/t_windows_rman_backup_bat_file.htm

使用说明:

  • winRman.bat system oracle orcl
  • system: 连接数据库的用户名
  • oracle: system用户的密码
  • orcl: 数据库连接符. 在$ORACLE_HOME/network/admin/tnsnames.ora定义.

 

参数设置:

  • 备份存放目录: RMANBAK=c:\rmanbackup
  • 备份日志: set ORALOG=%RMANBAK%\log
  • 备份临时目录:  set  ORATMP=%RMANBAK%\temp
  • 备份恢复窗口: RECO_DAY=1

 

REM +--------------------------------------------------------------------------+
REM | VALIDATE COMMAND-LINE PARAMETERS                                         |
REM +--------------------------------------------------------------------------+
 
if (%1)==() goto USAGE
if (%2)==() goto USAGE
if (%3)==() goto USAGE
 
 
REM +--------------------------------------------------------------------------+
REM | VALIDATE ENVIRONMENT VARIABLES                                           |
REM +--------------------------------------------------------------------------+
 
REM if (%ORALOG%)==() goto ENV_VARIABLES
REM if (%ORATMP%)==() goto ENV_VARIABLES
 
 
REM +--------------------------------------------------------------------------+
REM | DECLARE ALL GLOBAL VARIABLES.                                            |
REM +--------------------------------------------------------------------------+
 
set RMANBAK=c:\rmanbackup
set RECO_DAY=1
set h=%time:~0,2%
set h=%h: =0%
set DATE=%date:~0,4%-%date:~5,2%-%date:~8,2%_%h%-%time:~3,2%-%time:~6,2%
set ORALOG=%RMANBAK%\log
set ORATMP=%RMANBAK%\temp
 
set FILENAME=rman_backup_full
set DB_USERNAME=%1%
set DB_PASSWORD=%2%
set TNS_ALIAS=%3%
set CMDFILE=%ORATMP%\%FILENAME%_%TNS_ALIAS%.rcv
set LOGFILE=%ORALOG%\%FILENAME%_%TNS_ALIAS%_%DATE%.log
 
 
REM +--------------------------------------------------------------------------+
REM | REMOVE OLD LOG AND RMAN COMMAND FILES.                                   |
REM +--------------------------------------------------------------------------+
 
del /q %CMDFILE%
del /q %LOGFILE%
 
 
REM +--------------------------------------------------------------------------+
REM | WRITE RMAN COMMAND SCRIPT.                                               |
REM +--------------------------------------------------------------------------+
REM
 
echo CONFIGURE DEFAULT DEVICE TYPE TO DISK;> %CMDFILE% 
echo CONFIGURE CONTROLFILE AUTOBACKUP ON;>> %CMDFILE%
echo CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%RMANBAK%\auto_%T_%F.%d';>> %CMDFILE%
echo configure RETENTION POLICY TO recovery window of %RECO_DAY% days;>> %CMDFILE%
 
echo crosscheck copy;>> %CMDFILE%
echo crosscheck backup;>> %CMDFILE%
echo crosscheck archivelog all;>> %CMDFILE%
 
echo delete noprompt expired archivelog all;>> %CMDFILE%
echo delete noprompt expired backup;>> %CMDFILE%
echo report obsolete;>> %CMDFILE%
echo delete noprompt obsolete;>> %CMDFILE%
 
echo backup as compressed backupset incremental level 0 database format '%RMANBAK%\full_%%T_%%u_%%p.%%d' tag='FULLDB-%DATE%' plus archivelog format '%RMANBAK%\arch_%%T_%%u_%%p.%%d' tag='ARCH-%DATE%' delete all input ; >> %CMDFILE%
 
echo backup current controlfile format '%RMANBAK%\ctl_%%T_%%u.%%d' tag='CTL-%DATE%' ; >> %CMDFILE%
 
 
 
Rem echo backup database plus archivelog delete input; > %CMDFILE%
Rem echo crosscheck backup of database; >> %CMDFILE%
Rem echo crosscheck backup of controlfile; >> %CMDFILE%
Rem echo crosscheck archivelog all; >> %CMDFILE%
 
echo delete noprompt force obsolete;>> %CMDFILE%
echo delete force noprompt expired backup of database; >> %CMDFILE%
echo delete force noprompt expired backup of controlfile; >> %CMDFILE%
echo delete force noprompt expired archivelog all; >> %CMDFILE%
 
echo delete noprompt force copy completed before 'sysdate-8';>> %CMDFILE%
echo delete noprompt force archivelog all completed before 'sysdate-8' ;>> %CMDFILE%
echo delete noprompt force backupset completed before 'sysdate-8' ;>> %CMDFILE%
 
echo exit; >> %CMDFILE%
 
 
REM +--------------------------------------------------------------------------+
REM | PERFORM RMAN BACKUP.                                                     |
REM +--------------------------------------------------------------------------+
 
rman target %DB_USERNAME%/%DB_PASSWORD%@%TNS_ALIAS% nocatalog cmdfile=%CMDFILE% msglog %LOGFILE%
 
 
REM +--------------------------------------------------------------------------+
REM | SCAN THE RMAN LOGFILE FOR ERRORS.                                        |
REM +--------------------------------------------------------------------------+
 
findstr /i "error" %LOGFILE%
if errorlevel 0 if not errorlevel 1 echo WARNING %FILENAME% %TNS_ALIAS% %COMPUTERNAME% %DATE% %TIME% %LOGFILE%
 
echo ...
echo END OF FILE REPORT
echo Filename      : %FILENAME%
echo Database      : %TNS_ALIAS%
echo Hostname      : %COMPUTERNAME%
echo Date          : %DATE%
echo Time          : %TIME%
echo RMAN Log File : %LOGFILE%
 
 
REM +--------------------------------------------------------------------------+
REM | END THIS SCRIPT.                                                         |
REM +--------------------------------------------------------------------------+
 
goto END
 
 
 
REM +==========================================================================+
REM |                    ***   END OF SCRIPT   ***                             |
REM +==========================================================================+
 
REM +--------------------------------------------------------------------------+
REM | LABEL DECLARATION SECTION.                                               |
REM +--------------------------------------------------------------------------+
 
:USAGE
echo Usage:  winRman.bat  DBA_USERNAME  DBA_PASSWORD  TNS_ALIAS
echo           DBA_USERNAME   = Oracle DBA Username - (Requires SYSDBA Role)
echo           DBA_PASSWORD   = Oracle DBA Password
echo           TNS_ALIAS      = Connect String to connect to the database (ex. ORCL)
goto END
 
:ENV_VARIABLES
echo ERROR:  You must set the following environment variables before
echo         running this script:
echo             ORALOG       = Directory used to write logfile to
echo             ORATMP       = Directory used to write temporary files to
goto END
 
:END
@echo on

 
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论