ETL Process - snapshot too old

Hi friends:
I would like to get some comments from you about the following situation:
In an ETL process, usually we have gotten the Oracle error "Snapshot too old". We are doing various modifications in our ETL process (developed via PL/SQL or OWB), however, we have not had success. Could you give me some advise in order to avoid this problem?
Thanks in advance.

It's sth with your Rollback segment settings.Pls set the MINEXTENTS more larger and set OPTIMAL,if the sutiation still occurs,get the rollback segment offline first and then re-online the rollback segment.

Similar Messages

  • Advanced Queues Snapshot too old error

    I am using the advanced queues to submit work for parallel processes running through the Oracle Job Queue.
    I have attempted running anywhere from 1 to 5 simultaneous processes (in addition the the process which submits them to the Oracle job queue and populates the advanced queues) and I am getting sporadic Snapshot too old errors when the other processes are attempting to dequeue. The Advanced queues are populated before the other processes are submitted to the job queue, so I don't see that there could be conflicts between one process enqueuing while another is dequeuing.
    The reason I am attempting this is to try and gain some performance by running processes in parallel.
    Has anyone else had problems like this? Is this a bug in Oracle 8.1.6? Is there a parameter setting I need to adjust? Are there any suggestions for getting around this problem?

    I don't know what version of the database you are running? I'm only using 8.1.7.4. But where I come from, you add datafiles to the tablespace, not the rollback segment.
    alter tablespace rollback
    add datafile '<blah, blah>'
    size 147m
    autoextend on next 100m maxsize 2047m;
    Make sure that you have a suitable number of rollback segments that are well-sized extents. But mostly, listen the Tom Best, and try and introduce some best practices (no pun intended) to reduce the likelihood of this situation arising.

  • Snapshot too old

    I have written a procedure that populates a temp table which does a commit on every thousand rows. Now, this job has been running for 3 yrs now. Unfortunately though, lately, i have been getting the following error:
    Declare
    ERROR at line 1:
    ORA-01555: snapshot too old: rollback segment number  with name "" too small
    ORA-06512: at line 189This program have been tuned through out those years, like doing a commit on every n thousand of rows, putting hints and some other things as suggested by our dba. It is also understood that new jobs.. big jobs.. have been created that runs a long side this process.
    Now, my questions is, if i am doing a select on this table for example member_history table in a cursor then doing an insert. Then another job which is running at the same time as my job is doing a
    INSERT /*+ append */ INTO temp_table (column1, column2, column3)
    select column1, column2, column3
    from member_history@dbprod.
    where ... Would this have caused the problem? We are talking about number of rows 64,033,608 on this history table.
    I would very much appreciate all your help!
    Thanks,
    Marilyn

    Well, the primary reason for this error in my experience is fetching across commits. Which sounds exactly what your code is doing.
    Thus for 3 years the code has been wrong. Violating ANSI SQL standards that say you are not allowed to fetch across commits. You were simply lucky that the rollbacks/undo did not wrap as there were little or no other transactions running at the same time.
    Do not commit every n number of rows. Oracle is not SQL-Server or Ingres. It works very different ito concurrency as it has no lock manager and there are no locking overheads.
    Refer to Metalink Note ORA-01555 "Snapshot too old" - Detailed Explanation, note id 40689.1.
    Also refer to asktom.oracle.com on this:
    http://asktom.oracle.com/pls/ask/f?p=4950:8:9219002089752914987::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:275215756923

  • Snapshot too Old Error - Help needed

    One of the batch job is failing due to oracle error “snapshot too old.”
    Please let me know what are the possible reason’s this problem occurs and suggest me the possible solutions to rectify this problem.
    Thanks in advance

    > this can mean different things:
    1. your rollback / undo is too small for this
    transaction,
    Incorrect. A snapshot too old means that a consistent read cannot be maintained. A read is not a transaction - it does not cause any locks on rows.
    What is can mean that rollback is too small to maintain a consistent read for a sufficiently long enough period for the consistent read to be completed.
    > 2. commits aren't made often enough,
    NOT TRUE!! Not in Oracle. (sorry for the emphatic bold, but this an OWT within Oracle - it is very far from the truth in Oracle and Oracle is not SQL-Server)
    > 3. there are concurrent transactions which act on the
    same tables.
    This is usually the case - more accurately, fetching across commits. This is caused by creating a consistent read on a table (opening a cursor in PL/SQL), reading the rows (fetching from cursor in PL/SQL) and then updating those exact same rows.
    The consistent read deals with version n of the table. At the same time the exact same process updates those very same rows creating new versions of those rows.
    Rollbacks are overwritten (it is a circular buffer) and the version n of the rows cannot be maintained and "goes out of scope" as the rollbacks containing that version of the rows are re-used.

  • ORA-01555: snapshot too old: rollback segment number 3 with name "RB02

    It just happen while processing ....

    01555, 00000, "snapshot too old: rollback segment number %s with name \"%s\" too small"
    // *Cause: rollback records needed by a reader for consistent read are
    // overwritten by other writers
    // *Action: If in Automatic Undo Management mode, increase undo_retention
    // setting. Otherwise, use larger rollback segments

  • Snapshot too old error 1555

    how to over come this problem practically

    I can't speak for the original poster, of course.
    But snapshot too old errors are what you get when, in order to produce the last piece of data at the finish time of some report, you have to roll the data you encounter in the buffer cache back to the state it was in at the start time.
    A query which starts at 10.00am, for example, and finishes at 10.03 must see the data at 10.03 in the state it was at at 10.00am. So at the end of the query process, we have to do a '3 minute rollback'.
    But if your query starts at 10.00am and doesn't finish until 10.53am, then you'd better hope 53 minutes of undo still exists in your database, because you're going to need to roll 10.53 data back to the state it was at 10.00.
    The larger the time difference between the start and finish of a query, therefore, the more likely it becomes that the undo needed to generate a read consistent image won't be available, and that's when you get the 1555 signalled.
    Most advice on 1555s say to increase the size of your rollback segments or your undo tablespace or increase the undo_retention time, so that the necessary undo **is** still available by the time you get to the query's finish time. But it's also a reasonable suggestion (though much harder to implement!) to tune the query so that the gap between start and finish time is much smaller than before. If a query used to take 53 minutes to complete but after tuning only takes 23 minutes to run, you've reduced the age of the undo you need available to produce the report by 30 minutes.
    In other words, the common approach to 1555s is to increase the amount of undo that's available on the system. The approach being suggested here is to **reduce** the need for so much undo in the first place by reducing the length of time queries run for.

  • Error 6000E when try to log in.  In the server log: "snapshot too old"

    I have the error 6000E when i try to log in
    and in the server log: "snapshot too old"
    This happened after a power outage.
    I have tried a few things with the db but no luck yet, Jeff did you ever figure this out?

    Hello user526627 and all,
    I also have installed apex 2.2 successfully. At least I've not found any errors and this is the tail of install.log:
    Thank you for installing Oracle Application Express.
    Oracle Application Express is installed in the FLOWS_020200 schema.
    The structure of the link to the Application Express administration services is as follows:
    http://host:port/pls/apex/apex_admin
    The structure of the link to the Application Express development interface is as follows:
    http://host:port/pls/apex
    timing for: Upgrade
    Elapsed: 00:00:00.12
    JOB_QUEUE_PROCESSES: 10
    Completing registration process.
    Validating installation.
    timing for: Validate Installation
    Elapsed: 00:03:18.10
    timing for: Complete Installation
    Elapsed: 00:38:11.54
    Interesting thing is that I am getting 404 when I use suggested http://host:port/pls/apex/apex_admin or http://host:port/pls/apex (I am using host name of the machine or ip address). However the http://host:port/pls/htmldb/ and http://host:port/pls/htmldb/apex_admin works (at least, I am getting a page without images). In addition, when I provide user name and password on the http://host:port/pls/htmldb/apex_admin page and click on 'Login' nothing happens... :(
    This is a clean install. I've also used a HTMLDB 2.0 install from companion cd (Oracle10g R2 for Windows) - this had worked ok, however it did stop working when I istalled apex 2.2 on top of it. I've dropped flow-schemas and tablespaces I've created for apex 2.2 install and started the install over again. However, still no luck. Here is the command I am using to start apex 2.2 installation:
    @apexins ********** htmldb_data htmldb_files htmldb_temp /i/ none
    I have installed oracle http server in a standalone home, the http server works.
    Thank you for your time,
    Daniel

  • Oracle error: Ora-01555 : snapshot too old: rollback segment number 1......

    System Error: Unknown Database error (type qqdb_ResourceException) on WMS_WH1: Execute failed for SQL statement ............... error from database is: ORA-01555: snapshot too old: rollback segment number 1 with name "_SYSSMU1$" too small...
    Any ideas ? Please help.
    Thank you.

    You either have
    - an UNDO tablespace that is way too small (rollback segments that are too small); or
    - an application that does way too many COMMITs (common with apps ported from SQL Server)
    From the added info, I would guess that the Java program has a major loop and does processing on each of the values it gets in that loop. At the end of each turn in the loop, it does a commit. Then it tries to look at the next record in the master list. After a while (say around 388 loops ;-) ) it dies.
    The reason is that when it looks for information in the master query, it needs to rebuild that information to the moment that query was initiated. It uses rollback (AKA undo) to rebuild that. But rollback is not guaranteed to exist after a commit (unless forced) and once a commit happens, that area can be reused. When it is reused, the information is no longer there to rebuild the row, and that raises an ORA-01555
    Edited by: Hans Forbrich on Sep 11, 2009 3:44 PM

  • Snapshot too old error occured, kindly need solution for it...

    Dar friends
    I got snapshot too old error on most used database
    Kindly give me the solution....
    my solution was
    Alter rollback segment <rollback segmnt name>
    datafile '<path>/filename.dbf' resize <no>k;
    or
    alter rollback segment <rollback segmnt name>
    add datafile '<path>/filename.dbf' size <no>k
    storage(initial 1k nxt 1k minextnts 2 maxextents unlimited)
    Kindly suggest me wheather my code is currect or not...
    Ur
    Friend

    I don't know what version of the database you are running? I'm only using 8.1.7.4. But where I come from, you add datafiles to the tablespace, not the rollback segment.
    alter tablespace rollback
    add datafile '&lt;blah, blah&gt;'
    size 147m
    autoextend on next 100m maxsize 2047m;
    Make sure that you have a suitable number of rollback segments that are well-sized extents. But mostly, listen the Tom Best, and try and introduce some best practices (no pun intended) to reduce the likelihood of this situation arising.

  • Snapshot too old when deleting from a "big" table

    Hello.
    I think this is a basic thing (release 8.1.7.4). I must say I don't know how rollback segments really work.
    A table, where new records are continuously inserted and the old ones can be updated in short transactions, should be purged every day by deleting old records.
    This purge has never been done and as a result it has now almost 4 million records, and when I launch the stored procedure that deletes the old records I get the "snapshot too old" error because of the read consistency.
    If I launch the procedure after stopping the application that inserts and updates in the table, then I don't get the error. I guess the problem is that meanwhile the procedure is being executed other transactions also need to use rollback segments so that the rollback segment space that the snapshot needs isn't enough. Do you think this is the problem?
    If this is the case then I suppose that the only solution is increasing the size of the only datafile of the only tablespace for my 4 rollback segments. Am I wrong?
    (Three more questions:
    - Could the problem be solved by locking some rollback segments for the snapshot? How could I do that?
    - What is a discrete transaction?
    I'm a developer, not a dba, but don't tell me to ask my dba because it isn't that easy. Thanks in advance.

    "snapshot too old indicates the undo tablespace does not have enough free space for a long running query" what does this mean? why do I get the same error in two different databases, in the first the size of the datafile of the undo tablespace is 2GB whilst in the second it is only 2MB? How can I know how big the datafile has to be?
    One possible solution could be not deleting the whole table at once but only a few records? Would this work? Why when I try "select count(*) from my_table where rownum = 1" I also get "snapshot too old" when other transactions are running.

  • Export with consistent=y raise snapshot too old error.

    Hi,
    Oracle version:9204
    It raises
    EXP-00056: ORACLE error 1555 encountered
    ORA-01555: snapshot too old: rollback segment number 2 with name
    "_SYSSMU2$" too small
    when I do an export with consistent=y option.
    And I find below information in alert_orcl.log
    Wed Apr 20 07:50:01 2005
    SELECT /*NESTED_TABLE_GET_REFS*/ "XXX"."TABLENAME".* FROM
    "XXX"."TABLENAME"
    ORA-01555 caused by SQL statement below (Query Duration=1140060307
    sec, SCN: 0x0000.00442609):
    The undo parameters:
    undo_retention=10800(default value)
    undo_retention is larger than the seconds run export(only 1800
    seconds),so I think the default value is enough.
    undo_management=auto(default value)
    Maybe the rollback tablespace is too small(about 300M)? But I think oracle should increase the size of datafile in this mode.Is that right?
    undo_tablespace=undotbs1
    undo_suppress_errors=false
    I think I must miss something.
    Any suggestions will be very appreciated.
    Thanks.
    wy

    UNDO_RETENTION is a request, not a mandate. If your UNDO tablespace is too small, Oracle may have to discard UNDO segments before UNDO_RETENTION is reached.
    How much UNDO is your database generating every second?
    SELECT stat.undoblks * param.value / 1024 / 1024 / 10 / 60 undo_mb_per_sec
      FROM v$undostat  stat,
           v$parameter param
    WHERE param.name = 'db_block_size'Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$

    A Materalized view is scheduled to update every 12 hours . When it has tried to update it has thrown the error ...
    ORA-12008: error in materialized view refresh path
    ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$"
    too small
    ORA-06512: at "SYS.DBMS_SNAPSHOT", line 803
    ORA-06512: at "SYS.DBMS_SNAPSHOT", line 860
    ORA-06512: at "SYS.DBMS_SNAPSHOT", line 841
    ORA-06512: at line 1

    Hi,
    Can you increase the size of the UNDO Tablespace ?
    For more information, you can find on this link below:
    http://forums.oracle.com/forums/search.jspa?threadID=&q=ORA-01555&objID=c84&dateRange=all&userID=&numResults=15
    Cheers

  • ORA-01555: snapshot too old

    Hi,
    We have audit component, one responsibility of which is to archive audit messages from Oracle database. The component fails on a simple select statement (provided below) that retrieves number of records to be archived based on age parameter:
    SELECT COUNT(*) FROM blobobjtable blbt, auditmessagetable msgt WHERE msgt.blobobjtablepk = blbt.blobobjtablepk AND trunc(to_number(substr((SYSTIMESTAMP-msgt.credtimeutc),1,instr(SYSTIMESTAMP-msgt.credtimeutc,' ')))) >= age
    We tried the following 3 select statements directly from SQL Plus. The result was that the first two succeeded and the last one failed with "ORA-01555: snapshot too old" exception. We tried these select statements after restart of Oracle database but still got last select statement failed. One thing that we noticed was that the last select statement takes extremely long time to complete. Also, analyzing the index table used during the join failed with the same exception. The same is true when the primary key indices are analyzed.
    1) select count(*) from blobobjtable
    2) select count(*) from auditmessagetable
    3) select count(*) from blobobjtable blbt, auditmessagetable msgt WHERE msgt.blobobjtablepk = blbt.blobobjtablepk
    Can somebody explain what might be the cause of ORA-01555 exception for such simple select statement? Does Oracle persists information of UNDO buffers before restart? Is there any way to clean UNDO buffers manually?
    If somebody has experience in resolving "ORA-01555: snapshot too old" exception problem please share you experience with us. Any help will be appreciated.
    Thanks,
    Aleks

    how many rows in ur tables.
    select count(*) from blobobjtable blbt
    SQL> show parameter undo
    NAME                                 TYPE        VALUE
    undo_management                      string      AUTO
    undo_retention                       integer     300
    undo_tablespace                      string      UNDOTBS1
    SQL> select count(*) from sm;
      COUNT(*)
       1326661
    Elapsed: 00:00:03.53
    SQL> select count(*) from sm;
      COUNT(*)
       1326661
    Elapsed: 00:00:03.45
    SQL> select count(*) from sm ss,ac_taj@taj ac
      2  where ss.nserial = ac.nserial;
      COUNT(*)
         88763
    Elapsed: 00:00:38.35
    SQL> show parameter db_name
    NAME                                 TYPE        VALUE
    db_name                              string      db02
    SQL>i have some configuration of undo tbs. but i am not getting any error. also i am just startup my database if right know i am only one user connected to database.
    SQL> select  bytes/1024/1024 "UNTO MB" from dba_data_files
      2  where tablespace_name = 'UNDOTBS1'
      3  /
       UNTO MB
           930

  • Snapshot too old error

    Hi All,
    need suggestions for tuning a query failing with the error "Rollback segment too small; snapshot too old”. The query is taking a long time to run.

    Here is the Explain plan (if you can understand !!!). Unable to generate the tkprof as the query is taking exceptionally long time.
    EXECUTION_PLAN
    0 SELECT STATEMENT Cost = 18675
    1 NESTED LOOPS Cost = 1
    100 TABLE ACCESS BY INDEX ROWID MTL_SYSTEM_ITEMS_B Cost = 2
    101 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 UNIQUE
    2 NESTED LOOPS Cost = 1
    98 TABLE ACCESS BY INDEX ROWID WSH_NEW_DELIVERIES Cost = 2
    99 INDEX UNIQUE SCAN WSH_NEW_DELIVERIES_U1 UNIQUE
    3 NESTED LOOPS Cost = 1
    96 TABLE ACCESS BY INDEX ROWID WSH_DELIVERY_ASSIGNMENTS Cost = 2
    97 INDEX RANGE SCAN WSH_DELIVERY_ASSIGNMENTS_N3 NON-UNIQUE
    4 NESTED LOOPS Cost = 1
    94 TABLE ACCESS BY INDEX ROWID WSH_DELIVERY_DETAILS Cost = 2
    95 INDEX RANGE SCAN WSH_DELIVERY_DETAILS_N3 NON-UNIQUE
    5 NESTED LOOPS Cost = 1
    92 TABLE ACCESS BY INDEX ROWID HZ_PARTIES Cost = 2
    93 INDEX UNIQUE SCAN HZ_PARTIES_U1 UNIQUE
    6 NESTED LOOPS Cost = 1
    7 NESTED LOOPS Cost = 1
    8 NESTED LOOPS Cost = 1
    9 NESTED LOOPS Cost = 1
    10 NESTED LOOPS Cost = 1
    EXECUTION_PLAN
    11 NESTED LOOPS Cost = 1
    12 NESTED LOOPS Cost = 1
    13 NESTED LOOPS Cost = 1
    14 NESTED LOOPS Cost = 1
    15 NESTED LOOPS Cost = 1
    16 NESTED LOOPS Cost = 1
    17 NESTED LOOPS Cost = 1
    18 NESTED LOOPS Cost = 1
    19 NESTED LOOPS Cost = 1
    20 NESTED LOOPS Cost = 1
    21 NESTED LOOPS Cost = 1
    22 NESTED LOOPS Cost = 1
    23 HASH JOIN Cost = 1
    24 TABLE ACCESS BY INDEX ROWID OE_ORDER_HEADERS_ALL Cost = 1
    25 NESTED LOOPS Cost = 1
    26 NESTED LOOPS Cost = 1
    27 NESTED LOOPS Cost = 1
    28 HASH JOIN Cost = 1
    29 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION Cost = 1
    30 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_IX1 NON-UNIQUE Cost = 1
    31 NESTED LOOPS Cost = 2
    EXECUTION_PLAN
    32 NESTED LOOPS Cost = 1
    33 NESTED LOOPS Cost = 1
    34 NESTED LOOPS Cost = 1
    35 NESTED LOOPS Cost = 1
    36 NESTED LOOPS Cost = 1
    37 NESTED LOOPS Cost = 1
    38 NESTED LOOPS Cost = 1
    39 TABLE ACCESS BY INDEX ROWID FND_FLEX_VALUE_SETS Cost = 1
    40 INDEX UNIQUE SCAN FND_FLEX_VALUE_SETS_U2 UNIQUE Cost = 1
    41 TABLE ACCESS BY INDEX ROWID FND_FLEX_VALUE_SETS Cost = 2
    42 INDEX UNIQUE SCAN FND_FLEX_VALUE_SETS_U2 UNIQUE
    43 TABLE ACCESS BY INDEX ROWID FND_FLEX_VALUES Cost = 2
    44 INDEX RANGE SCAN FND_FLEX_VALUES_N3 NON-UNIQUE
    45 TABLE ACCESS BY USER ROWID FND_FLEX_VALUES Cost = 2
    46 TABLE ACCESS BY INDEX ROWID HZ_LOCATIONS Cost = 2
    47 INDEX RANGE SCAN HZ_LOCATIONS_N5 NON-UNIQUE Cost = 1
    48 TABLE ACCESS BY INDEX ROWID HZ_PARTY_SITES Cost = 2
    49 INDEX RANGE SCAN HZ_PARTY_SITES_N2 NON-UNIQUE
    50 TABLE ACCESS BY INDEX ROWID HZ_CUST_ACCT_SITES_ALL Cost = 2
    51 INDEX RANGE SCAN HZ_CUST_ACCT_SITES_N1 NON-UNIQUE
    52 TABLE ACCESS BY INDEX ROWID HZ_CUST_SITE_USES_ALL Cost = 2
    EXECUTION_PLAN
    53 INDEX RANGE SCAN HZ_CUST_SITE_USES_N1 NON-UNIQUE Cost = 1
    54 INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK UNIQUE
    55 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION Cost = 2
    56 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 NON-UNIQUE
    57 INDEX UNIQUE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK UNIQUE
    58 INDEX RANGE SCAN OE_ORDER_HEADERS_N4 NON-UNIQUE
    59 TABLE ACCESS FULL FND_FLEX_VALUES Cost = 2
    60 TABLE ACCESS BY INDEX ROWID FND_FLEX_VALUES Cost = 2
    61 INDEX RANGE SCAN FND_FLEX_VALUES_N3 NON-UNIQUE
    62 TABLE ACCESS BY INDEX ROWID OE_ORDER_LINES_ALL Cost = 2
    63 INDEX RANGE SCAN OE_ORDER_LINES_N1 NON-UNIQUE
    64 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS Cost = 2
    65 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 UNIQUE
    66 TABLE ACCESS BY INDEX ROWID OE_ORDER_LINES_ALL Cost = 2
    67 INDEX RANGE SCAN XXCTS_OE_OE_ORDER_LINES_ALL_N3 NON-UNIQUE
    68 TABLE ACCESS BY INDEX ROWID OE_TRANSACTION_TYPES_TL Cost = 2
    69 INDEX RANGE SCAN OE_TRANSACTION_TYPES_TL_U1 UNIQUE Cost = 1
    70 TABLE ACCESS BY INDEX ROWID HZ_CUST_SITE_USES_ALL Cost = 2
    71 INDEX UNIQUE SCAN HZ_CUST_SITE_USES_U1 UNIQUE
    72 INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK UNIQUE
    73 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION Cost = 2
    EXECUTION_PLAN
    74 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 NON-UNIQUE
    75 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION Cost = 2
    76 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 NON-UNIQUE
    77 INDEX UNIQUE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK UNIQUE
    78 TABLE ACCESS BY INDEX ROWID HZ_CUST_ACCT_SITES_ALL Cost = 2
    79 INDEX UNIQUE SCAN HZ_CUST_ACCT_SITES_U1 UNIQUE
    80 TABLE ACCESS BY INDEX ROWID XXCTS_OE_ORDER_HEADERS_ALL Cost = 2
    81 INDEX UNIQUE SCAN XXCTS_OE_ORDER_HEADERS_ALL_U1 UNIQUE
    82 TABLE ACCESS BY INDEX ROWID HZ_PARTY_SITES Cost = 2
    83 INDEX UNIQUE SCAN HZ_PARTY_SITES_U1 UNIQUE
    84 TABLE ACCESS BY INDEX ROWID HZ_LOCATIONS Cost = 2
    85 INDEX UNIQUE SCAN HZ_LOCATIONS_U1 UNIQUE
    86 TABLE ACCESS BY INDEX ROWID HZ_CUST_ACCOUNTS Cost = 2
    87 INDEX UNIQUE SCAN HZ_CUST_ACCOUNTS_U1 UNIQUE
    88 TABLE ACCESS BY INDEX ROWID HZ_PARTIES Cost = 2
    89 INDEX UNIQUE SCAN HZ_PARTIES_U1 UNIQUE
    90 TABLE ACCESS BY INDEX ROWID HZ_CUST_ACCOUNTS Cost = 2
    91 INDEX UNIQUE SCAN HZ_CUST_ACCOUNTS_U1 UNIQUE
    102 rows selected.

  • Receiving error ORA-01555: snapshot too old:

    Need some info...
    Currently seeing ORA-01555: snapshot too old: rollback segment number 18 with name "_SYSSMU18$" too small.
    Info:
    SQL> show parameter undo
    NAME TYPE VALUE
    undo_management string AUTO
    undo_retention integer 4200
    undo_suppress_errors boolean FALSE
    undo_tablespace string UNDOTBS_1
    SQL> select max(maxquerylen) from v$undostat;
    MAX(MAXQUERYLEN)
    35792
    SQL>
    run this based on threads in here:
    SQL> select (35792/60)/60 query,(4200/60)/60 retention from dual;
    QUERY RETENTION
    9.94222222 1.16666667
    I need some help figuring out what to set my undo_retention to? Should it be 36000?
    Any help is appreciated.
    Thanks

    Jamie CC wrote:
    The query that was in the alert log was running against a table with 779 rows. The query uses the index (not worried if it wouldn't for that small a table) and came back in one second... This makes no sense. Is it possible that there was a sub-query running and the wrong query was put into the alert log?More likely the query in the alert log was one that died, but the cause was a different query. Remember, the meaning of an ORA-1555 is that the query needed to go back to undo in order to gather a view of the data to a certain SCN, and the data had already been aged out. So the alert log gets the one that died, but the cause is another one. Feel lucky at that, in older versions it was considered an app error IIRC.
    Search for the error on asktom.oracle.com for a number of scenarios, and you might want to review the part of the concepts manual about read consistency to make sense of it all. You might also find Tom's book explanation about it with a google search.
    Also, depending on your version, there may be things to set like retention guarantee.
    I've found on the ERP/MRP systems I work on these errors will appear weekly from people leaving sessions connected after they go home, so I kill 'em off at night. And that's with an undo nearly as big as the db data, that's normally almost empty.

Maybe you are looking for