Using of temporay table geneartes giant ammount of UNDO-Writes?

Database 9.2.0.5
Sun Os 5.8 64Bit
Hello we are benchmarking an application which stores data for temporary processing in global temporary tables.
What i see in the stastpack now is that 99%!!!! of physical writes run against the UNDO tablespace, this seems very strange to me!
Q1 : We reduced undo_rentention from 10000 to 900
does this reduce realy Number Writes to UNDO?
Q2 : Is there a side effect hat using temporay tables generates to much undo?
Regards
Carl r.
Statspack :
Tablespace IO Stats for DB: RPMS_R01 Instance: RPMS_R01 Snaps: 3761 -3767
->ordered by IOs (Reads + Writes) desc
Tablespace
Av Av Av Av Buffer Av Buf
Reads Reads/s Rd(ms) Blks/Rd Writes Writes/s Waits Wt(ms)
UNDOTBS1
8 0 1.3 1.0 813,494 110 8,873 ######
SYSTEM
8,556 1 0.1 1.0 349 0 248 ######
STATSPACK
205 0 2.8 1.0 3,492 0 0 0.0
TEMP
2,999 0 1.1 1.0 571 0 0 0.0
RPMS_DATA
27 0 0.4 1.0 1,158 0 42 113.3
RPMS_INDX
25 0 1.2 1.0 160 0 71 13.8
KUR_INDX
148 0 1.5 1.0 14 0 0 0.0
TOOLS
152 0 0.1 1.0 8 0 0 0.0
AUDITS
11 0 2.7 1.0 99 0 0 0.0
KUR_DATA
45 0 0.0 1.0 12 0 0 0.0
KOBEW_DATA
25 0 6.4 1.0 8 0 0 0.0
KOBEW_INDX
8 0 0.0 1.0 8 0 0 0.0
ORDER_DATA
8 0 0.0 1.0 8 0 0 0.0
ORDER_INDX
8 0 0.0 1.0 8 0 0 0.0
QUEST
8 0 0.0 1.0 8 0 0 0.0
REP_DATA
8 0 0.0 1.0 8 0 0 0.0
SAL_DATA
8 0 0.0 1.0 8 0 0 0.0
SAL_INDX
8 0 1.3 1.0 8 0 0 0.0
USERS
8 0 0.0 1.0 8 0 0 0.0
XDB
8 0 0.0 1.0 8 0 0 0.0

UNDO_RETENTION actually determines how long to keep already committed data in the UNDO tablespace, so decreasing the retention will only keep less undo in the undo tablespace and require less space for the UNDO tablespace, it should not increase the number of UNDO writes, the number would be the same for a transaction, no matter what the undo_retention.

