原文:http://space.itpub.net/189512/viewspace-701939
背景
A机上运行Oracle 10.2.0.4,使用TSM for database5.5.1对oracle进行了full db备份,包含了归档日志。
B机上安装了Oracle 10.2.0.4代码。希望将A的数据库恢复到B上,因为A机硬件出现了问题。安装TSM for database 5.5.1,使用相同的tsm nodename,例如为dpo。
1、无spfile,无控制文件,最典型的就是不能启动数据库
2、利用TSM的备份首先恢复spfile。
使用此命令可以查看TSM备份空间里的oracle控制文件名称
dsmadmc> select node_name,ll_name from backups where node_name=’dpo’
凡是C开头的即时控制文件,可以找到数字最高的文件(最近)文件做恢复;
3、进入rman命令行
rman target /
Rman> shutdown immediate;
Rman> startup nomount;
Rman> set dbid=1367687269
注:dbid可以从A机v$database视图中发现
Rman> run {
Allocate channel d1 type ‘stb_tape’ parms ’ENV=(TDPO_OPTFILE=/usr/Tivoli/tsm/client/api/bin64/tdpo.opt)’ ;
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE sbt_tape TO ‘%F’;
Restore spfile from ‘c-xxxxxx’;
}
RMAN> shutdown immediate;
Rman> quit
4、当spfile恢复后,用此spfile重新启动
5、如果是在新的机器上做1级恢复,则可能因为目录结构的缺失报错。
主要是2个主目录在$ORACLE_HOME下需要补充完整
5.1 主目录/u01/app/admin下的instance/Xdump
$cd /u01/app/admin
$ mkdir –pinstance_name/adumpinstance_name/bdumpinstance_name/cdumpinstance_name/udump
5.2另一个主目录是datafile所在目录
/u01/app/oracle/dbs/下的
$ mkdirinstance_name
(Av$datafile视图中可以查询)select name from v$datafile;
6、现在恢复控制文件
Rman> startup nomount;
Rman> run {
Allocate channel d1 type ‘stb_tape’ parms ’ENV=(TDPO_OPTFILE=/usr/Tivoli/tsm/client/api/bin64/tdpo.opt)’ ;
Rman> restore controlfile from ‘cxxxxxxxxxxxxxx’
Rman> }
Rman> quit
7、恢复控制文件后,shudown,然后重新到nomount状态还原数据库数据文件
Sql> startup nomount;
还原数据文件
Rman> run {
Allocate channel d1 type ‘stb_tape’ parms ’ENV=(TDPO_OPTFILE=/usr/Tivoli/tsm/client/api/bin64/tdpo.opt)’ ;
Restore database;
Release channel d1;
}
8、恢复数据库
Rman> run {
Allocate channel d1 type ‘stb_tape’ parms ’ENV=(TDPO_OPTFILE=/usr/Tivoli/tsm/client/api/bin64/tdpo.opt)’ ;
recover database;
Release channel d1;
}
Rman> quit
(恢复的时候会报RMAN-06054,media recovery……unkown log…thread 1 sequence 33….)
9、需要resetlog
Sql> recover database using backup controlfile until cancel;
Prompt的时候再输入:cancel
Sql> alter database open resetlogs;
(如果使用备份的controlfile恢复则一定要做resetlogs一步)
B机恢复完成,可以正常使用了。
run
{
allocate channel t1 device type 'sbt' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
restore controlfile;
alter database mount;
restore database;
recover database;
release channel d1;
release channel d2;
sql "alter database open resetlogs";
release channel t1;
}
run{
allocate channel t1 device type 'sbt' parms 'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore database;
release channel t1;
}