实验前提:已经做好备份。

SQL>

col file_name for a50
select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------------------------------------
4 /home/oracle/app/oradata/orcl/users01.dbf
2 /home/oracle/app/oradata/orcl/sysaux01.dbf
1 /home/oracle/app/oradata/orcl/system01.dbf
5 /home/oracle/app/oradata/orcl/tbtb01.dbf
6 /home/oracle/app/oradata/orcl/ogg01.dbf
7 /home/oracle/app/oradata/andy01.dbf
8 /home/oracle/app/oradata/orcl/bbb.dbf
9 /home/oracle/app/oradata/orcl/andy02.dbf
10 /home/oracle/app/oradata/orcl/andy03.dbf
11 /home/oracle/app/oradata/orcl/tts01.dbf
12 /home/oracle/app/oradata/orcl/ttsind01.dbf
FILE_ID FILE_NAME
---------- --------------------------------------------------
13 /home/oracle/app/oradata/orcl/fda01.dbf
14 /home/oracle/app/oradata/orcl/fda02.dbf
15 /home/oracle/app/oradata/orcl/undotbs02.dbf
14 rows selected.

--模拟数据文件损坏
[oracle@11g ~]$ mv /home/oracle/app/oradata/orcl/andy02.dbf /home/oracle/app/oradata/orcl/andy02.dbf.bak
SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 2432
Session ID: 1 Serial number: 5
-- 查看报错信息
[oracle@11g trace]$ cat alert_orcl.log |grep ORA-
ORA-01116: error in opening database file 9
ORA-01110: data file 9: '/home/oracle/app/oradata/orcl/andy02.dbf'
ORA-27041: unable to open file
ORA-63999: data file suffered media failure

SQL> startup mount;
SQL> set lin 400
SQL> col error for a40
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ---------------------------------------- ---------- ---------
9 ONLINE ONLINE FILE NOT FOUND 0

--利用备份恢复
(如果数据文件损坏,发现及时,数据库没有宕机,则立刻offline对应文件,避免宕机。如果已经宕机,则可跳过offline)
RMAN> sql 'alter database datafile 9 offline';
RMAN> restore datafile 9;
RMAN> recover datafile 9;
RMAN> sql 'alter database datafile 9 online';
RMAN> alter database open;
database opened

补充:
在11.2.0.2之前,如果数据库运行在归档模式下,并且写错误发生在非SYSTEM表空间文件,则数据库会将发生错误的文件离线,在从11.2.0.2开始,数据库会Crash实例以替代Offline。注意:在非归档模式下或者SYSTEM遭受错误时,数据库会直接崩溃。
如果我们不想尝试这个新特性,可以通过将 _DATAFILE_WRITE_ERRORS_CRASH_INSTANCE 设置为FALSE来屏蔽该行为。
该参数是一个动态参数: alter system set "_datafile_write_errors_crash_instance"=false;

非系统数据文件损坏,rman备份恢复的更多相关文章

  1. Oracle RMAN备份恢复指导书

    目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库. ...

  2. MySQL实例多库某张表数据文件损坏导致xxx库无法访问故障恢复

    一.问题发现 命令行进入数据库实例手动给某张表进行alter操作,发现如下报错. mysql> use xx_xxx; No connection. Trying to reconnect... ...

  3. MongoDB学习(三)数据导入导出及备份恢复

    这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...

  4. rman备份恢复命令之switch

    rman备份恢复命令之switch 一 switch 命令 1 switch命令用途 更新数据文件名为rman下镜像拷贝时指定的数据文件名 更新数据文件名为 set newname 命令指定的名字. ...

  5. Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法

    Oracle数据库误删文件导致rman备份报错RMAN-06169解决办法 可能是误删文件导致在使用rman备份时候出现以下提示 RMAN-06169: could not read file hea ...

  6. rman备份/恢复

    全备脚本 cat rman_full.sh #!/bin/bash export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/pro ...

  7. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. MDF文件损坏,如何恢复?(未解决)

    MDF文件损坏,如何恢复?MDF附加失败,数据库附加失败 1.附加时 2.用替换法设置后重建日志 (其实已经删掉日志了,确保操作之前没有日志,但是运行 alter database [test] Re ...

  9. apue学习笔记(第六章 系统数据文件和信息)

    UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口令文件 UNIX系统口令文件包含如下字 ...

随机推荐

  1. linux字符集查看与设置

    linux字符集查看与设置 命令:locale -a   查看本地的字符集        locale -m 查看所有支持的字符集   查看当前默认设置   echo $LANG   记录系统默认使用 ...

  2. DNN自适应

  3. ElasticSearch(二十)定位不合法的搜索及其原因

    GET /test_index/test_type/_validate/query?explain { "query": { "math": { "t ...

  4. 默写一个socket客户端和socket服务端的基本通信,即:收发消息

    Server: import socket sk = socket.socket() sk.bind(('192.168.0.95',8898)) #把地址绑定到套接字 sk.listen() #监听 ...

  5. IO多路复用的作用?并列举实现机制以及区别?

    I/O多路复用是用于提升效率,单个进程可以同时监听多个网络连接IO. 举例:通过一种机制,可以监视多个文件描述符,一旦描述符就绪(读就绪和写就绪),能通知程序进行相应的读写操作,I/O多路复用避免阻塞 ...

  6. MySQL5.7.26 忘记Root密码小计

    以前直接修改mysql.user就ok了,现在不行了,正好虚拟机MySQL的root密码忘记了,就简单记录下:(本方法不适合互联网线上项目,除非你不在意这段时间的损失) PS:以UbuntuServe ...

  7. bug-3——onload,onbeforeunload,Onunload的区别

    window.onload事件设置页面加载时执行的动作,即进入页面的时候执行的动作.   window.onunload已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用 一般用于设置 ...

  8. Android Interactive Animation

    Ref:收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation Ref:界面特效 Ref:BaseAnimation是基于开源的APP,致力于收集各种动画效果( ...

  9. ceph基本架构简述

    1. 介绍 云硬盘是IaaS云平台的重要组成部分,云硬盘给虚拟机提供了持久的块存储设备.目前的AWS 的EBS(Elastic Block store)给Amazon的EC2实例提供了高可用高可靠的块 ...

  10. C#练习委托、事件、事件处理

    控制台应用程序效果: 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...