Similar Messages

  • Proving UNDO is protected by REDO using x$bh table.

    Hi All,
    I was trying to prove undo is protected by redo using x$bh table, but how to distinguish undo and redo blocks and also normal block in x$bh??
    Is there any concept like even UNDO and REDO blocks get dirtied when normal data block get dirtied.
    Out of the topic: Do some entries or data gets written to disk from PGA or UGA of particular session?As open curosor resides in PGA of his session, for sharing or re-using this cursor Oracle has to store this cursor information some where in Dictionary.
    -Yasser

    Hemant is right and I didn't give a completely right reply when I mentioned to check the blocks with the block classes. Block classes are applicable only to the undo these kind of block. There is no block class of Redo, makes sense for the reason which Hemant has just mentioned.
    redo log buffer is the only area or one of areas of instance memory which is not managed as blocks?Yes, redo is maintained as a stream of changed vectors and is written in the terms of the Redo Log Block which is o/s depedant. We can check the current Redo Log Block from X$KCCLE.LEBSZ column. Oracle writes the redo records ordered with the SCNs.
    One good reference , which again Hemant gave me long time back for Redo is this one,
    http://orainternals.files.wordpress.com/2008/06/redo_internals_ppt.pdf
    Regards
    Aman....

  • GLOBAL TEMPORAY TABLE  with the ability for a user to see others's entries

    I have a list of record available for many user at the same time for them to work on.
    Every one has the tendency to chosse the first record...
    I want each of the users to be able to chose a different record once the preceding record has been selected by another user.
    It would have been somthing like a GLOBAL TEMPORAY TABLE but with the ability for every user to see others records
    so I would do and anti-join...
    Does anyon have an idea on how I could implement such a behavior?

    You will not be able to use a global temporary table for such a requirement.
    It sounds like you will need a permanent table, which you will need to lock certain records (prohibiting users from taking those already in use), you can look at using the DBMS_LOCK package for this.
    That's just speculation based on what you've typed, if you provide more details you make get more specific help.

  • Create Global Temporay Table

    I am converting some Informix ESQL/C programs to Oracle Pro*C.
    However the "Create Global Temporay Table" statemnt does not seem to be recognized by Pro*C precompiler.
    Does anyone know why?
    Thank You

    Note that DDL commands such as create table cannot be directly used in PLSQL you may be able to use execute immediate, the workbench uses a wrapper function for DBMS_SQL
    so showing the error:
    SQL> begin
    2 CREATE GLOBAL TEMPORARY table fred ( myint integer) ON COMMIT PRESERVE ROW
    3 end;
    4 /
    CREATE GLOBAL TEMPORARY table fred ( myint integer) ON COMMIT PRESERVE ROWS;
    ERROR at line 2:
    ORA-06550: line 2, column 1:
    PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:
    begin declare exit for goto if loop mod null pragma raise
    return select update while <an identifier>
    <a double-quoted delimited-identifier> <a bind variable> <<
    close current delete fetch lock insert open rollback
    savepoint set sql execute commit forall
    <a single-quoted SQL string>
    showing our procedure wrapper:
    CREATE OR REPLACE PROCEDURE DDL_Manager(in_statement varchar)
    AUTHID CURRENT_USER AS
    PRAGMA AUTONOMOUS_TRANSACTION;
    v_CursorID INTEGER;
    v_RowsReturned INTEGER;
    BEGIN
    v_CursorID := DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE(v_CursorID, in_Statement, DBMS_SQL.NATIVE);
    v_RowsReturned := DBMS_SQL.EXECUTE(v_CursorID);
    DBMS_SQL.CLOSE_CURSOR(v_CursorID);
    EXCEPTION
    WHEN OTHERS THEN
    DBMS_SQL.CLOSE_CURSOR(v_CursorID);
    RAISE;
    END DDL_Manager;
    showing wrapper being used:
    begin
    DDL_Manager('CREATE GLOBAL TEMPORARY table fred ( myint integer) ON COMMIT PRESERVE ROWS');
    end
    In the oracle migration workbench the create table statements are done before any stored procedures are executed, so that stored procedures will not be invalid due to tables not being created yet. If all tables were referenced through dynamic sql the tables could be created on the fly.
    Turloch
    Oracle Migration Workbench Team

  • How to use customer extension table for schedule line for shopping cart ?

    Dear Experts,
    One of our client wants to have schedule lines in shopping cart item. I am thinking of using customer extension table at item level for shopping cart. Could you please help me on  how I should proceed with the appending the structures so that the end user can fill the shopping cart schedule line details?
    Which fields should I consider in such cases?
    Thanks and regards,
    Ranjan

    Hi.
    I guess you use SRM 7.0. Please go to IMG.
    SRM -> SRM Server -> Cross-Application Basic Settings -> Extensions and Field Control (Personalization) -> Create Table Extensions and Supply with Data
    Regards,
    Masa

  • How do I use the option "table view" in NetWeaver 2004s Query Designer?

    Dear,
    We have used NetWeaver 2004s Query Designer, We found a strange problem. The option to select table view is not available. It is greyed out. How can you select table view (tabular) in 2004s Query Designer?
    I have read the help doc about tabular view of NetWeaver 2004s Query Designer, I check my query, it has only one structure . but the option is still greyed out. I rebuild the query with 3.x Query Designer in tabular view, and reopen it with 2004s Query Designer, So there is a tab named "tabular view" display, but the option to select table view is still not available, and when users view the query result in web , it is still not in tabular view display. So I am confused, is there a bug with NetWeaver 2004s Query Designer?
    Please help me. Thanks!

    Note 1002271. Seach this note to use key word "table view"

  • How to create olap cube using Named Query Table in Data source View

     I Create on OLAP Cube using Existing Tables Its Working Fine But When i Use Named Query Table with RelationShip To other Named query Table  It Not Working .So give me some deep Clarification On Olap Cube for Better Understanding
    Thanks

    Hi Pawan,
    What do you mean "It Not Working"? As Kamath said, please post the detail error message, so that we can make further analysis.
    In the Data Source View of a CUBE, we can define a named query. In a named query, you can specify an SQL expression to select rows and columns returned from one or more tables in one or more data sources. A named query is like any other table in a data source
    view (DSV) with rows and relationships, except that the named query is based on an expression.
    Reference:Define Named Queries in a Data Source View (Analysis Services)
    Regards,
    Charlie Liao
    TechNet Community Support

  • How to use single buffered table with FOR ALL ENTRIES KEYWORD

    Hai,
    I'm Using TJ02T Database table, It is single buffered table but at the same time I want to use FOR ALL ENTRIES KEYWORD , Please Help me.
    Regards,
    S.Janani

    Hi,
    FOR ALL ENTRIES will not depend on the buffering nature of the table. The single buffered table will only only buffer one record into memory. You can still use the statement to query the values, but it may have performance problems if the data volume is high since the records are not completely buffered into memory, the time will spent in getting data from DB.
    Thanks..
    Preetham S

  • How to use PL/SQL table

    Hi all,
    can you guys suggest me how can I use pl/sql tables for the below query to incresing the performance.
    DECLARE
        TYPE cur_typ IS REF CURSOR;
        c           cur_typ;
        total_val varchar2(1000);
        sql_stmt varchar2(1000);
        freeform_name NUMBER;
        freeform_id NUMBER;
        imgname_rec EMC_FTW_PREVA.EMC_Image_C_Mungo%rowtype;
        imgval_rec  EMC_FTW_PREVA.EMC_Content_C_Mungo%rowtype;
        CURSOR imgname_cur IS
            select * from EMC_FTW_PREVA.EMC_Image_C_Mungo
            where cs_ownerid in (
                        select id from EMC_FTW_PREVA.EMC_Image_C
                        where updateddate > '01-JUN-13'
                        and path is not null
                        and createddate != updateddate)
            and cs_attrid = (select id from EMC_FTW_PREVA.EMC_ATTRIBUTE where name = 'Image_Upload');
    BEGIN
        OPEN imgname_cur;
        LOOP
          FETCH imgname_cur INTO imgname_rec;
          EXIT WHEN imgname_cur%NOTFOUND;
          total_val := 'EMC_Image_C_' || imgname_rec.cs_ownerid;
          sql_stmt := 'SELECT instr(textvalue,''' || total_val || '''), cs_ownerid FROM EMC_FTW_PREVA.EMC_Content_C_Mungo a Where cs_attrid = (select id from EMC_FTW_PREVA.EMC_ATTRIBUTE where name = ' || '''' || 'Body_freeform' || '''' || ')';
            OPEN c FOR sql_stmt;
            LOOP
              FETCH c INTO freeform_id,freeform_name;
              EXIT WHEN c%NOTFOUND;
                                      IF freeform_id > 0 THEN
                dbms_output.put_line (imgname_rec.cs_ownerid || ',' || total_val || ',' || freeform_id || ',' || freeform_name);
                                      END IF;
            END LOOP;
            CLOSE c;     
       END LOOP;
       CLOSE imgname_cur;
    END;
    Thanks in Advance.

    can you guys suggest me how can I use pl/sql tables for the below query to incresing the performance.
    There would be absolutely no point at all in improving the performance of code that has NO benefit.
    The only result of executing that code is to possibly produce some lines of output AFTER the entire procedure if finished:
    dbms_output.put_line (imgname_rec.cs_ownerid || ',' || total_val || ',' || freeform_id || ',' || freeform_name);
    So first you need to explain:
    1. what PROBLEM you are trying to solve?
    2. why you are trying to use PL/SQL code to solve it.
    3. why are you using 'slow by slow' (row by row) processing and then, for each row, opening a new cursor to query more data?
    You should be using a single query rather than two nested cursors. But that begs the question of what the code is even supposed to be doing since the only output is going to a memory buffer.

  • How can i  print reports to different printer by use Trigger on table after insert

    Hello,
    Please can any one tell me how can i print (any message) to different printer (network & local printer) by use Trigger on table after insert.
    regards,
    Linda.

    What you want to do cannot be done with PL/SQL, which does have any print utilities. However you could write something using Java Stored Procedures.
    Of course the "different printer" bit will have to be data driven as triggers are not interactive.
    rgds, APC

  • How to load the data using a plsql table in ODI.

    Hi All ,
    Can anyone help me on this ?
    We have a PLSQL procedure which returns a plsql table as out parameter.
    We are supposed to load the data in to a file using this plsql table (Table type) in ODI.
    Can this be done using ODI?
    Regards,
    Karthik+

    Hi,
    We have one process with a ref cursor (Oracle) as a source and remote Oracle DB as a target. I ended up writing my own KM that populates a global temporary table from the cursor first and then transfers the data to target. If temporary table is an option for you, the rest is pretty easy.
    Regards.

  • Error while loading metadata in HPCM application using Import Staging table

    Hello All,
    I was loading metadata in HPCM using Import Staging table. I successfully uploaded Driver Definition metadata.
    However while loading "Driver Exception" metadata, I am not able to load it successfully. I have checked the HPCM logs but found nothing. I then checked the "Import Exception" table and found the following error message.
    ERROR_POPULATED_DIM_COLUMNS_DO_NOT_MATCH_STAGE_DEFINITIONCan anyone please help me with this.
    Regards,
    -SM

    It is a bug and there is a patch available.
    Oracle Support - "Bug 12905298 : INTERFACE FAILS TO INTEGRATE ON STEP "LOAD DATA INTO PLANNING"
    Patch = 12905298: INTERFACE FAILS TO INTEGRATE ON STEP "LOAD DATA INTO PLANNING"
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Error occured while provisioning using Database Application Table connector

    Hi,
    I am trying to provision using Database Application Table connector and OIM 10g. Provisioning is successful but the child data is not sitting in the database. Getting the below error
    Response: GCPROV.ProvTransportProvider.DBProvisioningTransport.The column key_id does not exist in the target
    Response Description: Unknown response received
    Notes:
    Assigned to Group : SYSTEM ADMINISTRATORS
    Error Details
    Setting task status... "GCPROV.ProvTransportProvider.DBProvisioningTransport.The column key_id does not exist in the target" does not correspond to a known Response Code. Using "UNKNOWN".
    Please help
    Thanks in advance
    Sahana

    Make sure that your DataSource is in running state when you create the connection pool in DBAdapter. You may restart the server or recreate the connection pool in DBAdapter.
    Regards,
    Anuj

  • How to find out that particular structure is used in which tables

    Hello Friends,
    Most of the times through techinal information we come to know the table name for a particular field.And in se16 when i give that table name than system says its structure and not the table.So in se11 when i give that structure name in database table field, its shows all the field in that structure, but not the data stored in that field.
    So my question is how to find out that particular structure is used in which tables,so that i can view data stored in that structure?
    Thanking you guys in advance.
    Regards,
    Jitendra

    Dear,
    When you click on the technical information it will give the structure name and field, double click on the structure and it will take you the display structure screen, there you will have the where-used List icon (Ctrl + Shift + F3) at the top , click on that and it will show the options, select Database tables and execute, it will give the tables related to the structure, you can explore the list of tables and find where your required field is stored in them.
    Thanks & Regards,
    Vijaya Bhaskar A

  • How to populate field catalogue fields in ALV using  dynamic internal table

    Hi All,
    Please let me know how to populate field catalogue fields in ALV using  dynamic internal table.
    I have created <dyn_table> using code below.
    CALL METHOD cl_alv_table_create=>create_dynamic_table
                     EXPORTING
                       it_fieldcatalog = g_t_ifc
                        it_fieldcatalog = g_t_fieldcat
                     IMPORTING
                        ep_table        = dy_table.
      ASSIGN dy_table->* TO <dyn_table>.
    Create dynamic work area and assign to FS
      CREATE DATA dy_line LIKE LINE OF <dyn_table>.
      ASSIGN dy_line->* TO <dyn_wa>.
    Now this  <dyn_table>  has fields like idoc no.,creation date ,
    segment field 1, segment field 2 etc..Now idoc no.,creation date  are static fields from table EDIDC. And segment field 1, segment field 2 etc are dynamic fields from table EDSAPPL.
    In my  ALV report I am getting the final layout properly but I am unable to move values to corresponding fields in the final layout shown.Please let me know how to populate these fields from different tables.
    I tried this way but its not working.
    SORT g_t_edid4 BY docnum.
      LOOP AT g_t_edidc INTO g_r_edidc.
        READ TABLE g_t_edid4 into g_r_edid4
                         WITH KEY docnum = g_r_edidc-docnum
                                        BINARY SEARCH.
        IF sy-subrc = 0.
          <dyn_wa> =  g_r_edid4-sdata.
         MOVE-CORRESPONDING g_r_edid4 to <dyn_wa>.
       CLEAR g_r_edid4.
        ENDIF.
    MOVE-CORRESPONDING g_r_edidc to <dyn_wa>.
    APPEND <dyn_wa> TO <dyn_table>.

    You have to assign each field to field symbol and then assign the value to that field symbol and asssign that field symbol to workarea field symbol.
    LOOP AT g_t_edidc INTO g_r_edidc.
    READ TABLE g_t_edid4 into g_r_edid4
    WITH KEY docnum = g_r_edidc-docnum
    BINARY SEARCH.
    IF sy-subrc = 0.
    ASSIGN COMPONENT 'SDATA' OF STRUCTURE <DYN_WA> TO <DYN_FLD>.
    <DYN_FLD> = g_r_edid4-sdata.
    " <dyn_wa> = g_r_edid4-sdata.
    " Assign each fields like this.
    " MOVE-CORRESPONDING g_r_edid4 to <dyn_wa>.
    CLEAR g_r_edid4.
    ENDIF.
    " MOVE-CORRESPONDING g_r_edidc to <dyn_wa>.
    APPEND <dyn_wa> TO <dyn_table>.
    Regards,
    Naimesh Patel

Maybe you are looking for