RMAN 高级恢复Word下载.docx
《RMAN 高级恢复Word下载.docx》由会员分享,可在线阅读,更多相关《RMAN 高级恢复Word下载.docx(41页珍藏版)》请在冰豆网上搜索。
![RMAN 高级恢复Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/24/ea4c768f-504b-407c-ba40-b8e8d6c80444/ea4c768f-504b-407c-ba40-b8e8d6c804441.gif)
可以很容易的通过给定的resetlogs操作恢复数据库。
因此,可以很容易的在执行操作后立刻备份数据库,然而,我们仍然认为在任何不完全恢复后备份数据库是很有必要的。
Rman跨resetlogs版本恢复
1.2
建立恢复点
使用RMAN执行不完全恢复操作时需要完成一个工作是简历恢复目标。
恢复目录是恢复进程的终点,通常我们基于一个时间点,一个指定的SCN
或者
一个日志序列号来表示它。
我们可以采用许多不同的方法建立恢复目标。
1.2.1
在run
代码块中使用set
命令与until
time,until
SCN
或
until
sequence参数
Run
{
Set
time
"
to_date('
2010-07-05
14:
02:
00'
'
yyyy-mm-dd
hh24:
mi:
ss'
)"
;
Restore
database;
Recover
database
alter
open
resetlogs;
}
执行这条命令时,RMAN
会查找与恢复目标时间最近(并非恢复目标时间本身也不能是位于恢复目标之间的时间)的备份集,并且从这个备份集中还原数据库。
如果数据库置于noarchivelog
模式中,恢复操作会在备份集的时间停止;
否则在执行recover命令期间,oracle
会在所定义的恢复目标(不包含恢复目标本身)上应用归档的重做日志(以及需要应用的任何增量备份)。
注意:
如果尝试恢复到特定备份的完成点,则必须恢复到备份集中文件的CKP
CKP
TIME,在不同备份集的RMAN
list命令中会列出这些内容。
有时使用备份的CKP
TIME
并不够,还可能导致ORA-1152错误。
1.2.2
在restore
和recover
命令中直接使用until
和
sequence
参数
这种方法避免使用run
代码块,也倾向与使用这种方法。
Startup
mount;
Alter
1.3
基于时间的恢复
这种恢复类型允许用户将数据库恢复到与指定时间一致的状态。
当然,如果不存在能将数据库还原到用户请求的时间的有效备份或归档重做日志,Oracle
就会报RMAN-03002
RMAN-20207的错误。
必须具备在我们指定的恢复时间之前生成的数据库备份,此外还需要所有归档的重做日志。
1.4
基于SCN
的恢复
允许用户将数据库恢复到指定的SCN,实际上,这并不是一种常见的恢复方法。
示例如下:
1000;
该示例可以将数据库还原到SCN
1000,但是不会包含SCN.
1.5
基于日志序列的恢复
RMAN
允许用户将数据库恢复到指定序列号的归档重做日志。
如果归档的重做日志中存在间隙,使用这种恢复方法就非常方便。
间隙通常意味着我们只能将数据库还原到间隙的开始点。
100
thread
1;
二.
2.1
只读表空间的恢复
在默认情况下,即使丢失了只读的数据文件,RMAN也不会在执行完全恢复数据库还原操作时还原只读的数据文件。
要在完全恢复期间还原只读的数据文件,就必须在restore
命令中使用check
readonly
参数,如:
check
readonly;
注意,执行recover
tablespace或recover
datafile命令时,RMAN的工作情况是不一样的。
使用这两个命令时,不管表空间是否为只读状态都会执行恢复操作。
2.2
归档重做日志的还原
在使用RMAN的普通恢复过程中,不必恢复归档的重做日志。
不过,偶尔也会要求还原一个或多个归档的重做日志。
例如,我们可能需要使用LogMiner
在备份中存储的归档重做日志文件里查找一些信息。
archivelog
all;
from
logseq=20
thread=1;
logseq=30
还可以将归档的重做日志还原到默认位置以外的位置上:
destination
to
d:
/arch"
上例中的set
命令没有替代方法,必须要求使用set。
如果RMAN
认为一个归档的重做日志已存在,就不会在磁盘上还原这个归档的重做日志,即使设置的还原位置不同与默认的归档日志位置,Oracle
也不会在这个新的位置上恢复归档的重做日志。
2.3
数据文件副本的还原
可以从数据文件副本(不是备份集)中还原数据库的数据文件。
要实现这个功能,需要先使用restore
datafilecopy命令,然后再使用恢复数据库(或表空间,数据文件)的recover。
RMAN>
(datafile
5)
datafilecopy;
--
此处的圆括号是必须的,如果没有就报错
datafile
5;
SQL>
5
online;
执行restore
时,该命令会识别需要还原的数据文件的最新副本,然后从这个副本中还原这些数据文件。
数据文件的最新副本可能是在一个数据文件副本中,而不是在一个副本中。
在这种情况下,Oracle
会恢复这个数据文件副本。
2.4
恢复讹误的数据块
即使与讹误数据块关联的数据文件一直联机,也可以通过用块介质恢复(block
Media
recover:
BMR)执行块级别恢复操作来修复Oracle
数据库中的这些逻辑上或者物理上的讹误数据块。
一般出现数据块错误时,都会有错误消息:
ORA-01578:
ORACLE
data
block
corrupted
(file
#18,block
#88)
如果没有BMR时,我们必须从一个备份中恢复这个数据文件,在恢复过程中,用户不能使用该数据块文件中的所有数据。
用BMR恢复就很简单,只需要执行blockrecover命令即可:
Blockrecover
18
88;
如果有必要,可以同时恢复多个数据文件的多个数据块。
如:
16,17,88,108;
Blcokrecover
88
19
blcok
188;
会跟踪在备份和恢复期间发生的数据块讹误。
如果检测到备份或复制操作出现讹误,由于Oracle
不允许在备份中出现讹误,所有这个备份就会失败。
当然,可以配置RMAN允许一定数量的讹误,但是不推荐这种用法。
可以使用backup
validate
命令查看RMAN
检测到的所有数据库讹误。
这条命令会在v$backup_corruption
和v$database_block_corruption视图中填充检测到的所有讹误数据块。
如果讹误发生在复制操作期间,v$copy_corruption视图就会指明包含讹误的备份集。
注意的是:
v$backup_corruption
是一个显示历史讹误的视图,v$database_block_corruption
则是一个显示当前数据块讹误的视图。
一旦修正了数据库的块讹误,就需要重新运行backup
database命令,然后查询v$database_block_corruption
视图以确保不存在其他讹误。
查询v$database_block_corruption视图可以查看讹误数据块的详细信息。
如下所示,使用具有corruption
list
restore
参数的blockrecover命令可以方便地修正v$database_block_corruption
视图中的讹误数据块。
corruption
'
SYSDATE-5'
这条命令将还原讹误列表中最近5天的所有讹误数据块。
在上面的命令中,还可以使用until
sequence.
2.5
恢复前一个对应物
一个数据库的对应物(incarnation)对应这个数据库的特定逻辑生存期。
有时我们需要使用上次执行resetlogs命令打开数据库前生成的一个备份来还原数据库,或者可能需要还原到执行上一个resetlogs命令之前的时间点。
这就需要用到incarnation.
2.5.1
使用恢复目录恢复前一个对应物
先假设使用恢复目录执行了备份操作,并且最近使用了resetlogs命令执行过时间点恢复,现在需要使用执行resetlogs命令之前的一个备份来恢复数据库。
操作步骤:
(1)启动但不加载实例,这是因为我们要先得到一个与恢复数据库对应物关联的控制文件
(2)使用reset
incarnation
命令为RMAN
指示对应物的备份集。
(3)Restore
controlfile,使rman还原最新的控制文件
(4)加载数据库
(5)Restore
数据库
(6)Recover
(7)使用resetlogs
打开数据库
C:
/Users/Administrator.DavidDai>
rman
target
/
catalog
rman/rman@orcl;
恢复管理器:
Release
11.2.0.1.0
-
Production
on
星期二
7月
6
10:
31:
40
2010
Copyright
(c)
1982,
2009,
and/or
its
affiliates.
All
rights
reserved.
连接到目标数据库:
ORCL
(DBID=1247395743)
连接到恢复目录数据库
incarnation;
数据库原型列表
DB
关键字
Inc
名
STATUS
重置
重置时间
-------
--------
----------------
---
----------
----------
2
12
1250808537
PARENT
1
30-8月
-05
4
534907
30-6月
-10
323
CURRENT
940996
06-7月
startup
force
nomount;
reset
4;
controlfile;
scn
940990;
recover
2.5.2
不使用恢复目录恢复前一个对应物
为了通过前一个对应物进行恢复,需要一个包含前一个对应物信息的控制文件。
在大多数情况下,这可能是当前的控制文件。
如果当前的控制文件不了解需要恢复的对应物,则需要还原包含该信息的控制文件,从而使得利用该方法恢复数据。
可以使用list
of
命令查看控制文件了解哪些对应物.
没有连接恢复目录的list
输出与已连接恢复目录时的list
输出有一些细微的区别。
这是因为信息从控制文件中获得的,因此某些键(如Inc
key)将会不同。
操作步骤如下:
(1)从RMAN中运行list
命令,确定希望复位到哪个对应物
(2)关闭数据库
(3)启动加载数据库
(4)执行reset
命令复位对应物
(5)使用restore
命令还原数据库
(6)recover恢复数据库
1247395743
02-4月
940976
21-5月
3
ORPHAN
8426617
8554968
shutdown
immediate;
2;
将数据库重置为原型
2
2010-7-5
23:
50:
39'
启动
于
使用通道
ORA_DISK_1
通道
ORA_DISK_1:
正在开始还原数据文件备份集
正在指定从备份集还原的数据文件
将数据文件
00001
还原到
D:
/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF
00002
/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF
00003
/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF
00004
/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF
00005
/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF
正在读取备份片段
F:
/BACKUP/ORCL_1GLI2EN5_1_1.BAK
段句柄
=
/BACKUP/ORCL_1GLI2EN5_1_1.BAK
标记
TAG20100705T232732
已还原备份片段
1
还原完成,
用时:
00:
01:
45
完成
正在开始介质的恢复
线程
序列
156
的归档日志已作为文件
/ARCHIVELOG/ORCL_1_156_719615012.ARC
存在于磁盘上
归档日志文件名=D:
线程=1
序列=156
介质恢复完成,
02
数据库已打开
注:
后面可以跟三种类型:
1000
150;
查看sequence:
select
sequence#
v$archived_log;
SEQUENCE#
161
162
3
4
从这个结果也证明resetlogs
会重置sequnce,但是scn不会被重置。
查看scn:
current_scn
v$database;
CURRENT_SCN
-----------
8555698
dbms_flashback.get_system_change_number
dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
8555706
三.
表空间时间点恢复,TSPITR:
tablespace
point-in-time
recovery.
官网文档的连接地址:
Tablespace
Point-in-Time
Recovery
(TSPITR)
使用表空间时间点恢复(TSPITR)可以将一个或多个非SYSTEM表空间恢复到与数据库其他部分不同的某个时间点上。
这点和Flashback
有点类型。
比如用户误删了3张表,我们就可以用TSPITR恢复。
先看TSPITR
的工作流程,如下图所示:
(1)
在辅助实例上用targe