windows oracle中统一备份脚本

本文详细介绍了一款用于数据库热备份的脚本,包括其工作原理、使用步骤以及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

脚本名为:database_hot_backup.cmd 主要内容如下:

 

 

 

 

@REM $Header: hot_database_backup.cmd,v 1.3 2005/11/28 19:01:53 $

 

@REM bcpyrght

@REM ***************************************************************************

@REM * $VRTScprght: Copyright 1993 - 2009 Symantec Corporation, All Rights Reserved $ *

@REM ***************************************************************************

@REM ecpyrght

@REM

@REM ---------------------------------------------------------------------------

@REM        hot_database_backup.cmd

@REM ---------------------------------------------------------------------------

@REM This script uses Recovery Manager to take a hot (inconsistent) database

@REM backup. A hot backup is inconsistent because portions of the database are

@REM being modified and written to the disk while the backup is progressing.

@REM You must run your database in ARCHIVELOG mode to make hot backups.

@REM

@REM NOTE information for running proxy backups has been included.  These

@REM information sections begin with a comment line of PROXY

@REM ---------------------------------------------------------------------------

 

@setlocal ENABLEEXTENSIONS

 

@REM ---------------------------------------------------------------------------

@REM No need to echo the commands.

@REM ---------------------------------------------------------------------------

 

@echo off

 

@REM ---------------------------------------------------------------------------

@REM Put output in the same filename, different extension.

@REM ---------------------------------------------------------------------------

 

@set RMAN_LOG_FILE="%~dpn0.out"

 

@REM ---------------------------------------------------------------------------

@REM You may want to delete the output file so that backup information does

@REM not accumulate.  If not, delete the following command.

@REM ---------------------------------------------------------------------------

 

@if exist %RMAN_LOG_FILE% del %RMAN_LOG_FILE%

 

@REM ---------------------------------------------------------------------------

@REM Replace H:\oracle\ora81, below, with the Oracle home path.

@REM ---------------------------------------------------------------------------

 

@set ORACLE_HOME=E:\oracle\product\DB11g

 

@REM ---------------------------------------------------------------------------

@REM Replace ora81, below, with the Oracle SID.

@REM ---------------------------------------------------------------------------

 

@set ORACLE_SID=dms

 

@REM ---------------------------------------------------------------------------

@REM Replace sys/manager, below, with the target connect string.

@REM ---------------------------------------------------------------------------

 

@set TARGET_CONNECT_STR=sys/manager

 

@REM ---------------------------------------------------------------------------

@REM Set the Oracle Recovery Manager.

@REM ---------------------------------------------------------------------------

 

@set RMAN=%ORACLE_HOME%\bin\rman.exe

 

@REM ---------------------------------------------------------------------------

@REM PROXY

@REM For a PROXY backup, uncomment the line below and replace the value.

@REM

@REM       NB_ORA_PC_STREAMS - specifies the number of parallel backup streams

@REM                           to be started.

@REM ---------------------------------------------------------------------------

@REM @set NB_ORA_PC_STREAMS=3

 

 

@REM ---------------------------------------------------------------------------

@REM Log the start of this scripts.

@REM ---------------------------------------------------------------------------

 

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q

@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

 

@echo ==== started on %DATE% ==== >> %RMAN_LOG_FILE%

@echo Script name: %0 >> %RMAN_LOG_FILE%

 

@REM ---------------------------------------------------------------------------

@REM Several RMAN commands use time parameters that require NLS_LANG and

@REM NLS_DATE_FORMAT to be set. This example uses the standard date format.

@REM Replace below with the desired language values.

@REM ---------------------------------------------------------------------------

 

@set NLS_LANG=american

@set NLS_DATE_FORMAT=YYYY-MM-DD:hh24:mi:ss

 

@REM ---------------------------------------------------------------------------

@REM Print out environment variables set in this script.

@REM ---------------------------------------------------------------------------

 

