上一篇文章使用bbed破坏数据块,并使用离线备份和原来的值还原了数据
这里再从OS层面以及不使用bbed而使用dd+rman的方式进行破坏和修复,进一步理解。
首先备份数据库
dd破坏数据文件
数据库启动失败
检查损坏的数据文件
启动数据库到mount状态
rman恢复被损坏的数据块
对应的告警日志
打开数据库
这里再从OS层面以及不使用bbed而使用dd+rman的方式进行破坏和修复,进一步理解。
首先备份数据库
- RMAN> backup database;
-
- 启动 backup 于 27-6月 -16
- 使用通道 ORA_DISK_1
- 通道 ORA_DISK_1: 正在启动全部数据文件备份集
- 通道 ORA_DISK_1: 正在指定备份集内的数据文件
- 输入数据文件: 文件号=00001 名称=/oracle/oradata/sdk/system01.dbf
- 输入数据文件: 文件号=00002 名称=/oracle/oradata/sdk/sysaux01.dbf
- 输入数据文件: 文件号=00004 名称=/oracle/oradata/sdk/users01.dbf
- 输入数据文件: 文件号=00003 名称=/oracle/oradata/sdk/undotbs01.dbf
- 输入数据文件: 文件号=00005 名称=/oracle/oradata/sdk/example01.dbf
- 输入数据文件: 文件号=00006 名称=/oracle/scripts/sql/TBS_A.DBF
- 通道 ORA_DISK_1: 正在启动段 1 于 27-6月 -16
- 通道 ORA_DISK_1: 已完成段 1 于 27-6月 -16
- 段句柄=/oracle/flash_recovery_area/SDK/backupset/2016_06_27/o1_mf_nnndf_TAG20160627T235006_cq2lshlh_.bkp 标记=TAG20160627T235006 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:45
- 通道 ORA_DISK_1: 正在启动全部数据文件备份集
- 通道 ORA_DISK_1: 正在指定备份集内的数据文件
- 备份集内包括当前控制文件
- 备份集内包括当前的 SPFILE
- 通道 ORA_DISK_1: 正在启动段 1 于 27-6月 -16
- 通道 ORA_DISK_1: 已完成段 1 于 27-6月 -16
- 段句柄=/oracle/flash_recovery_area/SDK/backupset/2016_06_27/o1_mf_ncsnf_TAG20160627T235006_cq2lws73_.bkp 标记=TAG20160627T235006 注释=NONE
- 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
- 完成 backup 于 27-6月 -16
- [root@kvm61 ~]# dd if=/dev/zero of=/oracle/oradata/sdk/system01.dbf bs=8192 seek=520 count=1 conv=notrunc
- 记录了1+0 的读入
- 记录了1+0 的写出
- 8192字节(8.2 kB)已复制,0.000719519 秒,11.4 MB/秒
- SQL> shutdown immediate
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup
- ORACLE 例程已经启动。
-
- Total System Global Area 513585152 bytes
- Fixed Size 2214856 bytes
- Variable Size 289408056 bytes
- Database Buffers 213909504 bytes
- Redo Buffers 8052736 bytes
- 数据库装载完毕。
- ORA-01092: ORACLE instance terminated. Disconnection forced
- ORA-00704: bootstrap process failure
- ORA-01578: ORACLE data block corrupted (file # 1, block # 520)
- ORA-01110: data file 1: '/oracle/oradata/sdk/system01.dbf'
- 进程 ID: 3700
- 会话 ID: 125 序列号: 5
- [oracle@kvm61 ~]$ dbv file=/oracle/oradata/sdk/system01.dbf blocksize=8192
- DBVERIFY: Release 11.2.0.1.0 - Production on 星期二 6月 28 00:18:27 2016
- Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
- DBVERIFY - 开始验证: FILE = /oracle/oradata/sdk/system01.dbf
- 页 520 标记为损坏
- Corrupt block relative dba: 0x00400208 (file 1, block 520)
- Completely zero block found during dbv:
- DBVERIFY - 验证完成
- 检查的页总数: 88320
- 处理的页总数 (数据): 59589
- 失败的页总数 (数据): 0
- 处理的页总数 (索引): 12419
- 失败的页总数 (索引): 0
- 处理的页总数 (其他): 3417
- 处理的总页数 (段) : 1
- 失败的总页数 (段) : 0
- 空的页总数: 12894
- 标记为损坏的总页数: 1
- 流入的页总数: 0
- 加密的总页数 : 0
- 最高块 SCN : 2423027 (0.2423027)
- SQL> connect / as sysdba
- 已连接到空闲例程。
- SQL> startup nomount
- ORACLE 例程已经启动。
-
- Total System Global Area 513585152 bytes
- Fixed Size 2214856 bytes
- Variable Size 289408056 bytes
- Database Buffers 213909504 bytes
- Redo Buffers 8052736 bytes
-
- SQL> alter database mount;
-
- 数据库已更改。
rman恢复被损坏的数据块
- RMAN> blockrecover datafile 1 block 520;
-
- 启动 recover 于 28-6月 -16
- 分配的通道: ORA_DISK_1
- 通道 ORA_DISK_1: SID=10 设备类型=DISK
-
- 通道 ORA_DISK_1: 正在还原块
- 通道 ORA_DISK_1: 正在指定要从备份集还原的块
- 正在还原数据文件 00001 的块
- 通道 ORA_DISK_1: 正在读取备份片段 /oracle/flash_recovery_area/SDK/backupset/2016_06_27/o1_mf_nnndf_TAG20160627T235006_cq2lshlh_.bkp
- 通道 ORA_DISK_1: 段句柄 = /oracle/flash_recovery_area/SDK/backupset/2016_06_27/o1_mf_nnndf_TAG20160627T235006_cq2lshlh_.bkp 标记 = TAG20160627T235006
- 通道 ORA_DISK_1: 已从备份片段 1 还原块
- 通道 ORA_DISK_1: 块还原完成, 用时: 00:00:25
-
- 正在开始介质的恢复
- 介质恢复完成, 用时: 00:00:01
-
- 完成 recover 于 28-6月 -16
对应的告警日志
- Tue Jun 28 00:21:18 2016
- alter database recover datafile list clear
- Completed: alter database recover datafile list clear
- Started Block Media Recovery
- Recovery of Online Redo Log: Thread 1 Group 1 Seq 73 Reading mem 0
- Mem# 0: /oracle/oradata/sdk/redo01.log
- Completed Block Media Recovery
SQL> alter database open;
数据库已更改。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29023300/viewspace-2121079/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29023300/viewspace-2121079/