Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

999

积分

1

好友

942

主题
1#
发表于 2017-4-13 14:23:23 | 查看: 1292| 回复: 1

Oracle 11G
某原因导致灾难,只挽救出三个数据文件:
system01.dbf、sysaux01.dbf、appdata.dbf
并且system01.dbf 有一个逻辑坏块。
求教各位高人指点。
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569     邮箱:service@parnassusdata.com
2#
发表于 2017-4-13 14:25:50
我重建过的undo表空间。多次重建过了。最后又重建回undotbs1了。目前这undo表空间有60G大小。足够用了。虽然大也是浪费。

参考了不少文章,没法解决这个问题。哪位无聊时可以随时远程我的环境做研究或提供些思路方向。
修正了6个01555的异常。最后一个没法搞了。
试过重建LOB索引、字段;DBV正常;ANALYZE TABLE 正常。
可查询rowid除LOB对象外的其他数据,无法查询整行记录;
无法update OBJECT=empty_blob() where rowid='AAASdoAAGAAP2ZcAAK';无法删除。
所有报错全是以下代码:
ERROR at line 1:
ORA-08102: index key not found, obj# 75626, file 5, block 4121159 (2)

trace:
oer 8102.2 - obj# 75626, rdba: 0x017ee247(afn 5, blk# 4121159)
kdk key 8102.2:
  ncol: 2, len: 16
  key: (16):  0a 00 00 00 01 00 00 1b b6 19 3d 04 00 00 00 0c
  mask: (4096):


试过不得行噢~
目前在测试一种想法。
可惜只要有数据迁移,在块的位置只要有改变那么rowid也会改变,不方便对比行记录是否一致。
这里有以前的一个expdp有效备份的dmp。
现在在测试导入到一个新库A,然后定位到这条记录,单独导出这条数据。再插入到新库B。新库B是一个新建的库,用于将从生产库expdp导出的数据的测试用库。
我这有本书:《构建最高可用Oracle数据库系统》 511页里面提到expdp过程中,只会将对象正确的数据导出跳过表的坏块。
没有测试过,不知道可不可靠。。。。
如果这样的话,可以把以前的正确的这个行记录导出再插入到新库B里面。得到的是否就无数据丢失的完整还可用的库了?
因为包含了blob对象,目前想到两个方式:
1、expdp/impdp;带query where rowid<>'AAASdoAAGAAP2ZcAAK'
2、create table T2 as select * from T1 where rowid<>'AAASdoAAGAAP2ZcAAK'  ---- 建新表且跳过lob损坏的那个行记录,待建表成功再修改表的各种属性……

---- 本地测试结果:两个办法都可以。新、老表的数据一致,包括blob对象,并且排除了有错的这个行记录。对于行中的那个坏的LOB可以另写一个insert into 连同AAASdoAAGAAP2ZcAAK能查询出的字段的数据一起插入表内。
---- 以前的expdp备份中查询不到我要的行的数据,所以放弃导入之前未损坏的lob数据,应该正好是数据库故障时的数据。所以以前的备份查不出来。
使用道具 举报

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-20 15:02 , Processed in 0.045992 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569