- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-17 15:50:16
|
查看: 4931 |
回复: 2
本帖最后由 ALLSTARS_ORACLE 于 2017-5-3 14:48 编辑
硬件
服务器:sun e2900
+大恒阵列
操作系统: solaris 10
数据库 : oracle 10g 10.1.0.2 for solaris 10
问题:
查询某个表时,出现
ORA-01578: ORACLE 数据块损坏(文件号 31, 块号 4586)
ORA-01110: 数据文件31: '/data/orcl/tsgrad_xs_data01.dbf'
检查了一下,是数据丢失,索引放在另外一个表空间。
目前数据库是在归档下工作,没有物理备份。
有逻辑备份
但是逻辑备份在导入时出现如下问题
illegal lob length marker 36176
bytesread = 00000000000
TABLE =
IMP-00098: INTERNAL ERROR: impgst2段错误-核心陷阱
请各位版主及高手帮我看看。
已经知道坏块所在的表,我是在查询会员表zchy遇到这个错误,所以我在查询该表 select * from zchy where rownum<92100都没有问题,select * from zchy where rownum>92100就会报错,说明这个表rownum超过92100以后的数据都是在这个坏块,我怎么样修复这部分数据?
我不知道有没有其他方法可以知道坏块所在的表?
逻辑备份是exp 整个用户数据库的。
imp的时候出错。
我imp是在其他地方,看看以前备份的数据是否可以用。
rman的恢复我也不是很清楚,之前我没有做rman的备份。
firyou:现在是生产系统,其他表的数据还在增加,我只能对一个表的数据进行恢复?
数据导出可能会丢很多数据啊,只能导出不在坏块的数据吧?
现在问题就是没有备份。:(
有逻辑备份的expdat.dmp
却不能在别的oracle中imp
我现在就是想使用逻辑备份中的该表的数据你把数据库的表rename,然后将该表从备份中导入。
但是我以前exp出来的数据文件再imp就出错,illegal lob length marker 36176
bytesread = 00000000000
TABLE =
IMP-00098: INTERNAL ERROR: impgst2段错误-核心陷阱
具体的情况是这样的,我原来的数据库是在sun v890 + 大恒阵列上运行,我把oracle 10g数据库和我的实例,数据文件等等都装在了阵列上,sun v890 只有运行的环境,数据逻辑备份的导出都是在sun v890中进行。
昨天晚上我把sun v890撤下来了,换成了sun e2900 +阵列。数据库都在阵列里面,我只是在e2900里面增加了oracle用户及其环境变量,然后把阵列的磁盘mount到e2900中。
就这样的操作,我重新启动应用后就发现有坏的数据块。而且在v890中exp的备份不能imp
。
我在v890中重新建了一个干净的数据库,可以导入到新的数据库中。
现在我只能从新的数据库中导出损坏的表然后导入到系统中。
因为损坏的数据文件所属表空间涉及到很多表,这样对其他表有没有影响?我是不是要把这个表空间重建?
select owner,segment_name,segment_type from dba_extents where file_id=31
2 and 4586 between block_id and block_id+blocks-1;
OWNER SEGMENT_NAME SEGMENT_TYPE
------------------------------ -------------------------------------------------------------------------------- ------------------
DBAPP ZCHY
这样的话,可以断定是物理设备或者逻辑磁盘的问题?
只能恢复该表,丢失一部分数据了。
如果我把所属表空间的所有表转移到别的表空间,然后把有坏块表空间删除了,不知道以后会不会出现坏块? |
|