ORA-01578: Oracle data block upload upted (file # num, block # num)
Cause: When ORACLE accesses a data block, due to 1. Hardware I/O errors; 2. Operating System I/O errors or buffer problems; 3. memory or paging problems; 4. ORACLE failed to access an unformatted system block; 5, part of the data file overflow and other situations such as a cause of the logical bad block or physical bad block, then it will report the ORA-01578 error.
Solution: Because ORACLE Reports an error only when it accesses a problematic data file, the error may be reported later than the actual error time, if the ORA-01578 error message prompts that the bad data block points to the user's own data file, use the following method to solve:
If the bad block found through the following SQL statement has an index, you only need to re-create the index.
SQL> Select owner, segment_name, segment_type from dba_extents where file_id = and between block_id and block_id + blocks-1;
(And are the file number and block number of the Bad block reported by the ORA-01578 respectively)
If the bad block appears on the table, use the following statement to check whether it is a permanent bad block (it is recommended to execute it once or twice to help identify whether the bad data block is permanent (the physical bad block on the hard disk) or random (caused by memory or hardware errors): SQL> Analyze table validate structure cascade;
After executing this command, the following results may appear:
ORA-01578: has the same parameter as the original error message, is a permanent physical or logical bad block; has a different parameter with the original error information, may be with memory, page space is related to the I/O device.
If you have the latest backup of this table, it is best to use this backup to restore the table, or use event 10231 to retrieve data other than bad blocks:
<1>. Shut down the database first.
<2> edit the init. ora file and add:
Event = "10231 trace name context forever, level 10"
<3>. startup restrict
<4>. create a temporary table: SQL> create table errortemp as select * from error; (error is the name of the bad table)
<5>. Delete the event from the init. ora file and restart the database.
<6>. rename bad table: rename the temporary table to the name of the bad table.
<7>. Create Table Indexes
If the ORA-01578 error message prompts that the bad data block points to a data dictionary or rollback segment, you should immediately contact ORACLE to discuss a good solution.
The solution mentioned here is only a common one. For more specific solutions, you can refer to the ORACLE troubleshooting manual, there are methods for retrieving data other than bad blocks using the ROWID method, which will not be described here.
The corresponding English is as follows:
Cause: The given data block was has upted, probably due to program errors
Action: Try to restore the segment containing the given data block, This may involve dropping the segment and recreating it, If there is a trace file, report the messages recorded in it to customer support.