1 / 4
文档名称:

使用Oracle BMR(块介质恢复)功能快速恢复数据.doc

格式:doc   大小:48KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

使用Oracle BMR(块介质恢复)功能快速恢复数据.doc

上传人:mh900965 2017/12/22 文件大小:48 KB

下载得到文件列表

使用Oracle BMR(块介质恢复)功能快速恢复数据.doc

文档介绍

文档介绍:使用BMR功能快速修复数据坏块
Oracle提供了许多方法检测和修补数据库中的数据坏块,而BMR就是其中之一,其它方法还包括Analyze语句、dbv命令以及DBMS_REPAIR等。DBMS_REPAIR包仅仅对transaction层和data层的坏块(即逻辑损坏的块)起作用,对物理上损坏的块,在它被读到缓冲区中时就已被标识出来了,而DBMS_REPAIR会忽略所有被标识为坏了的块。要快速修复物理损坏的数据块,可以通过BMR功能来完成。
块介质恢复的最大好处在于可以降低平均恢复时间(MTTR) ,因为介质恢复的最小可恢复单位从数据文件缩小到块。如果已知数据库中只有少量的块需要介质恢复,则最有效的方式是有选择地进行还原,只恢复需要恢复的块。而且该技术提高了介质恢复期间的数据可用性,因为在数据恢复期间,数据文件可以保持联机状态,只有正在恢复的数据块是不可访问的。
使用BMR之前,需要对保护的数据进行备份。在执行BMR时,只需要简单地执行blockrecover命令就可以了,例如编号为4的数据文件的数据块385发生了损坏,修复时可以如下:
RMAN> BLOCKRECOVER DATAFILE 4 BLOCK 385;
下面通过一个实例来讨论BMR的使用。
一、建立测试环境
首先建立一个测试用的表T1,T1的结构如下:
SQL> desc t1
Name Null? Type
--------------------------------------------------- -------- ---------------------
COL1 NUMBER
COL2 CHAR(1000)
将COL2的数据类型设置为CHAR(1000)只是为了让每个行记录占用的空间更多,这样我们可以使用较少的记录填充多个数据块。为该测试表填入一部分测试数据:
SQL>insert into t1 select rownum,rownum from dual connect by rownum<=20;
上述语句使用了层次查询语句。这样我们就填入了20条记录到测试表中,内容查询如下:
SQL>select col1,substr(col2,1,2) from t1;
COL1 SUBSTR
---------- ------
1 1
2 2
3 3
4 4
5 5
6 6
7 7
… …
20 20
10 rows selected.
以DBA的身份查询dba_extents数据字典,获取t1表所在的文件号和块号
SQL> select file_id,block_id,extent_id,blocks from dba_extents where segment_name='T1';
FILE_ID BLOCK_ID EXTENT_ID BLOCKS
---------- ---------- ---------- ----------
4 385 0 8
然后利用这个file_id找到对应的数据文件名:
SQL> select file_name from dba_data_files where file_id=4;
FILE_NAME
------