Put tables in memory

hi all.
looked on the internet bur didn't find much information about that.
i have a big table that i use to populate another table via select/insert.
i want to speed up this work.
is there a way to put my table in memory and how.
any contribution will be apreciated.

Alkapone wrote:
hi all.
looked on the internet bur didn't find much information about that.
i have a big table that i use to populate another table via select/insert.
i want to speed up this work.
is there a way to put my table in memory and how.
any contribution will be apreciated.Well, if you are just doing it once, you wouldn't need to keep it in memory - the create table as select statement actually uses a faster way of accessing I/O than if you were to get little bits at a time off of disk (multiblock read), works fast. So, I'll assume you are going to populate your other table a little bit at a time.
Oracle keeps blocks in buffers in memory. It uses a modified least recently used algorithm to age unused blocks out. So if you have a not very active database, you can just read the whole thing by doing a select on a field that is not indexed, and it will be ready for your other table to be populated. If you have a moderately active database, blocks will begin to be aged out as other objects take the space. If you have a very active database, or one that is doing a lot of updates to the big table, you might find a performance problem as Oracle attempts to keep read consistency of the big table. Also, using multiblock read gives Oracle the idea you don't really want to keep the blocks in memory, so they are the first to age out if anything goes.
This can be a very large and complicated subject, depending on the details of what you are doing and what everybody else is doing. If it is a reasonable thing for your database to do and for whatever reason Oracle doesn't automatically keep the blocks you need in memory, you can establish a keep pool for specific objects, which is basically a separate set of buffers to avoid aging the object's blocks out. Some people think just letting Oracle do its thing with a large SGA is generally the better way to go, but again, it really depends.
I've seen situations in the past where it makes sense to take the desired data out of the database, manipulate it, then put it in the new table - this can avoid fights between batch and online processing in temp segments, as well as read-consistency performance issues. This is less of a consideration on newer versions of Oracle with modern hardware, but must I say it again? It depends.
Read the Concepts manual!

