使用OracleBMR(块介质恢复)功能快速恢复数据

使用OracleBMR(块介质恢复)功能快速恢复数据

ID:38491318

大小:48.50 KB

页数:4页

时间:2019-06-13

使用OracleBMR(块介质恢复)功能快速恢复数据_第1页
使用OracleBMR(块介质恢复)功能快速恢复数据_第2页
使用OracleBMR(块介质恢复)功能快速恢复数据_第3页
使用OracleBMR(块介质恢复)功能快速恢复数据_第4页
资源描述:

《使用OracleBMR(块介质恢复)功能快速恢复数据》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用BMR功能快速修复数据坏块Oracle提供了许多方法检测和修补数据库中的数据坏块,而BMR就是其中之一,其它方法还包括Analyze语句、dbv命令以及DBMS_REPAIR等。DBMS_REPAIR包仅仅对transaction层和data层的坏块(即逻辑损坏的块)起作用,对物理上损坏的块,在它被读到缓冲区中时就已被标识出来了,而DBMS_REPAIR会忽略所有被标识为坏了的块。要快速修复物理损坏的数据块,可以通过BMR功能来完成。块介质恢复的最大好处在于可以降低平均恢复时间(MTTR),因为介质恢复的最小可恢复单位从数据文件缩小到块。如果已知数据库中只有少量

2、的块需要介质恢复,则最有效的方式是有选择地进行还原,只恢复需要恢复的块。而且该技术提高了介质恢复期间的数据可用性,因为在数据恢复期间,数据文件可以保持联机状态,只有正在恢复的数据块是不可访问的。使用BMR之前,需要对保护的数据进行备份。在执行BMR时,只需要简单地执行blockrecover命令就可以了,例如编号为4的数据文件的数据块385发生了损坏,修复时可以如下:RMAN>BLOCKRECOVERDATAFILE4BLOCK385;下面通过一个实例来讨论BMR的使用。一、建立测试环境首先建立一个测试用的表T1,T1的结构如下:SQL>desct1NameNull

3、?Type--------------------------------------------------------------------------------COL1NUMBERCOL2CHAR(1000)将COL2的数据类型设置为CHAR(1000)只是为了让每个行记录占用的空间更多,这样我们可以使用较少的记录填充多个数据块。为该测试表填入一部分测试数据:SQL>insertintot1selectrownum,rownumfromdualconnectbyrownum<=20;上述语句使用了层次查询语句。这样我们就填入了20条记录到测试表中,内容查询

4、如下:SQL>selectcol1,substr(col2,1,2)fromt1;COL1SUBSTR----------------11223344556677……202010rowsselected.以DBA的身份查询dba_extents数据字典,获取t1表所在的文件号和块号SQL>selectfile_id,block_id,extent_id,blocksfromdba_extentswheresegment_name='T1';FILE_IDBLOCK_IDEXTENT_IDBLOCKS----------------------------------

5、------438508然后利用这个file_id找到对应的数据文件名:SQL>selectfile_namefromdba_data_fileswherefile_id=4;FILE_NAME------------------------------------------------------------------------------------------------------------------------/u01/app/oracle/oradata/orcl/users01.dbf这样我们就知道了刚才建立的t1表位于users01.dbf

6、文件上,所在的块号为385。下面我们就准备模拟数据文件的损坏。二、模拟数据文件损坏模拟数据文件损坏有多种方法,无非是通过某种编辑工具直接破坏数据文件。这个操作必须很小心,而且破坏之前一定要备份你的数据库。具体工具可以采用ultraedit编辑器、vi编辑器或者dd命令。Ultraedit需要额外安装,而vi编辑器要修改二进制文件需要有一些特殊操作,比较麻烦,这里我们首先以dd命令为例。在Linux操作系统中运行以下命令:$ddof=/u01/app/oracle/oradata/orcl/users01.dbfconv=notruncbs=8192seek=385<

7、hello(按组合键Ctrl+D)>0+1recordsin0+1recordsout6bytes(6B)copied,0.000155335seconds,38.6kB/s将上述命令中的385修改成386、387、389继续执行几遍。因为T1表所在的extent包含8个数据块,多破坏掉几个数据块可以保证将表T1破坏到不能访问的程度。这时访问T1表会发现仍然可以访问,因为我们查询数据时总是先查询系统buffer_cache中的内容。可以对buffer_cache进行清空,然后再访问。SQL>altersystemflushbuffer_cache;Sy

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。