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.
Similar Messages
-
Move an undo tablespace datafile while online
Having a spirited debate at work today. Is it possible, or has anyone successfully moved an undo tablespace datafile while keeping the database online? (Hypothetically someone created it in the wrong directory)
My logic:
Create a new undo tablespace B
Switch undo tablespace from A to B
Take tablespace A offline
Once A goes from 'PENDING OFFLINE' to 'OFFLINE' copy the file to new location
Alter database rename file location
Switch undo tablespace from B to A
Drop tablespace B
Any comments?Yes I do understood that, but you don't have to "move" the datafile.
The procedure I proposed is just to create a new undo tablespace, drop the former and forget about it.
You can't "move" the file stricto sensu while the database is online, but nothing prevents you from switching from one tablespace to another. Once it's done, everything's fine. And if you're on 10G (r2?) you might even rename tablespace "B" to tablespace "A"!
Yoann. -
Oracle 9i
In production, we have undo data files:
SUM(MAXBYTES) SUM(USER_BYTES)
33554432000 12823953408
this table has 90 million records
I estimated table size:
num_rows*avg_row_len=12875211284
We need to insert 55 million records to new table. When insert, I just want to run insert into ...select from statement once, only commit one time.
do you think undo tablespace is big enough to hold 55 million records based on the above undo datafiles?
Thanks
S.Also append doens't work with select it only works with INSERT, and you already created table in nologging mode. if you are on 10 and your extent management is set to auto, then use this.
create table st.order_temp
tablespace USER_DATA
nologging
nocache
noparallel
as select
all columns
from st.order_temp
where trunc(insert_date)>=add_months(trunc(sysdate, 'MONTH'), -12);
Edited by: OrionNet on Dec 9, 2008 2:19 AM -
Hey Folks,
I really need some help here.
I'm trying to drop/recreate the undo tablespace (currently 25gig) Oracle 9i
When I try to drop the undo tablespace 'UNDOTBS1' I get the following error:
âORA-01548: active rollback segment '_SYSSMU1$' found, terminate dropping tablespaceâ
Here's what I have tried so far:
- Bounced the DB several times hoping to get rid of the reference to the active rollback segment. No luck.
- Created a new undo table space
- Tried 'Alter system set undo_tablespace=new_one' (noticed that 10 new rollback segs were created '_SYSMU11$..SYSMU20$' pointing to the new undo tablespace)
- I then performed an offline drop of the undo tablespace data file. After the offline drop, the system rollback segs SYSMU01$..SYSMU10$ went offline as would be expected.
- Even with the new undo tablespace, all other application tablespaces still use the old undo which due to the offline drop, no inserts, deletes, etc. will work.
After all the above, I still get the same error when trying to drop the undo tablespace.
Any ideas? Ideally I would like to be able to drop the undo tablespace and recreate it, but at this point I'd be happy to bring back the undo tablespace datafile so we can at least use the database again.
Thanks in advance!!
ColinSQL> show parameters undo
undo_retention integer
10800
undo_suppress_errors boolean
FALSE
undo_tablespace string
UNDOTBS03
r.- The undo tablespace which the database is looking for is this one ( UNDOTBS03 )
What is strange about the lines above is that I have
all those params above commented out in my
\pfile\init.ora file (and have bounced the db).
Iâm not sure why they are still showing up.
r.- Perhaps your instance is started with the spfile instead of the init file
Here's what we did after the UNDOTBS1 tablespace
caused the disk to run out of space during a large
import (from now on we are going to use commit = y):
1. Created a new undo tablespace UNDOTBS03 - got
errors so instead we to created it as a temp
tablespace UNDOTBS03 which worked. r.- Yes, but that tablespace was created as a UNDO TABLESPACE ?
2. Tried to drop UNDOTBS1 got the following error
msg:
ORA-01548: active rollback segment '_SYSSMU1$' found,
terminate dropping tablespacer.- Of course, the database did not allow to drop it beacause there were pending transactions
3. SQL> alter system set undo_tablespace =
'UNDOTBS03' scope = both. Tried dropping UNDOTBS1.
Same error as in #2 above.r.- There were still pending transactions with the older undo tablespace
4. We then offline dropped the datafile associated
with UNDOTBS1 hoping that would then allow us to drop
UNDOTBS1. Same error as #2.r.- That was the worst you did. You can not drop a tablespace so...
5. Then tried creating a undo tablespace again:
Create UNDO tablespace undo_temp
datafile 'D:\oracle\oradata\usbperf\undo_temp.DBF'
size 25m autoextend on;
Error on line 0
Create UNDO Tablespace undo_temp
datafile 'D:\oracle\oradata\usbperf\undo_temp.
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2:
'D:\ORACLE\ORADATA\USBPERF\UNDOTBS01.DBF'
So thatâs where we are. I'm guessing that the
original undo tablespace corrupted when it tried to
extend and ran of disk space?
Thanks again for the help.
Colin ok I can guide to solve this but you have to do what I am going to tell you step by step. Is this a production database ?
Joel Pérez
http://www.oracle.com/technology/experts -
Undo Tablespace Retention gurantee
Hi,
From what I have read about undo Tablespaces ,If Undo Management is AUTO,and Retention is se to say 15 min and retention gurantee is disabled ,Unexpired transactions can be overwritten by the database,If such is the case then undo tablespace should never get filled up.
But I have observed despite these settings,Undo tablespace filling issue still occurs.
Please help me understand this.
Thanks.Either
1. Your undo tablespace datafile is small (inadequate for the volume of transactions)
OR
2. Oracle is using autotuneundo which causes it to retain Undo for longer than undo_retention period and use the undo tablespace datafile to the fullest.
See Oracle Support notes
"Oracle 10G new feature - Automatic Undo Retention Tuning [ID 311615.1] "
"Bug 5387030 - Automatic tuning of undo_retention causes unusual extra space allocation [ID 5387030.8] "
"Bug 5387030"
Hemant K Chitale -
Undo tablespace growing without reusing space
Hi,
I'm running an Oracle9i database on Solaris. I am using the automatic undo management and I have one undo tablespace. The UNDO_RETENTION value is 900. I have created the undo tablespace this way (clause in create database statement):
UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u04/oracle/oradata/my_dbname/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
The undo tablespace datafile is now close to 3G. I have other servers running the same setup, and their undo datafile size is still 200M. There is currently no active transaction in the database. Any idea why this is happening? Is there any tables I can check for clues?
Many thanks,
GloriaShould Oracle automatically shrink the undo tablespace (datafile) when it is not needed anymore? Say at one point the database really needs 3G of undo tablespace, but afterwards only 10M is needed, would the datafile be 'shrunk' back?
Also, how can I check if the database really needed the 3G of undo tablespace at one point? (I guess it's checking the level of activities in the database, but how do I do that for past data?)
I'm trying to decide whether the undo tablespace really grew due to a need at some point or is it a case of Bug 2660394 (documented in metalink note271119.1). The bug basically says that "An auto extensible undo tablespace MAY grow before reusing expired extents leading to more space use than actually needed". -
Undo tablespace corruption will terminate DB operation
Hi All,
Just for the concept, if undotablespace datafile got corrupted due to any reasion, will it force to terminate the DB operation.
O know this will happen with control file and SYTEM datafile only.
Please confirm.
Regards,
SSHmm what to check? It says the same, it is not mandatory that instance would surely get shut down with the loss of undo tablespace. But you MUST do the recovery of it when the database is closed. I guess that's what that doc is also saying.
Update:
See below where I would show the same thing happening. We would start from the undo tablespace getting deleted and would check the alert log for any message. Also we would check the status of teh database after the drop,
Session 1
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 6 10:43:35 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 79694068 bytes
Database Buffers 83886080 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 79694068 bytes
Database Buffers 83886080 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> select name from V$datafile;
NAME
--------------------------------------------------------------------------------/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
SQL> !rm /u01/app/oracle/oradata/orcl/undotbs01.dbf
SQL> select status from V$instance;
STATUS
------------ <-- The database is open
OPEN
#At this time, in the alert log there was no message.
#Let's try some ddl/dmls.
SQL> create table t( a number);
Table created.
SQL> insert into t values(1);
1 row created.
SQL> commit;
Commit complete.
SQL> delete t;
1 row deleted.
#No problem so far. Let's issue a checkpoint, this would force oracle to check the file and its status.
SQL> alter system checkpoint;
System altered.
SQL>
Session-2(Alert log's tail)
Output snipped
ORA-01110: data file 2: '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
Thu Aug 6 11:11:19 2009
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_pmon_4402.trc:
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
Thu Aug 6 11:11:19 2009
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_pmon_4402.trc:
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
Thu Aug 6 11:11:19 2009
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_pmon_4402.trc:
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
#Let's check the status again,
SQL> select stauts from V$isntance;
select stauts from V$isntance
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
Its crashed now as db couldn't find the undo tablespace.
HTH
Aman....
Edited by: Aman.... on Aug 6, 2009 11:28 AM added demo. -
How the storage will be allocated on Undo tablespace made of datafiles?
I have a UNDO tablespace with two data files. Wherein one data file with Auto Extend as Yes and other as No.
In the case of multiple datafiles in UNDO tablespace,
1. Will the storage be allocated of same size on each datafile ?
2. What will be the case when the datafile with Auto Extent as NO reached it's max size?
3. Will the storage be allocated proportion to the datafile size in each file?But when I use the following query, its not getting fired. Its taking "INDEX FULL SCAN"I would have thought that the later part of the above statement contradicts with the earlier part of the statement.
its not getting firedcontradicts this statement:
Its taking "INDEX FULL SCAN"Since the birth_dt is not the leading column of your index ...
Is it doing a INDEX FULL SCAN on the GPM_PERSONPROFILEDEMO_DOB2_IDX index?
if you have queries that involve profile_update_dt + birth_dt and some others that involve only birth_dt, then why not have the index in birth_dt + profile_update_dt instead? -
Need to drop datafile from my undo tablespace
I have a undo tablespace and it has 2 datafiles. i would like to drop one datafile.
befor i am droping this datafile i am going to bring this file to offline and i got this message: ORA--01145 offline immediate disallowed unless media recovery enable.
can someone tell me how i can safly do it without any problem.
ThanksAn undo tablespace can be dropped like any other tablespace, but not until all transactions within the tablespace are complete. First, specify a new undo tablespace as in the previous example. To see if the tablespace has any pending transactions, run the following query:
SQL> select rn.name, rs.status
2 from v$rollname rn, v$rollstat rs
3 where rn.name in
4 (select segment_name from dba_segments
5 where tablespace_name = 'UNDOTBS')
6 and rn.usn = rs.usn
7 ; -
Hi!
I have been having problems for the past couple days with restarting my database. For some reason when I shutdown, once I start it up again the undo tablespaces is offline and needs to be recovered. When the application tries to connect to the database it gives a "ora-01552 : cannot use system rollback segment for non-system tablespace." I do a recover on that tablespace and bring it back up, and it works fine... until the next restart.. Would anyone have an idea on what's the problem, and what I can do to fix it once and for all?
Thanks
Yazil Santoyodid you try metalink, there are lot of options / suggestions for your particular error.
Is your database in Auto undo mode or manual undo?
Thanks
Gopal -
Undo tablespace with active transaction/segment corrupted
How to recover if undo tablespace with active transaction/segment corrupted
Try RMAN blockrecover or restore the tablespace from latest backup and recover it.
-
Cannot drop undo tablespace with Active extents but no active sessions
Hi all,
I am running on 10gr2 oracle database in a Linux 32 bit environment.
I have a corrupted undo datafile. I've been able to recover the datafile but still the alert logs is still showing that it is corrupted.
Now what I'm trying to do is to drop the old undo tablespace like the one discussed here Change undo tablespace in Oracle - Switch Oracle's Undo tablespace.
My problem is I have an Active extent but no active session corresponding to it:
SYS@ccasdb AS SYSDBA > SELECT a.name,b.status
FROM v$rollname a,v$rollstat b
WHERE a.usn = b.usn
AND a.name IN (
SELECT segment_name
FROM dba_segments
WHERE tablespace_name = 'UNDOTBS1'
); 2 3 4 5 6 7 8
NAME STATUS
_SYSSMU18$ PENDING OFFLINE
SYS@ccasdb AS SYSDBA > SELECT a.name,b.status , d.username , d.sid , d.serial#
2 FROM v$rollname a,v$rollstat b, v$transaction c , v$session d
3 WHERE a.usn = b.usn
4 AND a.usn = c.xidusn
5 AND c.ses_addr = d.saddr
6 AND a.name IN (
7 SELECT segment_name
8 FROM dba_segments
9 WHERE tablespace_name = 'UNDOTBS1'
10 );
no rows selected
but still cannot drop the undotablespace.
SYS@ccasdb AS SYSDBA > drop tablespace UNDOTBS1 including contents and datafiles;
drop tablespace UNDOTBS1 including contents and datafiles
ERROR at line 1:
ORA-30013: undo tablespace 'UNDOTBS1' is currently in use
Regards,
TimYes i was able to recover the datafile but the alert_log kept on prompting that it is still corrupted. The datafile's status is online.
I want to kill the session/s contributing to the PENDING OFFLINE status of the rollback segment so I can already drop the undotablespace and so
that the alert log will stop prompting for that corrupted datafile in that UNDOTABLESPACE.
Can i Just alter the tablespace's datafiles to offline drop then just drop it. Then I drop the tablespace? -
Create undo tablespace while at mount state, possible?
Oracle 10g (10.2.0.1.0), on RedHat 4 (both 64 bit)
My test db’s undo tablespace is corrupt (no RMAN or user backups).
DB fails to open, fails during "Doing block recovery for file 2 block 209910"Is there a way of creating undo tablespace while at mount state?
I am pretty confident it’s not possible, also searched the net and found no fix, I thought I will ask.
I get error:
CREATE UNDO TABLESPACE UNDOTBS1_new DATAFILE '/u01/oracle/oradata/TEST_DB1/undotbs2_01.dbf' SIZE 512M
ERROR at line 1:
ORA-01109: database not openp{code}As a last option, I will open the db with *'reset logs'*, wondering is any thing else I can try to fix the issue.
Thanks for any input.your problem is not to create un UNDO, your problem is that your UNDO is corrupted ! ;)
You must recover undo because it may contains needed data.
As there is not backup, you may try to set undo to manual, and then open the db and recreate the undo
but this may fail and you may have to allow undo corruption in initialization (_corrupted_rollback_segments), but this is an unsupported operation (hidden parameter)
Could you contact support ?
is your db a production one ?
Edited by: Leo Anderson on 1 sept. 2008 15:25 -
How to protect UNDO TABLESPACE in 9iR2
We can put REDO LOGs onto different disks by the means of multiplexing, so that even though one datafile is corrupted, the whole system would still be operational. But UNDO TABLESPACE doesn't provide such a mechanism. If the datafile of the active UNDO TABLESPACE is corrupted, it's dead.
I don't think a system would risk its availability on the single failure of the UNDO TABLESPACE. So there must be some tricks to circumvent this problem. Can anyone tell me that?
Thanks!951368 wrote:
I am sorry... I should have been more clear...
The issue i have is : My primary is a 3 node RAC and i created the same 3 node physical standby, now we had a 4th node at our standby, standby allowed me to add all the required cluster parameteres like instance#,thread# for 4th node, but i was stopped at creating a undo tablespace for the 4th node. What is the procedure? do i need to create it at primary or is there a way i can directly create at standby?
ThanksHi,
So you have 3 nodes primary and wanted to add 4th node on standby?
Create the 4th undo tablespace in primary using
sql > create undo tablespace "undotbs4" datafile 'xxxxx' size xxxx;
The primary won't touch this undo as none of the instances should pointing to this new undo.
In the standby on 4th node define 'undo_tablespace' to undotbs4.
Cheers -
Hello All
We are having issues with undo tablespace growing... the oracle version is 10.2.0.1.0
the table is holding around 400000000 records and this table is also partitioned by range
any reason for this undo tablespace growing by at an high rate
regards
KedarUndo tablespaces are special tablespaces used solely for storing undo information. You cannot create any other segment types (for example, tables or indexes) in undo tablespaces. Each database contains zero or more undo tablespaces. In automatic undo management mode, each Oracle instance is assigned one (and only one) undo tablespace. Undo data is managed within an undo tablespace using undo segments that are automatically created and maintained by Oracle.
Every Oracle Database must have a method of maintaining information that is used to roll back, or undo, changes to the database. Such information consists of records of the actions of transactions, primarily before they are committed. These records are collectively referred to as undo.
Undo records are used to:
Roll back transactions when a ROLLBACK statement is issued
Recover the database
Provide read consistency
Analyze data as of an earlier point in time by using Oracle Flashback Query
Recover from logical corruptions using Oracle Flashback features
When a ROLLBACK statement is issued, undo records are used to undo changes that were made to the database by the uncommitted transaction. During database recovery, undo records are used to undo any uncommitted changes applied from the redo log to the datafiles. Undo records provide read consistency by maintaining the before image of the data for users who are accessing the data at the same time that another user is changing it.
You confuse TEMP with UNDO tablespace.
Best Regards,
Francisco Munoz Alvarez
www.oraclenz.com
Maybe you are looking for
-
Repeating Group header on each page
Hello Everybody, I have two groups in my report. For my first group value, i have given report - group expert - options and checked "Repeat group header on each page" assuming that my first group values will appear on each page. But it is not doing s
-
Need help, Trouble in uploading records using sql loader in Forms 6i
Hi, I am trying to develop a screen for uploading records to a table by using a ctl file, batch file and sql loader. Env: Forms 6i, Oracle 8 Table to be updated is: shy_upload_table My TSN entry looks similar to this, TEST_AXA.CNB.COM = (DESCRIPTION
-
FM or Way to validate Date format. The date is from TEXT File
Dear All, I need to validate a date field whether it is in proper format. The field is coming from TEXT file to Internal table by using FM GUI_UPLOAD. Can any one give me the FM name or guide me how to do that? Definitely points will be given for cor
-
Log to see a tcode used in last 15 days
hi pros i need to see a how many times a tcode used in last 1 month. is there any report? i used stat but didnt give anything. please reply!
-
[SOLVED] Syslinux. Installing bootloader.
Hello, I have an Acer Aspire M3-581TG, which comes with 20Gb mSSD and 500Gb HDD. For some reason mSSD can't be bootable, so if I try to install any operating system with automatic installation on this drive, it creates MBR boot sector on my HDD. I wo