ORA-01578: ORACLE data block corrupted (file # XX, block # XXXXX)
As this error (ORA-01578: ORACLE data block corrupted) message shows that you have a corrupt block. So for data corruption you need to check what is going wrong.Check alert logs for more detail.
You can also use below sql:-
select * from v$database_block_corruption;
When i run the SQL. I found that one file # in my case 14 and some block 15353 is corrupted. As we know Corruption can occur in a table or index. So i have checked for this. In my case it was an index. So for a solution i just drop the index and created again and rebuild it. Just remember you cannot rebuild the index if it is having error ORA-01578: ORACLE data block corrupted.
So drop and create index works for me and now i can rebuild. Dropping a index will not harm you much because it's already on corrupt block.
Also i think when we create index again then it will take a different block. I am not sure about this because i have checked with sql after dropping and creating the index:-
select relative_fno, owner,segment_name,segment_type from dba_extents where file_id = 14 and 15353 between block_id and block_id + blocks - 1;
And found the same file and block information. It is strange as when i run the SQL : -select * from v$database_block_corruption;
It also shows me the same information that showed me that i still have the corroupt block for the same index and same file. But the thing is my DB is working now. For now It's working fine.
Please if someone has faced it before let me know in comment section. How to get rid of the error ORA-01578: ORACLE data block corrupted.
For a table label corruption you can use RMAN. I am just putting the link below.
click here
Hope this will save your day.
Can anyone can tell, what are the reasons for block corruption?
As this error (ORA-01578: ORACLE data block corrupted) message shows that you have a corrupt block. So for data corruption you need to check what is going wrong.Check alert logs for more detail.
You can also use below sql:-
select * from v$database_block_corruption;
When i run the SQL. I found that one file # in my case 14 and some block 15353 is corrupted. As we know Corruption can occur in a table or index. So i have checked for this. In my case it was an index. So for a solution i just drop the index and created again and rebuild it. Just remember you cannot rebuild the index if it is having error ORA-01578: ORACLE data block corrupted.
So drop and create index works for me and now i can rebuild. Dropping a index will not harm you much because it's already on corrupt block.
Also i think when we create index again then it will take a different block. I am not sure about this because i have checked with sql after dropping and creating the index:-
select relative_fno, owner,segment_name,segment_type from dba_extents where file_id = 14 and 15353 between block_id and block_id + blocks - 1;
And found the same file and block information. It is strange as when i run the SQL : -select * from v$database_block_corruption;
It also shows me the same information that showed me that i still have the corroupt block for the same index and same file. But the thing is my DB is working now. For now It's working fine.
Please if someone has faced it before let me know in comment section. How to get rid of the error ORA-01578: ORACLE data block corrupted.
For a table label corruption you can use RMAN. I am just putting the link below.
click here
Hope this will save your day.
Can anyone can tell, what are the reasons for block corruption?
Comments
Post a Comment