Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

This question already has an answer here:

I have this ORA error in our logs:

Caused by: java.sql.BatchUpdateException: ORA-01578: ORACLE data block corrupted (file # 8, block # 22921) ORA-01110: data file 8: '/data/app/oracle/oradata/MYSRVR/datafile/o1_mf_mysrvr_88m82mdj.dbf'

I tried running this in sqlplus:

select segment_name,segment_type,tablespace_name, owner from sys.dba_extents where file_id=8 and 22921 between block_id and block_id + blocks -1;

output is:

SEGMENT_NAME             SEGMENT_TYPE   TABLESPACE_NAME     OWNER
-----------------------    ------------     ----------------    ---------------
PK_ZXCATSET_CATID      INDEX            MYSRVR_IDX_TB    MYSRVR

Now I am stuck on which index is that actual segment name. (I think :/ ) I tried doing this to rebuild that index:

SQL> alter index PK_ZXCATSET_CATID rebuild tablespace MYSRVR_IDX_TB;

* ERROR at line 1: ORA-01418: specified index does not exist

Even though if I do "select index_name from dba_indexes", that index name shows up. What am I doing wrong? This is a 10.2 Oracle server.

Thanks in advance!

share|improve this question

migrated from stackoverflow.com Apr 25 '13 at 6:43

This question came from our site for professional and enthusiast programmers.

marked as duplicate by Phil, gbn, Marian, Chris Travers, Mat Apr 25 '13 at 9:17

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
Good point, will do! –  user83598 Apr 25 '13 at 0:54

1 Answer 1

There is a command line utility dbv which can scan a datafile a will report and mark corrupted blocks. If you want for "fix" it you can either use RMAN block recover option - if you run Ent. Edition and if you have RMAN backup.

Otherwise search for document named "How to format corrupted block" on Metalink. This describes a situation when a table block is corrupted but it is applicable for indexes too. First of all you mast mark the block as corrupted.

PS: the is also an SQL comment "ALTER TABLE VALIDATE STRUCTURE CASCADE", this will also generate a report, but will not fix anything.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.