Forcing a specific rollback segment on a transaction does not seem to work

Hi!
We're using Oracle 9.2.0.5.0 on Sun Solaris and we're still configured to use Rollback Segments.
We have an issue with Snapshot too old due to RBS too small on a long query I attach below for reference:
set heading off
set pagesize 0
set feedback off
set linesize 200
<<<<< SET TRANSACTION USE ROLLBACK SEGMENT UMF_RBS_LARGE_TRAN; <<<<<
SELECT ucms_cards.msisdn
|| ';;' || to_char(to_date(substr(ucms_cards.notes,14+length(ucms_cards.msisdn),19),'MM-DD-YYYY.HH24-MI-SS'),'DD/MM/YYYY HH24:MI:SS')
|| ';;' || to_char(ucms_batches.expiry_date,'dd/mm/yyyy')
|| ';;' || ucms_cards.serial_no
|| ';;' || ucms_cards.serial_no
|| ';;' || ucms_cards.batch_serial_no
|| ';;' || ' '
|| ';;' || CASE ucms_cards.card_status
WHEN 'used' THEN '1'
ELSE '0'
END
|| ';;' || CASE WHEN date_booked_in is null THEN '01/01/1970 00:00:00' ELSE to_char(date_booked_in,'DD/MM/YYYY') || ' 00:00:00' END
|| ';;' || ' '
from ucms_batches,ucms_cards, UCMS_EVENT_LOG
WHERE ucms_cards.batch_serial_no = ucms_batches.serial_no
AND ucms_cards.serial_no = substr(UCMS_EVENT_LOG.ENTITY_ID,11,length(UCMS_EVENT_LOG.ENTITY_ID)-9)
AND UCMS_EVENT_LOG.PARTY_NO in (0)
AND UCMS_EVENT_LOG.TIMESTAMP>=TO_TIMESTAMP(TO_CHAR(SYSDATE-1, 'DD-MM-YYYY') || ' 00:00:01', 'DD-MM-YYYY HH24:MI:SS')
AND UCMS_EVENT_LOG.TIMESTAMP<=TO_TIMESTAMP(TO_CHAR(SYSDATE-1, 'DD-MM-YYYY') || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS')
AND UCMS_EVENT_LOG.USER_ID LIKE 'SCP-AGENT1%'
AND UCMS_EVENT_LOG.EVENT_TYPE_ID IN (1,2)
AND UCMS_EVENT_LOG.ENTITY_TYPE_ID LIKE 'ucms_cards%'
UNION
SELECT ucms_imported_cards.msisdn
|| ';;' || to_char(to_date(substr(ucms_imported_cards.notes,14+length(ucms_imported_cards.msisdn),19),'MM-DD-YYYY.HH24-MI-SS'),'DD/MM/YYYY H24:MI:SS')
|| ';;' || to_char(ucms_imported_cards.expiry_date,'dd/mm/yyyy')
|| ';;' || ucms_imported_cards.serial_no
|| ';;' || ucms_imported_cards.serial_no
|| ';;' || DBMS_UTILITY.GET_HASH_VALUE(ucms_imported_cards.card_type,1,65536)
|| ';;' || ' '
|| ';;' || CASE ucms_imported_cards.card_status
WHEN 'used' THEN '1'
ELSE '0'
END
|| ';;' || '01/01/1970 00:00:00'
|| ';;' || ' '
from ucms_imported_cards, UCMS_EVENT_LOG
where ucms_imported_cards.serial_no = substr(UCMS_EVENT_LOG.ENTITY_ID,11,length(UCMS_EVENT_LOG.ENTITY_ID)-9)
AND UCMS_EVENT_LOG.PARTY_NO in (0)
AND UCMS_EVENT_LOG.TIMESTAMP>=TO_TIMESTAMP(TO_CHAR(SYSDATE-1, 'DD-MM-YYYY') || ' 00:00:01', 'DD-MM-YYYY HH24:MI:SS')
AND UCMS_EVENT_LOG.TIMESTAMP<=TO_TIMESTAMP(TO_CHAR(SYSDATE-1, 'DD-MM-YYYY') || ' 23:59:59', 'DD-MM-YYYY HH24:MI:SS')
AND UCMS_EVENT_LOG.USER_ID LIKE 'SCP-AGENT1%'
AND UCMS_EVENT_LOG.EVENT_TYPE_ID LIKE '2%'
AND UCMS_EVENT_LOG.ENTITY_TYPE_ID LIKE 'ucms_imported_cards%';
As you see we forced the session to use a huge RBS created for the purpose, but strangely after a long while the query fails with a RBS too small failure due to another RBS, not the one specified.
Is there any chance the UNION or any other component of the query is implicitly opening a new transaction with a different RBS associated?
Any chance to force the same RBS specified explicitly?
Thanks!
Mike

albertone wrote:
but strangely after a long while the query fails with a RBS too small failure due to another RBS, not the one specified.You misunderstand snapshot too old. It can be caused by other sessions same as by your session. Assume AFTER your session issued select some other session modified one (or more) tables ucms_batches, ucms_cards, UCMS_EVENT_LOG and committed changes. By the time your select reaches to fetch rows modified by that other session rollback extents in rollback segment used by that other session were reused. You will get snapshot too old. Bottom line - all sessions modifying table(s) used by your select must use rollback segments large enough so they are not overwritten before corresponding rows are needed by your select.
SY.

Similar Messages

  • HT200160 This solution does not seem to work when I upgraded from OS X 10.6 to OS X 10.8 (Mountain Lion).  I've tried all versions of this.  Any suggestions specific to getting this to work with Mountain Lion?

    Any suggestions for making this work with Mountain Lion?  I've tried all similar solutions on web.  I've been able to get this to work with Lion, and after upgrading to Mountain Lion it seems to hold true (doesn't make me implement again).  But when I went from OSX 10.6 to Mountain Lion and have to implement it on 10.8 - it isn't working. Thanks.

    Any suggestions for making this work with Mountain Lion?  I've tried all similar solutions on web.  I've been able to get this to work with Lion, and after upgrading to Mountain Lion it seems to hold true (doesn't make me implement again).  But when I went from OSX 10.6 to Mountain Lion and have to implement it on 10.8 - it isn't working. Thanks.

  • I do not know what happened, all of a sudden Firefox does not want to work anymore. Had been conected to audible. Retried about 4 times.... no luck had to force

    I do not know what happened, all of a sudden Firefox does not want to work anymore. Had been conected to audible. Retried about 4 times.... no luck had to force quit every time. The three Firefox app. into garbage, emptied garbage and redownloaded new version from Firefox. Reinstalled but same thing happened again... no connection.
    What can I do, I like Firefox better than Safari, had it for years on my Mac.
    Please let me know.
    (Note: I have also mentioned this on the automatic response to the malfunctioning).
    '''''Email removed by moderator to protect you from spam'''''

    Hey.
    I think it might be the problem with one of your plugins.
    Try to uninstall the webbrowser AND remove the storage from Firefox in your user-account (Linux: /home/username/.mozilla). You can check the list of installed Add-Ons in Firefox under "Extras => Add-ons" or by pressing Shift + Strg + A (Linux).

  • ST06N transaction does not exist

    Hi
       We have upgraded the SAP NetWeaver 2004s support package stack level from 23 to 26, after that when we are executing the transaction ST06N - we are getting error message below the screen "ST06N transaction does not exist"
    for that the program name we can able to execute in T code SA38 Program name RSHOST1N
    thru the T code its showing the Message ST06N transaction does not exist,
    Could pls guide us
    Regards
    Sriram

    Hi Rupali
    Thanks for your support as per your advice we can do that with help of Abaper
    As of now we have upgraded the Support package 26 in Dev & QA. in the Production still i can able to execute the T code ST06N, My query's are Is this any bug or ST06N Tcode obsolete?
    is this any one face the same issue ?
    Regards
    Sriram

  • Intercompany transaction does not exists

    Hi,
    I am have posted entry in F-02 and also i have asigned a new company code to the transaction and also document got created.
    now i need to reverse the document for the reversal reason 1 in T.Code FBU8.
    I am getting error message " Intercompany Transaction does not exists".
    Please help me with this issue.

    dear
    check settings in OBYA. is clearing account configured for intercompany postings
    and check that in OBA7 for the document type you using allow intercompany postings.
    regards
    rohit
    Edited by: ROHITBALI on Nov 19, 2011 7:28 AM

  • "An autonomous transaction does not see any changes made by main transact"

    Hi,
    I'm trying to reproduce the "An autonomous transaction does not see any changes made by main transaction" reffered on :
    Oracle® Database Application Developer's Guide - Fundamentals
    10g Release 2 (10.2)
    Part Number B14251-01
    chapter 2 SQL Processing for Application Developers
    Paragraph : Autonomous TransactionsI set up a simple case...
    create table emp_ as select * from emp
    begin
      update emp_ set hiredate=hiredate+100 where empno=7934;
    end;
    create or replace trigger trg_emp_
    after insert or update on emp_
    for each row
    declare
        pragma autonomous_transaction;
        emp_var emp.hiredate%type;
      begin
        select hiredate
          into emp_var
          from emp_
        where empno=:new.empno;
        dbms_output.put_line('empno: '||:new.empno);
        dbms_output.put_line('old hiredate: '||:old.hiredate);
        dbms_output.put_line('new hiredate: '||:new.hiredate);
      end;Prior to any change...
    SQL> select empno,hiredate from emp_;
    EMPNO HIREDATE
    5498 21/4/1982
    5499 11/10/1981
    5411 10/10/1981
    5410 10/10/1982
    7369 17/12/1980
    7499 20/2/1981
    7521 22/2/1981
    7566 2/4/1981
    7654 28/9/1981
    7698 1/5/1981
    7782 9/6/1981
    7788 19/4/1987
    7839 17/11/1981
    7844 8/9/1981
    7876 23/5/1987
    7900 3/12/1981
    7902 3/12/1981
    7934 23/1/1982After the change...
    SQL> begin
      2    update emp_ set hiredate=hiredate+100 where empno=7934;
      3  end;
      4  /
    empno: 7934
    old hiredate: 23/01/82
    new hiredate: 03/05/82
    PL/SQL procedure successfully completedAccording to the Oracle doc the select of the autonomous transaction should not see the change made to the hiredate column of the table in the main transaction(in the anonymous block)....
    What may i do wrong..????
    Thank you,
    Sim

    Simon:
    As Tubby pointed out, your dbms_output commands do not display the value you selected in the trigger. Your trigger based demonstration needs to be more like:
    SQL> SELECT * FROM t;
            ID DT
             1 05-SEP-2009
             2 17-JUL-2009
    SQL> CREATE TRIGGER t_ai
      2     AFTER INSERT OR UPDATE ON t
      3     FOR EACH ROW
      4  DECLARE
      5     PRAGMA AUTONOMOUS_TRANSACTION;
      6     l_dt t.dt%TYPE;
      7  BEGIN
      8     SELECT dt INTO l_dt
      9     FROM t
    10     WHERE id = :new.id;
    11     DBMS_OUTPUT.Put_Line ('ID: '||:new.id);
    12     DBMS_OUTPUT.Put_Line ('Old dt: '||:old.dt);
    13     DBMS_OUTPUT.Put_Line ('New dt: '||:new.dt);
    14     DBMS_OUTPUT.Put_Line ('Aut dt: '||l_dt);
    15  END;
    16  /
    Trigger created.
    SQL> UPDATE t SET dt = sysdate WHERE id = 2;
    ID: 2
    Old dt: 17-JUL-2009
    New dt: 25-OCT-2009
    Aut dt: 17-JUL-2009
    1 row updated.So, the automomous transaction select did not see the changed value of dt.
    I know you are just trying to understand automomous transactions here and would never do sometihg like this in production right? :-)
    Your trigger, as written, has some interesting side effects because of the automomous transaction. For example:
    SQL> INSERT INTO t VALUES(3, sysdate - 25);
    INSERT INTO t VALUES(3, sysdate - 25)
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at "OPS$ORACLE.T_AI", line 5
    ORA-04088: error during execution of trigger 'OPS$ORACLE.T_AI'
    SQL> UPDATE t SET id = 3 where trunc(dt) = TO_DATE('05-Sep-2009', 'dd-mon-yyyy');
    UPDATE t SET id = 3 where trunc(dt) = TO_DATE('05-Sep-2009', 'dd-mon-yyyy')
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at "OPS$ORACLE.T_AI", line 5
    ORA-04088: error during execution of trigger 'OPS$ORACLE.T_AI'John

  • Rollback segment for set transaction

    there is way that i can setup a rollback segment for a spacific user or specific transction.
    ALTER ROLLBACK SEGMENT big_rbs ONLINE;
    SET TRANSACTION USE ROLLBACK SEGMENT big_rbs;
    sql .....
    commit;
    ALTER ROLLBACK SEGMENT big_rbs OFFLINE;
    the sql is going for about hour, i was woundering during that time can some else use this rollback segment. i just want this rbs to this user, how i can do that.
    thanks

    I guess i didn't clearify well. let say i created a rbs for specific tranction. before this transaction is start it will turn on this rbs and once this transaction is completed, it issue the command commit, and bring it back to this rbs offline. the question is durning this transaction does any other transaction can come and use this rbs instead of we have lot of other rbs.
    I hope that you get my point.

  • GettingTransaction in a specific Rollback segment

              Hi
              I m using bea weblogic 6.0. as Application Server and Oracle 8.x as Database.
              I get user transaction from weblogic server by looking up ("javax.transaction.UserTransaction")
              Now my requirement is that i want to begin transaction with a particular rollback
              segment. ( oracle
              allows this ) but UserTransaction object that we get from weblogic has only one
              method .begin()
              In this case is it possible for me to get usertransaction and begin transaction
              in a particular rollback
              segment.
              Thanks
              Pranav
              

    albertone wrote:
    but strangely after a long while the query fails with a RBS too small failure due to another RBS, not the one specified.You misunderstand snapshot too old. It can be caused by other sessions same as by your session. Assume AFTER your session issued select some other session modified one (or more) tables ucms_batches, ucms_cards, UCMS_EVENT_LOG and committed changes. By the time your select reaches to fetch rows modified by that other session rollback extents in rollback segment used by that other session were reused. You will get snapshot too old. Bottom line - all sessions modifying table(s) used by your select must use rollback segments large enough so they are not overwritten before corresponding rows are needed by your select.
    SY.

  • The transaction does not die after the kill and I have to restart Oracle

    Hi,
    I have this very hard issue with my production environment.
    A transaction started from java hangs after the user has closed the browser before the transaction was completed. The transaction remains in wait for "latch free" in v $ transaction.
    When the WebSphre is stopped the transaction is not closed. Neither the kill on Oracle or on Unix conclude the transaction. The restart of the DB is required.
    The rollback segment pointed to by the transaction is always the same. Although the procedure call by java is always the same.
    The database does not have performance problems and only one transaction per day waits for "latch free" and do not closed.
    The problem could be the rollback segment? Why Oracle is unable to resolve the transaction even if the client is dead and the WebSphere off?
    Regards,
    BingoBongo

    The average duration of the transaction is 10/15 seconds.
    When it lasts longer the client is closed and the transaction remains locked. But not always only in a particular case.
    From this moment the transaction is waiting for "latch free" and the value of the field USED_UBLK/USED_UREC does not increase and not decrease.
    The wait event is always the "latch free".
    The kill (Unix, Oralce) has no effect on the transaction.
    The rollback segment is always the same.
    The procedure call is always acts the same.
    The value of "SECONDS_IN_WAIT-WAIT_TIME/100" increases up to a certain point and then start over again.
    This is a snapshot of a transaction that requires restart of the DB:
    STATUS
    SECONDS_IN_WAIT-WAIT_TIME/100
    CR_CHANGE
    XIDUSN
    SECONDS_IN_WAIT
    WAIT_TIME
    STATE
    EVENT
    USED_UBLK
    USED_UREC
    OSUSER
    CLIENT_INFO
    ROW_WAIT_BLOCK#
    ROW_WAIT_OBJ#
    PROGRAM
    MODULE
    ACTIVE
    399,99
    178
    10
    400
    1
    WAITED KNOWN TIME
    latch free
    11
    738
    was5a
    0
    56204
    JDBC Thin Client
    JDBC Thin Client

  • Statement in Transaction Does Not Roll Back

    I have a group of MySQL statements in a method of a Java application.
    I include an SQL error in the last statement to test the rollback of the transaction.
    All the statements roll back, EXCEPT for the one detailed below.
    The MySQL table:
         CREATE TABLE Counter (
              number INT( 4 ) NOT NULL DEFAULT 0,
              account_id VARCHAR( 12 ) NOT NULL PRIMARY KEY
         ) ENGINE = InnoDB;I have run the staement as a PreparedStatement and a Statement:
    PreparedStatement:
         String updateCounterStr =
              " UPDATE Counter " +
                   " SET number = number + 1 " +
                   " WHERE account_id = ? "
         updateCounter = con.prepareStatement ( updateCounterStr );
              updateCounter.setString( 1, accountID );
              int uc = updateCounter.executeUpdate();     Statement:               
         Statement updateCounterStatement = con.createStatement();
              int updatecounter = updateCounterStatement.executeUpdate(
                   "UPDATE Counter SET number = number + 1 " +
                   "WHERE account_id = \'" + accountID + "\'"
              con.setAutoCommit( true );     //     ------------------------------------ Transaction ENDS
              updateCounterStatement.close();
    //               updateCounter.close();
              ... several more
              con.close();
         } catch(SQLException ex) {
              System.err.println("SQLException: " + ex.getMessage());
              if (con != null) {
                   try {
                        System.err.print("Transaction is being ");
                        System.err.println("rolled back");
                        con.rollback();     //     < ------------------------------------ con.rollback() HERE
                   } catch(SQLException excep) {
                        System.err.print("SQLException: ");
                        System.err.println(excep.getMessage());
    }     //     ---------------------------------------- END the methodIn both cases Counter is incremented, but does NOT roll back.
    The other statements in the transaction do roll back,
    I am using:
    mysql Ver 14.12 Distrib 5.0.18, for apple-darwin8.2.0 (powerpc) using readline 5.0
    on Mac OS X 10.4.x
    I would greatly appreciate a solution to this problem.
    Many thanks in advance

    I think autocommit is true by default. Also, it looks like your'e setting it to true, and then executing more SQL.
    Explicitly set it to false, and DON'T set it back to trueif there's any chance you're going to want to rollback after that.

  • EJB3 : suspend JTA transaction does not release the connection in the XA DS

    Hi all,
    I did a test and after suspending a JTA transaction I note that in the xa datasource the activeconnection = 1.
    So is it normal because I was thinking that when I suspend the transaction the teh connection is released and then after a transaction resume I could continue the transaction with another connection of the xa datasource ?
    Thank you for all..
    Christophe.

    It's a long time ago, but did you ever solve this problem?
    I'm having the same issue with OSB writing to a WLS8.1 JMS queue.
    I have a development OSB server which works fine.
    Pete

  • Delete exposure in THMEX and FTREX12 - error "Transaction does not exist"

    I have transferred by error an exposure (using TFREX12) to HM. In THMEX I have deleted the newly created exposure that has a transaction Nber. Then in TFREX12 I try to reverse this transfer by using in the menu Position the function "Reverse transfer" but get an error message "Transaction xxx does not exist". How can it be deleted so that I can transfer the exposure to the appropriate Hedge Plan??
    Thanks
    G.

    Hi,
    correct procedure is to reverse transfer in FTREX12 without deleting the exposure in THMEX. If you deleted it in THMEX first, then the error is justified. To solve the problem, you can manually create an exposure with the same transaction directly in THMEX, then transfer reversal should be possible.
    Rgds,
    Tomislav

  • Segment Builder: 'Business partner does not exist in target group'

    After having built a target group in the segment builder the following error message occurs: 'Business partner does not exist in target group'. What is meant by this error message and what has caused this error?

    Hi Mahesh,
    Are data sources based in infoset¿? If the are based in infoset u can do simple queries.
    I create infoset in t-code 'SQ02', once the infoset has been created u can go to 'Enviroment' --> Queries, and here u can created simple queries based in the infoset. With this tool u can check if this infoset has been created sucessfully.
    Hope it helps u.
    Regards,
    Mon

  • JTA Transaction does not work

    Hi,
    I am currently porting an application from Websphere 3.5 to Weblogic 6.1.
    I have an Oracle 8.1.7 database.
    I have a problem when rollbacking JTA transaction.
    I have a session bean manipulating Entity beans (CMP & BMP) within a single
    method.
    This method creates beans and then update them.
    The issue is that during the update, the application generates an exception
    (system or applicative). The method rollbacks the transaction, but if I look
    in the database, the insert requests are not rollbacked !
    I have tried two different approach:
    1) container manage transaction: I catch the exception and then call
    setRollbackOnly()
    2) bean manage transaction: I retrieve the user transaction, and apply the
    rollback on exception.
    What's wrong with that ? This actually works fine on Websphere.
    Regards
    Jacques Desmazieres

    Make sure that you are using a TxDataSource and not a plain DataSource.
    (This is configured in the console.)
    -- Rob
    Jacques Desmazieres wrote:
    Hi,
    I am currently porting an application from Websphere 3.5 to Weblogic 6.1.
    I have an Oracle 8.1.7 database.
    I have a problem when rollbacking JTA transaction.
    I have a session bean manipulating Entity beans (CMP & BMP) within a single
    method.
    This method creates beans and then update them.
    The issue is that during the update, the application generates an exception
    (system or applicative). The method rollbacks the transaction, but if I look
    in the database, the insert requests are not rollbacked !
    I have tried two different approach:
    1) container manage transaction: I catch the exception and then call
    setRollbackOnly()
    2) bean manage transaction: I retrieve the user transaction, and apply the
    rollback on exception.
    What's wrong with that ? This actually works fine on Websphere.
    Regards
    Jacques Desmazieres

  • Transaction does not commit

    I have a JDBC transaction that is not committing to the database, but is also not throwing an error.
    The scenario is this:
    JMS message arrives on transactional queue
    Message processed by MDB
    MDB calls several Sybase ASE stored procedures
    JDBC transaction is rolled back, JMS message is not.
    I believe this to be specific to WLS 8.1. I set up two test environments where everything was the same except for the WLS version.
    Same OS (windows), same JDBC driver, same database, same application code. WLS 8.1 SP4 and SP5 do not work. WLS 9.1 works.
    I tried using JTS debugging, and the log says it commits the transaction. A query just prior to the MDB exiting confirms that the data is in the database and correct, but as soon as the MDB exits the data rolls back, despite the JTS commit message.
    The biggest roadblock here is that I am unable to upgrade our production environment to WLS 9.1, so I need to get this working on WLS 8.1.
    Can anyone offer some insight into this? I'd really appreciate it.
    Craig

    Further testing has revealed that I can get it to work on WLS 8.1 by <i>disabling</i> connection testing in the pool.
    <p/>
    Enabling <i>any one</i> of the connection testing options (test reserved, test created, or test released) causes the JDBC transaction to get silently rolled back.
    <p/>
    We're using Sybase Adaptive Server Enterprise/12.5.3/EBF 12868 ESD#4/P/Sun_svr4/OS 5.8/ase1253/1923/32-bit/FBO/Thu Sep 8 14:14:28 2005.
    <p/>
    Is there a known "Test Table Name" that works?
    <p/>
    I've tried several different options including:
    <ul>
    <li>SQL SELECT 1 from sysobjects</li>
    <li>SQL SELECT @@version</li>
    <li>SQL SELECT count(*) from tablename</li>
    <li>SQL SELECT count(*) from db..tablename</li>
    <li>SQL SELECT count(*) from db.user.tablename</li>
    </ul>
    Any help would be greatly appreciated.

Maybe you are looking for