storage@NBU 异机恢复ORACLE基本步骤1、在主备份服务器上创建文件:#mkdir /usr/openv/netbackup/db/altnames#touch /usr/openv/netbackup/db/altnames/No.Restrictions注意文件名称中的大小写2、在需要恢复的主机上安装好ORACLE数据库以及NBU软件(包括Client 端软件以及Oracle agent软件),并且创建一个Oracle用户,注意该用户的名称和所属的组都要和原备份主机上的用户一致。
(本文档假设用户名为oracle)注意在此步骤中最好将原主机上创建过的一些文件目录或系统都创建好,需要mount好的文件系统也挂接好。
注意各文件系统以及创建目录的属性,将属主都更改为Oracle用户。
另外如果可能,最好将原主机上的oracle用户的.profile文件拷贝到当前oracle用户的主目录下。
3、通过NBU将原主机上备份的controlfile文件恢复到新主机上的指定位置(可以检查init<SID>.ora文件来确定文件位置)通过使用NBU的图形界面,可将controlifle恢复到新主机的指定位置上。
4、在新主机上启动数据库:#su - oracle$sqlplus "/as sysdba"sql>shutdown immediate;sql>startup mount;sql>exit;storage@5、使用nocatalog方式连接到目标数据库并执行恢复语句:#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>restore database;3>release channel ch00;4>}RMAN>exit对数据库进行recover恢复,并启动数据库。
注意在做此步骤前,要先检查原主机上是否有没有备份的archive log,如果有则拷贝到新的主机上。
#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>recover database;3>release channel ch00;4>}RMAN>alter database open resetlogs;RMAN>exit6、在数据库恢复完毕后,立刻对新的数据库进行一次全备份操作7、本文档的例子都是使用nocatalog方式。
如果用户是使用catalog方式,则需要注意两点:a、数据库连接方式不同。
使用catalog方式的时候,需要使用语句rman target / rcvcat [catalog库的监听器]来进行数据库的连接b、恢复controlfile的方式不同,通过如下脚本恢复:1、确保数据库已经停止,然后将数据库启动到nomount状态:#su - oracle$sqlplus "/as sysdba"sql>shutdown immediate;sql>startup nomount;sql>exit;storage@2、连接到catalog库,进行controlfile的恢复#su - oracle$rman target / rcvcat [catalog库的监听器]RMAN>run {1>allocate channel ch00 type 'sbt_tape';2>restore controlfile;3>release channel ch00;4>}RMAN>exit3、对数据库进行recover恢复,并启动数据库#su - oracle$rman target / rcvcat [catalog库的监听器]RMAN> alter database mount;RMAN>run {1>allocate channel ch00 type 'sbt_tape';2>recover database;3>release channel ch00;4>}RMAN>alter database open resetlogs;RMAN>exitstorage@附录:一些特殊情况下的恢复a、恢复后的数据库中库文件位置和原位置不同,或名称不同run {set newname for datafile 1 to '/data/data1.dbf';set newname for datafile 2 to '/data/data2.dbf';…restore database;switch datafile all;recover database;sql 'alter database open resetlogs';}通过使用set … for ..to语句将原库文件名称修改为新的库文件名称。
b、如果确认全部archive log都已用完,而recover仍提示需下一个archive log,或alter database openresetlogs时提示datafile1 need recover,可采用以下步骤#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2> recover database using backup controlfile until cancel;3>release channel ch00;4>}在脚本运行过程中根据提示,输入cancel <回车>脚本运行结束后使用命令alter database open resetlogs;启动数据库c、如果不是恢复到最新,而是恢复到某一时刻,rman脚本如下#su – oracle$rman target / nocatalogrun {allocate channel t1 type 'sbt_tape';set until time "to_date('06/30/02 13:00:00','MM/DD/YY HH24:MI:SS')"restore database;recover database;sql 'alter database open resetlogs';}d、恢复单个的数据文件:1、确保数据库已经停止,然后将数据库启动到mount状态:#su - oracle$sqlplus "/as sysdba"storage@sql>shutdown immediate;sql>startup mount;sql>exit;2、连接到catalog库,进行datafile的恢复#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>restore datafile ‘具体的datafile名称’;3>release channel ch00;4>}RMAN>exit3、对数据文件进行recover恢复,并启动数据库#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>recover datafile ‘具体的datafile名称’;3>release channel ch00;4>}RMAN>alter database open ;RMAN>exite、恢复单独的tablespace1、确保数据库已经停止,然后将数据库启动到mount状态:#su - oracle$sqlplus "/as sysdba"sql>shutdown immediate;sql>startup mount;sql>exit;2、连接到catalog库,进行tablespace的恢复#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>restore tablespace ‘具体的tablespace名称’;3>release channel ch00;4>}storage@RMAN>exit3、对数据表空间进行recover恢复,并启动数据库#su - oracle$rman target / nocatalogRMAN>run {1>allocate channel ch00 type 'sbt_tape';2>recover tablespace ‘具体的datafile名称’;3>release channel ch00;4>}RMAN>alter database open ;RMAN>exit。