Oracle 10g备份与恢复高级用户指南--第七章 RMAN备份过程与方法

本文详细介绍RMAN在Oracle数据库中的应用,包括非归档模式恢复、异机恢复、控制文件恢复、灾难恢复及块介质恢复等核心内容,并提供具体案例帮助理解。

第七章        RMAN恢复过程与方法

1.                  非归档模式恢复

         非归档模式数据库恢复与归档模式下恢复相似,不同的是非归档模式下恢复只能使用冷备份,并且不能进行介质恢复(因为无归档日志);

         非归档模式下,使用增量备份恢复案例;场景,非归档模式数据库trgt,使用了catalog,在星期日做了一次一致性关闭后的0级增量备份,后在星期三和星期五一致性关闭后做了1级差异增量备份;数据库在星期六出现介质故障,一半数据文件和redo日志损坏;恢复方法如下:

STARTUP FORCE NOMOUNT;

RESTORE CONTROLFILE;  # restore control file from consistent backup

ALTER DATABASE MOUNT;

RESTORE DATABASE;  # restore datafiles from consistent backup

RECOVER DATABASE NOREDO;  # specify NOREDO because online redo logs are lost

ALTER DATABASE OPEN RESETLOGS;

 

2.                  异机恢复


利用RMAN备份,在新主机上还原与恢复数据库;

1)  准备工作

a.       记录数据库DBID

b.       确保新主机上初始化参数文件可用

c.       确保新主机上备份集可用

2)  还原恢复过程

假设场景:

A.      主机hostahostb都是linux系统,且相互连通

B.      Target db:trgta(hosta),catalog:catdb

C.      要还原和恢复到hostb,同时hosta上的trgta运行

D.      Hostbhosta的目录结构不同,分别是/net/hosta/dev3/oracle/dbs /net/hostb/oracle/oradata/test

E.       Trgta使用spfile

F.       ORACLE_SIDtrgta,还原后保持不变

G.      已经记录trgtaDBID

H.      介质管理器两台主机都可以访问

I.        数据文件的备份在磁带上

J.        必要的归档日志也已经备份

K.       控制文件和spfile已经自动备份到磁带上

下面是执行过程:

a.       Dfaf

% rman TARGET / NOCATALOG

SET DBID 1340752057;

STARTUP NOMOUNT

RUN

{

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS='...';

  RESTORE SPFILE TO PFILE '?/oradata/test/inittrgta.ora' FROM AUTOBACKUP;

  SHUTDOWN ABORT;

}

修改参数文件中有关目录位置,然后

STARTUP FORCE NOMOUNT PFILE='?/oradata/test/inittrgta.ora';

RUN

{

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS='...';

  RESTORE CONTROLFILE FROM AUTOBACKUP;

  ALTER DATABASE MOUNT;

}

% sqlplus '/ AS SYSDBA'

Run the following query in SQL*Plus:

SQL> COLUMN NAME FORMAT a60

SQL> SPOOL LOG 'db_filenames.out'

SQL> SELECT FILE# AS "File/Grp#", NAME FROM V$DATAFILE

     UNION

     SELECT GROUP#,MEMBER FROM V$LOGFILE;

SQL> SPOOL OFF

SQL EXIT

 

RUN

{

  # allocate a channel to the tape device

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS='...';

 

  # rename the datafiles and online redo logs

  SET NEWNAME FOR DATAFILE 1 TO '?/oradata/test/system01.dbf';

  SET NEWNAME FOR DATAFILE 2 TO '?/oradata/test/undotbs01.dbf';

  SET NEWNAME FOR DATAFILE 3 TO '?/oradata/test/cwmlite01.dbf';

  SET NEWNAME FOR DATAFILE 4 TO '?/oradata/test/drsys01.dbf';

  SET NEWNAME FOR DATAFILE 5 TO '?/oradata/test/example01.dbf';

  SET NEWNAME FOR DATAFILE 6 TO '?/oradata/test/indx01.dbf';

  SET NEWNAME FOR DATAFILE 7 TO '?/oradata/test/tools01.dbf';

  SET NEWNAME FOR DATAFILE 8 TO '?/oradata/test/users01.dbf';

  SQL "ALTER DATABASE RENAME FILE ''/dev3/oracle/dbs/redo01.log''

      TO ''?/oradata/test/redo01.log'' ";

  SQL "ALTER DATABASE RENAME FILE ''/dev3/oracle/dbs/redo02.log''

      TO ''?/oradata/test/redo02.log'' ";

 

  # Do a SET UNTIL to prevent recovery of the online logs

  SET UNTIL SCN 123456;

  # restore the database and switch the datafile names

  RESTORE DATABASE;

  SWITCH DATAFILE ALL;

 

  # recover the database

  RECOVER DATABASE;

}

EXIT

 

