rac 恢复到单实例
1、1:存储选择 机房中没有干净的存储。由于其他存储已经nfs挂载到其他服务器中。而nfs默认挂载会锁定存储。而原库中的172.17.214.50正好只有db1这台服务器用来rman备份数据库用。首先用 fuser –m –v /DBbak 查看哪些进程使用这个目录。发现没有后直接卸载 umount /DBbak,然后重新挂载mount –t nfs –o nolock 172.17.214.50:/vol/a/bak /DBbak。172.17.214.240服务器同样用服务器挂载 mount -t nfs -o nolock 172.17.214.50:/vol/a/bak /oradata/。这样的好处是节省复制备份时间。

3、3:创建dump目录mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/adumpmkdir -p $ORACLE_BASE/admin/$ORACLE_SID/dpdumpmkdir -p $ORACLE_BASE/admin/$ORACLE_SID/hdumpmkdir -p $ORACLE_BASE/admin/$ORACLE_SID/pfilemkdir -p $ORACLE_BASE/admin/$ORACLE_SID/scripts
4、4: 选择哪个备份呢选择删除表时间之前的备份



9、9:还原数据文件select file_name,file_id,'set newname for datafile '||file_id||' to '''||replace(file_name,'+DATA/orclrestore/datafile/','/oradata/240/oradata/')||''' ;'from dba_data_files order by file_id;连接到原库run{allocate channel d1 type disk;allocate channel d2 type disk;allocate channel d3 type disk;allocate channel d4 type disk;allocate channel d5 type disk;allocate channel d6 type disk;allocate channel d7 type disk;allocate channel d8 type disk;set newname for datafile 1 to '/oradata/240/oradata/system01.dbf' ;set newname for datafile 2 to '/oradata/240/oradata/sysaux01.dbf' ;。。。。。。。。set newname for datafile 73 to '/oradata/240/oradata/datafile68.dbf' ;restore database;switch datafile all;release channel d1;release channel d2;release channel d3;release channel d4;release channel d5;release channel d6;release channel d7;release channel d8;}有多少个备份就开多少个进程,加快速度

10、10:catalog归档备份并recover数据库catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6546_1';catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6547_1';catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6548_1';catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6549_1';catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6550_1';catalog backuppiece '/oradata/backup/oracle/orcl/archbackup/ARCHBAK_ORCL_20150830_6551_1';只需要到30号的就行。然后recover database


12、12:trace控制文件编辑文件 controlbk1.sqlCREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG MAXLOGFILES 40 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 19451LOGFILE GROUP 1 '/oradata/240/oradata/redo01.log' SIZE 20M BLOCKSIZE 512, GROUP 2 '/oradata/240/oradata/redo02.log' SIZE 20M BLOCKSIZE 512DATAFILE '/oradata/240/oradata/system01.dbf', '/oradata/240/oradata/sysaux01.dbf',。。。。。。。。。。。。。。。。 '/oradata/240/oradata/datafile68.dbf'CHARACTER SET ZHS16CGB231280;控制文件创建成功之后,数据库自动会被mount。启动数据库还是报错:ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabledDetails: ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled. Oracle bug, 4355382 ORA-38856: FAILED TO OPEN DATABASE WITH RESETLOGS WHEN USING RAC BACKUP, exists in the Oracle 10g release 2.0 that affects backups taken from a RAC database. The problem is related to the number of threads used by the source database and an expectation that the cloned database must have an identical number of threads.解决办法:给thread 2添加日志组,然后删除。ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 '/oradata/240/oradata/redo03.log' SIZE 10M REUSE;ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 '/oradata/240/oradata/redo04.log' SIZE 10M REUSE;SQL> alter database open resetlogs;SQL> alter database disable thread 2;SQL> alter database drop logfile group 3;SQL> alter database drop logfile group 4;

