define path tsm drv1 srctype=server desttype=drive library=lib3582 device=/dev/rmt1>
5定义设备类
define devclass lto2dev library=lib3582 devtype=lto
6 检入库卷
label libvolume lib3582 search=yes checkin=scratch LABELSource=Barcode
OVERWRITE=yes VOLRange=zy9580,zy9599
7 定义TSM DB卷,并扩展
define dbvolume /usr/tivoli/tsm/server/db1.dsm f=500
extend db 500
8 定义 TSM LOG卷,并扩展
define logvolume /usr/tivoli/tsm/server/log1.dsm f=256
extend log 500
9 定义存储池
define stgpool P5_FS_POOL lto2dev maxscratch=0
define volume P5_FS_POOL zy9582
define volume P5_FS_POOL zy9583
define stgpool P5_ORA_POOL lto2dev maxscratch=0
define volume P5_ORA_POOL zy9595
define volume P5_ORA_POOL zy9596
define volume P5_ORA_POOL zy9597
define volume P5_ORA_POOL zy9598
define volume P5_ORA_POOL zy9599
10 定义策略域
define domain P5_FS_DOMAIN
define policyset P5_FS_DOMAIN P5_FS_SET
define mgmtclass P5_FS_DOMAIN P5_FS_SET P5_FS_CLASS
define copygroup P5_FS_DOMAIN P5_FS_SET P5_FS_CLASS standard type=backu destination=P5_FS_POOL
assign defmgmtclass P5_FS_DOMAIN P5_FS_SET P5_FS_CLASS
activate policyset P5_FS_DOMAIN P5_FS_SET
define domain P5_ORA_DOMAIN
define policyset P5_ORA_DOMAIN P5_ORA_SET
define mgmtclass P5_ORA_DOMAIN P5_ORA_SET P5_ORA_CLASS
define copygroup P5_ORA_DOMAIN P5_ORA_SET P5_ORA_CLASS standard type=backu destination=P5_ORA_POOL VERExists=1 VERDeleted=0 RETExtra=0 RETOnly=0
assign defmgmtclass P5_ORA_DOMAIN P5_ORA_SET P5_ORA_CLASS
activate policyset P5_ORA_DOMAIN P5_ORA_SET
11 注册客户机
register node P570_FS p570_fs domain=P5_FS_DOMAIN backdelete=yes archdelete=yes passe=0
register node P550_FS p550_fs domain= P5_FS_DOMAIN backdelete=yes archdelete=yes passe=0
register node P570_TDPO p570_tdpo domain=P5_ORA_DOMAIN backdelete=yes archdelete=yes passe=0
register node P550_TDPO p550_tdpo domain= P5_ORA_DOMAIN backdelete=yes archdelete=yes passe=0
12 定义管理调度
DEFine SCHedule bkupdb Type=Administrative CMD='backup db type=full devclass=lto2dev volumenames=zy9580 scratch=no' ACTIVE=yes STARTTime=12:00:00
DEFine SCHedule delvolhist Type=Administrative CMD='DELete VOLHistory TODate=today-1 type=dbbackup' ACTIVE=Yes STARTTime=11:50:00
13 启动TSM 服务器
到/usr/tivoli/tsm/server/bin
nohup dsmserv&
3.2 配置TSM 客户端
1 修改环境标量
在TSM Client的.profile文件增加如下内容:
export DSM_DIR=/opt/tivoli/tsm/client/ba/bin
export DSM_CONFIG=/opt/tivoli/tsm/client/ba/bin/dsm.opt
export DSM_LOG=/opt/tivoli/tsm/client/ba/bin
export DSMI_CONFIG=/opt/tivoli/tsm/client/api/bin64/dsm.opt
export DSMI_DIR=/opt/tivoli/tsm/client/api/bin64
export DSMI_LOG=/opt/tivoli/tsm/client/api/bin64
2修改/usr/tivoli/tsm/client/ba/bin 目录下的dsm.opt 以及dsm.sys 文件如下
dsm.opt
dsm.sys
3 用命令dsmc 启动命令行客户机,连接TSM 服务器看是否成功
3.3 配置ORACLE TDP
1修改tdpo.opt 如下:
2 修改/usr/tivoli/tsm/client/api/bin64 目录下的dsm.opt 以及dsm.sys 文件如下:
dsm.opt
dsm.sys
3 生成密码文件
tdpoconf password –tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt
4. 链接libobk.a
ln –s /usr/lib/libobk.a $ORACLE_HOME/lib64/libobk.a
链接完后重新启动数据库
5 sbttest 测试是否TDP和ORACLE 链接成功
$ORACLE_HOME/bin/sbttest test
6 安装Catalog 数据库
6.1为恢复目录单独创建表空间catalog_tbs,
6.2创建恢复目录用户
CREATE USER rman IDENTIFIED BY rman DEFAULT TABLESPACE catalog_tbs;
6.3 为用户rcat_user 赋予角色
GRANT connect,resource,recovery_catalog_owner TO rman;
6.4 使用RMAN 连接恢复目录
RMAN catalog=rman/rman@rman9i
6.5 在RMAN 提示符下创建catalog
create catalog tablespace catalog_tbs;
6.5 使用RMAN 同时连接目标数据和恢复目录
set ORACLE_SID=nc31
RMAN target / catalog=rman/rman@rman9i
6.6使用恢复目录注册数据库
RMAN>Register database;
7.如果sbttest 不成功 需要执行这一步
7.1添加errorlogname /oracle/mytdpo.log 到DSMI_DIR下的 dsm.sys文件
7.2重新运行tdpo password 命令生成密码
7.3进入/oracle 目录确认生成了mytdpo.log 文件
7.4更改mytdpo.log 的权限,
chmod 666 /oracle/mytdpo.log
chown oracle:dba /oracle/mytdpo.log
3.4 配置SAN Agent
1 修改/usr/tivoli/tsm/StorageAgent/bin/dsmsta.opt 增加一行
DEVCONFIG devconfig.out
2 使用如下命令
dsmsta setstorageserver myname=storagent mypassword=storagent myhladdress=172.16.1.12 servername=tsm serverpassword=tsm hladdress=172.16.1.21 lladdress=1500
这条命令在devconfig.txt 文件产生如下行:
这条命令在dsmsta.opt 产生如下行:
SERVERNAME TSM
3 在TSM server 上发出如下命令
set servername TSM
set serverpassword tsm
set serverhladdress 172.16.1.21
set serverlladdress 1500
set crossdefine on
设置完可以用q status 查看结果
4 在TSM server 上为san agent 定义服务器
define server storagnt serverpassword=storagnt hladdress=172.16.1.12 lladdress=1500 validateprotocol=all
6 在TSMserver 上定义源服务器为storagnt 的驱动器路径
define path storagnt drv0 srctype=server desttype=drive library=lib3582 device=/dev/rmt0
define path storagnt drv1 srctype=server desttype=drive library=lib3582 device=/dev/rmt1
7 为启用lan-free 修改客户机的dsm.sys 文件增加
LANFREECOMMMETHOD TCPIP
LANFREECOMMMETHOD SHAREDMEM
LANFREETCPPORT 1500
LANFREESHMPORT 1510
enablelanfree yes
8 启动san agent
nohup dsmsta&
四、TSM 策略域,存储池配置列表
4.1 策略域概要配置
| Policy Domain Name |
Policy Set |
Management Class |
Default (Y/N) |
Backup Copy Group |
Archive Copy Group |
Storage Pool |
| P5_FS_DOMAIN |
standard |
standard |
Y |
standard |
standard |
P5_FS_POOL |
| P5_ORA_DOMAIN |
standard |
standard |
Y |
standard |
standard |
P5_ORA_POOL |
| |
|
|
|
|
|
|
4.2 策略域详细配置
| 策略域: P5_FS_DOMAIN |
| 备份副本组 |
| Type |
BACKUP |
副本组的类型是备份. |
| DESTINATION |
P5_FS_POOL |
目标存储池是(请参考存储池定义表). |
| FREQUENCY |
0 |
可以立即备份刚刚备份过的文件 |
| VEREXISTS |
2 |
在客户机文件系统上存在的文件最多保留的2个备份版本 |
| VERDELETED |
1 |
在客户机文件系统上不存在的文件最多保留的1个备份版本 |
| RETEXTRA |
30 |
当备份版本到期后30天删除. |
| RETONLY |
60 |
从客户机上删除的文件保留最新的版本60天 |
| MODE |
Absolute |
不管上次备份的文件是否改变都进行备份 |
| SERIALIZATION |
Static |
备份没有正在被修改文件并仅尝试一次 |
| 策略域: P5_ORA_DOMAIN |
| 备份副本组 |
| Type |
BACKUP |
副本组的类型是备份. |
| DESTINATION |
P5_ORA_POOL |
目标存储池是(请参考存储池定义表). |
| FREQUENCY |
0 |
可以立即备份刚刚备份过的文件 |
| VEREXISTS |
1 |
在客户机文件系统上存在的文件最多保留的2个备份版本 |
| VERDELETED |
0 |
在客户机文件系统上不存在的文件最多保留的1个备份版本 |
| RETEXTRA |
0 |
当备份版本到期后立即删除. |
| RETONLY |
0 |
从客户机上删除的文件保留最新的版本60天 |
| MODE |
Absolute |
不管上次备份的文件是否改变都进行备份 |
| SERIALIZATION |
Static |
备份没有正在被修改文件并仅尝试一次 |
4.3节点配置
|
Node name
|
password
|
Policy domain
|
note
|
| P550_FS |
p550_fs |
P5_FS_DOMAIN |
550文件系统备份 |
| P550_TDPO |
p550_tdpo |
P5_ORA_DOMAIN |
550 Oracle备份 |
| P570_FS |
p570_fs |
P5_FS_DOMAIN |
570文件系统备份 |
| P570_TDPO |
p570_tdpo |
P5_ORA_DOMAIN |
570 Oracle备份 |
4.4存储池配置
|
POOL name
|
VOLUME
|
| P5_FS_POOL |
ZY9582,ZY9583 |
| P5_ORA_POOL |
ZY9595,ZY9596,ZY9597,ZY9598,ZY9599 |
五、Oracle 备份策略,调度和备份脚本
5.1 备份策略和调度
每周日凌晨1点增量0 备份,周4 凌晨1点增量1备份,周一,二,三,五,六凌晨1点做增量2备份 。每天每隔4个小时做一次归档日志的备份。
每天凌晨5点删除15天以前的归档,每天凌晨6点删除15天前的DB备份。
查看oracle 用户的调度 crontab –l
0 1 * * 0 /oracle/rmanscript/incr0.sh &
0 1 * * 4 /oracle/rmanscript/incr1.sh &
0 1 * * 1,2,3,5,6 /oracle/rmanscript/incr2.sh &
0 5 * * * /oracle/rmanscript/dele_arch.sh &
0 6 * * * /oracle/rmanscript/dele_tape.sh &
0 4,8,12,16,20 * * * /oracle/rmanscript/arch.sh &
5.2 备份脚本
5.2.1 incr0.sh 增量0备份
. /oracle/.profile
target='target /'
rcvcat='catalog rman/rman@rman9i'
# Get the current time for constructing a fairly unique filename in /tmp:
time=`date '+%m%d%H'`
# Construct filenames using $time for uniqueness:
cmdfile=/oracle/rmanscript/log/incr0_$time.rcv
msglog=/oracle/rmanscript/log/incr0_$time.log
cat <<EOF >$cmdfile
run{
allocate channel sbt1 type 'SBT_TAPE';
resync catalog;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1);
backup
format 'cf_%s_%p'
(current controlfile);
backup
incremental level 0
filesperset 10
tag 'incr_level_0'
format 'incr0_%u_%p_%c'
database;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1)
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
5.2.2 incr1.sh 增量1备份
. /oracle/.profile
target='target /'
rcvcat='catalog rman/rman@rman9i'
# Get the current time for constructing a fairly unique filename in /tmp:
time=`date '+%m%d%H'`
# Construct filenames using $time for uniqueness:
cmdfile=/oracle/rmanscript/log/incr1_$time.rcv
msglog=/oracle/rmanscript/log/incr1_$time.log
cat <<EOF >$cmdfile
run{
allocate channel sbt1 type 'SBT_TAPE';
resync catalog;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1);
backup
format 'cf_%s_%p'
(current controlfile);
backup
incremental level 1
filesperset 10
tag 'incr_level_1'
format 'incr1_%u_%p_%c'
database;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1);
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
5.2.3 incr2.sh 增量2备份
. /oracle/.profile
target='target /'
rcvcat='catalog rman/rman@rman9i'
# Get the current time for constructing a fairly unique filename in /tmp:
time=`date '+%m%d%H'`
# Construct filenames using $time for uniqueness:
cmdfile=/oracle/rmanscript/log/incr2_$time.rcv
msglog=/oracle/rmanscript/log/incr2_$time.log
cat <<EOF >$cmdfile
run{
allocate channel sbt1 type 'SBT_TAPE';
resync catalog;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1);
backup
format 'cf_%s_%p'
(current controlfile);
backup
incremental level 2
filesperset 10
tag 'incr_level_2'
format 'incr2_%u_%p_%c'
database;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1)
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
5.2.4 arch.sh 归档日志备份
. /oracle/.profile
target='target /'
rcvcat='rcvcat rman/rman@rman9i'
# Get the current time for constructing a fairly unique filename in /tmp:
time=`date '+%m%d%H'`
# Construct filenames using $time for uniqueness:
cmdfile=/oracle/rmanscript/log/arch_$time.rcv
msglog=/oracle/rmanscript/log/arch_$time.log
cat <<EOF >$cmdfile
run{
allocate channel sbt1 type 'SBT_TAPE' ;
resync catalog;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'arch_%s_%p'
(archivelog like '/oradata/archivelog/%' delete input channel sbt1);
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
5.2.5 del_arch.sh定期删除归档日志备份
# Initialize default connect string variables:
. /oracle/.profile
target='target /'
rcvcat='rcvcat rman/rman@rman9i'
time=`date '+%m%d%H'`
# Initialize filenames:
obsolete_tape=/oracle/rmanscript/log/arch_tape_$time.log # list of obsolete tape backups
cmdfile=/oracle/rmanscript/log/delete_arch$time.cmd # the generated RMAN commmand script
delete_log=/oracle/rmanscript/log/deleted_arch_$time.log # execution log from generated script
# Get a list of obsolete tape files:
rman msgno $target $catalog msglog $obsolete_tape << EOF > /dev/null
list backup of archivelog until time 'sysdate-15';
exit;
EOF
# sed actions:
del_bpiece="-e /AVAILABLE/ s/\(.* \)\(.*\)$/change backuppiece '\2' delete;/"
#echo "allocate channel for delete type 'sbt_tape' ;" > $cmdfile
grep AVAILABLE $obsolete_tape | sed "$del_bpiece" >> $cmdfile
echo "release channel;" >> $cmdfile
#
# Execute the RMAN command file to delete the obsolete files:
#
rman msgno $target $rcvcat msglog $delete_log cmdfile $cmdfile
exit
5.2.6 del_tape.sh 定期删除数据库备份
# Initialize default connect string variables:
. /oracle/.profile
target='target /'
rcvcat='catalog rman/rman@rman9i'
time=`date '+%m%d%H'`
# Initialize filenames:
obsolete_tape=/oracle/rmanscript/log/ob_tape_$time.log # list of obsolete tape backups
cmdfile=/oracle/rmanscript/log/delete$time.cmd # the generated RMAN commmand script
delete_log=/oracle/rmanscript/log/deleted_$time.log # execution log from generated script
# Get a list of obsolete tape files:
rman msgno $target $catalog msglog $obsolete_tape << EOF > /dev/null
report obsolete redundancy=1 until time 'sysdate-15' device type 'sbt_tape';
#report obsolete device type 'sbt_tape';
exit;
EOF
# sed actions:
del_bpiece="-e /RMAN-06285/ s/\(.* \)\(.*\)$/change backuppiece '\2' delete;/"
echo "allocate channel for delete type 'sbt_tape' ;" > $cmdfile
grep RMAN-06285 $obsolete_tape | sed "$del_bpiece" >> $cmdfile
echo "release channel;" >> $cmdfile
#
# Execute the RMAN command file to delete the obsolete files:
#
rman msgno $target $rcvcat msglog $delete_log cmdfile $cmdfile
exit
六 FAQ
1. 如何启动和停止TSM 服务器
方法一:
启动:进入/usr/tivoli/tsm/server/bin 目录
输入命令 dsmserv
停止:在dsmserv 的提示符TSM:TSM>下
输入halt
方法二:
启动:进入/usr/tivoli/tsm/server/bin目录
输入命令 nohup dsmserv&
停止:ps –ef | grep dsm 查看dsmserv 的进程号
kill 进程号
tail –f nohup.out 查看日志
当机器重新启动时,TSM 服务器依靠
/etc/inittab 中的
自动启动
2 如何启动管理命令行接口
直接在系统提示符下输入
dsmadmc
提示输入user id : 这里为admin
提示输入password 这里为 admin
然后进入TSM 管理命令行
若要更改admin的password
输入:update admin admin newpassword
3如何启动WEB管理接口
打开IE ,输入http://172.16.1.21:8041/ibm/console
用户名:iscadmin
口令 :password
如果打开页面无效
进入/opt/IBM/ISC/PortalServer/bin 输入startISC.sh ISC_Portal
4 如何进行文件系统的备份
直接在系统提示符下输入命令如:
备份/usr 目录及下面的子目录dsmc sel /usr/ -subdir=yes
单独备份/etc/host 文件 dsmc sel /etc/host
5 如何查看备份
oracle连接rman
rman target / catalog rman/rman@rman9i
5.1概述可用的备份
RMAN>list backup summary;
B 表示 backup
F 表示 FULL
A 表示 archive log
0 1 表示 incremental backup
5.2按备份类型列出备份
RMAN>list backup by file;
按照 数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份 列出
5.3列出详细备份
RMAN>list backup;
5.4列出表空间和数据文件备份
list backup of tablespace 和list backup of datafile 输出和list backup 相似 如:list backup of tablespace user_tbs;
list backup of datafile 3;
5.5列出归档日志备份
RMAN>list archivelog all; 简要信息
RMAN>list backup of archivelog all; 详细信息
5.6列出控制文件和服务器参数文件
RMAN>list backup of controfile;
RMAN>list backup of spfile;
6如何进行数据库故障恢复
如果安装配置了OEM 可以使用恢复向导进行恢复
步骤
1 startup mount
2 restore database
3 recover database
4 alter database open resetlogs
7 如何查看RMAN备份日志验证是否备份成功。
rman 的备份日志放在/oracle/rmanscript/log 目录下,
根据时间以及备份级别命名
incr0_110915.log 表示11月9号15时做的增量0 备份
查看日志
如果日志结尾为
Recovery Manager complete.
表示该级别的备份成功
如果日志包含如下:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
表示有错误 需要更正。
七 恢复
当数据库出现故障 需要进行恢复,运行脚本restore.sh
su – oracle
cd /rmanscript
./restore.sh
还原结束后,查看还原日志,看是否成功
日志位于/oracle/rmanscript/log 目录下
日志示例:
Recovery Manager: Release 9.2.0.6.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database (not started)
connected to recovery catalog database
RMAN> startup nomount;
2> run
3> {
4> allocate channel sbt1 type 'sbt_tape';
5> restore controlfile;
6> alter database mount;
7> restore database;
8> recover database;
9> alter database open resetlogs;
10> release channel sbt1;
11> }
12>
Oracle instance started
Total System Global Area 320308816 bytes
Fixed Size 742992 bytes
Variable Size 285212672 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
allocated channel: sbt1
channel sbt1: sid=13 devtype=SBT_TAPE
channel sbt1: Tivoli Data Protection for Oracle: version 5.2.0.0
Starting restore at 10-NOV-05
channel sbt1: starting datafile backupset restore
channel sbt1: restoring controlfile
output filename=/oradata/oratest/control01.ctl
channel sbt1: restored backup piece 1
piece handle=oratestfull_03h3dd2p_1_1 tag=ORATEST_FULL params=NULL
channel sbt1: restore complete
replicating controlfile
input filename=/oradata/oratest/control01.ctl
output filename=/oradata/oratest/control02.ctl
output filename=/oradata/oratest/control03.ctl
Finished restore at 10-NOV-05
database mounted
Starting restore at 10-NOV-05
channel sbt1: starting datafile backupset restore
channel sbt1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /oradata/oratest/system01.dbf
restoring datafile 00003 to /oradata/oratest/cwmlite01.dbf
restoring datafile 00004 to /oradata/oratest/drsys01.dbf
restoring datafile 00008 to /oradata/oratest/tools01.dbf
restoring datafile 00011 to /oradata/oratest/NNC_DATA01.dbf
restoring datafile 00013 to /oradata/oratest/NNC_DATA03.dbf
restoring datafile 00015 to /oradata/oratest/NNC_INDEX02.dbf
channel sbt1: restored backup piece 1
piece handle=oratestfull_03h3dd2p_1_1 tag=ORATEST_FULL params=NULL
channel sbt1: restore complete
channel sbt1: starting datafile backupset restore
channel sbt1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to /oradata/oratest/undotbs01.dbf
restoring datafile 00005 to /oradata/oratest/example01.dbf
restoring datafile 00006 to /oradata/oratest/indx01.dbf
restoring datafile 00007 to /oradata/oratest/odm01.dbf
restoring datafile 00009 to /oradata/oratest/users01.dbf
restoring datafile 00010 to /oradata/oratest/xdb01.dbf
restoring datafile 00012 to /oradata/oratest/NNC_DATA02.dbf
restoring datafile 00014 to /oradata/oratest/NNC_INDEX01.dbf
restoring datafile 00016 to /oradata/oratest/NNC_INDEX03.dbf
channel sbt1: restored backup piece 1
piece handle=oratestfull_04h3dd3s_1_1 tag=ORATEST_FULL params=NULL
channel sbt1: restore complete
Finished restore at 10-NOV-05
Starting recover at 10-NOV-05
starting media recovery
archive log thread 1 sequence 4 is already on disk as file /oradata/oratest/redo03.log
archive log thread 1 sequence 5 is already on disk as file /oradata/oratest/redo01.log
archive log filename=/oradata/oratest/redo03.log thread=1 sequence=4
archive log filename=/oradata/oratest/redo01.log thread=1 sequence=5
media recovery complete
Finished recover at 10-NOV-05
database opened
new incarnation of database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
released channel: sbt1
Recovery Manager complete.
附录:还原测试
创建新库test ,导入数据从NC31
1. 还原之前先对数据库做一次备份
. /oracle/.profile
target='target sys/sys@test'
rcvcat='catalog rman/rman@rman9i'
# Get the current time for constructing a fairly unique filename in /tmp:
time=`date '+%m%d%H'`
# Construct filenames using $time for uniqueness:
cmdfile=/oracle/rmanscript/log/test_$time.rcv
msglog=/oracle/rmanscript/log/test_$time.log
cat <<EOF >$cmdfile
run{
allocate channel sbt1 type 'SBT_TAPE';
resync catalog;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'testarch_%s_%p'
(archivelog like '/oradata/testarchivelog/%' delete input channel sbt1);
backup
format 'testcf_%s_%p'
(current controlfile);
backup
full
filesperset 10
tag 'test_full'
format 'testfull_%u_%p_%c'
database;
sql 'alter system archive log current' ;
backup
filesperset 10
format 'testarch_%s_%p'
(archivelog like '/oradata/testarchivelog/%' delete input channel sbt1);
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
2.备份之前先验证数据
sqlplus sys/sys@test as sysdba
SQL> select count(*) from test.OM_JOB;
COUNT(*)
----------
1759
3.模拟数据库故障
shutdown immediate; 关闭数据库
重命名所有数据文件和控制文件
4.运行还原脚本
#before restore ,you must shutdown db
target='target sys/sys@test'
rcvcat='catalog rman/rman@rman9i'
time=`date '+%m%d%H'`
cmdfile=/oracle/rmanscript/log/restore_$time.rcv
msglog=/oracle/rmanscript/log/restore_$time.log
cat <<EOF >$cmdfile
startup nomount;
run
{
allocate channel sbt1 type 'sbt_tape';
restore controlfile;
alter database mount;
restore database;
recover database;
alter database open resetlogs;
release channel sbt1;
}
EOF
rman $target $rcvcat cmdfile $cmdfile msglog $msglog
exit
5. 还原结束验证数据
sqlplus sys/sys@test as sysdba
SQL> select count(*) from test.OM_JOB;
COUNT(*)
----------
1759