% rman TARGET / NOCATALOG

RMAN> @reco_test.rman

 

RMAN> ALTER DATABASE OPEN RESETLOGS;


3.                  控制文件恢复

利用自动备份的控制文件恢复数据库,无catalog,步骤如下:

CONNECT TARGET /

STARTUP NOMOUNT;

SET DBID 676549873;

RUN

{

  # Optionally, set upper limit for eligible time stamps of control file

  # backups

  # SET UNTIL TIME '09/10/2000 13:45:00';

  # Specify a nondefault autobackup format only if required

  # SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK

  #   TO '?/oradata/%F.bck';

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS='...'; # allocate manually

  RESTORE CONTROLFILE FROM AUTOBACKUP

    MAXSEQ 100           # start at sequence 100 and count down

    MAXDAYS 180;         # start at UNTIL TIME and search back 6 months

  ALTER DATABASE MOUNT DATABASE;

}

# uses automatic channels configured in restored control file

RESTORE DATABASE UNTIL SEQUENCE 13243;

RECOVER DATABASE UNTIL SEQUENCE 13243; # recovers to latest archived log

 

ALTER DATABASE OPEN RESETLOGS; 
 
  


4.                  灾难恢复

         灾难恢复是指当目标数据文件、参数文件、控制文件、在线日志文件、目录数据库文件等遭受灾难性毁灭情况下的恢复;要想完成灾难恢复最小的要求是有数据文件备份、有备份后的归档日志备份、有至少一份自动备份的控制文件;

         灾难恢复基本过程:一还原参数文件,这样可以启动实例;二启动实例后还原控制文件,这样就可以mount数据库;三mount状态下,还原数据文件;四恢复数据库;五resetlog打开数据库;

         灾难恢复基本命令如下:

#登录

% rman TARGET SYS/oracle@trgt

#还原参数文件spfile

# Set the DBID for the target database

RMAN> SET DBID 676549873;

RMAN> STARTUP FORCE NOMOUNT;  # rman starts instance with dummy parameter file

RUN

{

  ALLOCATE CHANNEL t1 DEVICE TYPE sbt;

  RESTORE SPFILE FROM AUTOBACKUP;

}

#还原控制文件、数据文件

RMAN> STARTUP FORCE NOMOUNT; # Restart instance with restored server parameter file

RMAN> RUN

{

  ALLOCATE CHANNEL t1 DEVICE TYPE sbt;

  RESTORE CONTROLFILE FROM AUTOBACKUP;

  ALTER DATABASE MOUNT;#相同路径还原(如果路径不同需要SET NEWNAME

  SET UNTIL SEQUENCE 1124 THREAD 1;

  RESTORE DATABASE;(如果路径不同SWITCH DATAFILE ALL

  RECOVER DATABASE;

}

RMAN> ALTER DATABASE OPEN RESETLOGS; # Reset the online logs after recovery completes

 

5.                  RMAN块介质恢复

         BLOCKRECOVER可以执行坏块介质恢复;

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19;

指定特定备份进行块恢复

  #指定备份集还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM BACKUPSET;

 #指定镜像拷贝还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 FROM DATAFILECOPY;

 #指定特定标签TAG还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 199 FROM TAG = mondayam;

 #指定特定时间段的备份还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 RESTORE UNTIL 'SYSDATE-7';

 #指定特定SCN段的备份还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 RESTORE UNTIL SCN 100;

 #指定特定日志序号的还原

RMAN> BLOCKRECOVER DATAFILE 8 BLOCK 13 DATAFILE 2 BLOCK 19 RESTORE UNTIL SEQUENCE 7024;

 #批量坏块还原

SQL> SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

RMAN> BLOCKRECOVER CORRUPTION LIST RESTORE UNTIL TIME 'SYSDATE-10';

 

6.                  RMAN恢复案例

案例1:异机还原数据文件镜像

RMAN>LIST COPY;

#复制数据文件镜像到目标机器上

% cp -r /tmp/*dbf /net/new_host/oracle/oradata/trgt

#解除编目

RMAN>CHANGE COPY OF DATAFILE 1,2,3,4,5,6,7,8 UNCATALOG;

#重新编目(新地址)

RMAN>CATALOG START WITH '?/oradata/trgt/';

或:

RMAN>CATALOG DATAFILECOPY

  '?/oradata/trgt/system01.dbf', '?/oradata/trgt/undotbs01.dbf',

  '?/oradata/trgt/cwmlite01.dbf', '?/oradata/trgt/drsys01.dbf',

  '?/oradata/trgt/example01.dbf', '?/oradata/trgt/indx01.dbf',

  '?/oradata/trgt/tools01.dbf', '?/oradata/trgt/users01.dbf';

 #最后按照灾难恢复执行

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16976507/viewspace-2131951/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16976507/viewspace-2131951/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值