Excessive undo segment extension
I am using the automatic UNDO feature in 10g.
The UNDO tablespace size is 3gb with autoextend set ON.
Undo retention is set at 900.
I am attempting to update 1M+ records contained in a global temporary table using FORALL .. UPDATE method.
About 2 minutes into the process, the performance degrades dramatically as undo segment extension alerts eventually make the application freeze.
Other io alerts ( direct path write temp, busy buffer waits, etc ) also appear.
I notice that the UNDO tablespace has an init extent of about 131k and additional extents set at 64k.
These seem small for my needs.
Can someone please advise ?
Thanks !
Can you check from AWR to investigate what waited event happended?
http://www.oracle-base.com/articles/10g/AutomaticWorkloadRepository10g.php
Use EM to check waited event.
If you have another session else accessed this table often, Perhaps you need commit ... often (example: commit every 100000 rows).
If you found redo log often switch log ... when you update ...
you can use "nologging" option to help
update table_name nologging set ....Anyway if you think the problem was about undo... you should found error in alert log or your session...(ora-01555)
Similar Messages
-
SMON ABOUT TO RECOVER UNDO SEGMENT s messages in alert log
Problem
======
There are lots of messages appearing in alert log of the following form:
SMON: about to recover undo segment %s
SMON: mark undo segment %s as available
Reason
======
When the recovery is going on after a abnormal shutdown. Cause These errors do not indicate rollback segment corruption. In oracle8i, this may becoz of problem with the "rollback_segments" parameter in the init.ora. where as in oracle9i, When the instance is shutdown, during the next startup instance recovery needs to take place.
In AUM we do not have any control over which undo segments will brought online after the instance startup.When SMON finds such offline undo segments with transactions needing recovery ,then it does what is intended to do recovery.
Solution
======
with oracle8i, we need to cross check rollback_segments" parameter in the init.ora
with oracle9i,
first note down segment from SMON: mark undo segment %s as available
sqlplus "/ as sysdba"
alter session set "_smu_debug_mode"=4;
alter rollback segment <offline segment name> online;
e.g. alter rollback segment "_SYSSMU11$" online;
Where 11 is the number that is appearing in the messages in the alert log.What's the point duplicate metalink doc here,
SMON: ABOUT TO RECOVER UNDO SEGMENT %s messages in alert log
Doc ID: Note:266159.1
besides it's violation of Oracle support service contract. -
Hi,
I am getting the following error in Alert Log file.
SMON: about to recover undo segment 4
SMON: mark undo segment 4 as needs recovery
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as needs recovery
Can any buddy tell us that how can we fix this.
Thanks in Advance
HashimHi
The output of the query is
1 SYSTEM SYS SYSTEM 0 1 ONLINE
2 _SYSSMU1$ PUBLIC UNDOTBS1 1 2 ONLINE
3 _SYSSMU2$ PUBLIC UNDOTBS1 2 2 ONLINE
4 _SYSSMU3$ PUBLIC UNDOTBS1 3 2 ONLINE
5 _SYSSMU4$ PUBLIC UNDOTBS1 4 2 NEEDS RECOVERY
6 _SYSSMU5$ PUBLIC UNDOTBS1 5 2 ONLINE
7 _SYSSMU6$ PUBLIC UNDOTBS1 6 2 ONLINE
8 _SYSSMU7$ PUBLIC UNDOTBS1 7 2 NEEDS RECOVERY
9 _SYSSMU8$ PUBLIC UNDOTBS1 8 2 ONLINE
10 _SYSSMU9$ PUBLIC UNDOTBS1 9 2 ONLINE
11 _SYSSMU10$ PUBLIC UNDOTBS1 10 2 ONLINE
12 _SYSSMU11$ PUBLIC UNDOTBS1 11 2 ONLINE
13 _SYSSMU12$ PUBLIC UNDOTBS1 12 2 ONLINE
By the way there is no trace file assoicated in Alert Log file.
Thanks
Hashim -
Hi All;
In an 10gR2 physical standby dataguard environment, i open standby db READ-ONLY for extraction. After a performance issue we've seen "undo segment recovery" wait events on database.
The definition of "undo segment recovery" wait event:
+"PMON is rolling back a dead transaction. The wait continues until rollback finishes."+
Because this is a READ-ONLY db, isn't it strange to wait for rollback operation?
Thanks
EmreHi,
Apart from this most of the other things you should be able to do.
INSERT = change was caused by an insert statement
UPDATE = change was caused by an update statement
DELETE = change was caused by a delete statement
DDL = change was caused by a DDL statement
START = change was caused by the start of a transaction
COMMIT = change was caused by the commit of a transaction
ROLLBACK = change was caused by a full rollback of a transaction
LOB_WRITE = change was caused by an invocation of DBMS_LOB.WRITE
LOB_TRIM = change was caused by an invocation of DBMS_LOB.TRIM
LOB_ERASE = change was caused by an invocation of DBMS_LOB.ERASE
SELECT_FOR_UPDATE = operation was a SELECT FOR UPDATE statement
SEL_LOB_LOCATOR = operation was a SELECT statement that returns a LOB locatorAm not sure why you would be interested to know what you other features(except from reading) you would like to do on read-only database.
Regards
Anurag -
Undo file corruption(Undo segments)
Hello Friends
My database in archivelog mode(Oracle 9i). What if because of media failure my undo segments got corrupted ?
Can I recover the database upto failer point ?
Regards
Sunil KumarAs Maran mentioned already that if you have sufficient good backups, there wont be any issues with the recovery. In addition to this, search over metalink for the use of the event *10015*. This would help to identify the corrupted undo segments.
HTH
Aman.... -
Awr report showing "Undo segment recovery" in top 1st wait event.
Hi all.
Today evening oracle.exe is hitting 100% cpu in windows server 2003.
In the awr report "undo segment recovery" listed in the top 5 wait event (1st place) and
also in the enterprise manager it shows the details like,
ACTION 1:
Action Investigate the cause for high "undo segment recovery" waits. Refer to Oracle's "Database Reference" for the description of this wait event. Use given SQL for further investigation.
Rationale The SQL statement with SQL_ID "0x63ctfjb1m1j" was found waiting for "undo segment recovery" wait event.
SQL Text UPDATE PF_SubjectVEChapterPage SET NeedsRecalcState = NULL, NeedsUnsignState = ...
SQL ID 0x63ctfjb1m1j
Rationale The SQL statement with SQL_ID "0x6uvufcw5umh" was found waiting for "undo segment recovery" wait event.
SQL Text
SQL ID 0x6uvufcw5umh
Rationale The SQL statement with SQL_ID "2dvmt5mhr3m10" was found waiting for "undo segment recovery" wait event.
SQL Text UPDATE PF_SubjectVEChapterPage SET NeedsRecalcState = NULL, NeedsUnsignState = ...
SQL ID 2dvmt5mhr3m10
Rationale The SQL statement with SQL_ID "gx5pummu20jzb" was found waiting for "undo segment recovery" wait event.
SQL Text UPDATE PF_SubjectVEChapterPage SET NeedsRecalcState = NULL, NeedsUnsignState = ...
SQL ID gx5pummu20jzb
Rationale The SQL statement with SQL_ID "1rxk3vt41zg1u" was found waiting for "undo segment recovery" wait event.
SQL Text
SQL ID 1rxk3vt41zg1u
ACTION 2:
Investigate the cause for high "undo segment recovery" waits in Module "dllhost.exe".
ACTION 3:
Investigate the cause for high "undo segment recovery" waits in Service "SYS$USERS".
I'm not sure what action i need to take exactly.Please provide your valuable suggestions to proceed further.
Thanks, Muhammed Thameem.http://download.oracle.com/docs/cd/A97630_01/server.920/a96536/apa5.htm
"undo segment recovery
PMON is rolling back a dead transaction. The wait continues until rollback finishes.
Wait Time: 3 seconds
Parameters:
segment# -> The ID of the rollback segment that contains the transaction that is being rolled back
tx flags -> The transaction flags (options) set for the transaction that is being rolled back? -
Undo segment & Rollback segment
Hi,
What is the difference between Undo segment & Rollback segment?Is it a standard practice of creating roll back segments for each tablespace?
Regards,
CherryWhat is the difference between Undo segment & Rollback segment?
Undo Mode
Undo mode provides a more flexible way to migrate from manual undo management to automatic undo management. A database system can run in either manual undo management mode or automatic undo management mode. In manual undo management mode, undo space is managed through rollback segments. In automatic undo management mode, undo space is managed in undo tablespaces. To use automatic undo management mode, the database administrator needs only to create an undo tablespace for each instance and set the UNDO_MANAGEMENT initialization parameter to AUTO. You are strongly encouraged to run in automatic undo management mode.
Is it a standard practice of creating roll back segments for each tablespace?See above and http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14220/logical.htm#sthref449 -
on my Oracle 11.2.0.2, I have undo tablespace, and db init settings like:
recyclebin=off
flasbach_on=off
undo_retention=1200
undo_management=AUTOI have a table aa_test with 1 million rows..
after I invoke a sql like:
update aa.test set n_string='aaa';
commit;undo segment just do not want to be freed..
I created undo tablespace using:
CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE
'/opt/oracle/oradata/bongo/undotbs01.dbf' SIZE 200M reuse AUTOEXTEND ON NEXT 50M MAXSIZE 10240M
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK OFF;sql statement is:
update aa_test set n_string='abc';
commit;before update undo tablespace looks like:
SQL> select usn, rssize from v$rollstat;
USN RSSIZE
0 385024
11 122880
12 122880
13 122880
14 122880
15 122880
16 122880
17 122880
18 122880
19 122880
20 122880after updates (commit and logout/logon)
SQL> select usn, rssize from v$rollstat;
USN RSSIZE
0 385024
11 122880
12 122880
13 122880
14 122880
15 122880
16 176152576
17 122880
18 122880
19 122880
20 122880 -
SQL to get who is using the UNDO segments
Hello I need SQL to grab who is using the UNDO segments. Is there anything out there to allow me to do this. We want to track down which user is running our database UNDO segments up. We think we know who is doing this by monitoring top sql but managment wants more proof as usual. Any help would be great.
When I run the sql that you gave me it comes back with zero rows. however, when I run
SELECT rn.NAME "Rollback Segment", rs.rssize / 1024 "Size (KB)",
rs.gets "Gets", rs.waits "Waits", (rs.waits / rs.gets) * 100 "% Waits",
rs.shrinks "# Shrinks", rs.EXTENDS "# Extends"
FROM SYS.v_$rollname rn, SYS.v_$rollstat rs
WHERE rn.usn = rs.usn;
I get
Rollback Segment Size (KB) Gets Waits % Waits # Shrinks # Extends
SYSTEM 376 1525 0 0 0 0
_SYSSMU1$ 2012208 1152908 0 0 17 579
_SYSSMU2$ 1845040 1098021 1 9.10729394 16 555
_SYSSMU3$ 558840 980111 32 0.00326493 13 482
_SYSSMU4$ 2789808 1280846 152 0.01186715 17 685
_SYSSMU5$ 3875944 1385711 113 0.00815465 19 787
_SYSSMU6$ 298728 1427953 4 0.00028012 27 825
_SYSSMU7$ 990504 1505872 3 0.00019922 21 867
_SYSSMU8$ 2122480 1135552 2 0.00017612 21 805
_SYSSMU9$ 2344888 627282 4 0.00063767 16 421
_SYSSMU10$ 811888 2323871 53 0.00228067 52 823
11 rows selected
how do i see who holds those segments. -
Drop Undo Segments - URGENT HELP
Hi,
I am currently doing a DR activity.
My database is in version 10.2.0.3.0 and the platform is Windows 2003 server.
When I try to startup my database, the database gets started, but gets crashed immediately after few seconds.
The PMON and DBWR background processes are getting crashed.
ORA-00472: PMON process terminated with error
The alert log gives the below information.
Errors in file d:\oracle\admin\aspplmp1\bdump\aspplmp1_smon_5280.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [60], [59], [], [], [], [], []
Thu Jun 24 22:22:43 2010
Errors in file d:\oracle\admin\aspplmp1\bdump\aspplmp1_smon_5280.trc:
ORA-00600: internal error code, arguments: [4194], [26], [30], [], [], [], [], []
Doing block recovery for file 2 block 2026
Block recovery from logseq 8749, block 141 to scn 10598515167830
Thu Jun 24 22:22:45 2010
Recovery of Online Redo Log: Thread 1 Group 3 Seq 8749 Reading mem 0
Mem# 0: D:\ORACLE\ORADATA\ASPPLMP1\REDO03A.RDO
Mem# 1: D:\ORACLE\ORADATA\ASPPLMP1\REDO03B.RDO
Block recovery stopped at EOT rba 8749.142.16
Block recovery completed at rba 8749.142.16, scn 2467.2830848597
Doing block recovery for file 2 block 41
Block recovery from logseq 8749, block 141 to scn 10598515167828
Thu Jun 24 22:22:45 2010
Recovery of Online Redo Log: Thread 1 Group 3 Seq 8749 Reading mem 0
Mem# 0: D:\ORACLE\ORADATA\ASPPLMP1\REDO03A.RDO
Mem# 1: D:\ORACLE\ORADATA\ASPPLMP1\REDO03B.RDO
Block recovery completed at rba 8749.142.16, scn 2467.2830848597
Thu Jun 24 22:22:45 2010
Errors in file d:\oracle\admin\aspplmp1\bdump\aspplmp1_smon_5280.trc:
ORA-01595: error freeing extent (2) of rollback segment (3))
ORA-00607: Internal error occurred while making a change to a data block
ORA-00600: internal error code, arguments: [4194], [26], [30], [], [], [], [], []
Thu Jun 24 22:14:09 2010
Errors in file d:\oracle\admin\aspplmp1\bdump\aspplmp1_q000_1868.trc:
ORA-00600: internal error code, arguments: [4193], [10635], [10638], [], [], [], [], []
ORA-00472: PMON process terminated with errorWhen I checked metalink, I found a note: 8240762.8, which says that its a bug.
But the workaround they have given is to DROP UNDO SEGMENTS. How do I do that? Could someone please help me out?
OR is there a different way to solve this issue?
Thanks!Hi.There you see ORA-00600: internal error code internal error,this is serious error you need open SR and report Oracle Support.But you can try following tasks to resolving this problem.
1.Backup your database.
2.Create new undo tablespace(for example create undo tablespace <new_undo_ts> ....);
3.If you use spfile then create pfile from spfile as create pfile='location' from spfile='spfilelocation'
4.Change in getting pfile undo_management=manual,undo_tablespace=<new_undo_ts>
5.startup database using this pfile as startup pfile='pfilelocation'
6.drop tablespace <old_undo_tsname>;
7.Change undo_management=auto in pfile and create spfile from pfile again. -
UNDO Segment in Needs Recovery Mode
Hi,
1) I created a different UNDO Tablespace and point UNDO_TABLESPACE to it.
2) The i made the UNDO Tablespace OFFLINE.
3) When i query the status column of dba_rollback_segs it displays that one UNDO Segment needs recovery.
4) When i query v$datafile to find the status of the datafiles associated with the UNDO Segment it displays that all the data files are OFFLINE.
SQL> select segment_name,status,tablespace_name from dba_rollback_segs where tablespace_name like 'UNDO%';
SEGMENT_NAME STATUS TABLESPACE_NAME
SYSSMU11580673410$ ONLINE UNDO_TS
SYSSMU1064169346335$ NEEDS RECOVERY UNDO_TBS
SYSSMU107348590359$ OFFLINE UNDO_TBS
SQL> Select status ,name,file# from v$datafile where ts# in (Select ts# from v$tablespace where name='UNDO_TBS');
STATUS NAME FILE#
OFFLINE /x1/oradata/db1/undo_tbs_05.dbf 13
OFFLINE /x1/oradata/db1/undo_tbs_06.dbf 14
OFFLINE /x2/oradata/db1/undo_tbs_02.dbf 20
OFFLINE /x2/oradata/db1/undo_tbs_03.dbf 21
OFFLINE /x1/oradata/db1/undo_tbs_04.dbf 22
OFFLINE /x2/oradata/db1/undo_tbs_01.dbf 27
The dabase is in noarchivelog mode and the version is 11.2.0.2.0.
Please suggest what should i do. I am unable to drop the old UNDO_TBS.I tried doing the following ( but it simply doesnot work)
1) set undo_management='MANUAL' and OFFLINE_ROLLBACK_SEGMENTS=_SYSSMU106 in init.ora
2) Did a clean shutdown using SHUTDOWN IMMEDIATE and then STARTUP
3)
SQL> select segment_name,status,tablespace_name from dba_rollback_segs where tablespace_name like 'UNDO%';
SEGMENT_NAME STATUS TABLESPACE_NAME
SYSSMU11580673410$ ONLINE UNDO_TS
SYSSMU1064169346335$ NEEDS RECOVERY UNDO_TBS
SYSSMU107348590359$ OFFLINE UNDO_TBS
SQL> drop rollback segment "_SYSSMU106";
Rollback segment dropped.
SQL> select segment_name,status,tablespace_name from dba_rollback_segs where tablespace_name like 'UNDO%';
SEGMENT_NAME STATUS TABLESPACE_NAME
SYSSMU11580673410$ ONLINE UNDO_TS
SYSSMU1064169346335$ NEEDS RECOVERY UNDO_TBS
SYSSMU107348590359$ OFFLINE UNDO_TBS
SQL> drop tablespace UNDO_TBS including contents and datafiles;
drop tablespace UNDO_TBS including contents and datafiles
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU106_4169346335$' found, terminate
dropping tablespace
SQL> Select status ,name,file# from v$datafile where ts# in (Select ts# from v$tablespace where name='UNDO_TBS');
STATUS NAME FILE#
OFFLINE /x1/oradata/db1/undo_tbs_05.dbf 13
OFFLINE /x1/oradata/db1/undo_tbs_06.dbf 14
OFFLINE /x2/oradata/db1/undo_tbs_02.dbf 20
OFFLINE /x2/oradata/db1/undo_tbs_03.dbf 21
OFFLINE /x1/oradata/db1/undo_tbs_04.dbf 22
OFFLINE /x2/oradata/db1/undo_tbs_01.dbf 27
Edited by: SID3 on Mar 21, 2012 4:41 AM -
If undo segments got corrupted
if undo segments got corrupted thn wht will be the database position and how to recover from it
Dear 782191,
Like Aman.... has mentioned in the previous post, you may recover it
OR
I think you can also try to drop it if you can not recover it. Please refer to the following link for how to drop an undo segment from the undo tablespace or drop the undo tablespace entirely for the new and default undo tablespace;
http://arjudba.blogspot.com/2008/08/ora-01548-active-rollback-segment.html
Bear in mind that when you have chosen the "drop undo tablespace" path rather than recovering the undo segment, the undo information will be written into the system tablespace. The database will maintain its current operational jobs and create undo in the system tablespace but it is not recommended by the Oracle.
Hope That Helps.
Ogan -
Automatic Undo Management - Shrink Undo Segments
Hello guys,
i have a question regarding the automatic undo management and some large transactions.
So lets take the following example:
1 transaction with a lot of updates (round about 20.00000 entries) . After the update a commit was executed.
Now the corresponding undo segment was blown up to 640 MB.
Now my questions:
Will this segment be shrinked after it is not needed anymore (STATUS = EXPIRED)?
If not and another transaction needs some undo and activates this segment again.. 640 MB are going online again... but the transaction now only needs some KB.
I know the algorithm if the undo segment needs to be extended (metalinknote #413732.1).. but what is happening to "big" segements if they are not needed anymore ... are the deallocated/shrinked after a time period?
Regards
StefanHere is a little example of a smaller undo segment.. which shows my doubt:
SELECT SEGMENT_NAME,STATUS FROM DBA_ROLLBACK_SEGS WHERE SEGMENT_NAME = '_SYSSMU13$';
SEGMENT_NAME STATUS
_SYSSMU13$ OFFLINE
SELECT SEGMENT_NAME, EXTENT_ID, BYTES, STATUS from DBA_UNDO_EXTENTS WHERE SEGMENT_NAME = '_SYSSMU13$';
SEGMENT_NAME EXTENT_ID BYTES STATUS
_SYSSMU13$ 0 65536 EXPIRED
_SYSSMU13$ 1 65536 EXPIRED
_SYSSMU13$ 2 8388608 EXPIRED
_SYSSMU13$ 3 8388608 EXPIRED
_SYSSMU13$ 4 8388608 EXPIRED
_SYSSMU13$ 5 8388608 EXPIRED
_SYSSMU13$ 6 8388608 EXPIRED
_SYSSMU13$ 7 8388608 EXPIRED
_SYSSMU13$ 8 8388608 EXPIRED
_SYSSMU13$ 9 8388608 EXPIRED
_SYSSMU13$ 10 8388608 EXPIRED
_SYSSMU13$ 11 67108864 EXPIRED If the other guys are correct, the extents of undo segment _SYSSMU13$ should be deallocated... but they still persist.
Regards
Stefan -
Difference between roll back and undo segment.
Hi ,
Oracle 10.2.0.1.0
whats the difference between roll back and undo segemnt ? are they one and same as per changing version of oracle ? please helpHi,
Both will do the same functionality,but in oracle 9i they made it simplify ,because if u are using rollback segments ,u need to put them online in init.ora and u need to take care space management etc.
so in oracle 9i they introduced undo tablespaces on that u can creage undo segments and space management will be take care by oracle managed files ,so its reduces the burden of dba
Regards,
Simma.... -
Hi,
I'm on 4-node Linux RAC 10.2.0.3 , recently I've notice that only undo segments are showed in V$GCSPFMASTER_INFO
I know that because object_id is like 4294950913 and so .
Thats strange because I'm expecting other objects to be remastered, there is :
_gc_affinity_time 10
_gc_affinity_limit 50
and I can see :
DRM(29) ignoring dissolve of 18504741
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504742
DRM(29) ignoring dissolve of 18504742
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504743
DRM(29) ignoring dissolve of 18504743
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504744in lmd0 trace .
So how can I check DRM is on or off ?:)
Regards.
GregGHi,
I'm on 4-node Linux RAC 10.2.0.3 , recently I've notice that only undo segments are showed in V$GCSPFMASTER_INFO
I know that because object_id is like 4294950913 and so .
Thats strange because I'm expecting other objects to be remastered, there is :
_gc_affinity_time 10
_gc_affinity_limit 50
and I can see :
DRM(29) ignoring dissolve of 18504741
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504742
DRM(29) ignoring dissolve of 18504742
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504743
DRM(29) ignoring dissolve of 18504743
* kjdrchkdrm: found an RM request in the request queue
Dissolve pkey 18504744in lmd0 trace .
So how can I check DRM is on or off ?:)
Regards.
GregG
Maybe you are looking for
-
Error during creation of delivery in VL01N
Dear All, I have created a sales order in VA01 .Then while I am trying to create delivery in VL01N system is giving error no : BS051 Create delivery" not allowed (User Status PREP, object ) Please let me know what is missing in this proc
-
Missing required files (cannot run iTunes)
Hey guys, every time I finish installing iTunes and try to open it, I get an error saying "iTunes cannot run because some of its required files are missing. Please reinstall iTunes" I've un-install/re-installed/fixed iTunes but the same error message
-
Can anyone tell me how to locate my phone with the find my phone option?
-
ODBC driver for Win Server 2008 64-bit.
I need help with installing the ODBC driver for Win 2008 64-bit. I'm not really familiar with Oracle products but anyway I was asked to install the driver. I downloaded Oracle 11g ODAC 11.1.0.7.20 which includes the Oracle ODBC Driver 11.1.0.7.0 from
-
Please help identify a license plate from photo...
Hi all. I'm trying to help out a friend who was in a motorcycle accident identify the car that hit him. The police didn't get any info from the woman who hit him before she left the scene. All he has to go on is a camera phone pict taken by a passer-