ORACLE坏块(ORA-01578)处理方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE坏块(ORA-01578)处理方法
文章分类:数据库
0.模拟出现坏块环境
SQL> CREATE TABLESPACE "TEST"
2 LOGGING
3 DATAFILE 'D:\ORACLE\ORADATA\ALAN\TEST.ora' SIZE 1M EXTENT
4 MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
5 /
表空间已创建。
SQL> create user alantest identified by alantest
2 default tablespace test
3 temporary tablespace temp;
用户已创建
SQL> grant dba to alantest;
授权成功。
SQL> connect alantest/alantest
已连接。
SQL> show user
USER 为"ALANTEST"
SQL> create table test_alan as select * from dba_objects;
RMAN> backup database format='c:\rmanbackup\FULL_%U';
启动 backup 于 07-7月 -06
正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=18 devtype=DISK
通道 ORA_DISK_1: 正在激活 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制檔
输入数据文件 fno=00001 name=D:\ORACLE\ORADATA\ALAN\SYSTEM01.DBF
输入数据文件 fno=00002 name=D:\ORACLE\ORADATA\ALAN\UNDOTBS01.DBF 输入数据文件 fno=00003 name=D:\ORACLE\ORADATA\ALAN\INDX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE\ORADATA\ALAN\USERS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\ORADATA\ALAN\TOOLS01.DBF
输入数据文件 fno=00006 name=D:\ORACLE\ORADATA\ALAN\CATTAB01.DBF
输入数据文件 fno=00007 name=D:\ORACLE\ORADATA\ALAN\TEST.ORA
通道 ORA_DISK_1: 正在激活段 1 于 07-7月 -06
通道 ORA_DISK_1: 已完成段 1 于 07-7月 -06
段 handle=C:\RMANBACKUP\FULL_0JHNJ63P_1_1 comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:38
完成 backup 于 07-7月 -06
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
使用编辑工具修改数据文件生成坏块
C:\>dbv file=D:\ORACLE\ORADATA\ALAN\TEST.ora blocksize=8192
DBVERIFY: Release 9.2.0.6.0 - Production on 星期五 7月 7 14:53:46 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
DBVERIFY - 验证正在开始 : FILE = D:\ORACLE\ORADATA\ALAN\TEST.ora
标记为损坏的页12
***
Corrupt block relative dba: 0x01c0000c (file 7, block 12)
Bad check value found during dbv:
Data in bad block -
type: 6 format: 2 rdba: 0x01c0000c
last change scn: 0x0000.0007bc14 seq: 0x1 flg: 0x04
consistency value in tail: 0xbc140601
check value in block header: 0x91ea, computed block checksum: 0x110e spare1: 0x0, spare2: 0x0, spare3: 0x0
***
DBVERIFY - 验证完成
检查的页总数:128
处理的页总数(数据):77
失败的页总数(数据):0
处理的页总数(索引):0
失败的页总数(索引):0
处理的页总数(其它):16
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数:34
标记为损坏的总页数:1
汇入的页总数:0
Highest block SCN : 506930 (0.506930)
1.对相关的表进行操作:
SQL> select * from alantest.test_alan where rownum=1234;
select * from alantest.test_alan where rownum=1234
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号7,块号12)
ORA-01110: 数据文件 7: 'D:\ORACLE\ORADATA\ALAN\TEST.ORA'
SQL> select count(*) from alantest.test_alan;
select count(*) from alantest.test_alan
*
ERROR 位于第 1 行:
ORA-01578: ORACLE 数据块损坏(文件号7,块号12)
ORA-01110: 数据文件 7: 'D:\ORACLE\ORADATA\ALAN\TEST.ORA'
2. 检查alter.log出现的报错信息
Corrupt block relative dba: 0x01c0000c (file 7, block 12)
Bad check value found during buffer read
Data in bad block -
type: 6 format: 2 rdba: 0x01c0000c
last change scn: 0x0000.0007bc14 seq: 0x1 flg: 0x04
consistency value in tail: 0xbc140601
check value in block header: 0x91ea, computed block checksum: 0x91a spare1: 0x0, spare2: 0x0, spare3: 0x0