Similar Messages

  • Exporting an internal table to memory

    Hi
      I want to call an program from another program and want the values stored in an internal table used in the called program.
    how can i export an internal table to memory id an then import it.
    Regards
    Arun

    So to be clear, for your requirement it would be:
    * Towards the end of the called program
      EXPORT it_itab TO MEMORY ID 'ZZ_MEM_ID'.
    * And then from calling program after the submit zzzz and return statement
      IMPORT it_itab FROM MEMORY ID 'ZZ_MEM_ID'.
    Hope that helps.
    Brad
    Message was edited by: Brad Williams (put back intro text)
    Message was edited by: Brad Williams

  • Table in memory

    Hi all,
    is there a possibility in 11g to load tables at database starttime from disk to memory and therefore all further "read"-access to this table will handled in memory?
    best regards
    georg

    It is possible to keep -especially small- tables in memory, by putting them into the keep pool.
    The steps to take are:
    - Determine size of the table
    - Adjust size of the keep-pool so the table fits into it, using:
    alter system set db_keep_cache_size=<size of table + 20%> scope=both;After tha 'pin' the table into the pool using:
    ALTER TABLE <table> STORAGE ( BUFFER_POOL KEEP );
    MAKE SURE that your SGA is large enough for the keep pool to be created. It is preffered to increase the SGA with the size the keep pool will become.
    In that case no other memory buffers will be reduced in size
    HTH
    FJFranken

  • Table in memory using plsql

    I have to convert a table and the plsql will check a small table a lot of times , I'd like to put this table in memory and do this check using variables,
    I trying to use record type but I have to find a record using 2 columns and I can not able to use the EXISTS,
    I'd like to have a table cache, and find a row in this cache ( using 2 columns as key ) ,
    Any help I appreciate .

    A multilevel associative array may help you. Here is an example.
    set serveroutput on
    declare
    type row_type is record ( col_1 number, col_2 number );
    type inner_aa_type is table of row_type index by varchar2(10) ;
    type outer_aa_type is table of inner_aa_type index by varchar2(10) ;
    v_row row_type ;
    v_aa        outer_aa_type ;
    begin
    v_row.col_1 := 10 ;
    v_row.col_2 := 100 ;
    v_aa('A')('1') := v_row ;
    v_row.col_1 := 20 ;
    v_row.col_2 := 200 ;
    v_aa('A')('2') := v_row ;
    dbms_output.put_line ( v_aa('A')('1').col_1 );
    dbms_output.put_line ( v_aa('A')('1').col_2 );
    dbms_output.put_line ( v_aa('A')('2').col_1 );
    dbms_output.put_line ( v_aa('A')('2').col_2 );
    if ( v_aa.exists('A') and v_aa('A').exists('1') )
    then dbms_output.put_line( 'First test is true' );
    end if;
    if not ( v_aa.exists('A') and v_aa('A').exists('5') )
    then dbms_output.put_line( 'Second test is false' );
    end if;
    if not ( v_aa.exists('X') and v_aa('X').exists('5') )
    then dbms_output.put_line( 'Third test is false' );
    end if;
    end ;
    10
    100
    20
    200
    First test is true
    Second test is false
    Third test is false
    PL/SQL procedure successfully completed.--
    Joe Fuda
    [SQL Snippets|http://www.sqlsnippets.com/|SQL Snippets]

  • I put in my memory card to the left side of the computer, but I cannot find the file of pictures anywhere. Its not even on my desktop. What should I do and how can I get it to show up on my desktop?

    I put in my memory card to the left side of the computer, but I cannot find the file of pictures anywhere. Its not even on my desktop. What should I do and how can I get it to show up on my desktop?

    If your Mac is new-ish and has one of the Lions as its OS, the drives, cards, USB sticks no longer show up, even though they're there. Go to Finder's Preferences and tick the corresponding items in the General and Sidebar tabs.

  • Export internal table to memory in User Exit FM

    Hi all,
    My scenario here is to export an internal table in one user exit FM and import it back in another user exit FM.
    I was trying to use
    Export lt_table to memory id 'LABEL'.
    then
    Import lt_table from memory id 'LABEL'.
    But then i hit error in the import statement. How can I rectify this?
    Thanks. Answer will be rewarded.

    Refer to the below related threads
    Export an internal table to memory and import from memory into an internal
    http://help.sap.com/saphelp_erp2005/helpdata/en/fc/eb3bf8358411d1829f0000e829fbfe/frameset.htm
    Regards,
    Santosh

  • How to define tablespaces in Oracle 10g and how put tables on tablespaces

    Hello,
    I'm having trouble to define the structure of tablespaces and how to distribute the tables/indexes/lobs on these tablespaces.
    Do you know some rules on how to define this?
    What I have until now:
    1) Put table indexes in separate tablespace
    2) Put lobs in separate tablespace and use storage clause when defining the lob column. Not sure how many tablespaces to use, I have tables with millions of lobs and tables with just one lob (with row containing the lob).
    3) Please fill more rules here ...
    Thank you, Alex.

    Long story: I received database and schema creation scripts defined in Oracle 9i. I want to redesign the tablespaces number/storage and also to change the distribution of tables into tablespaces.
    As an example I will show how tablespaces are created now. There is one tablespace for indexes BLUE_AUTO_INDX and one for each EXTENT MANAGEMENT of:
    - 64K for BLOB , name BLUE_K064_BLOB
    - 64K for tables , name K064_NTAB
    - 128K for tables, name BLUE_K128_NTAB
    - 512K for CLOB , name BLUE_K512_CLOB
    - 4M for BLOB , name BLUE_M004_BLOB
    - 64M for CLOB , name BLUE_M064_CLOB
    - 8M for tables , name BLUE_M008_NTAB
    - 1M for tables , name BLUE_M001_NTAB
    - 256M for tables, name BLUE_M256_NTAB
    Definition of each tablespace is like:
    CREATE TABLESPACE BLUE_AUTO_INDX DATAFILE 'BLUE_AUTO_INDX01.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64M SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_K064_BLOB DATAFILE 'BLUE_K064_BLOB01.DBF' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_K064_NTAB DATAFILE 'BLUE_K064_NTAB01.DBF' SIZE 20M REUSE AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_K128_NTAB DATAFILE 'BLUE_K128_NTAB01.DBF' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_K512_CLOB DATAFILE 'BLUE_K512_CLOB01.DBF' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_M004_BLOB DATAFILE 'BLUE_M004_BLOB01.DBF' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_M064_CLOB DATAFILE 'BLUE_M064_CLOB01.DBF' SIZE 400M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64M SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_M008_NTAB DATAFILE 'BLUE_M008_NTAB01.DBF' SIZE 200M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 8M SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_M001_NTAB DATAFILE 'BLUE_M001_NTAB01.DBF' SIZE 100M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO;
    CREATE TABLESPACE BLUE_M256_NTAB DATAFILE 'BLUE_M256_NTAB01.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256M SEGMENT SPACE MANAGEMENT AUTO;
    Does this structure of tablespaces ok? I mean if the logic of one tablespace for different EXTENT SIZEs looks ok?

  • By mistake I put the camera memory card into the DVD slot How can I get it out

    I put the camera memory card into the DVD slot How can I get it out

    You'll be pleased to know you're not the first (or last) to do this .
    Have a look at this old thread, Cathy 1956's tip on page 1 seems to work for a lot of people:
    https://discussions.apple.com/thread/2283444?start=0&tstart=0
    Worth reading the whole thread as other people have chimed in with other ways of extracting the disk.

  • Export a table to memory ID and import it in the Workflow.

    Hi,
    For a particular requirement,
    We are triggering Workflow from the User Exit MV45AFZZ.
    Before triggering this WF, I am trying to export an internal table to a memory ID and trying to Import it back from the same memory ID into an internal table in the Workflow task. This is failing.
    Even the name of internal tables and memory IDs are similar.
    Can we do this like this? If yes please let me know how to do this.
    Thanks & Regards,
    Mallika Maktala

    Initially,
    I have populated the values of the internal table in to a Database table, immediately called Workflow, in a task tried to retrieve the data from the database table.
    But though there is some data in the table, it dint retrieve any data, as at that point the table may not be updated.
    So now I used this Import export concept.
    I think its in same session, but still not working,
    Any solution?
    Mallika Maktala

  • Save Internal table to memory - problem

    Hi everybody ,
    I need to extract one Internal table to memory , every 1st in the Month .
    Then every day I will be reading this table for my report ( in order to avoid running every day same and same database selections) .
    My originall idea wos with EXPORT TO MEMORY ID , AND IMPORT
    but it does'nt work next day ... With Export data is cept only untill tthe end of the transaction ...
    Is there any way except of storing data in one Z_ database table ???
    Thanks in advance

    Hi,
    You can use the following code to export to memory
    *data variable required for background processing
    data: wa_indx type indx.
    *EXPORT Internal Table TO MEMORY ID 'XYZ'.
    *part for background processing
      export tab = <your table> to database indx(xy) from wa_indx client
      sy-mandt id 'XYZ'.
    the following code will import from Memory and clear memory
    *data variable required for background processing
    data: wa_indx type indx.
    imports from database the list sent by the calling program
    IMPORT tab = <your table> FROM DATABASE indx(xy) TO wa_indx CLIENT sy-mandt
    ID 'XYZ'.
    deletes the data to save wastage of memory
    DELETE FROM DATABASE indx(xy)
      CLIENT sy-mandt
      ID 'XYZ'.
    Regards,
    Samson Rodrigues.

  • Pass Internal Table to Memory

    Dear Experts.
    I have the following problem.
    I am using a User-Exit for Travel  that is called from a program standard with use the T.Code TRIP. The program standard use a structure that when entry in the user exit not is. I need use this structure in the user exit. (p_t_req_head).
    I had read abour SAP and ABAP Memory but from the program standar How can Pass Internal Table to Memory SAP or ABAP from the program standard to user-exit?
    When I am doing debugging in the program Standard and this call to the user exit, I use ()namestructure for example ()p_t_req_head  and I get the datas of the structure, But In the Source Code ABAP, How can do this with instructions?
    Regards

    Hi,
    You try with Import & Export Statements as follows ---
    DATA : t_itab LIKE TABLE OF spfli.
    EXPORT t_itab TO MEMORY ID 'ABCD'.
    After sending the internal table to ABAP memory you need to get that by IMPORT in the called session.
    IMPORT t_itab FROM MEMORY ID 'ABCD'.

  • Export internal table to memory.

    How can I export and import an internal table to memory?
    This:
    export messtab to memory id 'TAB'. (in program 1)
    import messtab=messtab from memory id 'TAB'. (in program 2)
    does not work.

    Even without the brackets it doesn't work.
    In program 1 I have:
        WRITE text-e21 TO messtab-message.
        messtab-type = c_tipo_error.
        APPEND messtab. CLEAR messtab.
        DELETE messtab WHERE message = space.
        EXPORT messtab[] TO MEMORY ID para.
        EXIT.
    The EXIT leads to program 2, from where I made a submit to program 1, and where I have:
    import messtab[] from memory id para.
    Where:
            DATA: para TYPE tpara-paramid VALUE 'MES',
            messtab  TYPE TABLE OF bapireturn WITH HEADER LINE.
    What's wrong?
    Thanks in advance.
    Oh, and I've checked the table in program 1 does have an entry.

  • Passing Dynamic Internal Tables to Memory

    I have a bit of a conundrum right now that I can't seem to correct. I am working on adding an ALV report to an existing report program. I was able to write a simple helper program that builds a custom object that I defined that translates my raw data into two seperate dynamic tables, and then builds an ALV grid and outputs it. The reason I wrote this in a simple helper program was so that I could use SUBMIT ... EXPORTING LIST TO MEMORY from my primary report program and capture the input so I can later write it out under our company's standard ABAP list format as if I were using WRITE statements.
    The output of the report itself is working beautifully. We have included functionality to automatically take the output, produce an HTML file from it, and then FTP it directly to a webserver so our clients can get easy access to it. What I want to be able to do though is give the clients two tab-delimited files that contain the raw data that was used to build the report. We have an interface in place to do that, but I somehow need to be able to pass these two dynamic internal tables which I have field-symbols to reference back to my calling program.
    Here is what I am trying to do:
    CALL METHOD OBJ_ALV_MR_EST_REASONS->PRODUCE_ESTIMATION_REPORT
        IMPORTING
          RPT_DATA_BY_REASON   = ref_it_estreason
          RPT_DATA_BY_DISTRICT = ref_it_district.
    *   Assign the field symbols
      ASSIGN ref_it_estreason->* TO <it_estreason>.
      ASSIGN ref_it_district->* TO <it_district>.
    * Export the two internal tables to memory so they can be
    * retrieved by the calling program
      EXPORT reason = <it_estreason>[]
             district = <it_district>[]
      TO MEMORY ID 'ZCR_ESTIMATION_REASON_RPT'.
    As you can see, my method returns two references to dynamic internal tables. I have used the memory debugger to see that these tables are being correctly written to the ABAP memory.
    However, back in my parent program when I try to do the following,
    CREATE DATA ref_it_estreason TYPE REF TO DATA.
          CREATE DATA ref_it_district TYPE REF TO DATA.
          ASSIGN ref_it_estreason->* TO <it_estreason>.
          ASSIGN ref_it_district->* TO <it_district>.
          IMPORT reason = <it_estreason>
                 district = <it_district>
          FROM MEMORY ID 'ZCR_ESTIMATION_REASON_RPT'.
    I get the REFS_NOT_SUPPORTED_YET exception which says that "For the statement Export/Import ..." object references, interface references, and data references are currently not supported".
    I have tried multiple other ways of defining my field-symbols or my reference pointers but they all result in exceptions of some sort. Is there any way for me to get this data passed back? It seems like there must be a way to get the data from memory since I know it's being correctly stored there.
    Thanks in advance.

    Shortly after posting this, I had an idea which I was able to implement to actually get this to work.
    I decided that I would simply pass the FIELDCAT tables for each of my dynamic tables into the same memory ID as the tables themselves.
      EXPORT reason_fcat = it_estreason_fcat
             district_fcat = it_district_fcat
             reason = <it_estreason>[]
             district = <it_district>[]
      TO MEMORY ID 'ZCR_ESTIMATION_REASON_RPT'.
    Then, back in my calling program I execute the following code. This retrieves the FIELDCAT tables, builds two empty dynamic table type reference variables and then lets me create field-symbols to reference those components.
    *     Retrieve the fieldcat internal tables first
          IMPORT reason_fcat = it_estreason_fcat
                 district_fcat = it_district_fcat
          FROM MEMORY ID 'ZCR_ESTIMATION_REASON_RPT'.
    *     Generate an internal table type assigned to each
    *     reference variable based on the fieldcat listings we
    *     retrieve
          CALL METHOD cl_alv_table_create=>create_dynamic_table
            EXPORTING
              it_fieldcatalog = it_estreason_fcat
            IMPORTING
              ep_table        = ref_it_estreason.
          CALL METHOD cl_alv_table_create=>create_dynamic_table
            EXPORTING
              it_fieldcatalog = it_district_fcat
            IMPORTING
              ep_table        = ref_it_district.
    *     Assign the field symbols
          ASSIGN ref_it_estreason->* TO <it_estreason>.
          ASSIGN ref_it_district->* TO <it_district>.
          CREATE DATA ref_wa_estreason LIKE LINE OF <it_estreason>.
          CREATE DATA ref_wa_district LIKE LINE OF <it_district>.
          ASSIGN ref_wa_estreason->* TO <wa_estreason>.
          ASSIGN ref_wa_district->* TO <wa_district>.
    *     Finally, we can retrieve the data from memory and assign
    *     to the internal tables referenced by our field-symbols
          IMPORT reason = <it_estreason>[]
                 district = <it_district>[]
          FROM MEMORY ID 'ZCR_ESTIMATION_REASON_RPT'.
    This worked beautifully and saved me from having to do a major redesign. I don't know how helpful it would be for ABAP Objects to be passed to memory (I believe some type of serialization would need to be in order there), but for dynamically typed internal tables it worked like a dream with little overhead.

  • It cannot reference the dynamic internal table in memory as an object.

    Hi,
    I am getting the syntax error in the second select. I guest it cannot reference the dynamic internal table in memory as an object.
    The internal table contains different fields from multiple tables and it gets created OK. Then the first select within the loop executes OK allowing me to read the multiple tables in ITABLES.
    * Create dynamic internal table and assign to FS
      call method cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ifc
        IMPORTING
          ep_table        = dy_table.
    ***OK, the dynamic tables is created here
      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>.
    loop at ITABLES.
    ***OK, no syntax errors in this select here
      select * appending corresponding fields of table <dyn_table>
                 from (ITABLES-TABNAME).
    endloop.
    data: ikonp like konp occurs 0 with header line.
    ***NOT OK, there is syntax errors
      select * into table ikonp
      from KONP for all entries in <dyn_table>
      where knumh = <dyn_table>-knumh.
    Some of the tables in ITABLES are pooled tables which does not allow me to use INNER JOINS. Therefore I need a second select in order to read the pricing table KONP.
    Thanks in advance for any hint.

    Hi Abel,
    You must be getting the syntax error that <dyn_table> does not contain the field knumh.
    try putiing the entire where clause in a char type variable say wa_char and then use in ur query as
    where (wa_char) .. it may work..
    concatenate 'knumh' '=' '<dyn_table>-knumh' INTO wa_char SEPARATED BY SPACES.
    SELECT ... from konp...
    where (wa_char).
    Revert if it doesnt work.

  • Tables in memory (Nested tables ?)

    For performance reasons, I would like to insert, update, etc...
    a table in memory. Can I use a nested table as if it was a
    normal table ? Can I do updates on nested tables with values
    from normal database tables ??
    Statement like : Update <nested-table> set <nested-
    table>.x=<value> where <nested-table>.y = <normal-table>.y
    Thanks for a quick response.

    The answer is yes and no.
    A nested table is a "collection" and can be referenced in a SQL
    statement using the pseudo-functions THE, CAST, MULTISET and
    TABLE. The nested table and varray collections can be a column
    in a database table (Oracle8) and are persistent. SQL
    statements cannot act on memory held nested tables, varray and
    index-by collections, which are transient. Index-by collections
    are same as the older PL/SQL tables.
    SQL statements cannot operate directly on transient collections.
    For speed you can define an index-by collection as a table of
    rowtype, and move data back and forth from database tables and
    memory held tables using SQL. Records and index-by tables are
    more efficient in Oracle 8 than in Oracle 7
    In PL/SQL you can use replacement (:=) on the record or
    record.column of the rowtype index-by collection. The downside
    is you have to keep track of your own indexing which is only
    BINARY_INTEGER, no SELECT, UPDATE, INSERT using FROM and WHERE
    on transient collections. This works in Oracle 7 also.
    Good Luck.

Maybe you are looking for

  • User sip folder have many .cache files with 4kb and the folder is becoming full and Lync Client stops working

    User sip folder have manu Mailitem&username&.cache files until folder is full and Lync client stops working.

  • XMP Toolkit & Visual Studio 6.0

    Hi! I'm a software developper from Germany and got started into XMP a couple of days ago. With Microsoft Visual Studio 2005, everything works fine (I compiled the sources and received the lib files as static libraries which I can use for my code). Do

  • Purchase documents per user

    Hi Experts, Is there any transaction or table where in we can get the purchase documents created by a given user? Thanks in advance

  • Column Widths of existing Report

    Hi, I'm wondering how you can modify the width of a particular column in a report. One of the columns has a lot of information, and I want this column to take up about half the page. I look in the Application Builder to see the properties of that col

  • Availability check enhancement

    Dear ABAP Gurus, I am a PP consultant and new in this field. When i do availability check for a production order then it includes Quality inspection stock also. I want the system to show a message or details of stock overview so that user know that m