Need Performance Tunning Document

Dear Experts,
We also want experts in Performance Tuning. Please Suggest the Helpful Document for Oracle 9i and 10G Performance Tuning.
From where I can get the best Documents and Books for tha same.
Many Thanks

Apart from the Oracle manuals, which have a Performance Tuning guide and are free to download, it would also be worthwhile reading a good book about the concepts behind Performance Tuning in general and how to do it on Oracle specifically. Jonathan Lewis recently published his list of [the top 10 books about Oracle|http://jonathanlewis.wordpress.com/2009/01/14/books/], all of which are Oracle Performance related one way or another.
Which book is best will depend on whether you want to learn about Oracle Performance Tuning in general, or whether you have specific things you want to tune and improve. I particularly like the Cary Millsap and Jeff Holt book - Optimizing Oracle Performance - because it takes an evidence based approach. Measure what is happening on the system, and use that data to determine where the bottlenecks are, and then tune the bottlenecks only, ignoring anything else.
John Brady
[Database Performance Blog|http://databaseperformance.blogspot.com/]

Similar Messages

  • Need performance tunning

    select partner  from but000 into (ITAB-PARTNER1)
      WHERE PARTNER IN PARTNER AND TYPE = '2'.
        SELECT SINGLE PARTNER_GUID FROM BUT000 INTO CORRESPONDING FIELDS OF ITAB
        WHERE PARTNER = ITAB-PARTNER1.
        IF SY-SUBRC = 0.
          SELECT single CLASSIFIC FROM CRMM_BUT_FRG0041 INTO CORRESPONDING FIELDS OF ITAB
               WHERE PARTNER_GUID = ITAB-PARTNER_GUID.
        endif.
        IF SY-SUBRC = 0.
          SELECT SINGLE  SALES_ORG  FROM CRMM_BUT_LNK0031
          INTO CORRESPONDING FIELDS OF ITAB
          WHERE PARTNER_GUID = ITAB-PARTNER_GUID .
        ENDIF.
        IF SY-SUBRC = 0.
          IF GEOGRAPY EQ ' '.
            SELECT SINGLE SHORT STEXT FROM HRP1000 INTO CORRESPONDING FIELDS OF ITAB
            WHERE  OTJID = ITAB-SALES_ORG AND LANGU = 'E'  .
          ELSE.
            SELECT SINGLE SHORT STEXT FROM HRP1000 INTO CORRESPONDING FIELDS OF ITAB
           WHERE  OTJID = ITAB-SALES_ORG AND LANGU = 'E' AND STEXT = GEOGRAPY  .
          ENDIF.
        ENDIF.
          IF SY-SUBRC = 0.
        SELECT  ADDRNUMBER FROM BUT020 INTO CORRESPONDING FIELDS OF ITAB
        WHERE PARTNER = ITAB-PARTNER1.
        ENDSELECT.
    *ENDIF.
          IF SY-SUBRC = 0.
        SELECT  NAME1 CITY1  TEL_NUMBER FROM ADRC
        INTO (ITAB-NAME1, ITAB-CITY, ITAB-TEL_NUMBER1)
        WHERE ADDRNUMBER = ITAB-ADDRNUMBER. "and country IN GEOGRAPY.
        ENDSELECT.
    *ENDIF.
        SELECT  SMTP_ADDR FROM ADR6 INTO CORRESPONDING FIELDS OF ITAB
           WHERE ADDRNUMBER = ITAB-ADDRNUMBER.
        ENDSELECT.
        APPEND ITAB.
        clear itab.
      ENDSELECT.
    ********for responsible employee
      SELECT PARTNER1 PARTNER2 RELTYP
                  FROM BUT050
               INTO TABLE I_BUT050 FOR
                 ALL ENTRIES IN ITAB WHERE PARTNER1 = ITAB-PARTNER1 and reltyp = 'BUR011'.
      IF NOT I_BUT050[] IS INITIAL.
        loop at i_but050.
          SELECT PARTNER PARTNER_GUID NAME_FIRST NAME_LAST
                        FROM BUT000
                    INTO (I_BUT000-partner,I_BUT000-PARTNER_GUID2, I_BUT000-FNAME, I_BUT000-LNAME)
                     WHERE  PARTNER = I_BUT050-PARTNER2 .
            select partner_guid from but000 into (i_but000-partner_guid1)
            where partner = I_BUT050-PARTNER1.
            endselect.
            SELECT  SALES_ORG CHANNEL DIVISION PARTNER_FCT FROM CRMM_BUT_FRG0081
            INTO (I_BUT000-RSALES_ORG, I_BUT000-CHANNEL,I_BUT000-DIVISION,I_BUT000-PARTNER_FCT)
            where rel_partner_guid = i_but000-partner_guid2 and partner_guid = I_BUT000-partner_guid1.
                     where division <> ''.
            ENDSELECT.
            SELECT SINGLE DESCRIPTION FROM CRMC_PARTNER_FT INTO CORRESPONDING FIELDS OF I_BUT000
            WHERE PARTNER_FCT = I_BUT000-PARTNER_FCT AND SPRAS = 'E'.
            SELECT SINGLE STEXT FROM HRP1000 INTO (I_BUT000-STEXT_R)
         WHERE OTJID = I_BUT000-RSALES_ORG AND LANGU = 'E'.
            SELECT SINGLE DESCRIPTION FROM CRMC_DIVISION_T INTO (I_BUT000-DESC)
            WHERE DIVISION = I_BUT000-DIVISION AND LANGU = 'E'.
            SELECT SINGLE DESCRIPTION FROM CRMC_DISTCHAN_T INTO (I_BUT000-CHANNEL_DESC)
            WHERE DISTCHAN = I_BUT000-CHANNEL AND LANGU = 'E'.
            i_but000-partner1 = i_but050-partner1.
            append i_but000.
            clear i_but000.
          endselect.
        endloop.
      ENDIF.
    *************for contract person **************
      SELECT PARTNER1 PARTNER2 RELTYP
         FROM BUT050
      INTO TABLE I_BUT050 FOR
        ALL ENTRIES IN ITAB WHERE PARTNER1 = ITAB-PARTNER1 and reltyp = 'BUR001'.
      IF NOT I_BUT050[] IS INITIAL.
        loop at i_but050.
          SELECT PARTNER  NAME_FIRST NAME_LAST
                        FROM BUT000
                    INTO (IC_BUT000-partner2, IC_BUT000-NAME_FIRST, IC_BUT000-NAME_LAST)
                     WHERE  PARTNER = I_BUT050-PARTNER2 .
            iC_but000-partner1 = i_but050-partner1.
            append iC_but000.
            clear iC_but000.
          endselect.
        endloop.
      ENDIF.
      SELECT PARTNER1 PARTNER2 PAFKT PAAUTH ABTNR
    FROM BUT051
    INTO  TABLE I_BUT051
    FOR ALL ENTRIES IN IC_BUT000 WHERE PARTNER2 = IC_BUT000-PARTNER2.
      SELECT PAFKT BEZ30
      FROM TB913
      INTO  TABLE I_TB913
      FOR ALL ENTRIES IN I_BUT051 WHERE PAFKT = I_BUT051-PAFKT AND SPRAS = 'EN'.
      SELECT PAAUTH BEZ20
      FROM TB915
      INTO  TABLE I_TB915
      FOR ALL ENTRIES IN I_BUT051 WHERE PAAUTH = I_BUT051-PAAUTH AND SPRAS = 'EN'.
      SELECT ABTNR BEZ20
      FROM TB911
      INTO  TABLE I_TB911
      FOR ALL ENTRIES IN I_BUT051 WHERE ABTNR = I_BUT051-ABTNR AND SPRAS = 'EN'.
      SELECT PARTNER ADDRNUMBER
      FROM BUT020
      INTO  TABLE I_BUT020
       FOR ALL ENTRIES IN IC_BUT000   WHERE PARTNER = IC_BUT000-PARTNER2.
      SELECT ADDRNUMBER TEL_NUMBER FROM ADCP
      INTO TABLE I_ADCP
      FOR ALL ENTRIES IN I_BUT020 WHERE ADDRNUMBER = I_BUT020-ADDRNUMBER .
      SELECT ADDRNUMBER SMTP_ADDR FROM ADR6
      INTO TABLE I_ADR6
      FOR ALL ENTRIES IN I_BUT020 WHERE ADDRNUMBER = I_BUT020-ADDRNUMBER .
      LOOP AT IC_BUT000.
        READ TABLE I_BUT051 WITH KEY PARTNER1 = IC_BUT000-PARTNER1  PARTNER2 = IC_BUT000-PARTNER2.
        IF SY-SUBRC = 0.
          READ TABLE I_TB913 WITH KEY PAFKT = I_BUT051-PAFKT  .
          IF SY-SUBRC = 0.
            MOVE I_TB913-BEZ30 TO IC_BUT000-BEZ30.
          ENDIF.
          READ TABLE I_TB915 WITH KEY PAAUTH = I_BUT051-PAAUTH  .
          IF SY-SUBRC = 0.
            MOVE I_TB915-BEZ20 TO IC_BUT000-BEZ20.
          ENDIF.
          READ TABLE I_TB911 WITH KEY ABTNR = I_BUT051-ABTNR  .
          IF SY-SUBRC = 0.
            MOVE I_TB911-BEZ2 TO IC_BUT000-BEZ2.
          ENDIF.
        ENDIF.
        READ TABLE I_BUT020 WITH KEY PARTNER = IC_BUT000-PARTNER2.
        IF SY-SUBRC = 0.
          READ TABLE I_ADCP WITH KEY ADDRNUMBER = I_BUT020-ADDRNUMBER.
          IF SY-SUBRC = 0.
            MOVE I_ADCP-TEL_NUMBER TO IC_BUT000-TEL_NUMBER.
          ENDIF.
          READ TABLE I_ADR6 WITH KEY ADDRNUMBER = I_BUT020-ADDRNUMBER.
          IF SY-SUBRC = 0.
            MOVE I_ADR6-SMTP_ADDR TO IC_BUT000-SMTP_ADDR2.
          ENDIF.
        ENDIF.
        MODIFY IC_BUT000.
      ENDLOOP.

    Hi
    DON"T USE SELECT and ENDSELECT staments it acts like an LOOP
    see these points
    Ways of Performance Tuning
    1.     Selection Criteria
    2.     Select Statements
    •     Select Queries
    •     SQL Interface
    •     Aggregate Functions
    •     For all Entries
    Select Over more than one internal table
    Selection Criteria
    1.     Restrict the data to the selection criteria itself, rather than filtering it out using the ABAP code using CHECK statement. 
    2.     Select with selection list.
    SELECT * FROM SBOOK INTO SBOOK_WA.
      CHECK: SBOOK_WA-CARRID = 'LH' AND
             SBOOK_WA-CONNID = '0400'.
    ENDSELECT.
    The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list
    SELECT  CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
      WHERE SBOOK_WA-CARRID = 'LH' AND
                  SBOOK_WA-CONNID = '0400'.
    Select Statements   Select Queries
    1.     Avoid nested selects
    SELECT * FROM EKKO INTO EKKO_WA.
      SELECT * FROM EKAN INTO EKAN_WA
          WHERE EBELN = EKKO_WA-EBELN.
      ENDSELECT.
    ENDSELECT.
    The above code can be much more optimized by the code written below.
    SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
        FROM EKKO AS P INNER JOIN EKAN AS F
          ON PEBELN = FEBELN.
    Note: A simple SELECT loop is a single database access whose result is passed to the ABAP program line by line. Nested SELECT loops mean that the number of accesses in the inner loop is multiplied by the number of accesses in the outer loop. One should therefore use nested SELECT loops only if the selection in the outer loop contains very few lines or the outer loop is a SELECT SINGLE statement.
    2.     Select all the records in a single shot using into table clause of select statement rather than to use Append statements.
    SELECT * FROM SBOOK INTO SBOOK_WA.
      CHECK: SBOOK_WA-CARRID = 'LH' AND
             SBOOK_WA-CONNID = '0400'.
    ENDSELECT.
    The above code can be much more optimized by the code written below which avoids CHECK, selects with selection list and puts the data in one shot using into table
    SELECT  CARRID CONNID FLDATE BOOKID FROM SBOOK INTO TABLE T_SBOOK
      WHERE SBOOK_WA-CARRID = 'LH' AND
                  SBOOK_WA-CONNID = '0400'.
    3.     When a base table has multiple indices, the where clause should be in the order of the index, either a primary or a secondary index.
    To choose an index, the optimizer checks the field names specified in the where clause and then uses an index that has the same order of the fields. In certain scenarios, it is advisable to check whether a new index can speed up the performance of a program. This will come handy in programs that access data from the finance tables.
    4.     For testing existence, use Select.. Up to 1 rows statement instead of a Select-Endselect-loop with an Exit. 
    SELECT * FROM SBOOK INTO SBOOK_WA
      UP TO 1 ROWS
      WHERE CARRID = 'LH'.
    ENDSELECT.
    The above code is more optimized as compared to the code mentioned below for testing existence of a record.
    SELECT * FROM SBOOK INTO SBOOK_WA
        WHERE CARRID = 'LH'.
      EXIT.
    ENDSELECT.
    5.     Use Select Single if all primary key fields are supplied in the Where condition .
    If all primary key fields are supplied in the Where conditions you can even use Select Single.
    Select Single requires one communication with the database system, whereas Select-Endselect needs two.
    Select Statements SQL Interface
    1.     Use column updates instead of single-row updates
    to update your database tables.
    SELECT * FROM SFLIGHT INTO SFLIGHT_WA.
      SFLIGHT_WA-SEATSOCC =
        SFLIGHT_WA-SEATSOCC - 1.
      UPDATE SFLIGHT FROM SFLIGHT_WA.
    ENDSELECT.
    The above mentioned code can be more optimized by using the following code
    UPDATE SFLIGHT
           SET SEATSOCC = SEATSOCC - 1.
    2.     For all frequently used Select statements, try to use an index.
    SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
      WHERE CARRID = 'LH'
        AND CONNID = '0400'.
    ENDSELECT.
    The above mentioned code can be more optimized by using the following code
    SELECT * FROM SBOOK CLIENT SPECIFIED INTO SBOOK_WA
      WHERE MANDT IN ( SELECT MANDT FROM T000 )
        AND CARRID = 'LH'
        AND CONNID = '0400'.
    ENDSELECT.
    3.     Using buffered tables improves the performance considerably.
    Bypassing the buffer increases the network considerably
    SELECT SINGLE * FROM T100 INTO T100_WA
      BYPASSING BUFFER
      WHERE     SPRSL = 'D'
            AND ARBGB = '00'
            AND MSGNR = '999'.
    The above mentioned code can be more optimized by using the following code
    SELECT SINGLE * FROM T100  INTO T100_WA
      WHERE     SPRSL = 'D'
            AND ARBGB = '00'
            AND MSGNR = '999'.
    Select Statements  Aggregate Functions
    •     If you want to find the maximum, minimum, sum and average value or the count of a database column, use a select list with aggregate functions instead of computing the aggregates yourself.
    Some of the Aggregate functions allowed in SAP are  MAX, MIN, AVG, SUM, COUNT, COUNT( * )
    Consider the following extract.
                Maxno = 0.
                Select * from zflight where airln = ‘LF’ and cntry = ‘IN’.
                 Check zflight-fligh > maxno.
                 Maxno = zflight-fligh.
                Endselect.
    The  above mentioned code can be much more optimized by using the following code.
    Select max( fligh ) from zflight into maxno where airln = ‘LF’ and cntry = ‘IN’.
    Select Statements  For All Entries
    •     The for all entries creates a where clause, where all the entries in the driver table are combined with OR. If the number of entries in the driver table is larger than rsdb/max_blocking_factor, several similar SQL statements are executed to limit the length of the WHERE clause.
         The plus
    •     Large amount of data
    •     Mixing processing and reading of data
    •     Fast internal reprocessing of data
    •     Fast
         The Minus
    •     Difficult to program/understand
    •     Memory could be critical (use FREE or PACKAGE size)
    Points to be must considered FOR ALL ENTRIES
    •     Check that data is present in the driver table
    •     Sorting the driver table
    •     Removing duplicates from the driver table
    Consider the following piece of extract
              Loop at int_cntry.
      Select single * from zfligh into int_fligh
      where cntry = int_cntry-cntry.
      Append int_fligh.
                          Endloop.
    The above mentioned can be more optimized by using the following code.
    Sort int_cntry by cntry.
    Delete adjacent duplicates from int_cntry.
    If NOT int_cntry[] is INITIAL.
                Select * from zfligh appending table int_fligh
                For all entries in int_cntry
                Where cntry = int_cntry-cntry.
    Endif.
    Select Statements Select Over more than one Internal table
    1.     Its better to use a views instead of nested Select statements.
    SELECT * FROM DD01L INTO DD01L_WA
      WHERE DOMNAME LIKE 'CHAR%'
            AND AS4LOCAL = 'A'.
      SELECT SINGLE * FROM DD01T INTO DD01T_WA
        WHERE   DOMNAME    = DD01L_WA-DOMNAME
            AND AS4LOCAL   = 'A'
            AND AS4VERS    = DD01L_WA-AS4VERS
            AND DDLANGUAGE = SY-LANGU.
    ENDSELECT.
    The above code can be more optimized by extracting all the data from view DD01V_WA
    SELECT * FROM DD01V INTO  DD01V_WA
      WHERE DOMNAME LIKE 'CHAR%'
            AND DDLANGUAGE = SY-LANGU.
    ENDSELECT
    2.     To read data from several logically connected tables use a join instead of nested Select statements. Joins are preferred only if all the primary key are available in WHERE clause for the tables that are joined. If the primary keys are not provided in join the Joining of tables itself takes time.
    SELECT * FROM EKKO INTO EKKO_WA.
      SELECT * FROM EKAN INTO EKAN_WA
          WHERE EBELN = EKKO_WA-EBELN.
      ENDSELECT.
    ENDSELECT.
    The above code can be much more optimized by the code written below.
    SELECT PF1 PF2 FF3 FF4 INTO TABLE ITAB
        FROM EKKO AS P INNER JOIN EKAN AS F
          ON PEBELN = FEBELN.
    3.     Instead of using nested Select loops it is often better to use subqueries.
    SELECT * FROM SPFLI
      INTO TABLE T_SPFLI
      WHERE CITYFROM = 'FRANKFURT'
        AND CITYTO = 'NEW YORK'.
    SELECT * FROM SFLIGHT AS F
        INTO SFLIGHT_WA
        FOR ALL ENTRIES IN T_SPFLI
        WHERE SEATSOCC < F~SEATSMAX
          AND CARRID = T_SPFLI-CARRID
          AND CONNID = T_SPFLI-CONNID
          AND FLDATE BETWEEN '19990101' AND '19990331'.
    ENDSELECT.
    The above mentioned code can be even more optimized by using subqueries instead of for all entries.
    SELECT * FROM SFLIGHT AS F INTO SFLIGHT_WA
        WHERE SEATSOCC < F~SEATSMAX
          AND EXISTS ( SELECT * FROM SPFLI
                         WHERE CARRID = F~CARRID
                           AND CONNID = F~CONNID
                           AND CITYFROM = 'FRANKFURT'
                           AND CITYTO = 'NEW YORK' )
          AND FLDATE BETWEEN '19990101' AND '19990331'.
    ENDSELECT.
    1.     Table operations should be done using explicit work areas rather than via header lines.
    2.     Always try to use binary search instead of linear search. But don’t forget to sort your internal table before that.
    3.     A dynamic key access is slower than a static one, since the key specification must be evaluated at runtime.
    4.     A binary search using secondary index takes considerably less time.
    5.     LOOP ... WHERE is faster than LOOP/CHECK because LOOP ... WHERE evaluates the specified condition internally.
    6.     Modifying selected components using “ MODIFY itab …TRANSPORTING f1 f2.. “ accelerates the task of updating  a line of an internal table.
    Point # 2
    READ TABLE ITAB INTO WA WITH KEY K = 'X‘ BINARY SEARCH.
    IS MUCH FASTER THAN USING
    READ TABLE ITAB INTO WA WITH KEY K = 'X'.
    If TAB has n entries, linear search runs in O( n ) time, whereas binary search takes only O( log2( n ) ).
    Point # 3
    READ TABLE ITAB INTO WA WITH KEY K = 'X'. IS FASTER THAN USING
    READ TABLE ITAB INTO WA WITH KEY (NAME) = 'X'.
    Point # 5
    LOOP AT ITAB INTO WA WHERE K = 'X'.
    ENDLOOP.
    The above code is much faster than using
    LOOP AT ITAB INTO WA.
      CHECK WA-K = 'X'.
    ENDLOOP.
    Point # 6
    WA-DATE = SY-DATUM.
    MODIFY ITAB FROM WA INDEX 1 TRANSPORTING DATE.
    The above code is more optimized as compared to
    WA-DATE = SY-DATUM.
    MODIFY ITAB FROM WA INDEX 1.
    7.     Accessing the table entries directly in a "LOOP ... ASSIGNING ..." accelerates the task of updating a set of lines of an internal table considerably
    8.    If collect semantics is required, it is always better to use to COLLECT rather than READ BINARY and then ADD.
    9.    "APPEND LINES OF itab1 TO itab2" accelerates the task of appending a table to another table considerably as compared to “ LOOP-APPEND-ENDLOOP.”
    10.   “DELETE ADJACENT DUPLICATES“ accelerates the task of deleting duplicate entries considerably as compared to “ READ-LOOP-DELETE-ENDLOOP”.
    11.   "DELETE itab FROM ... TO ..." accelerates the task of deleting a sequence of lines considerably as compared to “  DO -DELETE-ENDDO”.
    Point # 7
    Modifying selected components only makes the program faster as compared to Modifying all lines completely.
    e.g,
    LOOP AT ITAB ASSIGNING <WA>.
      I = SY-TABIX MOD 2.
      IF I = 0.
        <WA>-FLAG = 'X'.
      ENDIF.
    ENDLOOP.
    The above code works faster as compared to
    LOOP AT ITAB INTO WA.
      I = SY-TABIX MOD 2.
      IF I = 0.
        WA-FLAG = 'X'.
        MODIFY ITAB FROM WA.
      ENDIF.
    ENDLOOP.
    Point # 8
    LOOP AT ITAB1 INTO WA1.
      READ TABLE ITAB2 INTO WA2 WITH KEY K = WA1-K BINARY SEARCH.
      IF SY-SUBRC = 0.
        ADD: WA1-VAL1 TO WA2-VAL1,
             WA1-VAL2 TO WA2-VAL2.
        MODIFY ITAB2 FROM WA2 INDEX SY-TABIX TRANSPORTING VAL1 VAL2.
      ELSE.
        INSERT WA1 INTO ITAB2 INDEX SY-TABIX.
      ENDIF.
    ENDLOOP.
    The above code uses BINARY SEARCH for collect semantics. READ BINARY runs in O( log2(n) ) time. The above piece of code can be more optimized by
    LOOP AT ITAB1 INTO WA.
      COLLECT WA INTO ITAB2.
    ENDLOOP.
    SORT ITAB2 BY K.
    COLLECT, however, uses a hash algorithm and is therefore independent
    of the number of entries (i.e. O(1)) .
    Point # 9
    APPEND LINES OF ITAB1 TO ITAB2.
    This is more optimized as compared to
    LOOP AT ITAB1 INTO WA.
      APPEND WA TO ITAB2.
    ENDLOOP.
    Point # 10
    DELETE ADJACENT DUPLICATES FROM ITAB COMPARING K.
    This is much more optimized as compared to
    READ TABLE ITAB INDEX 1 INTO PREV_LINE.
    LOOP AT ITAB FROM 2 INTO WA.
      IF WA = PREV_LINE.
        DELETE ITAB.
      ELSE.
        PREV_LINE = WA.
      ENDIF.
    ENDLOOP.
    Point # 11
    DELETE ITAB FROM 450 TO 550.
    This is much more optimized as compared to
    DO 101 TIMES.
      DELETE ITAB INDEX 450.
    ENDDO.
    12.   Copying internal tables by using “ITAB2[ ] = ITAB1[ ]” as compared to “LOOP-APPEND-ENDLOOP”.
    13.   Specify the sort key as restrictively as possible to run the program faster.
    Point # 12
    ITAB2[] = ITAB1[].
    This is much more optimized as compared to
    REFRESH ITAB2.
    LOOP AT ITAB1 INTO WA.
      APPEND WA TO ITAB2.
    ENDLOOP.
    Point # 13
    “SORT ITAB BY K.” makes the program runs faster as compared to “SORT ITAB.”
    Internal Tables         contd…
    Hashed and Sorted tables
    1.     For single read access hashed tables are more optimized as compared to sorted tables.
    2.      For partial sequential access sorted tables are more optimized as compared to hashed tables
    Hashed And Sorted Tables
    Point # 1
    Consider the following example where HTAB is a hashed table and STAB is a sorted table
    DO 250 TIMES.
      N = 4 * SY-INDEX.
      READ TABLE HTAB INTO WA WITH TABLE KEY K = N.
      IF SY-SUBRC = 0.
      ENDIF.
    ENDDO.
    This runs faster for single read access as compared to the following same code for sorted table
    DO 250 TIMES.
      N = 4 * SY-INDEX.
      READ TABLE STAB INTO WA WITH TABLE KEY K = N.
      IF SY-SUBRC = 0.
      ENDIF.
    ENDDO.
    Point # 2
    Similarly for Partial Sequential access the STAB runs faster as compared to HTAB
    LOOP AT STAB INTO WA WHERE K = SUBKEY.
    ENDLOOP.
    This runs faster as compared to
    LOOP AT HTAB INTO WA WHERE K = SUBKEY.
    ENDLOOP.

  • Performance tunning -Help needed

    Hi ,
         I had one ZEE program which has 25 files as input file (input data's . Here the logic of the program is as mention below.
    1.initializition .
    2.get_file_names.(All 25 files name is get in the same perform )
    3.write_job_log.
    4.open_files.(Open 25 files at a time )
    5.read_surr_ctl_file.
    6.load_internal_tabs.( Load 25 files data to ITAB )
    7.create_edi214_tables.
    8.process_ekko_ekpo.(Proces the ITAB data at the time.)
    9.refresh_internal_tables.
    Here they are openning 25 files , then loading all 25 files to ITAB and processing all the loaded datas.
    When this progarm is schedule in background it takes 1.25 hrs to complete the process .
    I need to tune this program which ever possible way.   
    My thought and analysis in this program is -> This performance problem is due to like  openning 25 files , then loading all 25 files to ITAB and processing all the loaded datas which may hit the performance . Kindly let me know you IDEAS and experence on this issue . This program is having 10000 lines of code ..
    Regards,
    Veera

    SE30

  • Need help in performance tunning

    Hi , i have one update statement , where it is keep on running for hours and the volume of the data is 2.2 million
    version:
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE 10.2.0.4.0 Production
    TNS for Linux: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production
    below is the code :
    DECLARE
    Cursor C11
    Is
    Select Account_Num,Outlet_Num,Product_Number,Ln_Of_Biz,Generateguid('DELIVERED_PRODUCT') As Dp_Guid From (
    Select Account_Num,Outlet_Num,Product_Number,Ln_Of_Biz
    From transformation_flat
    Group By Account_Num, Outlet_Num,Ln_Of_Biz,Product_Number
    Having Count(*)> 1);
    Type Actno Is Table Of Varchar2(13) Index By Binary_Integer;
    Type Outlet Is Table Of NUMBER Index By Binary_Integer;
    Type Pno Is Table Of VARCHAR2(255) INDEX BY BINARY_INTEGER;
    Type Tn Is Table Of VARCHAR2(10) Index By Binary_Integer;
    Type Vdpguid Is Table Of VARCHAR2(20) Index By Binary_Integer;
    Type Vcnt Is Table Of Number Index By Binary_Integer;
    Type Lob1 Is Table Of Varchar2(255) Index By Binary_Integer;
    Type Offer_No Is Table Of Varchar2(255) Index By Binary_Integer;
    V_Actno Actno;
    V_Outlet Outlet;
    V_Pno Pno;
    V_Tn Tn;
    V_DPGUID VDPGUID;
    Vguid Varchar2(20);
    V_Cnt Vcnt;
    V_Lob Lob1;
    V_Offer_No Offer_No;
    BEGIN
    Open c11;
    Loop
    Fetch C11 Bulk Collect Into V_Actno,V_Outlet,V_Pno,V_Lob,V_Dpguid;
    Exit When C11%Notfound;
    End Loop;
    close c11;
    Forall I In 1..V_Actno.count
    Update transformation_flat Set Product_Guid=V_Dpguid(I) Where
    Account_Num=V_Actno(I) And
    Outlet_Num=V_Outlet(I) And
    Product_Number=V_Pno(I) And
    ln_of_biz=v_lob(I);
    Commit;
    END;
    for above i do have index on that table on (account_num,outlet_num,product_number,ln_of_biz).
    when i checked the memory contents for this sqlid in v$sql , below are the values :
    Disk_Read:21640650
    Buffer_Gets:22466856
    Concurrency_Wait_Time:16923
    Cluster_Wait_Time:36313694
    user_io_wait_time:3594365433
    I need some inputs in which area i can tune the above code..
    Thanks

    835589 wrote:
    hi i am also face same performance issue pls reply me ASApDon't use the word ASAP, it is rude and a violation of forum terms and conditions.
    http://www.oracle.com/html/terms.html
    >
    4. Use of Community Services
    Community Services are provided as a convenience to users and Oracle is not obligated to provide any technical support for, or participate in, Community Services. While Community Services may include information regarding Oracle products and services, including information from Oracle employees, they are not an official customer support channel for Oracle.
    You may use Community Services subject to the following: (a) Community Services may be used solely for your personal, informational, noncommercial purposes; (b) Content provided on or through Community Services may not be redistributed; and (c) personal data about other users may not be stored or collected except where expressly authorized by Oracle
    >
    These people are for ASAP requests.
    http://www.google.com/search?q=oracle+consultant
    where i need to tune the queery.
    pls i am eagarly waiting for that
    Read and understand the links posted above
    RPuttagunta wrote:
    HOW TO: Post a SQL statement tuning request - template posting
    When your query takes too long ...

  • Need help for performance tunning

    Hello,
    I have 16K records return by query, it takes long time to proceed for 7K it takes 7.5 sec.
    Note: I used all seeded tables only.
    If possible please help me to tune it.
    SELECT       msi.inventory_item_id,msi.segment1,msi.rimary_uom_code , msi.primary_unit_of_measure
    FROM  mtl_system_items_b msi, qp_list_lines qpll,qp_pricing_attributes qppr,
              mtl_category_sets_tl mcs,mtl_category_sets_b mcsb,
              mtl_categories_b mc, mtl_item_categories mcb
    WHERE     msi.enabled_flag = 'Y'
         AND qpll.list_line_id = qppr.list_line_id
         AND qppr.product_attr_value = TO_CHAR (msi.inventory_item_id(+))
         AND qppr.product_uom_code = msi.primary_uom_code
         AND mc.category_id = mcb.category_id
         AND msi.inventory_item_id = mcb.inventory_item_id
         AND msi.organization_id = mcb.organization_id
         AND TRUNC (SYSDATE) BETWEEN NVL (qpll.start_date_active,TRUNC (SYSDATE)) AND NVL (qpll.end_date_active,TRUNC (SYSDATE))
         AND mcs.category_set_name = 'LSS SALES CATEGORY'
         AND mcs.language = 'US'
         AND mcs.category_set_id = mcsb.category_set_id
         AND mcsb.structure_id = mc.structure_id
         AND msi.organization_id = :p_organization_id
         AND qpll.list_header_id = :p_price_list_id
         AND mcb.category_id = :p_category_id;
    Thanks and regards
    Akil.

    Thanks Helios ,
    here is answers
    Databse version
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit  
    PL/SQL Release 11.1.0.7.0
    explain plan
    | Id  | Operation                       | Name                     | Rows  | Bytes | Cost (%CPU)|

    0 | SELECT STATEMENT              
    |                          |   
    1 |   149 |  9439 
    (1)|

    1 |  NESTED LOOPS                   |                          |     1 | 
    149 |  9439   (1)|
    |*
    2 |   HASH JOIN OUTER               |                          |     1 | 
    135 |  9437   (1)|
    |*
    3 |    HASH JOIN                    |                          |     1 |  
    71 |  9432   (1)|

    4 |     NESTED LOOPS                |                          |     2 |  
    76 |    53   (0)|
    |*
    5 |      TABLE ACCESS BY INDEX
    ROWID| QP_LIST_LINES            |     2 |  
    44 |    49   (0)|
    |*
    6 |       INDEX SKIP SCAN           | QP_LIST_LINES_N2         | 
    702 |       |    20 
    (0)|
    |*
    7 |      INDEX RANGE SCAN           | QP_PRICING_ATTRIBUTES_N3 |     1 |  
    16 |     2   (0)|
    |*
    8 |     TABLE ACCESS BY INDEX
    ROWID | MTL_SYSTEM_ITEMS_B       | 46254
    |  1490K|
    9378   (1)|
    |*
    9 |      INDEX RANGE SCAN           | MTL_SYSTEM_ITEMS_B_N9    | 46254 |       | 
    174   (1)|
    |
    10 |    TABLE ACCESS FULL            | XX_WEB_ITEM_IMAGE_TBL    | 
    277 | 17728 |     5   (0)|
    |* 11 |   INDEX RANGE SCAN              | MTL_ITEM_CATEGORIES_U1   |   
    1 |    14 |     2 
    (0)|
    Predicate Information (identified
    by operation id):
    2 -
    access("XWIIT"."IMAGE_CODE"(+)="MSI"."SEGMENT1")
    3 -
    access("QPPR"."PRODUCT_ATTR_VALUE"=TO_CHAR("MSI"."INVENTORY_ITEM_ID")
    AND
    "QPPR"."PRODUCT_UOM_CODE"="MSI"."PRIMARY_UOM_CODE")
    5 - filter(NVL("QPLL"."START_DATE_ACTIVE",TRUNC(SYSDATE@!))<=TRUNC(SYSDATE@!)
    AND
    NVL("QPLL"."END_DATE_ACTIVE",TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))
    6 -
    access("QPLL"."LIST_HEADER_ID"=TO_NUMBER(:P_PRICE_LIST_ID))
    filter("QPLL"."LIST_HEADER_ID"=TO_NUMBER(:P_PRICE_LIST_ID))
    7 -
    access("QPLL"."LIST_LINE_ID"="QPPR"."LIST_LINE_ID")
    filter("QPPR"."PRODUCT_UOM_CODE" IS NOT NULL)
    8 - filter("MSI"."ENABLED_FLAG"='Y')
    9 - access("MSI"."ORGANIZATION_ID"=TO_NUMBER(:P_ORGANIZATION_ID))
    11 -
    access("MCB"."ORGANIZATION_ID"=TO_NUMBER(:P_ORGANIZATION_ID)
    AND
    "MSI"."INVENTORY_ITEM_ID"="MCB"."INVENTORY_ITEM_ID"
    AND
    "MCB"."CATEGORY_ID"=TO_NUMBER(:P_CATEGORY_ID))
           filter("MCB"."CATEGORY_ID"=TO_NUMBER(:P_CATEGORY_ID))
    Note
    - 'PLAN_TABLE' is old version
    TKprof Plan
    TKPROF: Release 11.1.0.7.0 - Production on Fri Nov 15 06:12:26 2013
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Trace file: LSSD_ora_19760.trc
    Sort options: default
    count    = number of times OCI procedure was executed
    cpu      = cpu time in seconds executing
    elapsed  = elapsed time in seconds executing
    disk     = number of physical reads of buffers from disk
    query    = number of buffers gotten for consistent read
    current  = number of buffers gotten in current mode (usually for update)
    rows     = number of rows processed by the fetch or execute call
    SELECT msi.inventory_item_id,
           msi.segment1,
           primary_uom_code,
           primary_unit_of_measure,
           xwiit.image_url
      FROM mtl_system_items_b msi,
           qp_list_lines qpll,
           qp_pricing_attributes qppr,
           mtl_item_categories mcb,
           xx_web_item_image_tbl xwiit
    WHERE     msi.enabled_flag = 'Y'
           AND qpll.list_line_id = qppr.list_line_id
           AND qppr.product_attr_value = TO_CHAR (msi.inventory_item_id)
           AND qppr.product_uom_code = msi.primary_uom_code
           AND msi.inventory_item_id = mcb.inventory_item_id
           AND msi.organization_id = mcb.organization_id
           AND TRUNC (SYSDATE) BETWEEN NVL (qpll.start_date_active,
                                            TRUNC (SYSDATE))
                                   AND NVL (qpll.end_date_active,
                                            TRUNC (SYSDATE))
           AND xwiit.image_code(+) = msi.segment1
           AND msi.organization_id = :p_organization_id
           AND qpll.list_header_id = :p_price_list_id
           AND mcb.category_id = :p_category_id
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        2      0.00       0.00          0          0          0           0
    Execute      2      0.00       0.00          0          0          0           0
    Fetch        2      3.84       3.85          0     432560          0        1002
    total        6      3.84       3.85          0     432560          0        1002
    Misses in library cache during parse: 0
    Optimizer mode: ALL_ROWS
    Parsing user id: 173 
    Rows     Row Source Operation
        501  NESTED LOOPS  (cr=216280 pr=0 pw=0 time=115 us cost=9439 size=149 card=1)
       2616   HASH JOIN OUTER (cr=211012 pr=0 pw=0 time=39 us cost=9437 size=135 card=1)
      78568    HASH JOIN  (cr=210997 pr=0 pw=0 time=3786 us cost=9432 size=71 card=1)
      78571     NESTED LOOPS  (cr=29229 pr=0 pw=0 time=35533 us cost=53 size=76 card=2)
      78571      TABLE ACCESS BY INDEX ROWID QP_LIST_LINES (cr=9943 pr=0 pw=0 time=27533 us cost=49 size=44 card=2)
    226733       INDEX SKIP SCAN QP_LIST_LINES_N2 (cr=865 pr=0 pw=0 time=4122 us cost=20 size=0 card=702)(object id 99730)
      78571      INDEX RANGE SCAN QP_PRICING_ATTRIBUTES_N3 (cr=19286 pr=0 pw=0 time=0 us cost=2 size=16 card=1)(object id 99733)
    128857     TABLE ACCESS BY INDEX ROWID MTL_SYSTEM_ITEMS_B (cr=181768 pr=0 pw=0 time=9580 us cost=9378 size=1526382 card=46254)
    128857      INDEX RANGE SCAN MTL_SYSTEM_ITEMS_B_N9 (cr=450 pr=0 pw=0 time=1657 us cost=174 size=0 card=46254)(object id 199728)
        277    TABLE ACCESS FULL XX_WEB_ITEM_IMAGE_TBL (cr=15 pr=0 pw=0 time=22 us cost=5 size=17728 card=277)
        501   INDEX RANGE SCAN MTL_ITEM_CATEGORIES_U1 (cr=5268 pr=0 pw=0 time=0 us cost=2 size=14 card=1)(object id 99557)
    Note: I modified query and it gives good result, now it takes 3 to 4 sec for 16000 records.
    If possible can you plz explain what we have to take care while doing performance tunning
    I am a fresher so don't have that much idea.
    and also Thanks Hussein for your replay

  • Unknown steps in performance tunning

    Hi,
    I am in middle of performance tunning in BI 7.0, as i am going to do the following steps-i am unclear in some steps;
    expert advice is needed. post ur ans as soon as possible.
    When loading transaction data, following this procedure:
    known - Load all master data.
    known - Delete the indices of the InfoCube and its aggregates.
    Unknown - Turn on number range buffering.
    Unknown - Set an appropriate data packet size.
    known - Load the transaction data.
    known - Re-create the indices.
    Unknown - Turn off number range buffering.
    known - Refresh the statistics.
    regards,
    Suman

    Hi Suman,
    check these on number range buffering
    http://help.sap.com/saphelp_nw04/helpdata/en/7b/6eb2aa7aed44ea92ebb969e03081fb/frameset.htm
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c0a6e3ff-f000-2d10-b59d-8ef35e248f83?quicklink=index&overridelayout=true

  • Tools in Performance Tunning

    What are the tools in performance Tunning in ABAP/4
    Thanks  Regards,
    Kumar

    Hi kumar,
    Tools provided for Performance Analysis
    Following are the different tools provided by SAP for performance analysis of an ABAP object
    Run time analysis transaction SE30
    This transaction gives all the analysis of an ABAP program with respect to the database and the non-database processing.
    SQL Trace transaction ST05
    The trace list has many lines that are not related to the SELECT statement in the ABAP program. This is because the execution of any ABAP program requires additional administrative SQL calls. To restrict the list output, use the filter introducing the trace list.
    The trace list contains different SQL statements simultaneously related to the one SELECT statement in the ABAP program. This is because the R/3 Database Interface - a sophisticated component of the R/3 Application Server - maps every Open SQL statement to one or a series of physical database calls and brings it to execution. This mapping, crucial to R/3s performance, depends on the particular call and database system. For example, the SELECT-ENDSELECT loop on the SPFLI table in our test program is mapped to a sequence PREPARE-OPEN-FETCH of physical calls in an Oracle environment.
    The WHERE clause in the trace list's SQL statement is different from the WHERE clause in the ABAP statement. This is because in an R/3 system, a client is a self-contained unit with separate master records and its own set of table data (in commercial, organizational, and technical terms). With ABAP, every Open SQL statement automatically executes within the correct client environment. For this reason, a condition with the actual client code is added to every WHERE clause if a client field is a component of the searched table.
    To see a statement's execution plan, just position the cursor on the PREPARE statement and choose Explain SQL. A detailed explanation of the execution plan depends on the database system in use.
    how to perform sql trace:
    Poorly written SQL statements have the greatest impact on application performance. An SQL
    statement using which an Oracle database system reads and/or sorts thousands or even millions of
    rows of data can bring the database to a standstill. Indexes should be used properly to prevent such
    situations from occurring. To analyze such problems you should use the SQL Trace (TCode ST05) to
    with database access operations.
    CAUTION
    Only one person can perform an SQL trace at a time. Remember to turn off the
    trace when you are finished. SQL trace slows the system down.
    1. Using SQL Trace
    1. Open a program that you want to analyze, in the editor, so that it is ready and waiting to be
    executed.
    2. Open a new session using the menu path System   Create session.
    3. Run transaction ST05 (enter /nst05-zero-five, not oh-five in the Command field, or choose
    the menu path System  Utilities  Performance Trace).
    4. Then the initial screen of the test tool appears.
    The status of the Performance Trace is displayed in the lower part of the screen. This status tells you
    three things namely
      Whether any of the Performance Traces are switched on
      The users for whom Performance Trace is enabled
      The user that switched the Performance Trace on
    If the trace is switched on you must switch it off before you can proceed. There are two cases in
    which the trace needs to be switched off. They are
      If the trace was started within the past hour, it is possible that it is still being used. Contact the
    indicated user or try again later
      If the trace was started hours or days ago, the user probably left it on by mistake and it can be
    safely turned off
    To turn off the trace, press the Trace Off pushbutton.
    5. The initial screen has various trace functions such as SQL Trace, Enqueue Trace, RFC
    Trace
    6. Select SQL Trace.
    7. There are various options under which trace can be switched on. They are
      If you want to switch on the trace under your user name, choose Trace on.
      If you want to switch on the trace for another user or user group, choose Trace on for user.
      To enter a single user, specify the user name.
      To enter a user group, specify a search pattern (you can use the normal wildcards).
    If you want to change the user or user group, switch off the Performance Trace and then restart it,
    entering the new users or user group.
    8. Now switch back to the window containing your editor session (the one with your program
    waiting to be executed).
    9. Press F8 to run your program.
    Note Just press F8 and do nothing. Do not even press the Back button.
    10. When your program has run and the hourglass is no longer displayed, switch back to the trace
    window.
    11. Press the Trace Off pushbutton.
    12. Once Performance Trace is switched off, you can analyze the data
    Using Runtime Analysis Tool (SE30)
    1. You can open the Runtime Analysis tool as follows:
    To start from Choose
    Any screen System   Utilities   Runtime Analysis   Execute
    Initial screen of ABAP
    Workbench
    Test   Runtime Analysis
    Initial screen of ABAP Editor Program   Execute  Runtime Analysis
    ABAP Editor Utilities   More utilities   Runtime Analysis
    2. In the simplest case, you would enter a short description and a measurement object
    (transaction, program, or function module) to run the analysis in the current session.
    3. In the Measurement restrictions group box, you can make more specific restrictions for the
    measurement. For example, you may want to include only certain statements or time periods.
    (For further information refer section 3. 0).
    4. To start the measurement, choose Measure runtime. From the initial screen, you can
    specify whether the analysis should run in the same session or in a parallel session using the
    Enable/Disable button in the In parallel session group box.
    5. Run the transaction, program, or function module as normal.
    6. Return to the initial screen of the Runtime Analysis transaction. To do so, either leave
    transaction, program, or function module as normal, or start the runtime analysis again.
    7. The name of the performance data file that has just been created is displayed at the bottom of
    the initial screen. The file created by the system is added to the list of performance data files.
    You can now analyze, print, or delete the file, or save it locally. The Performance file group
    box contains options for analyzing performance files. (For further information refer sections 4.
    0 and 5. 0)
    regards,
    keerthi

  • Performance tunning

    Dear Experts,
    I am urgently looking forward to some comprehensive documentation on Performance tunning elaborating on the issues like:-
    1.)In what instances should we do performance tunning....
    2.) why it is neccessary and
    3.) what r the <b><u>various methods</b> <b>of performance tunnig....</u></b>
    I shall be highly obliged, if anyone can point me to relevant links, or send me illustrative documentation on these issues in performance tunning at [email protected]
    ur help shall be thankfully/duely acknowledged,
    regards,
    shalini.
    Message was edited by: shalini gupta

    Shalini ,
    Performance tuning is at various levels :
    1. Data Modeling
    2. Data Loading
    3. Report design
    4. Reporting
    It is a mix and match of the above and other factors you might need to consider could also be something like:
    1. DB being used
    2. Partitioning
    3. System parameters
    4. Authorization Design...
    All this depends on the level of performance tuning you want to do:
    https://websmp204.sap-ag.de/~sapidb/011000358700001890502003
    This is a link to the support portal and I have sent the same across to you. Hope it is useful.
    Arun

  • Oracle apps performance tunning

    Hey
    could u any one tell me where i will get the Oracle Apps Performance
    Tunning on Module wise like OM/AP/AR.
    how to verify that my oracle Apps[11.5.10] instance running fine on linux based !!
    i need check list Oracle Apps Performance !!

    best would be to start with http://docs.oracle.com/cd/E11882_01/server.112/e16638/toc.htm
    Regards
    Karan

  • How to do Performance tunning in OBIEE

    Hi All,
    We are using OBIEE 10.3.4 version on windows envorinment .In our OBIEE project we are using 9 reports my requriment is we need to do performance tunning for OBIEE side.For eace report accessing its taking around 80 sec.We need to decrease these accessing time,is there any possibility to access all the reports with less response time in OBIEE side.
    Could you anyone suggest how to do performance tunning in OBIEE side.
    Thanks,
    Vijay.

    Vijay,
    Plz refer
    http://www.business-intelligence-quotient.com/?p=119
    http://prolynxuk.com/blog/?p=173
    http://businessdecisionsystems.com/blog/?p=486
    Here is the section from the BIEE admin guide:
    =======================
    Usage Examples
    This section provides a few examples of how to use Oracle hints in conjunction with the Oracle BI Server. For more information about Oracle hints, refer to the Oracle SQL Reference documentation for the version of the Oracle server that you use.
    Index Hint
    The Index hint instructs the optimizer to scan a specified index rather than a table. The following hypothetical example explains how you would use the Index hint. You find queries against the ORDER_ITEMS table to be slow. You review the query optimizer's execution plan and find the FAST_INDEX index is not being used. You create an Index hint to force the optimizer to scan the FAST_INDEX index rather than the ORDER_ITEMS table. The syntax for the Index hint is index(table_name, index_name). To add this hint to the repository, navigate to the Administration Tool's Physical Table dialog box and type the following text in the Hint field:
    index(ORDER_ITEMS, FAST_INDEX)
    Leading Hint
    The Leading hint forces the optimizer to build the join order of a query with a specified table. The syntax for the Leading hint is leading(table_name). If you were creating a foreign key join between the Products table and the Sales Fact table and wanted to force the optimizer to begin the join with the Products table, you would navigate to the Administration Tool's Physical Foreign Key dialog box and type the following text in the Hint field:
    leading(Products)
    So, the table names "order_items" and "products" in the above documentation will not be the same after BIEE puts aliases on them.
    ============
    Hope this is useful..
    Edited by: Deepak Gupta on Aug 1, 2011 7:18 AM

  • Performance Tune Stored procedures

    Hi Experts,
    What is the best approach to performance tune stored procedures. Is it to run expalin plan for the queries used in cursors or there is more to it?
    I need all your advise.
    Thanks

    As generic advice: Absolutely not.
    The performance of PL/SQL may be irrelevant to the performance of specific SQL statements contained.
    Consider the following:
    1. A very inefficient query that runs one time and takes 2 seconds to execute.
    2. A query that runs in 2 milliseconds inside a loop.
    Which one is more likely to be the issue?
    The answer is that it depends on the number of interations of the loop.
    The proper tool for tuning PL/SQL, as discussed by Tom Kyte, are, depending on version, DBMS_PROFILER or DBMS_HPROF.
    Find out where the time is being spent.
    Then tune that which takes the most time.
    It is not necessarily the slowest SQL statement.

  • SCM Live cache performance tunning

    I got a ne project here I have to work on SCM live cache, performance tunning and ECC Integrating ith SCM.
    If you have any documents can you please help me.
    - Thanks

    7,
    Try these
    https://websmp103.sap-ag.de/~sapidb/011000358700000567062006E
    https://websmp103.sap-ag.de/~sapidb/011000358700002213412003E
    https://websmp103.sap-ag.de/~sapidb/011000358700000715082008E
    https://websmp103.sap-ag.de/~sapidb/011000358700007382642002E
    https://websmp103.sap-ag.de/~sapidb/011000358700008748092002E
    Rgds,
    DB49

  • Need to Tune program -Urgent

    Hi ,
         I had one ZEE program which has 25 files as input file (input data's . Here the logic of the program is as mention below.
    1.initializition .
    2.get_file_names.(All 25 files name is get in the same perform )
    3.write_job_log.
    4.open_files.(Open 25 files at a time )
    5.read_surr_ctl_file.
    6.load_internal_tabs.( Load 25 files data to ITAB )
    7.create_edi214_tables.
    8.process_ekko_ekpo.(Proces the ITAB data at the time.)
    9.refresh_internal_tables.
    Here they are openning 25 files , then loading all 25 files to ITAB and processing all the loaded datas.
    When this progarm is schedule in background it takes 1.25 hrs to complete the process .
    I need to tune this program which ever possible way.   
    My thought and analysis in this program is -> This performance problem is due to like  openning 25 files , then loading all 25 files to ITAB and processing all the loaded datas which may hit the performance . Kindly let me know you IDEAS and experence on this issue . This program is having 10000 lines of code ..
    Regards,
    Veera

    Hi,
    This program has a lot of steps and the best way to solve its performance problems is with SE30.
    I think you should execute SE30 in development environment e check the steps where there is bad performance.
    If you improve the performance in the development environment you will improve also in production environment.
    Regards,
    Fernando

  • Java performance tunning

    Is there any way to do performance tunning of java programme ??

    Find the bottlenecks in the program. And make changes to remove them.
    If you want a more specific answer you will need to make a more specific question.

  • Pages will no longer let me open files that I have previously downloaded, worked on and then saved on my mac. However it will let me open pages documents that I have started from new. I need the other documents to open and can't figure it out. PLEASE

    Pages will no longer let me open files that I have previously downloaded, worked on and then saved on my mac. However it will let me open pages documents that I have started from new. I need the other documents to open and can't figure it out. PLEASE

    I just got my mac a month ago so go easy on me but I was just working with the pages that was already on it, and then today I know it updated, and now I am unable to open a lot of my documents!:(  Idk what you mean by the icloud version lol sorry! As for the version, when I open pages from my apps and click 'about' it says version 5.1? And when I open the document it just goes grey and kind of blinks and doesnt open? No error message or any indication of why it will not open now when I for sure have opened it in the past! Andddd for the OS X I think it is 10.9.1 ??

Maybe you are looking for

  • More BT speed rubbish... I think I am done this ti...

    Here we are again, I have been having alot of dropouts or (router resets) for a while now and its always going off at the same times each day, I am on my 7th HH5 I have had 5 engineers out the last one actually fixed everything, my speed went back up

  • File Download from Secure Site

    Hi , Am trying to download file from secure site. Am reading the file from DB and setting it in reponse. My code woks perfectly in non-secure site. But it doesnt work in secure site. Here is the piece of code am using. Pls help thru this. String file

  • Issues with brand new mac-mini, NAS, transmission, external HD's

    Hi, I am totally new to mac, got my first mac mini about 2 weeks ago, what a lovely shiny box of joy it seemed at the beginning. I have the 2GHz model, upgraded to 2GB ram (by the apple store tech's) I have a 250GB 2.5 usb powered drive connected to

  • Query on Cats data, employees that have not filled in their data.

    Hi, I have to create a query that will report on all the employees that have not filled in their timesheets. The 0CATS_C01 cube does not contain that data, it only has the employees that have filled in their  timesheets. The route I have decided to t

  • HELP!  my internet keeps quitting!

    Whenever i use my internet (Firefox or Netscape) they just quit by themselves and then a message pops up saying: "The application Firefox has unexpectedly quit. The system and other applications have not been affected." I have an iMac OS 9 and it's f