rman 自动备份脚本

本文介绍了如何使用Oracle 10G的RMAN( Recovery Manager)创建自动备份脚本,包括全量备份、差异增量备份(0级、1级、2级)以及备份策略。脚本根据一周中的不同日期执行不同级别的备份,并包含了详细的RMAN配置参数和备份日志管理。

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

ORACLE 10G rman 备份脚本


#!/bin/bash

back_path="/10g/backup";

back_log="/10g/backup/log";

rman_name=“cisco”;

rman_pw="rman";

rman_log_name="rman";

rman_log_pass="cisco";

rman_sid=“zsh1”;

rman_bin=/opt/oracle/product/9.2.0.4/bin

date_w=`date+%w`;

case$date_w in

5)#指的是周五执行

$rman_binlog $back_log/level0_`date +%Y-%m-%d`.log <<EOF

connect target $rman_name/$rman_pw

run{

allocatechannel d1 type disk;

allocatechannel d2 type disk;

backupfull database format '$back_path/`date +%Y%m%d`_full_%d_%s_%p_%u.bak'

tag='full'include current controlfile;

sql 'alter system archive log current';

backuparchivelog all format '$back_path/`date +%Y%m%d`_archivelog_%d_%s_%p_%u.bak'delete all input;

releasechannel d2;

releasechannel d1;

}

crosscheckbackup;

deletenoprompt expired backup;

deletenoprompt obsolete;

exit

EOF

;;

#以上是完全备份

 

7)  #指的是周日执行

$rman_binlog $back_log/level0_`date +%Y-%m-%d`.log <<EOF

connectcatalog $rman_log_name/$rman_log_pass

connecttarget $rman_name/$rman_pw

run{

allocatechannel d1 type disk;

allocatechannel d2 type disk;

backupincremental level 0 database format '$back_path/`date+%Y%m%d`_level0_%d_%s_%p_%u.bak'

tag='level0' include current controlfile;

sql'alter system archive log current';

backuparchivelog all format '$back_path/`date +%Y%m%d`_archivelog_%d_%s_%p_%u.bak'delete all input;

releasechannel d2;

releasechannel d1;

}

crosscheckbackup;

deletenoprompt expired backup;

deletenoprompt obsolete;

resynccatalog;

exit

EOF

;;

#以上是0级备份

 

3)#指的是周三执行

$rman_binlog $back_log/level1_`date +%Y-%m-%d`.log <<EOF

connectcatalog $rman_log_name/$rman_log_pass

connecttarget $rman_name/$rman_pw

run{

allocatechannel d1 type disk;

backupincremental level 1 format '$back_path/`date +%Y%m%d`_level1_%d_%s_%p_%u.bak'tag = 'level 1' database;

sql'alter system archive log current';

backuparchivelog all format '$back_path/`date +%Y%m%d`_archivelog_%d_%s_%p_%u.bak'delete all input;

releasechannel d1;

}

crosscheckbackup;

deletenoprompt expired backup;

deletenoprompt obsolete;

resynccatalog;

exit;

EOF

;;

#以上是1级备份

1|2|4|5|6)   #指的是周一,二,四,五,六执行

$rman_binlog $back_log/level2_`date +%Y-%m-%d`.log <<EOF

connectcatalog $rman_log_name/$rman_log_pass

connecttarget $rman_name/$rman_pw

利用LINUXcrintab 进行执行!!

 

 

RMAN备份脚本及自动批处理(windows)

2010-02-09 00:05

RMAN备份脚本及自动批处理(windows)

接上章RMAN备份前工作:
C:\Documents and Settings\Administrator>rman catalog rmanuser1/rmanuser1 target
system/system@oradb
RMAN>show all;
设置控制文件的自动备份和自动备份的目录(建议设置,备份目录自定)
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
RMAN>exit;
按如上设置后,控制文件和spfile就会随着数据库备份自动备份到d:/backup下;

建立脚本文件和批处理文件:
脚本文件,如文件名为orabackup.rcv,具体内容如下:
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
backup incremental level 0 database format 'd:\backup\level0_%d_%s_%p_%u.bak';
sql 'alter system archive log current';
backup archivelog all format 'd:\backup\log_%d_%s_%p_%u.bak' delete all input;
release channel d2;
release channel d1;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
resync catalog;
exit