@echo #                                       >> %RMAN_LOG_FILE%

@echo   RMAN  :  %RMAN%                       >> %RMAN_LOG_FILE%

@echo   NLS_LANG  :  %NLS_LANG%               >> %RMAN_LOG_FILE%

@echo   ORACLE_HOME  :  %ORACLE_HOME%         >> %RMAN_LOG_FILE%

@echo   ORACLE_SID  :  %ORACLE_SID%           >> %RMAN_LOG_FILE%

@echo   NLS_DATE_FORMAT  :  %NLS_DATE_FORMAT% >> %RMAN_LOG_FILE%

@echo   RMAN_LOG_FILE  :  %RMAN_LOG_FILE%     >> %RMAN_LOG_FILE%

 

@REM ---------------------------------------------------------------------------

@REM PROXY

@REM For a PROXY backup, uncomment the line below.

@REM ---------------------------------------------------------------------------

@REM @echo   NB_ORA_PC_STREAMS  :  %NB_ORA_PC_STREAMS%     >> %RMAN_LOG_FILE%

 

@REM ---------------------------------------------------------------------------

@REM Print out environment variables set in bphdb.

@REM ---------------------------------------------------------------------------

 

@echo   NB_ORA_SERV  :  %NB_ORA_SERV%                     >> %RMAN_LOG_FILE%

@echo   NB_ORA_FULL  :  %NB_ORA_FULL%                     >> %RMAN_LOG_FILE%

@echo   NB_ORA_INCR  :  %NB_ORA_INCR%                     >> %RMAN_LOG_FILE%

@echo   NB_ORA_CINC  :  %NB_ORA_CINC%                     >> %RMAN_LOG_FILE%

@echo   NB_ORA_CLASS  :  %NB_ORA_CLASS%                   >> %RMAN_LOG_FILE%

 

@REM ---------------------------------------------------------------------------

@REM We assume that the database is properly opened. If desired, this would

@REM be the place to verify that.

@REM ---------------------------------------------------------------------------

 

@REM ---------------------------------------------------------------------------

@REM If this script is executed from a NetBackup schedule, NetBackup

@REM sets an NB_ORA environment variable based on the schedule type.

@REM For example, when:

@REM     schedule type is                BACKUP_TYPE is

@REM     ----------------                --------------

@REM Automatic Full                      INCREMENTAL LEVEL=0

@REM Automatic Differential Incremental  INCREMENTAL LEVEL=1

@REM Automatic Cumulative Incremental    INCREMENTAL LEVEL=1 CUMULATIVE

@REM

@REM For user initiated backups, BACKUP_TYPE defaults to incremental

@REM level 0 (Full).  To change the default for a user initiated

@REM backup to incremental or incrementatl cumulative, uncomment

@REM one of the following two lines.

@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1"

@REM @set BACKUP_TYPE="INCREMENTAL LEVEL=1 CUMULATIVE"

@REM

@REM Note that we use incremental level 0 to specify full backups.

@REM That is because, although they are identical in content, only

@REM the incremental level 0 backup can have incremental backups of

@REM level > 0 applied to it.

@REM ---------------------------------------------------------------------------

 

@REM ---------------------------------------------------------------------------

@REM What kind of backup will we perform.

@REM ---------------------------------------------------------------------------

 

@if "%NB_ORA_FULL%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=0

@if "%NB_ORA_INCR%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1

@if "%NB_ORA_CINC%" EQU "1" @set BACKUP_TYPE=INCREMENTAL Level=1 CUMULATIVE

@if NOT DEFINED BACKUP_TYPE @set BACKUP_TYPE=INCREMENTAL Level=0

 

@REM ---------------------------------------------------------------------------

@REM Call Recovery Manager to initiate the backup. This example does not use a

@REM Recovery Catalog. If you choose to use one, remove the option, nocatalog,

@REM from the rman command line below and add a

@REM 'rcvcat <userid>/<passwd>@<tns alias>' statement.

