用TSM在异机恢复Oracle

原文: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;
}

 

你可能感兴趣的:(thread,oracle,sql,数据库,database)