ALLSTARS_ORACLE 发表于 2017-4-17 15:50:16

Oracle 数据库损坏,IMP-00098: 求救

本帖最后由 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

这样的话,可以断定是物理设备或者逻辑磁盘的问题?
只能恢复该表,丢失一部分数据了。
如果我把所属表空间的所有表转移到别的表空间,然后把有坏块表空间删除了,不知道以后会不会出现坏块?

ALLSTARS_ORACLE 发表于 2017-5-3 14:49:46


illegal lob length marker 36176
bytesread = 00000000000
TABLE =
IMP-00098: INTERNAL ERROR: impgst2段错误-核心陷阱



部分数据块有坏块吧, 可以尝试用prm-dul恢复 http://zcdn.parnassusdata.com/DUL4108.zip

biotwang 发表于 2017-7-17 15:54:28

===============================
illegal lob length marker xxxx
bytesread = 00000000000
TABLE =
IMP-00098: INTERNAL ERROR: impgst2Segmentation Fault - core dumped
===============================
此报错表名exp导出dump文件存在讹误,一般这种错误有两种原因:
1. exp工具造成的文件损坏。
2. 文件在传输或拷贝到目标端时出现损坏。
通常第二个原因是我们碰到的主要问题。

因此,在exp dump文件导出后,你应该使用imp带SHOW=Y参数来验证exp文件是否存在讹误问题。
且在传输到目标端时也应该使用这种方式来再次验证文件的可靠性。
页: [1]
查看完整版本: Oracle 数据库损坏,IMP-00098: 求救