@REM

@REM  NOTE WHEN USING TNS ALIAS: When connecting to a database

@REM  using a TNS alias, you must use a send command or a parms operand to

@REM  specify environment variables.  In other words, when accessing a database

@REM  through a listener, the environment variables set at the system level are not

@REM  visible when RMAN is running.  For more information on the environment

@REM  variables, please refer to the NetBackup for Oracle Admin. Guide.

@REM

@REM If you are getting an error that the input line is too long, you will need

@REM to put the RMAN run block in a separate file.  Then use the "cmdfile"

@REM option of RMAN.  For more information on the "cmdfile" options please

@REM refer to the RMAN documentation.

@REM ---------------------------------------------------------------------------

 

@REM ---------------------------------------------------------------------------

@REM PROXY

@REM For a PROXY backup, you must use a send command to specify

@REM the NB_ORA_PC_STREAMS environment variable. For example,

@REM echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';

@REM echo SEND 'NB_ORA_PC_STREAMS=%%NB_ORA_PC_STREAMS%%';

@REM

@REM %BACKUP_TYPE% must also be removed and replaced with the PROXY parameter

@REM in the RMAN section associated with the data files.  For example,

@REM echo BACKUP

@REM echo       PROXY

@REM echo       FORMAT 'bk_u%%u_s%%s_p%%p_t%%t'

@REM echo       DATABASE;

@REM            .

@REM            .

@REM  Note that the controlfiles and archivelogs are not backed up using proxy

@REM  copy method. Rman will initiate non-proxy copy sessions to backup the

@REM  controlfile and archivelogs.

@REM ---------------------------------------------------------------------------

@(

echo RUN {

echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

echo ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE';

echo BACKUP

echo       as compressed backupset

echo       FORMAT 'bk_%d_%T_%s'

echo       DATABASE;

echo sql 'alter system archive log current';

echo RELEASE CHANNEL ch00;

echo RELEASE CHANNEL ch01;

echo # Backup all archive logs

echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

echo BACKUP

echo       FILESPERSET 20

echo       FORMAT 'arch-%d_%T_%s'

echo       ARCHIVELOG ALL DELETE INPUT;

echo RELEASE CHANNEL ch00;

echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

echo backup current controlfile  format 'c-%d_%T';

echo RELEASE CHANNEL ch00;

echo ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';

echo backup  spfile  format 's-%d_%T';

echo RELEASE CHANNEL ch00;

echo }

) | %RMAN% target %TARGET_CONNECT_STR% nocatalog msglog '%RMAN_LOG_FILE%' append

 

@set ERRLEVEL=%ERRORLEVEL%

 

@REM ---------------------------------------------------------------------------

@REM NetBackup (bphdb) stores the name of a file in an environment variable,

@REM called STATUS_FILE. This file is used by an automatic schedule to

@REM communicate status information with NetBackup's job monitor. It is up to

@REM the script to write a 0 (passed) or 1 (failure) to the status file.

@REM ---------------------------------------------------------------------------

 

@if %ERRLEVEL% NEQ 0 @goto err

 

@set LOGMSG=ended successfully

@if "%STATUS_FILE%" EQU "" goto end

@echo 0 > "%STATUS_FILE%"

@goto end

 

:err

@set LOGMSG=ended in error

@if "%STATUS_FILE%" EQU "" @goto end

@echo 1 > "%STATUS_FILE%"

 

:end

 

@REM ---------------------------------------------------------------------------

@REM Log the completion of this script.

@REM ---------------------------------------------------------------------------

 

@for /F "tokens=1*" %%p in ('date /T') do @set DATE=%%p %%q

@for /F %%p in ('time /T') do @set DATE=%DATE% %%p

 

@echo #  >> %RMAN_LOG_FILE%

@echo %==== %LOGMSG% on %DATE% ==== >> %RMAN_LOG_FILE%

@endlocal

@REM End of Main Program -----------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值