在执行表查询时,出现如下错误:
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 4, block # 27)
ORA-01110: data file 4:
'/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf'
alert_orcl.log中警报如下:
Reread of blocknum=27, file=/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf. found same corrupt data
此时,无法读取该表空间里存在坏块的表的数据,也无法进行rman备份或导出数据。
用dbv检查数据文件,确认并统计坏块,如
[oracle@oel ~]$ dbv file=/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf
用rman恢复损坏的数据块,如
RMAN> blockrecover datafile 4 block 27
<<Done>>
<<TIPS>>
在无备份时的处理方法:设置10231事件,使用Oracle跳过坏块-->导出数据-->重建数据库-->导入数据 --存在坏块的数据将丢失
模拟坏块可使用bbed或者用文本工具直接修改数据文件,使之产生坏块
<<STEPS>>bbed的使用—常用于实验环境
1)编译bbed
[oracle@oel lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2)创建bbed的filelist及参数文件bbed.par
[oracle@oel ~]$ cat filelist.txt
4 /storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf 5242880
[oracle@oel ~]$ cat bbed.par
blocksize=8192
listfile=filelist.txt
mode=edit
3)启动bbed并设置相应
[oracle@oel ~]$ bbed parfile=bbed.par
blockedit
BBED> set file 4 --“4”来自filelist的编号,二者都与v$datafile(file#)一致
4)修改数据块内容,如:修改4号数据文件第二个块数据为888
BBED> modify 888 file 4 block 2
5)BBED> quit
<<Done>>
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 4, block # 27)
ORA-01110: data file 4:
'/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf'
alert_orcl.log中警报如下:
Reread of blocknum=27, file=/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf. found same corrupt data
此时,无法读取该表空间里存在坏块的表的数据,也无法进行rman备份或导出数据。
用dbv检查数据文件,确认并统计坏块,如
[oracle@oel ~]$ dbv file=/storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf
用rman恢复损坏的数据块,如
RMAN> blockrecover datafile 4 block 27
<<Done>>
<<TIPS>>
在无备份时的处理方法:设置10231事件,使用Oracle跳过坏块-->导出数据-->重建数据库-->导入数据 --存在坏块的数据将丢失
模拟坏块可使用bbed或者用文本工具直接修改数据文件,使之产生坏块
<<STEPS>>bbed的使用—常用于实验环境
1)编译bbed
[oracle@oel lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2)创建bbed的filelist及参数文件bbed.par
[oracle@oel ~]$ cat filelist.txt
4 /storage/oradata/ORCL/datafile/o1_mf_users_7f53s8tq_.dbf 5242880
[oracle@oel ~]$ cat bbed.par
blocksize=8192
listfile=filelist.txt
mode=edit
3)启动bbed并设置相应
[oracle@oel ~]$ bbed parfile=bbed.par
blockedit
BBED> set file 4 --“4”来自filelist的编号,二者都与v$datafile(file#)一致
4)修改数据块内容,如:修改4号数据文件第二个块数据为888
BBED> modify 888 file 4 block 2
5)BBED> quit
<<Done>>