返回顶部
首页 > 资讯 > 数据库 >Oracle中基于RMAN如何实现坏块介质恢复
  • 985
分享到

Oracle中基于RMAN如何实现坏块介质恢复

2024-04-02 19:04:59 985人浏览 安东尼
摘要

小编给大家分享一下oracle中基于RMAN如何实现坏块介质恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

小编给大家分享一下oracle中基于RMAN如何实现坏块介质恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

对于物理损坏的数据块,在有备份的情况下,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,
而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块。但前提条件是你得有一个可用的RMAN备份存在,
因此,无论何时备份就是一切。本篇我们来模拟产生一个坏块,然后使用RMAN实现坏块恢复。

说明:
一般出现坏块的时候,都是业务访问到这个坏块的时候报如下的错误:
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 18, block # 130)
ORA-01110: data file 18: '/ora11gSource/ora11g/tbs_tmp.dbf'

操作:
1 创建用于演示的表空间  
create tablespace tbs_tmp datafile '/ora11gSource/ora11g/tbs_tmp.dbf' size 10m autoextend on;   

2 基于新的数据文件创建对象tb_tmp
conn scott/tiger;  
create table tb_tmp tablespace tbs_tmp as select * from dba_objects;  
sql> col file_name fORMat a60  
SQL> select file_id,file_name from dba_data_files where tablespace_name='TBS_TMP'; 
   FILE_ID FILE_NAME
---------- ------------------------------------------------------------
        18 /ora11gSource/ora11g/tbs_tmp.dbf
  
3 表对象tb_tmp上的信息,对应的文件信息,头部块,总块数  
SQL> select segment_name , header_file , header_block,blocks        
  2  from dba_segments  
  3  where segment_name = 'TB_TMP' and owner='SCOTT';
SEGMENT_N HEADER_FILE HEADER_BLOCK     BLOCKS
--------- ----------- ------------ ----------
TB_TMP             18          130       1280
  
4 使用rman对该数据文件进行一次备份
$ $ORACLE_HOME/bin/rman target /  
RMAN> backup datafile 18 tag=health;

Starting backup at 12-JUN-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00018 name=/ora11gSource/ora11g/tbs_tmp.dbf
channel ORA_DISK_1: starting piece 1 at 12-JUN-18
channel ORA_DISK_1: finished piece 1 at 12-JUN-18
piece handle=/ora11gSource/zhida/ORA11G/backupset/2018_06_12/o1_mf_nnndf_HEALTH_fkz35h7r_.bkp tag=HEALTH comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 12-JUN-18

5 人为制造一个单块数据块的损坏
使用linux自带的dd命令来损坏单块数据块  
ora11g[redora]/home/ora11g>dd of=/ora11gSource/ora11g/tbs_tmp.dbf bs=8192 conv=notrunc seek=130 <<EOF  
> Corrupted block!
> EOF
0+1 records in
0+1 records out
17 bytes (17 B) copied, 5.9505e-05 seconds, 286 kB/s

6 触发坏块所在对象  
清空buffer cache 
conn scott/tiger; 
alter system flush buffer_cache;  
查询表对象 tb_tmp,收到ORA-01578  
SQL> select count(*) from tb_tmp;  
select count(*) from tb_tmp
                     *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 18, block # 130)
ORA-01110: data file 18: '/ora11gSource/ora11g/tbs_tmp.dbf'
查询视图v$database_block_corruption,提示有坏块,注意该视图可能不会返回任何数据,如无返回,先执行backup validate  
SQL> select * from v$database_block_corruption;  
     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
        18        130          1                  0 CORRUPT
  
7 使用dbv工具来校验坏块
ora11g[redora]/home/ora11g>dbv file=/ora11gSource/ora11g/tbs_tmp.dbf feedback=1000
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Jun 13 10:25:13 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /ora11gSource/ora11g/tbs_tmp.dbf
Page 130 is marked corrupt
Corrupt block relative dba: 0x04800082 (file 18, block 130)
Bad header found during dbv: 
Data in bad block:
 type: 67 format: 7 rdba: 0x65747075
 last change scn: 0x636f.6c622064 seq: 0x6b flg: 0x21
 spare1: 0x72 spare2: 0x72 spare3: 0x0
 consistency value in tail: 0x8d8d2301
 check value in block header: 0xc50a
 block checksum disabled
..
DBVERIFY - Verification complete
Total Pages Examined         : 1536
Total Pages Processed (Data) : 1196
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 154
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 185
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 939342345 (3332.939342345)  

8 下面使用blockrecover来恢复坏块        
RMAN> blockrecover datafile 18 block 130;

Starting recover at 13-JUN-18
using channel ORA_DISK_1
searching flashback logs for block images until SCN 14311770329033
finished flashback log search, restored 1 blocks

starting media recovery
media recovery complete, elapsed time: 00:00:07

Finished recover at 13-JUN-18
  
9 验证修复效果
再次查询表tb_emp正常  
SQL> select count(*) from tb_tmp;  
  
  COUNT(*)  
----------  
     72449  

