当前位置:  数据库>oracle

Oracle 10G 模拟块损坏后恢复

    来源: 互联网  发布时间:2017-04-19

    本文导语: 当你访问某个表的时候出现类似下面的错误:ORA-01578: Oracle data block corrupted (file # 6, block # 344)ORA-01110: data file 6: 'D:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF'原因就是数据文件中出现了坏块. 下面来模拟一下块损坏和恢复. 1,创建一个比...

当你访问某个表的时候出现类似下面的错误:
ORA-01578: Oracle data block corrupted (file # 6, block # 344)
ORA-01110: data file 6: 'D:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF'
原因就是数据文件中出现了坏块.


下面来模拟一下块损坏和恢复.

1,创建一个比较小的表空间,在这个表空间上建立一个表
create tablespace test datafile 'D:oracleproduct10.2.0oradataBUTtest.dbf' size 10M autoextend off;
create table test tablespace test  as select * from all_objects
commit;
select count(*) from test =49313
2,如果想做完全恢复,需要将数据库设为归档模式,具体参照
3,shutdown immedaite 数据库后,备份一份数据文件test.dbf.
4,编辑test.dbf文件,用ultraedit(它在编辑二进制文件的时候是进行替换),编辑文件的中间位置,因为数据文件前面的数据块是控制信息,不是数据.
5,启动数据库,访问表test,出现下面的错误:
SQL> select count(*) from test;
select count(*) from test                     *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 323)
ORA-01110: data file 5: 'D:ORACLEPRODUCT10.2.0ORADATABUTTEST.DBF'
6,这时候可以通过Oracle提供的dbv工具也可以得到坏块的信息
C:>dbv file='D:ORACLEPRODUCT10.2.0ORADATABUTTEST.DBF'
7,恢复和数据文件丢失一样,需要文件级别恢复.把表空间offline:
SQL> alter tablespace test offline;
Tablespace altered.
8,将开始备份的数据文件拷贝回来.
9恢复数据文件,恢复后能够正常访问.
SQL> recover datafile 5;
Media recovery complete.
SQL> alter tablespace test online;
Tablespace altered.
SQL> select count(*) from test;
  COUNT(*)
----------
     49313



























下面这介绍一下RAMN恢复:
RMAN入门参照
1,在编辑数据文件之前做一个备份:
RMAN> run{
2> allocate channel c1 type disk;
3> backup database format 'D:oraclermanrepbutdb.bpk';
4> }
2,然后shutdown immediate 数据库,可以在rman中也可以在另外一个sqlplus session中完成.
RMAN> shutdown immediate
3,编辑test.dbf文件.
4,startup,在另外一个sqlplus中进行
SQL> startup
SQL> select count(*) from test;
select count(*) from test
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 347)
ORA-01110: data file 5: 'D:ORACLEPRODUCT10.2.0ORADATABUTTEST.DBF'
5,对损坏块进行恢复,在RMAN中
RMAN> BACKUP VALIDATE DATABASE; 这一步是校验,不是backup.
验证完成后会把信息记录到V$DATABASE_BLOCK_CORRUPTION,如下:
SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
         5        347          1                  0 CHECKSUM
         5        693          1                  0 CHECKSUM























RMAN> blockrecover datafile 5 block 347;
恢复后在另一个session中访问表,提示和上次访问时候的坏块就不一样了,如下:
SQL> select count(*) from test;
select count(*) from test
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 693)
ORA-01110: data file 5: 'D:ORACLEPRODUCT10.2.0ORADATABUTTEST.DBF'
在通过RMAN恢复块:
RMAN> blockrecover datafile 5 block 693;







完成后表能够被正常访问了.

在可以 用下面的命令一次恢复所有的坏块,不用像上面那样一个块一个块的恢复.

RMAN> BLOCKRECOVER CORRUPTION LIST;


RMAN的块恢复不需要将表空间offline.
RMAN的恢复是对块进行恢复,而手工恢复是数据文件的恢复.

块损坏只影响坏块所在的数据,该表没有坏块的数据仍然可以访问,其他的表更不受影响.


    
 
 

您可能感兴趣的文章:

  • Oracle中修复数据块的损坏
  • Oracle重做日志文件损坏或丢失后的恢复
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办
  • Oracle中模拟及修复数据块损坏
  • Oracle控制文件的损坏或完全丢失的恢复办法
  • objects iis7站长之家
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • oracle drop table(表)数据恢复方法
  • Oracle数据库备份和恢复工具 RMan
  • oracle备份恢复的具体方法
  • oracle中误删除表后恢复语句(FLASHBACK)
  • oracle冷备份恢复和oracle异机恢复使用方法
  • 在Oracle 10gR2中设定指定的恢复点实现轻松闪回
  • Oracle11g备份和恢复功能的提高
  • 实战Oracle数据库备份与恢复
  • Oracle数据库冷备份的异地恢复
  • oracle下实现恢复一个丢失的数据文件的代码
  • 详解通过Backup Exec来实施Oracle灾难恢复
  • Oracle的恢复管理器及DBMS_JOB包分析
  • Oracle数据库文件恢复以及备份思路
  • Oracle数据库备份恢复最佳实践
  • oracle如何恢复被覆盖的存储过程
  • rman恢复方案和oracle异机恢复
  • oracle数据库创建备份与恢复脚本整理
  • ORACLE 数据库RMAN备份恢复
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 10g和Oracle 11g网格技术介绍
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle 10g中导出到Oracle 9的问题小结
  • 安装Oracle 10g忘记sys密码
  • Oracle 10G进程体系学习笔记
  • [官方最新消息]Oracle 10G 认证考试新变化
  • SOLARIS 下如何卸载ORACLE10G
  • oracle10g 数据备份与导入
  • 为何用dbstart启动oracle10g不好用
  • linux下oracle 10g如何完全卸载?
  • Oracle 10g client for Solaris
  • 急求Linux下oracle 10g和weblogic 9的安装
  • Linux系统下利用java连接Oracle 10G
  • Linux下完全卸载ORACLE 10G的方法
  • Linux下Oracle 10G DBCA等汉字乱码解决方法
  • redhat as 4 下如何安装oracle 10g ?
  • 求助前辈们:solaris 10 x86 安装oracle 10g 错误
  • 将Oracle 8i数据成功移植Oracle 10g的方法
  • 上传一个非常详细的Oracle10G在IBMAIX 5L上的安装步骤与大家分享
  • linux as3 安装oracle10g ,web端能访问,终端用命令不能进入
  • 如何升级Oracle 9i到10g
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3