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

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

72

积分

0

好友

11

主题
1#
发表于 2012-5-10 17:50:09 | 查看: 8124| 回复: 12
DBVERIFY - Verification starting : FILE = /oracle/ISP/sapdata2/isp_13/isp.data13
Block Checking: DBA = 59546921, Block Type = KTB-managed data block
**** actual rows locked by itl 2  = 1 != # in trans. header = 0
---- end index block validation
Page 826665 failed with check code 6401

DBVERIFY - Verification complete
Total Pages Examined         : 1152000
Total Pages Processed (Data) : 687743
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 313604
Total Pages Failing   (Index): 1
Total Pages Processed (Other): 21072
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 129581
Total Pages Marked Corrupt   : 0
Total Pages Influx           : 0

环境:aix5.3
oracle9204


dbv校验文件出错。检查block所在对对象,现在no rows。
在dba_free_space 里面有记录,这个block是不是游离块??
需要怎么处理吗?谢谢maclean大侠。
2#
发表于 2012-5-10 17:56:31
SQL> select file_id from dba_data_files where file_name like '%isp.data13%';

   FILE_ID
----------
        14

SQL>  Select tablespace_name,segment_type,owner,segment_name From dba_extents
Where file_id=14 and 826665 between block_id and block_id+blocks-1;  2

no rows selected

回复 只看该作者 道具 举报

3#
发表于 2012-5-10 17:59:14
Select tablespace_name, file_id, block_id, bytes
from dba_free_space
where file_id = 14
and 826665 between block_id and block_id + blocks - 1 SQL>   2    3    4  ;

TABLESPACE_NAME                   FILE_ID   BLOCK_ID      BYTES
------------------------------ ---------- ---------- ----------
PSAPISP                                14     826633    1048576

回复 只看该作者 道具 举报

4#
发表于 2012-5-10 18:02:58
SQL> select getbfno('0x038C9D29') from dual;

GETBFNO('0X038C9D29')
--------------------------------------------------------------------------------
datafile# is:14
datablock is:826665
dump command:alter system dump datafile 14 block 826665;


可以dump block 看一下吗?

请以附件 形式 上传 个TRACE文件

回复 只看该作者 道具 举报

5#
发表于 2012-5-10 18:04:28
可以  。稍等。可以  。稍等。

回复 只看该作者 道具 举报

6#
发表于 2012-5-10 18:12:34
附件是dump的block。谢谢。

dumpblock1.txt

33.1 KB, 下载次数: 808

回复 只看该作者 道具 举报

7#
发表于 2012-5-10 18:23:20
原帖由 maclean 于 2012-5-10 18:02 发表
SQL> select getbfno('0x038C9D29') from dual;

GETBFNO('0X038C9D29')
--------------------------------------------------------------------------------
datafile# is:14
datablock is:826665
dump command:al ...


请教下maclean,这个看dbv的报错:
  1. Page 826665 failed with check code 6401
复制代码


这里提示的826665是否可以直接看成是有问题的块号?
因为,看到你是用DBA去看找的具体哪个文件,哪个块的。是说直接看那段报错可能存在什么误差吗?

Thanks.

回复 只看该作者 道具 举报

8#
发表于 2012-5-10 18:29:28
ODM DATA:

Start dump data blocks tsn: 1 file#: 14 minblk 826665 maxblk 826665
buffer tsn: 1 rdba: 0x038c9d29 (14/826665)
scn: 0x0000.305ace12 seq: 0x01 flg: 0x00 tail: 0xce120601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump:  0x038c9d29
Object id on Block? Y
seg/obj: 0x12299  csc: 0x00.305ac1b1  itc: 2  flg: -  typ: 2 - INDEX

INDEX SEGMENT trans data

obj : 0x12299 =74393 是 哪一个索引?

是IOT?  

最近是否执行过DDL?

**** actual rows locked by itl 2  = 1 != # in trans. header = 0
---- end index block validation


row#228[3176] flag: -----, lock: 2
col 0; len 13; (13):  45 33 43 2d 31 32 42 31 41 2d 54 50 31
col 1; len 6; (6):  08 4b 82 0f 00 09


Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0001.01d.0007937e  0x0ec636f6.ab8c.01  CB--    0  scn 0x0000.256502a8
0x02   0x0008.01b.0001a36a  0x0ec0513f.59c3.17  C---    0  scn 0x0000.30300117

可以看到 该leaf block存在逻辑讹误 , 存在一行被ITL lock ,但是ITL entry 显示为0


可以通过 scn 0x0000.30300117  找到 对应的时间戳 , 了解相关的事务信息


初步的建议:

1. 对于 index  or IOT 是否能够忽略该问题 重建索引?
2. 该object 之前是否执行过某种DDL 或其他操作
3. 是否可以log miner 找出ITL2 对应的操作?

回复 只看该作者 道具 举报

9#
发表于 2012-5-10 18:32:52
初步的建议:

1. 对于 index  or IOT 是否能够忽略该问题 重建索引?
是KEKO~1 这个index,我已经rebuild online。重新dbv还是有同样的错误。
2. 该object 之前是否执行过某种DDL 或其他操作
曾经有san switch掉电导致数据库crash。
3. 是否可以log miner 找出ITL2 对应的操作?
麻烦您指点一下。

回复 只看该作者 道具 举报

10#
发表于 2012-5-10 18:40:37
ODM DIAG:

"是KEKO~1 这个index,我已经rebuild online。重新dbv还是有同样的错误。"

那么 datafile 14 block 826665;  现在不属于任何segment , 可以认为是 Corrupted block does not belong to any object, Can We Confirm ?

如果仅仅是索引的话 , 我觉得没有必要深究挖掘相关的事务。



你可以尝试 在 原index的tablespace space上 建一个大表 来覆盖 这些存在logical corrupted 的块:


create table large_maclean(
n number,
c char(4000)
) nologging tablespace <tablespace name having the corrupt block> ;


alter table large_maclean  allocate extent

loop
insert into large_maclean;

回复 只看该作者 道具 举报

11#
发表于 2012-5-10 18:43:40
有可能就是有一个游离块, 有没有办法在指定的block上创建表之类的对象。

回复 只看该作者 道具 举报

12#
发表于 2012-5-10 18:47:05

回复 11# 的帖子

据我所知 仅能指定数据文件分配ExTENT, 无法精确到块, 你可能需要干点力气活

alter table table_name allocate extent (DATAFILE......)

回复 只看该作者 道具 举报

13#
发表于 2012-5-10 20:12:10
问题确诊,游离块。通过创建表,删除表搞定。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-15 14:41 , Processed in 0.060359 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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