Datafile corruption
Dear All,
I have a question.
If I have my database in ARCHIVELOGMODE and backups are going to tape including the ARCHIVELOGS. My datafile now corrupted and I have no tapes with me, but I want to somehow open the database. Which are the possibilities, I can do this?
Thanks and Regards,
Is this is a general question or a specific question ?
If this is a specific question please post your 4 digits Oracle version and full Oracle error message with ORA-XXXX number.
If this is a general question, the general answer is:
1. Oracle returns an error code usually ORA-01578 when accessing a corrupt block:
oerr ora 1578
01578, 00000, "ORACLE data block corrupted (file # %s, block # %s)"
// *Cause: The data block indicated was corrupted, mostly due to software
// errors.
// *Action: Try to restore the segment containing the block indicated. This
// may involve dropping the segment and recreating it. If there
// is a trace file, report the errors in it to your ORACLE
// representative.2. Oracle instance does not crash in such cases and database stays open.
Oracle instance running in ARCHIVELOG mode crashes in other cases generally due to I/O error on control file or if SYSTEM or UNDO datafiles cannot be accessed. See Responding to Media Failures in http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/intro008.htm#sthref96
Edited by: P. Forstmann on 18 mai 2010 13:42
Similar Messages
-
Standby database datafile corruption.
Hi:
I am getting the following errors on my standby db. Could u please tell me how to handle the situation. I am skeptical to try out any thing as this might end up in datafile corruption. Please advice..
MRP0: Background Media Recovery terminated with error 1237
Fri Nov 30 09:15:25 2007
Errors in file /u01/prod/oraprod/proddb/9.2.0/admin/PROD_hunter/bdump/prod2_mrp0_19630.trc:
ORA-01237: cannot extend datafile 392
ORA-01110: data file 392: '/u03/prod/oraprod/proddata/a_txn_data01.dbf'
ORA-19502: write error on file "/u03/prod/oraprod/proddata/a_txn_data01.dbf", blockno 424577 (blocksize=8192)
ORA-27072: skgfdisp: I/O error
Linux Error: 4: Interrupted system call
Additional information: 424576
Some recovered datafiles maybe left media fuzzy
Media recovery may continue but open resetlogs may fail
MRP0: Background Media Recovery process shutdown
---------------------------------------------------------------------------------------------------------------------Check this error,
ORA-01237: cannot extend datafile string
Cause: An operating system error occurred during the resize.
Action: Fix the cause of the operating system error and retry the command.
Is there any DDL statement in your primary to resize datafile ? Do you have enough space on standby server? -
Datafile Corrupted in Oracle 9i
Hi all,
How to recover the particular data file in oracle 9i. The data file is corrupted
Note: Even back up data also corrupted.
when we run the data im getting error msg.
ORA-00376: File 13 cannot read at this time
ORA-01110: data file 13: 'E:\ORACLE\ORADATA\WMSLIVE\WH1_INDEX.DBF
cheers
prabu ammaiappanHello Prabhu,
One question, the datafile really got corrupted or it simply went offline? Please check that also...
SQL>select distinct status from v$datafile;
SQL>col name for a50
SQL>select file#,name,status from v$datafile where status not in ('ONLINE','SYSTEM');And do a DBVERIFY on the said datafile...
C:\>dbv file=E:\ORACLE\ORADATA\WMSLIVE\WH1_INDEX.DBF blocksize=8192Paste the results of above queries and DBVERIFY
Edited by: Mahesh Menon on Aug 28, 2011 8:33 AM -
Datafile corrupted On standby database
one of the datafile got corrupted in the standby database . when backing up with rman i got ora-15966 error .
i found the corrupted datafile but i did not have any backups to recover .
is there any way to recover the block corruption ?Hello,
What's your Oracle version? OS? following link shows how to fix it , you can search oracle documentation according to your version.
http://www.mpi-inf.mpg.de/departments/d5/teaching/ss05/is05/oracle/server.920/a96521/repair.htm#11355
Regards -
good morning all
What if in system datafile some blocks are corrupted in scenerio as below(db in noarchive mode but backup available-point in time recovery not important,data loss tolerated but want faster approach without shutting down db prefrably)
oracle 10g release 2
1)have cold backup /rman of few days old before corruption
2)can i use bmr of rman or export system from this server import on anoter server and export and import back on this server
3)or can i restore backup/rman of this db on other server,export system and import this on server where
system.dbf is corrupted
4)OR should i restore whole rman backup and replace whole db(point in time recovery not important here)
which approach is best
thanksfor the following points :
1)have cold backup /rman of few days old before corruptionyou have to remove the existing C/R/D files and restore those files from the last backup and start the database.
2)can i use bmr of rman or export system from this server import on anoter server and export and import back on this serverTaking export is possible but not sure whether there would be any problem while taking any export and also during the import as well.
3)or can i restore backup/rman of this db on other server,export system and import this on server where system.dbf is corrupted Its same as your second point but you are just doing it remotely
4)OR should i restore whole rman backup and replace whole db(point in time recovery not important here) which approach is bestThis point is right because the database is not in archivelog mode...
Cheers! -
Oracle 10G SE1 - datafile corruption
Good morning,
we get from 10G DB udump/xxx.trc see below. We do not know what situation can trigger this failure.
At the OS level we did e2fsck. None failure was found. DB we had to recover from cold backup.
Is it DB failure, OS, disk array etc.??
Thanks
Zbynek Novak
070F42BE0 00000000 00000000 00000000 00000000 [................]
Repeat 133 times
070F43440 00000000 00000000 0180BF2E 00000000 [................]
070F43450 00000000 00000000 00000000 00000000 [................]
Repeat 185 times
070F43FF0 00000000 00000000 00000000 05E22303 [.............#..]
Corrupt block relative dba: 0x0180bf2f (file 6, block 48943)
Fractured block found during buffer read
Data in bad block:
type: 35 format: 2 rdba: 0x0180bf2f
last change scn: 0x0000.061fc016 seq: 0x3 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x05e22303
check value in block header: 0xbce3
computed block checksum: 0xc5f4
Reread of rdba: 0x0180bf2f (file 6, block 48943) found same corrupted dataHi,
>>(file 6, block 48943) found same corrupted data
"DBVERIFY is an external command-line utility that performs a physical data structure integrity check on an offline database. It can be used against backup files and online files (or pieces of files). You use DBVERIFY primarily when you need to insure that a backup database (or datafile) is valid before it is restored or as a diagnostic aid when you have encountered data corruption problems."
e.g.: dbv blocksize=8192 file=users01.dbf feedback=1000
First, you need try to find what object was corrupted using this SQL below:
SELECT tablespace_name, segment_type, owner, segment_name
FROM dba_extents
WHERE
file_id = 6 and 48943 between block_id AND block_id + blocks - 1
>>DB we had to recover from cold backup.
You restored all datafiles of your database ?
Cheers -
Database is not started because of datafile corruption !!!
Dear friends ,
I m using oracle 9.2.0.1.0 . Suddenly for power failure my pc is restarted and that moment , when i m going to startup the database i got the following error :
SQL> startup
ORACLE instance started.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\ORACLE\ORADATA\SCHEME\SYSTEM01.DBF'
I m running the following recovery option but the problem is not solved :
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 8853194 generated at 08/31/2008 17:31:32 needed for thread 1
ORA-00289: suggestion : D:\ORACLE\ORA92\RDBMS\ARC00116.001
ORA-00280: change 8853194 for thread 1 is in sequence #116
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'D:\ORACLE\ORADATA\SCHEME\SYSTEM01.DBF'
ORA-01112: media recovery not started
I use AUTO option , but no benefit .
I have no cold or RMAN backup of my database , and also database is not in archive log mode .
In this moment , is there any solution to startup my database ?
waiting for ur kind reply ... ...Check the alert.log for this database. What were the last few entries ? We need to know which redo log was sequence #116. You would be able to use that for recovery.
We presume that there are NO filesystem corruption errors and NO missing datafiles / redologs. -
ORA-00704: bootstrap process failure and SYSTEM datafile corrupt
We have an Oracle 10g Express database that is getting the following error on startup.
ORA-00704: bootstrap process failure
It is also showing that the SYSTEM datafile is corrupt. And unfortunately the backups are gone. Is there any way to recover from this without a backup? Maybe some hidden undocumented parameter???
We do have some full database exports from a couple weeks ago so it is not a complete loss but would really like a full recover.Windows XP
We have tried allowresetlogs_corruption and allowread_only_corruption and no luck so far.
ALTER DATABASE MOUNT
Thu Aug 09 08:49:28 2012
Setting recovery target incarnation to 2
Thu Aug 09 08:49:28 2012
Successful mount of redo thread 1, with mount id 2672004948
Thu Aug 09 08:49:28 2012
Database mounted in Exclusive Mode
Completed: ALTER DATABASE MOUNT
Thu Aug 09 08:49:50 2012
alter database open upgrade
Thu Aug 09 08:49:50 2012
Beginning crash recovery of 1 threads
Thu Aug 09 08:49:50 2012
Started redo scan
Thu Aug 09 08:49:50 2012
Completed redo scan
0 redo blocks read, 0 data blocks need recovery
Thu Aug 09 08:49:50 2012
Started redo application at
Thread 1: logseq 84298, block 3, scn 10745981851
Thu Aug 09 08:49:50 2012
Recovery of Online Redo Log: Thread 1 Group 4 Seq 84298 Reading mem 0
Mem# 0 errs 0: D:\DATA\ORACLE\ORADATA\XE\REDO04A.LOG
Mem# 1 errs 0: D:\DATA\ORACLE\ORADATA\XE\REDO04B.LOG
Thu Aug 09 08:49:50 2012
Completed redo application
Thu Aug 09 08:49:50 2012
Completed crash recovery at
Thread 1: logseq 84298, block 3, scn 10746001852
0 data blocks read, 0 data blocks written, 0 redo blocks read
Thu Aug 09 08:49:51 2012
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=18, OS id=2524
Thu Aug 09 08:49:51 2012
ARC0: Archival started
ARC1 started with pid=20, OS id=2956
Thu Aug 09 08:49:52 2012
ARC1: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
Thread 1 advanced to log sequence 84299
Thread 1 opened at log sequence 84299
Current log# 2 seq# 84299 mem# 0: D:\DATA\ORACLE\ORADATA\XE\REDO02A.LOG
Current log# 2 seq# 84299 mem# 1: D:\DATA\ORACLE\ORADATA\XE\REDO02B.LOG
Successful open of redo thread 1
Thu Aug 09 08:49:52 2012
ARC1: STARTING ARCH PROCESSES
Thu Aug 09 08:49:52 2012
ARC0: Becoming the 'no FAL' ARCH
ARC0: Becoming the 'no SRL' ARCH
Thu Aug 09 08:49:52 2012
SMON: enabling cache recovery
Thu Aug 09 08:49:52 2012
ARC2: Archival started
Thu Aug 09 08:49:52 2012
ARC1: STARTING ARCH PROCESSES COMPLETE
ARC1: Becoming the heartbeat ARCH
ARC2 started with pid=21, OS id=3916
Thu Aug 09 08:49:54 2012
Successfully onlined Undo Tablespace 1.
Thu Aug 09 08:49:54 2012
SMON: enabling tx recovery
Thu Aug 09 08:49:54 2012
Database Characterset is WE8MSWIN1252
Thu Aug 09 08:49:56 2012
Hex dump of (file 1, block 39) in trace file c:\oraclexe\app\oracle\admin\xe\bdump\xe_smon_876.trc
Corrupt block relative dba: 0x00400027 (file 1, block 39)
Bad check value found during buffer read
Data in bad block:
type: 6 format: 2 rdba: 0x00400027
last change scn: 0x0002.7fee0b69 seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x0b690601
check value in block header: 0x8f6c
computed block checksum: 0x1000
Reread of rdba: 0x00400027 (file 1, block 39) found same corrupted data
Thu Aug 09 08:49:56 2012
Stopping background process MMNL
Thu Aug 09 08:49:56 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_smon_876.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 1, block # 39)
ORA-01110: data file 1: 'D:\DATA\ORACLE\ORADATA\XE\SYSTEM.DBF'
Thu Aug 09 08:49:57 2012
Stopping background process MMON
Starting background process MMON
Starting background process MMNL
MMON started with pid=11, OS id=1012
Thu Aug 09 08:49:58 2012
ALTER SYSTEM enable restricted session;
MMNL started with pid=12, OS id=3584
Thu Aug 09 08:49:58 2012
ALTER SYSTEM SET systemtrig_enabled=FALSE SCOPE=MEMORY;
Thu Aug 09 08:49:58 2012
ALTER SYSTEM SET aq_tm_processes=0 SCOPE=MEMORY;
Thu Aug 09 08:49:58 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\udump\xe_ora_324.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 1, block # 39)
ORA-01110: data file 1: 'D:\DATA\ORACLE\ORADATA\XE\SYSTEM.DBF'
Thu Aug 09 08:49:58 2012
Error 604 happened during db open, shutting down database
USER: terminating instance due to error 604
Thu Aug 09 08:49:59 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_pmon_3120.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:49:59 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_psp0_3444.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:49:59 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_mman_2592.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:49:59 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_dbw0_932.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:49:59 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_ckpt_1156.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:50:00 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_lgwr_1508.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:50:00 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_reco_2700.trc:
ORA-00604: error occurred at recursive SQL level
Thu Aug 09 08:50:00 2012
Errors in file c:\oraclexe\app\oracle\admin\xe\bdump\xe_smon_876.trc:
ORA-00604: error occurred at recursive SQL level -
Where to find the datafile corruption ?
I wonder, if we can find out the place from where, we can trace out about the name of datafile, which got corrupt and how to recover that file ? I can only see
the alert.log file in that description, but really wich to hear your views.
hare krishna
AlokIf MAXCORRUPT was set high enough during a backup, you can look in V$DATABASE_BLOCK_CORRUPTION for corruption entires. In addition, you could run BACKUP VALIDATE DATABASE and then check V$DATABASE_BLOCK_CORRUPTION. V$BACKUP_CORRUPTION maintains historical records of any corruption.
-
Rman Networker library cause datafile corruption
After rman full backup fails with this error:
released channel: t1
released channel: t2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on t1 channel at 01/03/2013 10:43:48
ORA-27192: skgfcls: sbtclose2 returned error - failed to close file
ORA-19511: Error received from media manager layer, error text:
Permission denied, user 'daemon' on 'lnki448' does not have 'Operate NetWorker' privilege to perform this operation - NSR.
(2:2:11)
ORA-19505: failed to identify file "/u02/oradata/LKP11/TS_TDE_04.dbf"
ORA-27048: skgfifi: file header information is invalid
Additional information: 44
I show in alert:
Errors in file /u01/app/oracle/diag/rdbms/lnkp11/LKP111/trace/LKP111_dbw0_12189930.trc:
ORA-01157: cannot identify/lock data file 82 - see DBWR trace file
ORA-01110: data file 82: '/u02/oradata/LKP11/TS_TDE_04.dbf'
ORA-27048: skgfifi: file header information is invalid
Additional information: 97
Explanation:
If you are using a solution with RMAN and networker SBT library, combined with networker scheduler you can encounter this issue. Networker scheduler, only supports configure your backup using "root" user to execute backup script.
In some versions of S.O. root user uses a proxy user "daemon", and when finsh backup it does not have permissions to close de file, dont closes the lock over the file and lose the header.
Soluction:
In environment variables sectios of networker shell script, confirure variable ORACLE_USER=<so oracle user> to ensure that networker execute su - oracle to execute rman.
I hope this can help someone!This is not a Oracle error. Do you check the environment? There are package lost in the network?
Hugs, Bruno Reis -
Undo Tablespace Datafile is corrupted
Here's my case:
- our Oracle 9i R2 database is running in NOARCHIVE mode in Windows 2000 plateform.
- the Undo Tablespace datafile corrupted in the filesystem level (it gives "cyclic redundancy check" error when trying to copy or read from the file). Therefore database cannot startup.
- There is no backup files.
- I tried to create an Undo Tablespace to replace the existing one in the MOUNT state. That was not of course possible.
- I tried to use ALTER DATABASE CREATE DATAFILE '' AS '' statement, but it couldn't work because the original file is corrupted.
How can I solve the problem and make the database startup?
Thanks in advance.This is a very bad situation, here's a statement from an Oracle note:
If the rollback segment datafile is physically missing, has been offlined
dropped, or the rollback segment header itself is corrupt, there is no way to
dump the transaction table to check for active transactions. So the only thing
to do is get the database open, export and rebuild. Log an iTar to engage support
to help with this process.
If you cannot get the database open, there is no other alternative than
restoring from a backup. ...
So you should contact Oracle support. -
UAT DB's nonsystem dfile corrupted. how can I restore it from Prod by rman
I have an UAT env. some non system tablespace's datafile corrupted (one tb one dbfile)
errors look like below and the db could just be in mount state.
Database mounted.
ORA-01157: cannot identify/lock data file 4 – see DBWR trace file
ORA-01110: data file 4: ‘D:\ORACLE_DATA\DATAFILES\ORCL\USERS01.DBF’
When I took them offline, the db could be open.
I could not use rman to recover it although it is in archivelog mode. it is because some corruptions in archived logs.
Now, I would like to recover them from prod db.
How can I do that by using rman/ export import. My DB's version is 10g R2
I appreciate if there are any reference and instructions from all of you.
Many Thanksyou can use data pump export/import instead of traditional exp/imp, if you are oracle 10g or high. These tools are much faster(approximately 10 times) than traditional exp/imp.
There is also another possibility you can use, which is called transportable tablespaces. Of course it will not be convenient if your corrupted datafile is one of the several datafiles of the certaion tablespace. But if your tablespace just consists of this corrupted datafile, you can use this method, which is much faster than export import tools. -
Datafile Lost but no backup available
Version:11g
We are archivelog mode.
We inadvertantly lost a datafile and due to some reasons the RMAN backup is not accesible. But all archived logs are available. Is it possible for me to recover the datafile?Hi friend,
We can perform complete recovery in four situations.
1. System datafile corrupted with recent backup.
2. non-system datafile corrupted with backup.
3. non-system datafile corrupted without backup.
4. Disk corrupted and recreating non system datafile.
steps
Recovery of a Missing Datafile that has no backups (database is open).
If a non system datafile that was not backed up since the last backup is missing,
recovery can be performed if all archived logs since the creation
of the missing datafile exist.
Pre requisites: All relevant archived logs.
1. alter tablespace <tablespace_name> offline immediate;
2. alter database create datafile '/user/oradata/u01/dbtst/newdata01.dbf';
3. recover tablespace <tablespace_name>;
4. alter tablespace <tablespace_name> online;
If the create datafile command needs to be executed to place the datafile on a
location different than the original use:
alter database create datafile '/user/oradata/u01/dbtst/newdata01.dbf' as
'/user/oradata/u02/dbtst/newdata01.dbf'
for more information about complete recovery scenarios
download the below document
blogs.oracle.com/.../gems/BackupAndRecoveryChecklist.pdf -
About automatically extend datafile!
HI All Experts,
What is the advantage and disadvantage about using automatically extend on datafile? Any suggestion is welcome!I agree with forbrich, I also do not like using autoextend option. In case when you are obligated to use it (i.e. customer requirement) I would advice you to use MAXSIZE option. This will limit the size to which file can autoextend. You should also choose reasonable datafile sizes, you should choose reasonable sizes. You have to remember about data availability. If you place or you data in one datafile and this file will be corrupted you whole application will be not available during restore of for example 32 GB datafile. If you devide your data wisely between tablespaces in case of one datafile corruption many parts of your application can be available to end users.
Best Regards
Krystian Zieja / mob -
i was going through this article about recovering a database in suspect mode :
http://www.mytechmantra.com/LearnSQLServer/Repair_Suspect_Database_P2.html
in the article the error seems to indicate corruption in the log :
Error: 9003, Severity: 20, State: 9. The log scan number (189624:16:2) passed to log scan in database
'BPO' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf
if the corruption is in the log, then is not the logical solution to bypass the recovery process and then truncate the log with no_log option and then bring the database online?
and dbcc checkdb (<db>,repair_allow_data_loss) repairs the data pages or the log pages?
and any other options/ways/articles about bringing a suspect database online?
appreciate the insights.datafile corruption : put db in emergency mode / put db in single user mode / dbcc checkdb with REPAIR_ALLOW_DATA_LOSS/ dbcc checkdb on database
again/put db back in multi user mode.
There is no need to do this. This is totally not required.
You can
Switching the database to the Simple recovery model
Performing a checkpoint (which should clear the active log as long as nothing else requires the log to be kept active)
Switching back to the Full recovery model
Reestablishing the log backup chain by performing a full or differential backup
Or you can rebuild log as already pointed in my reply.
Or you can restore from known valid backup.
There is no need to move data as well because actually its not related to data.
Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
My Technet Wiki Article
MVP
Maybe you are looking for
-
Ok here lately when i came into my office and go to cut on my imac desktop 24inch all in one it would come up to a white screen with a grey folder with a question mark blinking in the center of the screen well i just want to reload the machine but wh
-
Hi, I am using a if condition that will first check if the above command ran successfully if the errorlevel is 0 then execute the condition inside the if condition. My syntax is as follows if %errorlevel%==0 ( for /f "delims=" %%x in ('dir /b/od C:\F
-
Hi All, Did anyone managed to parallelize CONNECT BY PUMP rowsource and its corresponding join? I'm thinkging about following steps from execution plan | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Ti
-
Droplet - getting name of dropped file
This post does not need answering, as I have already solved the problem described. I have put it here in case it might help someone else save a bit of time. However, feel free to make comments and observations for further enlightenment of myself and
-
Auto Truncat of text in table row.
Is there any way to truncate the text displayed in the table row. I need to auto truncate the text in case text does not fit in the row with current column height.