存储 频道

征文:模拟Oracle基于TSM恢复实验

  【IT168 资讯】本文模拟了三种情况(spfile、controlfile、datafile丢失)下Oracle基于TSM恢复过程。所有实验都是在没有catalog和没有磁带库的情况下做的。做的是filepool的存储!其中有些情况的恢复过程并没有完全解决,写在这里供大家参考并希望得到大家的意见。

实验一:

  步骤:

  1.我在rman中没有设置controlfile autobackup 时做了一次。

run
{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
sql 'alter system switch logfile';
sql 'alter system switch logfile';
sql 'alter system switch logfile';
backup database ;
backup archivelog all delete input;
release channel t1;
}

  2.并在数据库中操作后shutdown,再删除datafile,并把数据启动到mount状态

run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore database;
recover database;
release channel t1;
}

  这样完全恢复成功,数据也在我操作后的。

实验二

  1.基于TSM做了一次rman的full backup(注:没开自动backup控制文件,db_name=orcl)

  2.我在表中做了些控制后,并修改controlfile autobackup 为ON)

  3.接着做了个基于TSM的做了个rman的零级备份

  4.下面我就模拟故障把所有文件删除了(除pfile和spfile没有删除)

  现在我把数据库启到nomount状态

执行
run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore controlfile from autobackup;
release channel t1;
}
RMAN-06172: 没有找到自动备份或指定的句柄不是有效副本或片段
好像在恢复controlfile前要做
set DBID=********* (可在这样的情况下怎么查DBID 啊!? )

实验三

  1.在数据orcl所有文件都删除后,无法恢复的情况下。我切换到数据库orcltest上.

  2.设置orcltest数据为archivelog归档状态

  3.并在没有catalog的情况下备份controlfile

c:\rman target/
rman>run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
backup current controlfile;
release channel t1;
}

  4.再把数据shutdown immediate,并仅删除3个controlfile。

rman>startup nomount
ramn>set dbid=2425530295
rman>run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore controlfile from autobackup;
release channel t1;
}
RMAN-06172: 没有找到自动备份或指定的句柄不是有效副本或片段

  分析:刚刚我在数据库orcltest中通过rman备份了control,可为什么就恢复不了控制文件!?

  TSM-Server端的服务器连接、设备类、存储池、策略域、节点都是正确的,且空间也是够了的。

  以上是我的步骤,还希望各位大侠指教。

0
相关文章