LJ Gaviola
asked on
corrupted undo tablespace
hey guys,
i run into a corrupt undo problem and not sure what to do. the databse is still up and running. what i did was:
create a new undo tablespace
set it as as the new undo tablespace
drop the orig tablespace.
but i can't drop the original tablespace, it says it still says tablespace in use.
and then i was able to take the segments offline but still can't drop the tablespace - i'm getting this error:
ORA-01548 active rollback segment 'string' found, terminate dropping tablespace.
any ideas what to do? I found heaps in the net but not quite sure which one to follow.
urgently need this.
thank you.
i run into a corrupt undo problem and not sure what to do. the databse is still up and running. what i did was:
create a new undo tablespace
set it as as the new undo tablespace
drop the orig tablespace.
but i can't drop the original tablespace, it says it still says tablespace in use.
and then i was able to take the segments offline but still can't drop the tablespace - i'm getting this error:
ORA-01548 active rollback segment 'string' found, terminate dropping tablespace.
any ideas what to do? I found heaps in the net but not quite sure which one to follow.
urgently need this.
thank you.
The cause is that UNDO_RETENTION is set to a big value.
--reduce the retnetention to 5 minutes
ALTER SYSTEM SET UNDO_RETENTION = 5;
--create a new ts for a temp undo
CREATE UNDO TABLESPACE undotbs_02
DATAFILE '/u02/ora_data/oradata/dbe ta/undo02. dbf' SIZE 2M REUSE AUTOEXTEND ON;
--set the undo ts to new ts
ALTER SYSTEM SET UNDO_TABLESPACE = undotbs_02;
--wait for original undo ts to be freed up (no online segments).
select segment_name,status,tables pace_name from dba_rollback_segs
where status='ONLINE' and tablespace_name='UNDOTBS1' ;
--offline old ts
alter tablespace UNDOTBS1 offline;
-- drop old ts
drop tablespace UNDOTBS1 including contents and datafiles;
--recreate new default ts
create undo tablespace UNDOTBS1
datafile '/u02/ora_data/oradata/dbe ta/undotbs 01.dbf' size 200m reuse autoextend on next 10m;
--repoint undo to default again
ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS1;
--wait for temp undo ts to be freed up (no online segments).
select segment_name,status,tables pace_name from dba_rollback_segs
where status='ONLINE' and tablespace_name='UNDOTBS_0 2';
--offline the temp undo tablespace
alter tablespace undotbs_02 offline;
--drop temp undo
drop tablespace undotbs_02 including contents and datafiles;
--reset retnetion to normal default (whatever you use in init.ora)
ALTER SYSTEM SET UNDO_RETENTION = 10800;
--reduce the retnetention to 5 minutes
ALTER SYSTEM SET UNDO_RETENTION = 5;
--create a new ts for a temp undo
CREATE UNDO TABLESPACE undotbs_02
DATAFILE '/u02/ora_data/oradata/dbe
--set the undo ts to new ts
ALTER SYSTEM SET UNDO_TABLESPACE = undotbs_02;
--wait for original undo ts to be freed up (no online segments).
select segment_name,status,tables
where status='ONLINE' and tablespace_name='UNDOTBS1'
--offline old ts
alter tablespace UNDOTBS1 offline;
-- drop old ts
drop tablespace UNDOTBS1 including contents and datafiles;
--recreate new default ts
create undo tablespace UNDOTBS1
datafile '/u02/ora_data/oradata/dbe
--repoint undo to default again
ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS1;
--wait for temp undo ts to be freed up (no online segments).
select segment_name,status,tables
where status='ONLINE' and tablespace_name='UNDOTBS_0
--offline the temp undo tablespace
alter tablespace undotbs_02 offline;
--drop temp undo
drop tablespace undotbs_02 including contents and datafiles;
--reset retnetion to normal default (whatever you use in init.ora)
ALTER SYSTEM SET UNDO_RETENTION = 10800;
Hi jean
if it was actual undo corruption none of the above would have helped you... Let me know if still you have the issue...An interesting topic for me :)
if it was actual undo corruption none of the above would have helped you... Let me know if still you have the issue...An interesting topic for me :)
ASKER
hi,
when i was trying to drop/offline the old undo tbs, i'm getting this error:
ORA-01548 active rollback segment 'string' found, terminate dropping tablespace
when i checked the segments of the old undo tbs, they are all offline except for one that status = needs recovery.
i tried dropping the segment but i can't.
when i was trying to drop/offline the old undo tbs, i'm getting this error:
ORA-01548 active rollback segment 'string' found, terminate dropping tablespace
when i checked the segments of the old undo tbs, they are all offline except for one that status = needs recovery.
i tried dropping the segment but i can't.
ASKER
pradeepgv03
thanks. although, not really sure what you meant by 'actual undo corruption'?
i'd really appreciate any help you can extend.
thanks. although, not really sure what you meant by 'actual undo corruption'?
i'd really appreciate any help you can extend.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
jean,
Please try what schwertner suggested first. If it is not due that issue(flash Back) and due to corruption in undo segment I can investigate further if you wish.
Pradeep
Please try what schwertner suggested first. If it is not due that issue(flash Back) and due to corruption in undo segment I can investigate further if you wish.
Pradeep
ASKER
thanks guys..
i used the undocumented parameter offline_rollback_segments to solve the issue.
i used the undocumented parameter offline_rollback_segments to solve the issue.
Create new UNDO tablespace
Alter existing UNDO tablespace offline
Set new undo tablespace to be the new default
Make sure all existing transactions are done in the old UNDO tablespace (There's a v$ view to tell you this I believe
Drop old UNDO tablespace.
I've done this before but it's after midnight and I'm too tired to look up specifics.
Those should be the basic steps, I'll research more tomorrow if someone else hasn't given a more detail answer by then.