1 背景描述:
将RAC 某个表空间异机恢复至单实例,以检验数据的可用性。
1.1 RACDB数据库基本配置信息
主机 节点1: rac1 操作系统:LIUNX 6.5
节点2: rac2 操作系统:LIUNX 6.5
数据库版本 Oracle11.2.0.4 RAC
OS用户名/组 uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)
数据库名 yirupay
实例名 rac1
rac2
数据库字符集 AL32UTF8
数据文件存储方式 ASM
1.2 恢复目标机的情况:
主机 rac1 操作系统:LIUNX 6.5
数据库版本 Oracle11.2.0.4 单机
OS用户名/组 uid=501(oracle) gid=500(oinstall) groups=502(dba),503(oper)
数据库名 rac
实例名 rac1
数据库字符集 AL32UTF8
数据文件存储方式 FS
2 恢复的相关信息:
2.1 确认备份的脚本是否正确备份
3 恢复的详细步骤
开始恢复:
3.1 在目标机上安装数据库软件,以及创建相应的目录
3.2 通过RMAN恢复spfile
rman target /
RMAN> startup force nomount;
RMAN> restore spfile from '/home/oracle/bk/c-96561339-20160111-00';
3.3 在目标机上修改initRACDB.ora
登录到数据库,生成pfile文件,并编辑,删除与集群即节点2相关参数,修改控制文件及其他目录路径,并根据需求创建相应目录(如闪回区、oracle基础目录)
3.4、启动到 mount
RMAN>sql 'alter database mount';
sql statement: alter database mount
released channel: ORA_DISK_1
3.5 注册备份集
catalog backuppiece '/home/oracle/bk/arch_7nqqvstc_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/arch_7oqqvstd_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/arch_7pqqvste_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/arch_83qr2j1c_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/arch_84qr2j1c_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/c-96561339-20160111-00';
catalog backuppiece '/home/oracle/bk/full_0_7hqqvssk_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/full_0_7iqqvssk_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/full_0_7jqqvssm_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/full_0_7kqqvssp_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/full_0_7lqqvst0_1_1_YIRUPAY_20160110';
catalog backuppiece '/home/oracle/bk/full_1_7tqr2j0t_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/full_1_7uqr2j0t_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/full_1_7vqr2j0u_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/full_1_80qr2j0u_1_1_YIRUPAY_20160111';
catalog backuppiece '/home/oracle/bk/full_1_81qr2j0v_1_1_YIRUPAY_20160111';
RMAN>list backup;
3.4 在目标机上用RMAN恢复
[根据备份信息,恢复数据文件及数据库
RMAN> run{
set newname for datafile 1 to '/oracle/oradata/system01.dbf';
set newname for datafile 2 to '/oracle/oradata/sysaux01.dbf';
set newname for datafile 3 to '/oracle/oradata/undotbs01.dbf';
set newname for datafile 9 to '/oracle/oradata/fcs_data01.dbf';
restore database skip tablespace ACC_DATA,ACC_IDX,BAT_DATA,BAT_IDX,CHECKACC_DATA,CHECKACC_DATA_IDX,CHECK_ACCOUNT,NOTIFY_USER_DATA,NOTIFY_USER_IDX,PER_DATA,PER_IDX,PER_LOG_DATA,PER_LOG_IDX,USERS,YRF_PAY_DATA,YRF_PAY_IDX,UNDOTBS2,FCS_IDX;
switch datafile all;}
3.5 恢复归档到指定的目录:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 654
Next log sequence to archive 658
Current log sequence 658
SQL> alter system set log_archive_dest='/oracle/arch';
System altered.
SQL>
恢复节点1的归档日志
run{
set archivelog destination to '/oracle/arch';
restore archivelog sequence between 1753 and 1756 thread 1;
}
恢复节点2的归档日志
run{
set archivelog destination to '/oracle/arch';
restore archivelog sequence between 2045 and 2048 thread 2;}
3.6 将redolog改名并清理:
SQL>sqlplus / as sysdba
alter database rename file '+ASMDATA/yirupay/onlinelog/group_1.257.893008511' to '/oracle/oradata/log/redo1.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_2.258.893008511' to '/oracle/oradata/log/redo2.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_3.259.893008511' to '/oracle/oradata/log/redo3.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_4.260.893009701' to '/oracle/oradata/log/redo4.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_5.261.893009703' to '/oracle/oradata/log/redo5.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_6.262.893009703' to '/oracle/oradata/log/redo6.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_7.264.893776713' to '/oracle/oradata/log/redo7.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_8.265.893776715' to '/oracle/oradata/log/redo8.log';
alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter database clear logfile group 4;
alter database clear logfile group 5;
alter database clear logfile group 6;
alter database clear logfile group 7;
alter database clear logfile group 8;
3.、修改redo路径和名字
alter database rename file '+ASMDATA/yirupay/onlinelog/group_1.257.893008511' to '/oracle/oradata/log/redo1.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_2.258.893008511' to '/oracle/oradata/log/redo2.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_3.259.893008511' to '/oracle/oradata/log/redo3.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_4.260.893009701' to '/oracle/oradata/log/redo4.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_5.261.893009703' to '/oracle/oradata/log/redo5.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_6.262.893009703' to '/oracle/oradata/log/redo6.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_7.264.893776713' to '/oracle/oradata/log/redo7.log';
alter database rename file '+ASMDATA/yirupay/onlinelog/group_8.265.893776715' to '/oracle/oradata/log/redo8.log';
3.8、删除不需要的表空间
alter database datafile 4 offline drop;
alter database datafile 5 offline drop;
alter database datafile 6 offline drop;
alter database datafile 7 offline drop;
alter database datafile 8 offline drop;
alter database datafile 11 offline drop ;
alter database datafile 12 offline drop ;
alter database datafile 13 offline drop ;
alter database datafile 14 offline drop ;
alter database datafile 15 offline drop ;
alter database datafile 16 offline drop ;
alter database datafile 17 offline drop ;
alter database datafile 18 offline drop ;
alter database datafile 19 offline drop ;
alter database datafile 20 offline drop ;
alter database datafile 21 offline drop ;
alter database datafile 22 offline drop ;
alter database datafile 23 offline drop ;
3.9 打开数据库:
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 11321006301221 generated at 08/22/201x 02:29:54 needed for
thread 1
ORA-00289: suggestion : /software/oracle/arch/1_660_716919669.dbf
ORA-00280: change 11321006301221 for thread 1 is in sequence #660
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
关闭开启BCT
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
alter database enable block change tracking using file '/oracle/arch';
recover database using backup controlfile until cancel;
SQL> alter database open resetlogs;
Database altered.
SQL>
3.10 删除多余的线程。
SQL> select THREAD#, STATUS, ENABLED from v$thread;
THREAD# STATUS ENABLED
---------- ------ --------
1 OPEN PUBLIC
2 CLOSED PUBLIC
SQL> select group# from v$log where thread#=2; --查出可以删除的日志文件.
SQL>ALTER DATABASE DISABLE THREAD 2; --disable将被删除日志文件的thread.
SQL> alter database drop logfile group 3; 删除日志组.
alter database drop logfile group 4;
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 8;
3.11 删除不用的UNDO_TABLESPACE.
SQL> show parameter undo; --看正在使用的,在前面已经移除了UNDO_TABLESPACES2.
SQL> select tablespace_name from dba_tablespaces where contents='UNDO'; --查UNDO表空间.
SQL>drop tablespace UNDOTABS2 including contents and datafiles; --删除UNDO表空间.
临时表空间处理.
SQL> alter tablespace temp add tempfile '/oracle/oradata/tempfile
/temp01.dbf' SIZE 200M;
alter database default temporary tablespace temp;
注:以上是异机恢复数据库的部分表空间的具体步骤,从ASM-FS,有问题可以邮件到.