RE: UNDO Space Error

  • From: "Mark W. Farnham" <mwf@xxxxxxxx>
  • To: <oracle.developer35@xxxxxxxxx>, "'Sayan Malakshinov'" <xt.and.r@xxxxxxxxx>
  • Date: Sat, 20 Mar 2021 18:24:50 -0400

Changes to the volume of data can drive something like this without changing 
the code.

 

IF you have any jobs that have a single commit at completion (regardless of 
batch size that is being handled), and especially if the input batch sizes have 
tended to rise over time, those are worth checking.

 

IF you find the culprit, the options are:

 

1)    Changing the code to handle a defined “monolith size” (NOT 1 except under 
specific conditions of small integral transactions that must be separately 
committed and verified) and toss a commit once per monolith (and at the end 
when you underflow the monolith size for the last chunk.

2)    Monitor the inbound size of “batches” and hand your transaction processor 
small enough bites to work with your existing code.

 

OR it could be something completely different. But this is worth checking. 
Oracle will handle pretty big chunks, which sometimes causes developers to 
ignore the fact that nothing handles arbitrarily large chunks.

 

Good luck,

 

mwf

 

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On ;
Behalf Of Pap
Sent: Saturday, March 20, 2021 2:35 PM
To: Sayan Malakshinov
Cc: Oracle L
Subject: Re: UNDO Space Error

 

Thank You Sayan.

I checked using the below query during run time, but don't see any one specific 
session coming out as one of suspects. But I will try to see it again when the 
issue occurs. But another doubt I have is , if there exists any historical AWR 
view matching v$transaction which will help me go back and check the exact snap 
times(when failure occurred) to see what exact session/process is the culprit 
and find the cause?


select b.addr,

  a.sid,

  a.username,

  b.xidusn,

  b.used_urec,

  (b.used_ublk*8192)/1024 size_mb

from

  gv$session a,

  gv$transaction b

where

  a.saddr = b.ses_addr

  and a.inst_id=b.inst_id

order by b.used_ublk desc nulls last


 


 

On Sat, Mar 20, 2021 at 11:56 PM Sayan Malakshinov <xt.and.r@xxxxxxxxx> wrote:

Hi Pap, 

 

Have a look at V$transaction 

 

 


--

Best regards,
Sayan Malakshinov 
Oracle performance tuning expert
Oracle Database Developer Choice Award winner 
Oracle ACE Associate 
http://orasql.org ;

 

сб, 20 мар. 2021 г., 21:22 Pap <oracle.developer35@xxxxxxxxx>:

Hello Listers, Its version 11.2.0.4 of oracle. We suddenly started encountering 
ORA-30036(ORA-30036: unable to extend segment by 8 in undo tablespace 
'UNDOTBS2') in one of the databases. We don't have any changes done to the 
code. We already increased the UNDO tablespace size from ~100Gb to ~190GB but 
still facing the same and this time we want to find the root cause rather than 
keep on increasing the size of tablespace.

During one of the failures I saw DBA_UNDO_EXTENTS was showing almost all of the 
extent status as UNEXPIRED. dba_free_space was showing zero space for that 
tablespace. We have the data files in the undo tablespace set as autoextend ON. 
And we are using AUTO undo management with UNDO retention set as 900.

I understand there are two types of UNDO noted by oracle , one is UNDO read 
which the SELECT query sometimes fails with Ora-01555 (but here we are not 
encountering that). The other one is UNDO generation because of the 
DML(INSERT/UPDATE/DELETE) and in this case our failure is because of the same 
UNDO and each time it's mostly INSERT queries failing while doing data load. So 
is there any way I can track the exact session/sql/user which is generating 
maximum UNDO from any historical AWR views and also during run time?

How to debug from history and get the cause of this sudden increase in UNDO 
space consumption? Any other fix other than increasing UNDO space?

Regards

pap


 


 

Other related posts: