ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 第21 章、RMAN 案例研究

第21 章、RMAN 案例研究

原创 Linux操作系统 作者:红叶DBA 时间:2011-02-27 12:56:54 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-08-19

  • 博文量
    54
  • 访问量
    69607