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/。这样的好处是节省复制备份时间。
2、2:创建用户,需要和原库的用户id和名称一致需要和原库用户一致。[root@localhost backup]# groupadd -g 1010 oinstall[root@localhost backup]# groupadd -g 1011 dba[root@localhost backup]# useradd -m -g oinstall -G dba -u 500 oracle
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: 选择哪个备份呢选择删除表时间之前的备份
5、5:复制密码文件和pfile文件[oracle@db1 dbs]$ cp orapworcl1 /DBbak/240/back/[oracle@db1 ~]$ cp 240.pfile /DBbak/240/back/240服务器上修改密码文件名称[oracle@node ~]$ cd /oradata/240/back/[oracle@node back]$ ls240.pfile orapworcl1[oracle@node back]$ cp orapworcl1 /home/oracle/u01/app/oracle/product/11.2.0/db_1/dbs/[oracle@node back]$ cd /home/oracle/u01/app/oracle/product/11.2.0/db_1/dbs/[oracle@node dbs]$ lsinit.ora orapworcl1[oracle@node dbs]$ mv orapworcl1 orapworcl[oracle@node dbs]$ lsinit.ora orapworcl[oracle@node dbs]$密码文件必须是特殊名称,且必须放在特殊目录
6、6:启动SQL争犸禀淫> startup nomount pfile=/oradata/240/back/240.pfile;ORA-16032: parameter LOG_帆歌达缒ARCHIVE_DEST destination string cannot be translatedORA-07286: sksagdi: cannot obtain device information.Linux-x86_64 Error: 2: No such file or directory把LOG_ARCHIVE_DEST去除之后启动正常SQL> startup nomount pfile=/oradata/240/back/240.pfile;ORACLE instance started.Total System Global Area 4175568896 bytesFixed Size 2234960 bytesVariable Size 1828718000 bytesDatabase Buffers 2332033024 bytesRedo Buffers 12582912 bytes参数文件/oradata/240/back/240.pfile:orcl.__java_pool_size=16777216orcl.__large_pool_size=16777216orcl.__oracle_base='/home/oracle/u01/app/oracle'#ORACLE_BASE set from environmentorcl.__pga_aggregate_target=1073741824orcl.__sga_target=4194304000orcl.__shared_io_pool_size=0orcl.__shared_pool_size=1778384896orcl.__streams_pool_size=16777216*.audit_file_dest='/home/oracle/u01/app/oracle/admin/orcl/adump'*.audit_trail='NONE'*.compatible='11.2.0.0.0'*.control_files='/oradata/240/oradata/control01.ctl'*.db_block_size=8192*.db_domain=''*.db_name='orcl'*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'*.open_cursors=300*.pga_aggregate_target=1073741824*.processes=1500*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1655*.sga_target=4194304000*.undo_tablespace='UNDOTBS1'内存设置大小根据服务器设置
7、7:还原控制文件RMAN> restore controlfile from '/oradata/backup/oracle/orcl/ctlbackup/CTLBAK_ORCL_20150830_6552_1';Starting restore at 09-SEP-15using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=2186 device type=DISKchannel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:07output file name=/oradata/240/oradata/control01.ctlFinished restore at 09-SEP-15启动到mount之后,这时可以看到归档已经开了
8、8:catalog 全备crosscheck backupset; 扫描由于在原库服务器上挂载目录是/DBbak,必须在240上设置挂载目录不一致。否则在还原的时观锻娜叼候会找最新的备份。因为我们不知道表删除的具体时间,最好排除最新的备份。240服务器上挂载目录不一致,这样备份就都无效,我们来手动制定备份集。delete expired backupset;删除失效备份重新扫描之后没有了。catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6537_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6538_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6539_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6540_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6541_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6542_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6543_1';catalog backuppiece '/oradata/backup/oracle/orcl/fullbackup/FULLBAK_ORCL_20150830_6544_1';
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
11、11:删除多余日志文件select 'alter database drop logfile group '||group#||' ;' from v$logfile;最后会自动留下两组ORA-01567: dropping log 36 would leave less than 2 log files for instance orclMember名称无法确定,只能先增加然后再删除。
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;