批处理文件,如文件名为orabackup.bat,具体内容如下
rman catalog rmanuser1/rmanuser1@orada target system/system@oradb CMDFILE 'd:\backup\orabackup.rcv' LOG ’d:\backup\oracl_%date'

将orabackup.bat和orabackup.rcv存放在同一目录下,执行orabackup.bat就可以调用orabackup.rcv备份数据库了,你可以再windows的计划任务里执行orabackup.bat就可以自动备份了;

 

RMAN备份脚本

===========================================================

作者:hxhy(http://hxhy.itpub.net)

发表于:2007.10.31 09:35

分类: ORACLE学习资料

出处:http://hxhy.itpub.net/post/36246/409606

---------------------------------------------------------------

注意:此文档是本人由网络资料整理而成

备份策略:

星期天 0 级

星期一,二,四,五六 2 级

星期三 1 级

 

--本地

 

mkdir /home/oracle/backup

mkdir /home/oracle/backup/script

mkdir /home/oracle/backup/log

mkdir /home/oracle/backup/export

 

--备份目的地

mkdir /home/oracle/rman_backup

 

create tablespace rman_tbs datafile'/oradata/luke/rman_tbs01.dbf' size 1024M;

 

create user rman identified by rman defaulttablespace rman_tbs temporary tablespace temp;

 

grant connect,resource,recovery_catalog_owner to rman;

 

rman catalog rman/rman

create catalog tablespace rman_tbs;

connect target sys/lukewhx@luke

register database;

report schema;

 

configure retention policy to redundancy 2;

configure retention policy to recoverywindow of 7 days;

 

--倒出RMAN用户数据脚本exp_rman.par

 

userid=rman/rman

file=/home/oracle/backup/export/rman.dmp

log=/home/oracle/backup/log/rman.log

 

--倒出RMAN数据SHELL脚本exp_rman.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd $HOME/backup/script

exp parfile=exp_rman.par

--零级备份RMAN脚本level0_backup.rcv

connect catalog rman/rman

connect target sys/unumall@unu2

run {

allocate channel d1 type disk;

allocate channel d2 type disk;

backup incremental level 0 database format'/home/oracle/rman_backup/level0_%d_%s_%p_%u.bak'

tag='level 0' include current controlfile;

sql 'alter system archive log current';

backup archivelog all format'/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all

input;

release channel d2;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--零级备份SHELL脚本的level0_backup.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd $HOME/backup/script

rman cmdfile=level0_backup.rcvmsglog=$HOME/backup/log/level0_backup.log

. /home/oracle/backup/script/exp_rman.sh

--一级差异增量备份RMAN脚本level1_backup.rcv

connect catalog rman/rman

connect target sys/luke@luke

run {

allocate channel d1 type disk;

backup incremental level 1 format'/home/oracle/rman_backup/level1_%d_%s_%p_%u.bak' tag =

'level 1' database;

sql 'alter system archive log current';

backup archivelog all format'/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all

input;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--一级差异增量备份SHELL脚本level1_backup.sh#!/bin/bash

cd $HOME

. .bash_profile

cd /home/oracle/backup/script

rman cmdfile=level1_backup.rcvmsglog=$HOME/backup/log/level1.log

. /home/oracle/backup/script/exp_rman.sh

--二级差异增量备份RMAN脚本level2_backup.rcv

connect catalog rman/rman

connect target sys/luke@luke

run {

allocate channel d1 type disk;

backup incremental level 2 format'/home/oracle/rman_backup/level2_%d_%s_%p_%u.bak' tag =

'level 2' database;

sql 'alter system archive log current';

backup archivelog all format'/home/oracle/rman_backup/log_%d_%s_%p_%u.bak' delete all

input;

release channel d1;

}

crosscheck backup;

delete noprompt expired backup;

delete noprompt obsolete;

resync catalog;

--二级差异增量备份SHELL脚本level2_backup.sh

#!/bin/bash

cd $HOME

. .bash_profile

cd /home/oracle/backup/script

rman cmdfile=level2_backup.rcvmsglog=$HOME/backup/log/level2.log

. /home/oracle/backup/script/exp_rman.sh

提高RMAN增量备份性能

alter database enable block change trackingusing file

'/u01/app/oracle/admin/devdb/bdump/luke.log';

desc v$block_change_tracking;

 

 

oracle rman备份脚本收集

2,常用备份脚本:
备份到磁盘:(如果是磁带,将DISK改成'SBT_TAPE')
0级备份脚本:
RUN {
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
    INCREMENTAL LEVEL=0
    SKIP INACCESSIBLE
    TAG hot_db_bk_level0
    FILESPERSET 5
    FORMAT 'bk_%s_%p_%t'
    DATABASE;
    sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
   filesperset 20
   FORMAT 'al_%s_%p_%t'
   ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
BACKUP
    FORMAT 'cntrl_%s_%p_%t'
    CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
1级差异增量备份:
RUN {
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
    INCREMENTAL LEVEL=1
    SKIP INACCESSIBLE
    TAG hot_db_bk_level0
    FILESPERSET 5
    FORMAT 'bk_%s_%p_%t'
    DATABASE;
    sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
   filesperset 20
   FORMAT 'al_%s_%p_%t'
   ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
BACKUP
    FORMAT 'cntrl_%s_%p_%t'
    CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}
1级累积增量备份脚本:
RUN {
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
    INCREMENTAL LEVEL=1 CUMULATIVE
    SKIP INACCESSIBLE
    TAG hot_db_bk_level0
    FILESPERSET 5
    FORMAT 'bk_%s_%p_%t'
    DATABASE;
    sql 'alter system archive log current';
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
BACKUP
   filesperset 20
   FORMAT 'al_%s_%p_%t'
   ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
ALLOCATE CHANNEL ch00 TYPE DISK;
BACKUP
    FORMAT 'cntrl_%s_%p_%t'
    CURRENT CONTROLFILE;
RELEASE CHANNEL ch00;
}

恢复脚本:
RUN {
ALLOCATE CHANNEL ch00 TYPE DISK;
ALLOCATE CHANNEL ch01 TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE;
RELEASE CHANNEL ch00;
RELEASE CHANNEL ch01;
}

OracleRman 备份脚本
编辑一个文本,

[oracle@oracle bak]$vi full.bak
source ~/.bash_profile  //
加上这个是为了当我们crontab自动调用时可以执行.
rman target /    <<eof
run {
change archivelog all crosscheck;    //
标定控制文件中归档日志的状态.
crosscheck backup;  //
交叉检测,系统删除了,rman不知道.
delete noprompt expired backup;    //
ramn知道,在系统里已经被删除的.
sql 'alter system archive log current'  //
归档当前日志
backup archivelog all  format '/oraclebak/backup/ar_%u';  //
备份归档日志
backup incremental level 0 database format '/oraclebak/0_%u'; //0
级数据库备份(包括数据,控制,参数文件)
allocate channel C1 type disk;
allocate channel C2 type disk;
delete noprompt obsolete;   
删除除其他版本的备份.
release channel C1;
release channel C2;
}
exit eof
保持,然后在写一个其他级别的备份依照你的备份策略。
授予执行权限
[oracle@oracle bak]$chomd 777 full.bak
我们可以写个自动执行作业
[oracle@oracle ~]$ crontab -e
10 03 * * 7 /oracle/bak/full      //
每周日的凌晨310分执行0级备份
10 03 * * 1 /oracle/bak/level2_1 //
每周1310分执行2级备份

 

 

OracleRman 参数说明

RMAN>show all ;

RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO'/oracle/product/10.2.0/dbs/snapcf_wh.f'; # default

RMAN> configure retention policy to redundancy 1; //
保留最近备份一个有效的备份.
RMAN>  delte noprompt obsolete;  //
删除超出备份策略的备份.
RMAN> crosscheck backup; //
交叉检查.
RMAN> delete noprompt expired backup;  //
删除在操作系统下删除的备份文件,oracle知道.
RMAN> configure retention policy to window of 7 days: //
保留最近7天的备份,这个会和redundancy1冲突,如果设置了redundancy1,这个会失效.
RMAN> configure default device type to disk; //
备份到硬盘,备份到磁带(tosbt)
(
摘自http://orax.blog.sohu.com/72649795.html)这里介绍参数比较详细.我在上面只是介绍了比较常用的.
Rman
format格式中的%
%c
备份片的拷贝数
%d
数据库名称
%D
位于该月中的第几天(DD)
%M
位于该年中的第几月(MM)
%F
一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBIDYYYYMMDD
日期,QQ是一个1-256的序列
%n
数据库名称,向右填补到最大八个字符
%u
一个八个字符的名称代表备份集与创建时间
%p
该备份集中的备份片号,从1开始到创建的文件数
%U
一个唯一的文件名,代表%u_%p_%c
%s
备份集的号
%t
备份集时间戳
%T
年月日格式(YYYYMMDD)

 

 

 

Rman备份的shell脚本

 

#Set oracle path

#source $HOME/.keychain/${HOSTNAME}-sh

export SSH_AUTH_SOCK

echo $SSH_AUTH_SOCK

export PATH

unset USERNAME

export LD_ASSUME_KERNEL=2.4.1

export ORACLE_BASE=/opt/oracle9i

exportORACLE_HOME=$ORACLE_BASE/product/9.2.0

export ORACLE_SID=back1

exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

#echo "-----------数据库环境设置完成-----------"

# Set shell search paths

export PATH=$ORACLE_HOME/bin:$PATH

export NLS_LANG=american_america.ZHS16GBK

exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

#echo "----------脚本搜索环境设置完成----------"

# set the backup script enviromentvariable.

#export USERPASS=/nolog

export BACKUP_BASE=/home/oracle/backup

export BACKUP_TARGET=${BACKUP_BASE}/data

#exportTABLESPACE_TARGET=${BACKUP_TARGET}/tablespace

exportDATABASE_TARGET=${BACKUP_TARGET}/database

export CTRFILE_TARGET=${BACKUP_TARGET}/ctrfile

#exportARCLOG_TARGET=${BACKUP_TARGET}/arclog

export LOG_TARGET=${BACKUP_BASE}/log

#echo "--------备份脚本环境变量设置完成---------"

#当前时间

CurDate=`date +%Y-%m-%d_%H:%M:%S`

LogDate=`date +%Y-%m-%d`

#ORACLE用户的用户名

OraUser=oracle

#要备份的表空间变量与登陆数据库的用户

#TableSpace=shiyihai #只在备份表空间时需要

User=sys

Psw=sys

DataBase=back2

#恢复目录用户,表空间与数据库名

RmanTs=rman_ts

RmanUser=rman

RmanPsw=rman

RmanDB=test2

#echo "-----------备份服务器设置完成-------------"

#参数校验

if [ "p"$1 = "p/?" ]

then

echo "Usage:rman_db.sh Command"

echo"------------------------------------------------"

echo "Command : backup (0,1,2,3,4) (增量备份的基础策略备份)"

echo "Parameter - 0 (全量备份)"

echo "Parameter - 1 (一级增量备份)"

echo "Parameter - 2 (二级增量备份)"

echo "Parameter - 3 (三级增量备份)"

echo "Parameter - 4 (四级增量备份)"

echo"------------------------------------------------"

echo "Command : full (备份整个数据库)"

echo "------------------------------------------------"

echo "Command : listts (显示表空间备份历史记录)"

echo"------------------------------------------------"

echo "Command : listdb (显示数据库备份历史记录)"

echo"------------------------------------------------"

#echo "Command : arclog (备份归档日志并删除)"

#echo "------------------------------------------------"

# echo "Command : recoverts (恢复表空间)"

exit

fi

if [ "p"$1 = "p" -o"p"$1$2 = "pbackupts" -o "p"$1$2 ="pbackupdb" ]

then

echo "Usage:rman_db.sh Command"

echo"------------------------------------------------"

echo "Command : backup (0,1,2,3,4) (增量备份的基础策略备份)"

echo "Parameter - 0 (全量备份)"

echo "Parameter - 1 (一级增量备份)"

echo "Parameter - 2 (二级增量备份)"

echo "Parameter - 3 (三级增量备份)"

echo "Parameter - 4 (四级增量备份)"

echo"------------------------------------------------"

echo "Command : full (备份整个数据库)"

echo"------------------------------------------------"

echo "Command : listts (显示表空间备份历史记录)"

echo"------------------------------------------------"

echo "Command : listdb (显示数据库备份历史记录)"

echo "------------------------------------------------"

# echo "Command : arclog (备份归档日志并删除)"

# echo"------------------------------------------------"

# echo "Command : recoverts (恢复表空间)"

exit

fi

if [ "p"$1$2 !="pbackup0" -a "p"$1$2 != "pbackup1" -a"p"$1$2 != "pbackup2" -a "p"$1$2 != "pbackup3"-a "p"$1$2 != "pbackup4" -a "p"$1 !="pfull" -a "p"$1 != "plistdb" ]

then

echo "Usage:rman_db.sh Command"

echo"------------------------------------------------"

echo "Command : backup (0,1,2,3,4)(备份数据库)"

echo "Parameter - 0 (增量备份的基础策略备份)"

echo "Parameter - 1 (一级增量备份)"

echo "Parameter - 2 (二级增量备份)"

echo "Parameter - 3 (三级增量备份)"

echo "Parameter - 4 (四级增量备份)"

echo"------------------------------------------------"

echo "Command : full (备份整个数据库)"

echo"------------------------------------------------"

echo "Command : listts (显示表空间备份历史记录)"

echo"------------------------------------------------"

echo "Command : listdb (显示数据库备份历史记录)"

echo"------------------------------------------------"

# echo "Command : arclog (备份归档日志并删除)"

# echo "------------------------------------------------"

# echo "Command : recoverts (恢复表空间)"

exit

fi

echo"HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH">>${LOG_TARGET}/${LogDate}.log

#----------------------------------------------------------------------------------

#测试主备份目录是否可写

if ! test -w ${BACKUP_BASE}

then

echo "没有对${BACKUP_BASE}文件夹的写权限" >>${LOG_TARGET}/${LogDate}.log

echo "`date +%Y.%m.%d.%H.%M.%S`备份终止">>${LOG_TARGET}/${LogDate}.log

echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"

exit 1

fi

#------------------------------------------------------------------------------------

#检查文件夹是否存在

if ! test -d ${BACKUP_TARGET}

then

echo "-----没有备份目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

mkdir ${BACKUP_TARGET}

fi

#if ! test -d ${TABLESPACE_TARGET}

#then

# echo "-----没有备份目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

# mkdir ${TABLESPACE_TARGET}

#fi

#if ! test -d ${DATABASE_TARGET}

#then

# echo "-----没有备份目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

# mkdir ${DATABASE_TARGET}

#fi

#if ! test -d ${CTRFILE_TARGET}

#then

# echo "-----没有备份目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

# mkdir ${CTRFILE_TARGET}

#fi

#if ! test -d ${ARCLOG_TARGET}

#then

# echo "-----没有备份目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

# mkdir ${ARCLOG_TARGET}

#fi

#------------------------------------------------------------------------------------

if ! test -d ${LOG_TARGET}

then

echo "-----没有日志目录,自动创建-----">>${LOG_TARGET}/${LogDate}.log

mkdir ${LOG_TARGET}

fi

#----------------------------------------------------------------------------------

#echo "$CurDate 备份开始"

#-----------------------------------------------------------------------------------

#显示相关目录

#echo "基础备份目录 : " ${BACKUP_BASE}

#echo "备份数据文件目录 : " ${BACKUP_TARGET}

#echo "表空间备份目录 : " ${TABLESPACE_TARGET}

#echo "数据库备份目录 : " ${DATABASE_TARGET}

#echo "归档日志备份目录 : " ${ARCLOG_TARGET}

#echo "日志目录 : " ${LOG_TARGET}

#------------------------------------------------------------------------------------

#表空间备份

#if [ $1 = "backupts" ]

#then

#echo "`date +%Y-%m-%d_%H:%M:%S`开始${TABLESPACE}表空间备份">>${LOG_TARGET}/${LogDate}.log

#rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

# run {

# allocate channel dev1 type disk;

# backup

# incremental level $2

# filesperset 4

# format"${TABLESPACE_TARGET}/${TableSpace}_level${2}_s%s_t%t_p%p.bak"

# (tablespace ${TableSpace});

# }

# exit;

#EOF

# echo "`date+%Y-%m-%d_%H:%M:%S`${TABLESPACE}表空间备份结束" >>${LOG_TARGET}/${LogDate}.log

# echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

#fi

#数据库备份

if [ $1 = "backup" ]

then

echo "`date +%Y-%m-%d_%H:%M:%S`开始${DataBase}数据库备份">>${LOG_TARGET}/${LogDate}.log

rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

run {

allocate channel dev1 type disk;

backup

incremental level $2

filesperset 4

format"${BACKUP_TARGET}/%d_level${2}_s%s_t%t_p%p.bak"

(database);

}

exit;

EOF

echo "`date+%Y-%m-%d_%H:%M:%S`${DataBase}数据库备份结束" >>${LOG_TARGET}/${LogDate}.log

echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

fi

#显示表空间备份历史记录

if [ $1 = "listts" ]

then

rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF

list backupset of tablespace $TableSpace;

exit;

EOF

fi

#显示数据库备份历史记录

if [ $1 = "listdb" ]

then

rman tar

 

 

get $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF

list backupset of database database;

exit;

EOF

fi

#备份整个数据库

if [ $1 = "full" ]

then

echo "`date +%Y-%m-%d_%H:%M:%S`开始备份${DataBase}数据库">>${LOG_TARGET}/${LogDate}.log

rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

run {

allocate channel dev1 type disk;

backup

full

format "${BACKUP_TARGET}/%d_Full_s%s_t%t_p%p.bak"

(database);

}

exit;

EOF

echo "`date+%Y-%m-%d_%H:%M:%S`${DataBase}数据库备份结束" >>${LOG_TARGET}/${LogDate}.log

echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

fi

#备份归档日志并删除

#if [ $1 = "arclog" ]

#then

#echo "`date +%Y-%m-%d_%H:%M:%S`开始备份归档日志">>${LOG_TARGET}/${LogDate}.log

#rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

# run {

# allocate channel dev1 type disk;

# backup

# format"${ARCLOG_TARGET}/ARCLOG_s%s_t%t_p%p.bak"

# (archivelog all delete input);

# }

# exit;

#EOF

# echo "`date +%Y-%m-%d_%H:%M:%S`备份归档日志结束">>${LOG_TARGET}/${LogDate}.log

# echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

#fi

#恢复表空间

#if [ $1 = "recoverts" ]

#then

#echo "`date +%Y-%m-%d_%H:%M:%S`开始恢复表空间">>${LOG_TARGET}/${LogDate}.log

#rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

# run {

# allocate channel dev1 type disk;

# sql "alter tablespace ${TABLESPACE}offline immediate";

# restore tablespace ${TABLESPACE};

# recover tablespace ${TABLESPACE};

# sql "alter tablespace ${TABLESPACE}online";

# }

# exit;

#EOF

# echo "`date +%Y-%m-%d_%H:%M:%S`恢复表空间结束">>${LOG_TARGET}/${LogDate}.log

# echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

#fi

#恢复数据库

#if [ $1 = "recoverdb" ]

#then

#echo "`date +%Y-%m-%d_%H:%M:%S`开始恢复数据库">>${LOG_TARGET}/${LogDate}.log

#rman target $User/$Psw@$DataBase catalog$RmanUser/$RmanPsw@$RmanDB <<-EOF >>${LOG_TARGET}/${LogDate}.log

# run {

# allocate channel dev1 type disk;

# sql "alter tablespace ${TABLESPACE}offline immediate";

# restore tablespace ${TABLESPACE}

# recover tablespace ${TABLESPACE}

# sql "alter tablespace ${TABLESPACE}online";

# }

# exit;

#EOF

# echo "`date +%Y-%m-%d_%H:%M:%S`恢复数据库结束">>${LOG_TARGET}/${LogDate}.log

# echo"TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT">>${LOG_TARGET}/${LogDate}.log

#fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值