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

第七章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.主机hosta、hostb都是linux系统,且相互连通

B.Target

db:trgta(hosta),catalog:catdb

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

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

E.Trgta使用spfile

F.ORACLE_SID为trgta,还原后保持不变

G.已经记录trgta的DBID

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';

#最后按照灾难恢复执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值