ora11g[redora]/home/ora11g>dbv file=/ora11gSource/ora11g/tbs_tmp.dbf feedback=1000
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Jun 13 10:26:31 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /ora11gSource/ora11g/tbs_tmp.dbf
..
DBVERIFY - Verification complete
Total Pages Examined         : 1536
Total Pages Processed (Data) : 1196
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 155
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 185
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 939342345 (3332.939342345)

以上是“Oracle中基于RMAN如何实现坏块介质恢复”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle中基于RMAN如何实现坏块介质恢复

本文链接: https://lsjlt.com/news/64084.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle中基于RMAN如何实现坏块介质恢复
    小编给大家分享一下Oracle中基于RMAN如何实现坏块介质恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 基于RMAN实现坏块介质恢复(blockrecover)
    http://blog.csdn.net/leshami/article/details/10500997 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)...
    99+
    2024-04-02
  • 基于rman的坏块恢复
    转载请注明出处 http://blog.csdn.net/guoyjoe/article/details/30965303  实验步骤如下:1、使用rman备份全库Recovery Ma...
    99+
    2024-04-02
  • Oracle 学习之RMAN(十四)恢复实战--基于时间点恢复
    1. 我们先做一个全备RMAN> backup database ; Starting backup at 2015/07/09 ...
    99+
    2024-04-02
  • RMAN如何实现备份与恢复
    小编给大家分享一下RMAN如何实现备份与恢复,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! ###############################################...
    99+
    2024-04-02
  • Oracle DG从库Rman如何实现备份恢复测试
    这篇文章主要介绍了Oracle DG从库Rman如何实现备份恢复测试,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.系统初始化和数据库安装...
    99+
    2024-04-02
  • RMAN如何实现完全恢复错误
    这篇文章主要为大家展示了“RMAN如何实现完全恢复错误”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“RMAN如何实现完全恢复错误”这篇文章吧。RMAN恢复案例:...
    99+
    2024-04-02
  • Oracle中如何使用 DBMS_REPAIR 修复坏块
    这篇文章主要为大家展示了“Oracle中如何使用 DBMS_REPAIR 修复坏块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中如何使用 DBMS...
    99+
    2024-04-02
  • 如何处理oracle中出现的坏块
    这篇文章主要为大家展示了“如何处理oracle中出现的坏块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何处理oracle中出现的坏块”这篇文章吧。在orac...
    99+
    2024-04-02
  • 基于percona xtrabackup的innobackupex如何实现基于时间点数据库恢复
    基于percona xtrabackup的innobackupex如何实现基于时间点数据库恢复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望...
    99+
    2024-04-02
  • Linux环境下oracle数据库Rman备份如何实现异机恢复
    小编给大家分享一下Linux环境下oracle数据库Rman备份如何实现异机恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!备...
    99+
    2024-04-02
  • 如何通过搭建恢复目录实现RMAN异地备份和恢复
    这篇文章给大家分享的是有关如何通过搭建恢复目录实现RMAN异地备份和恢复的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一、为何需要恢复目录RMAN备份的存储库总是存在于RMA...
    99+
    2024-04-02
  • oracle数据库中如何格式化不属于任何段的损坏块
    oracle数据库中如何格式化不属于任何段的损坏块,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、问题症状:1. Rman 备份失败,显示 ...
    99+
    2024-04-02
  • Oracle数据库中出现的坏块问题如何处理
    本篇内容主要讲解“Oracle数据库中出现的坏块问题如何处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle数据库中出现的坏块问题如何处理”吧!一:什...
    99+
    2024-04-02
  • Oracle如何实现冷备份及其恢复
    这篇文章主要为大家展示了“Oracle如何实现冷备份及其恢复”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle如何实现冷备份及其恢复”这篇文章吧。一、冷...
    99+
    2024-04-02
  • MySQL中如何实现随机恢复
    这篇文章给大家介绍MySQL中如何实现随机恢复,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1)数据库参数配置不规范,/etc/my.cnf和/data/mysql_xxx/my.cn...
    99+
    2024-04-02
  • 基于jQuery如何模拟实现淘宝购物车模块
    小编给大家分享一下基于jQuery如何模拟实现淘宝购物车模块,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这是网页版淘宝中购物车的页面注意给checkbox添加事件就是用change()给button添加事件就是用clic...
    99+
    2023-06-29
  • Oracle 12c如何使用RMAN备份对Non-CDB中的表按时间点进行恢复
    小编给大家分享一下Oracle 12c如何使用RMAN备份对Non-CDB中的表按时间点进行恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起...
    99+
    2024-04-02
  • 如何通过rman为客户实现linux下oracle11.2.0.4到windows下oracle同版本数据库的异机恢复
    这篇文章主要介绍了如何通过rman为客户实现linux下oracle11.2.0.4到windows下oracle同版本数据库的异机恢复,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后...
    99+
    2024-04-02
  • 如何实现Oracle数据库的备份和恢复策略
    要实现Oracle数据库的备份和恢复策略,可以遵循以下步骤: 备份策略: 定期进行完整数据库备份:使用Oracle提供的工具如RM...
    99+
    2024-04-09
    Oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作