Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1434362
  • 博文数量: 556
  • 博客积分: 12626
  • 博客等级: 上将
  • 技术积分: 5799
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-11 15:56
个人简介

从事IT基础架构多年,发现自己原来更合适去当老师……喜欢关注新鲜事物,不仅限于IT领域。

文章分类

全部博文(556)

文章存档

2019年(6)

2018年(15)

2017年(17)

2016年(11)

2015年(2)

2014年(2)

2013年(36)

2012年(54)

2011年(100)

2010年(41)

2009年(72)

2008年(14)

2007年(82)

2006年(104)

分类: Oracle

2006-02-10 15:18:58

出现ora-1578时,大多时候可以用过rman命令blockrecover datafile 8 block 10 from backupset;来恢复坏块,但有时候往往因为介质的损坏而无法修复,只能导出数据重新建表,此时exp或扫描表是无法正常的。
使用命令
SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents
WHERE file_id = 8
and 10 between block_id AND block_id + blocks - 1
检查损坏的是否为普通数据。然后用
ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10';
该命令设置全表扫描时跳过坏块。 也可以alter session在session级中使用,然后通过
create table as select的方式来拯救数据(当然会有数据损失)。
 
另外一种方法是使用SKIP_CORRUPT_BLOCKS标记,方法为使用命令
execute DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('','');
然后create table as select 收集剩下的信息。
最后用execute DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('','',
                      flags=>dbms_repair.noskip_flag);
清除这个标记。

 

关于坏块的metalink文档如下:

RELATED DOCUMENTS
-----------------
- TECH: Database Block Checking Features                        
- Handling Oracle Block Corruptions in Oracle7/8/8i/9i          
- Handling Rollback Segment Corruptions in Oracle7.3 to 8.1.7  
- Extracting Data from a Corrupt Table using
  SKIP_CORRUPT_BLOCKS or Event 10231                            
- ORA-1578 ORACLE data block corrupted (file # %s, block # %s)  
- Parameter DIRECT: Conventional Path Export Versus Direct
  Path Export                                                  


阅读(1063) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~