> Dear All,
>
> I am facing a problem while fixing a table which is corrupted.
> Before try to fix the problem (through verifydb), I want to
> secure the data
...
> I can run the query as select count(*) and getting the output.
>
[quoted text clipped - 15 lines]
>
> Please help in this regard.
Yogha,
I suspect that your table will either be BTREE or have a secondary
index. A select count(*) will use the index pages in a BTREE, or a
secondary index because it is a faster way to count. When you say
select (1) you are forcing every page in the table to be read, and you
obviously have a corruption in the table.
What errors are being reported in the errlog.log ?
If your table has a secondary, it may be possible to retrieve all (or
most) of the rows by explicitly joining with the secondary.
However, the best (and only supported) course of action is to recover
from a checkpoint and journals. Any other form of recovery is
something which is only done as a last resort, and cannot be
guaranteed to recover all of your data.
John
Chip Nickolett - 04 Jun 2007 04:48 GMT
You should copy the underlying data file(s) before running verifydb.
You can find the file name using the query "select * from iifile_info
where table_name = '<table name>';" This way you can always restore
the base table to the point you are at now, although you will want to
drop any secondary indexes and make sure that you don't otherwise
alter the table (e.g., modifying from btree to heap).
> Dear All,
>
[quoted text clipped - 48 lines]
>
> Please help in this regard.
Hello!
Read the errlog.log file. See if it is terminated due to log file
full.
U can try
1. increase the transaction log file with cbf.
2. in case ur journaling is ON then stop it and try again.
Raghavan