Data corruption

I have a solaris 5.6 on which oracle is installed.

we have an alert file

 
alert_net1.log

now whenever any datacorruption happens we get the file id and block id in the above file.

through this file and block id , we try to find out which table is corrupted and then try to recreate this table.

Now i dont know why this data corruption occurs. Is there a problem with disks or is this related with OS ?

is there a way we can predict the corruption and stop it from happenning.

Please help.

provide system info on the server. disk info, hardware info, system logs etc