第21 章、RMAN 案例研究
u 本章案例列表:
1) 在Noarchivelog 模式中恢复完全丢失的数据库(使用catalog );
2) 在Noarchivelog 模式中恢复完全丢失的数据库(不使用catalog );
3) 在Archivelog 模式中恢复完全丢失的数据库(使用catalog );
4) 在Archivelog 模式中恢复完全丢失的数据库(不使用catalog );
5) 恢复丢失的system 表空间;
6) 联机恢复丢失的数据文件和表空间;
7) 恢复丢失的未归档联机重做日志的数据库;
8) 手工完成失败的复制操作;
9) 使用RMAN 复制创建目标数据库的历史子集;
10) 在Archivelog 模式中使用闪回恢复区中数据文件副本恢复丢失的数据文件;
一、在Noarchivelog 模式中恢复完全丢失的数据库(使用catalog )
思路:由于是noarchive 模式,那么就不能完全恢复到服务器失败的那一刻,最多只能恢复到最近的一次备份的时间。数据库完全丢失,则需要从备份集中还原所有的相关文件,如果启用了控制文件自动备份,那么就可以冲控制文件中恢复spfile 和controlfile ,否则需要手动创建相关文件(包括密码文件,网络文件等)。在数据库启动到不同时间段时,做相应文件的恢复操作。其中:nomount 阶段,恢复spfile 和controlfile 文件;mount 阶段,还原、恢复数据文件,并以resetlogs 方式(在RMAN 中运行比较好)打开数据库。
具体命令:
Rman target x/xx@xxx catalog x/xx@xxx
Startup nomount;
Restore spfile from autobackup;
Shutdown immediate;
Startup nomount;
Restore controlfile from autobackup;
Alter database mount;
如果需要配置恢复时的通道参数,则在此处配置。
Restore database;
Recover database noredo;
Alter database open resetlogs;
二、在Noarchivelog 模式中恢复完全丢失的数据库(不使用catalog);
思路:与使用catalog 情况下大致相同,但是由于没有使用catalog ,那么在恢复控制文件之前,就需要设置DBID ,在startup nomount 之后set dbid=xxx 。
三、在Archivelog 模式中恢复完全丢失的数据库(不使用catalog );
思路:不使用catalog ,则要设置dbid,在本案例中,另外需要将数据文件、控制文件等恢复到不同位置,所以需要额外一些修改操作。
具体命令:
RMAN 中:Rman target /
RMAN 中:Set dbid=1234567890;
RMAN 中:Startup force nomount;
RMAN 中:Run{
Allocate channel xxx type sbt
parms= ’env=(nb_ora_serv=xxx,nb_ora_client=xxx) ’;
Restore spfile from autobackup;
}
RMAN 中:Shutdown immediate;
RMAN 中:Startup nomount;
SQLPLUS :alter system set control_files= ’xxx1 ’,’xxx2 ’,’xxx3 ’ scope=spfile;
SQLPLUS :alter system set db_file_name_convert=
(‘from-1 ’,’to-1 ’,’from-2 ’,’to-2 ’) scope=spfile;
SQLPLUS :alter system set log_file_name_convert=( ‘xx ’,’xx ’) scope=spfile;
SQLPLUS :alter system set log_archive_dest_1= ’location=xx ’ scope=spfile;
SQLPLUS :shutdown immediate;
SQLPLUS :startup nomount;
RMAN 中:run{
Allocate channel xxx type sbt …;
Restore controlfile from autobackup;
}
RMAN 中:alter database mount;
RMAN 中:list backup of archivelog; (查看已备份的最大archivelog )
RMAN 中:restore database;
RMAN 中:recover database until sequence=xxx;
RMAN 中:alter database open resetlogs;
四、在Archivelog 模式中恢复完全丢失的数据库(使用catalog );
思路:由于使用了catalog ,只需要在第三个案例中去掉set dbid 步骤既可。
五、恢复丢失的system 表空间;
思路:由于是system 表空间,需要在关闭数据库的情况下进行恢复,所以需要将数据库置于nomount 模式。
具体命令:
Rman target /
Startup force mount;
Restore tablespace system;
Recover tablespace system;
Alter database open;
六、联机恢复丢失的数据文件和表空间;
思路:由于不涉及到system 等关键表空间,所以可以在线进行恢复,在恢复期间,保持将要被恢复的数据文件都处于offline 状态。
具体命令:
Rman target /
Sql “alter tablespace xxx offline ”;
Sql “alter database datafile xxx offline ”;
Restore tablespace xxx;
Restore datafile xxx;
Recover tablespace xxx;
Recover datafile xxx;
Sql “alter tablespace xxx online ”;
Sql “alter database datafile xxx online ”;
七、恢复丢失的未归档联机重做日志的数据库;
思路:由于联机日志的丢失,那么就不能执行数据库的完全恢复,丢失数据时必然的事情,此时所用到的恢复操作时时间点恢复,在时间点恢复过程中,确保所有的数据文件都恢复到一致的时间点,这是非常重要的。
具体命令:
Rman target /
Startup mount;
List backup of archivelog from time ‘sysdate-7 ’;
Restore database until sequence=4 thread=1 force;
(此处的force 关键字很重要,能够确保还原所有的数据文件)
Recover database until sequence=4 tfread=1;
(sequence=4 ,则应用到sequence=3 的归档日志后,就停止归档日志的应用)
Alter database open resetlogs;
八、手工完成失败的复制操作;
思路:在duplicate 数据库的过程中,由于归档日志没有拷贝到辅助数据库中的相应位置,duplicate 命令失败,但是数据文件已经正确传送过去了,只是辅助实例还没有新的dbid,可以通过DBNEWID 实用程序来解决,此处参看duplicate 的手工过程。
具体命令:
Target cmd :tar –cvf arch.tar arch
Target cmd :gzip arch.tar
此时,就可以使用ftp 等工具将arch 压缩文件传送到辅助数据库。
Auxiliary cmd :gunzip arch.tar.gz
Auxiliary cmd :tar –xvf arch.tar
后续步骤在辅助数据库端的SQL*PLUS 中进行:
Export ORACLE_SID=xxx
Sqlplus / as sysdba
Recover database using backup controlfile until sequence 11 thread 1;
Shutdown immediate;
Startup mount;
此时可以使用DBNEWID 程序为数据库设置新的dbid,然后回到SQL*PLUS 中:
Shutdown immediate;
Startup mount;
Alter database open resetlogs;
九、使用RMAN 复制创建目标数据库的历史子集;
思路:在RMAN 复制数据库的过程中,可以跳过某些特定的表空间进行数据库的复制,如果再有until 子句,则能够实现创建目标数据库的历史子集。
具体命令:
Rman target / auxiliary xx/xx@xxx
Duplicate target database to aux1 pfile =xxx skip tablespace ‘xxx ’,’xxx ’,’xx ’ until sequence 11 thread 1 logfile ‘xxx1 ’ size 100m, …;
十、在Archivelog 模式中使用闪回恢复区中数据文件副本恢复丢失的数据文件;
思路:本案例中,为了节约恢复的时间,使用切换数据文件副本的方式,避免的数据文件的还原,提高恢复时间,然后直接将日志应用在文件副本上。这种情况下,可以在业务较少时,停机将数据文件还原回原来的位置。
具体命令:
Rman target /
Switch datafile 5 to copy;
Recover datafile 5;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24465008/viewspace-688029/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24465008/viewspace-688029/