前言:今天程序后台告警如下,初步判断就是数据所在的硬盘有坏块,下面简单记录下处理流程。
一、程序告警
1.png二、dev检测
从程序上告警可以看到文件号4,块号2858634所在的数据库损坏,我们查看文件号4所在的文件名。
SQL> select file_id,file_name from dba_data_files where file_id=4;
FILE_ID FILE_NAME
---------- ----------------------------------------
4 /u01/oracle/oradata/wxdb/users01.dbf
使用dev检测
[oracle@weixindb ~]$ dbv file='/u01/oracle/oradata/wxdb/users01.dbf'
DBVERIFY: Release 11.2.0.3.0 - Production on Mon Apr 9 09:40:44 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/oracle/oradata/wxdb/users01.dbf
DBV-00200: Block, DBA 19635850, already marked corrupt
csc(0x0000.1de576e3) higher than block scn(0x0000.00000000)
Page 2858634 failed with check code 6054
DBVERIFY - Verification complete
Total Pages Examined : 4193600
Total Pages Processed (Data) : 1223652
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 2890057
Total Pages Failing (Index): 1
Total Pages Processed (Other): 57814
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 22077
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 2094114815 (0.2094114815)
从上面可以看到确实存在一个坏块
三、查看坏块所在的对象
SQL> SELECT tablespace_name, segment_type, owner,segment_name, partition_name FROM dba_extents WHERE file_id=6 and 2858634 between block_id AND block_id+blocks-1;
TABLESPACE_NAME SEGMENT_TYPE OWNER SEGMENT_NAME PARTITION_NAME
------------------------------ ------------------ ------------------------------ --------------------------------------------------------------------------------- ------------------------------
USERS INDEX WEIXIN RECORD_ID
因为我这里坏块问题已经解决了,所以另外指定了一个file_id,可以看到坏块所在的对象是一个索引,那么这个问题就比较好解决了,通过重建索引即可解决。
四、在线重建索引
查看索引所在的表
SQL> select table_name,index_name from dba_indexes where index_name = 'RECORD_ID';
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
ZJOL_WINNING_RECORD RECORD_ID
重建索引
alter index idx_xxx rebuild online;
网友评论