I am trying to track down some corrupt blocks in a rather large table. I prefer to not have to do the entire table copy, drop and scan routine as this table has 20+ indexes on it and over 30 million rows. Time is not a luxury here. So I ran a kdbfchk on it and told it to save the bad blocks info to a file. How do I tell which ones I should delete and which ones I can leave alone as there are a variety of comments in the output from Free orphaned block truncated away to Free block was marked allocated in header.
If you let kdbfchk output a fixed table with -o, existing indexes are usually still compatible with it (ie. you can copy the fixed table over the original without dropping and re-making indexes). Then you don't have to manually delete individual blocks, and the table will be writable.
If you want to just delete individual blocks quickly, ignore any messages about free blocks/pages and just delete allocated or other blocks. You'll still need to run kdbfchk -q on the table so the free tree is cut off and re-started; otherwise any mods to the table will hit the bad free blocks again (manually deleting those still leaves a corrupted tree).