How to move milion of records into another table

Hello, I would like to know if there is some way how to move large number of rows from one table into another.
We have several tables storing runtime data. Data older then e.g. 10 days are moved into hitory tables. Currently we do this via pl/sql, but I was wondering if it is possible to do this somehow in SQL only (to make it faster).
It is not possible to simply rename the tables, we need to move the data.
Thanks for ideas.

872553 wrote:
Hello, I would like to know if there is some way how to move large number of rows from one table into another.
We have several tables storing runtime data. Data older then e.g. 10 days are moved into hitory tables. Currently we do this via pl/sql, but I was wondering if it is possible to do this somehow in SQL only (to make it faster).
It is not possible to simply rename the tables, we need to move the data.
Thanks for ideas.To me looks like a Regular scheduled activity.
Hence, using DBMS_SCHEDULER should be helpful.
Create a Procedure to Copy the records from Transaction Table to History Table.
create or replace procedure copyTransactionToHistory
is
begin
  insert /*+ append */ into history_table
  select column_list
    from transaction_table
   where transaction_date = trunc(sysdate) - 10;
  commit;
end;
Use DBMS_SCHEDULER to create Job with specified Time Interval (10 Days in your situation). More information and Examples are provided <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28310/schedadmin006.htm#i1009099">Here</a>.There is also a possibilty of using NOLOGGING, but that will be recommended if the activity is not a regular scheduled activity and I do not think it would be a wise option to change the Table mode from LOGGING to NOLOGGING and vice-versa frequently.
You might also consider options to improve the Data movement.
1. Disabling Indexes/Constraints, if any, on History table.
2. Using PARALLEL DML's option
However, important information viz. your Oracle Version (Output of SELECT * FROM V$VERSION), Number of Records etc. are not mentioned which leaves us with no choice but to assume and suggest what we feel is best.
Please read and post the information accordingly for us to help you. {message:id=9360002}

Similar Messages

  • How to retrive one table records into another table by multiple records

    how to retrive table X records into another table Y by multiple records (means at once i want display 10 records) in form 6i .
    when i am written cursor it is ftching only one record.But i want to display all records at once.
    Declare
    Cursor cur_name is
    select PROTOCOL_NO,DOCNUM,SUBSETSN,REPEATSN,AESEQ,AETERM from coding_ae WHERE PROTOCOL_NO='KP229';
    Begin
    open cur_name;
    loop
    fetch cur_name into :PROTOCOL_NO,:DOCNUM,:SUBSETSN,:REPEATSN,:AESEQ,:AETERM;
    exit when cur_name%notfound;
    next_record;
    end loop;
    close cur_name;
    End;

    Hi,
    Make sure the cursor is in the detailed block. For that use 8GO_BLOCK* built-in. So the code will be
    Declare
    Cursor cur_name is
    select PROTOCOL_NO,DOCNUM,SUBSETSN,REPEATSN,AESEQ,AETERM from coding_ae;
    Begin
    GO_BLOCK('<detailed_block_name>');
    open cur_name;
    loop
    fetch cur_name into :PROTOCOL_NO,:DOCNUM,:SUBSETSN,:REPEATSN,:AESEQ,:AETERM;
    exit when cur_name%notfound;
    next_record;
    end loop;
    close cur_name;
    End;Regards,
    Manu.
    If my response or the response of another was helpful or Correct, please mark it accordingly

  • Insert Records into another tables

    Hi guyz,
    I have four tables as below
    1) employee
    empid (primary key)
    deptid
    emp_name
    work_location
    date_of_join
    emp_status
    date
    2) Termination
    empid reference employee
    deptid
    emp_name
    work_location
    terminate_date
    3) Resignation
    empid reference employee
    deptid
    emp_name
    work_location
    resign_date
    4) Vacation
    empid reference employee
    deptid
    emp_name
    work_location
    vac_date
    i have list item on employee form --> emp_status is list item whic contain Termination, Resignation, Vacation
    i want to update employee as well other tables if user select the respected field from the list item.
    if the user select termination/resignation from the list item the date item will be enable and user should enter the date,otherwise give the error on commit please enter the date and when user commit the record on employee it should update the table employee and delete the record belongs to Termination/Reisgnation and the record will be insert into Termination/Resignation table as select by user from list item.i tried this before but im fail i write the below code on pre-update trigger as below
    begin
    insert into termination
    (empid,deptid,emp_name,work_location,termination_date)select (empid,deptid,emp_name,work_location,date from employee where emp_status='Termination';
    delete from employee where emp_status='Termination' ;
    end;
    same as on resignation
    anybuddy help me how to do this task? to update the tables. im new in oracle.
    Regards
    Edited by: user10648713 on Dec 21, 2008 4:29 AM

    You run into the classic Mutating table problem. You cannot issue DML-statement against the same table the trigger is based on in a FOR EACH ROW-trigger.
    But even worse, you will cause any kind of client program to get in trouble if you implement such a logic. The client issues an update and as a result the record gets deleted. And, for you have a forms-module based i tell you that you will get problems with your forms-module.
    I still can't see whats the sense behind it, putting records into different tables dependant on a status. Oracle is built to manage large data volumes, so even for a large number of records that doesn't make sense to me.
    But anyway if you still want to deal with that multi-table-approach, go for the following:
    You will need three triggers on your table: a before-statement, an after-statement and a for-each-row-trigger:
    The before-statement will initialize a list of PK-Items
    The for-each-row will add the id of the processed row to the list
    The after-statement will loop over the list and process the rows.
    Create a Package for handling the logic including three procedures
    CREATE OR REPLACE PACKAGE PK_TRIGGER IS
      PROCEDURE PR_BS;
      PROCEDURE PR_ARIU(i_nEmpId IN NUMBER);
      PROCEDURE PR_AS;
    END;
    CREATE OR REPLACE PACKAGE BODY IS
      TYPE tData IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
      lData tData;
      PROCEDURE PR_BS IS
      BEGIN
        lData.DELETE;
      END;
      PROCEDURE PR_ARIU(i_nEmpId IN NUMBER) IS
        iPos PLS_INTEGER:=lData.COUNT+1;
      BEGIN
        lData(iPos):=i_nEmpId;
      END;
      PROCEDURE PR_AS IS
        CURSOR crEmp(i_nEmpId IN NUMBER) IS
          SELECT *
            FROM EMP
           WHERE EMP_ID=i_nEmpId;
        recEmp crEmp%ROWTYPE;
        iPos PLS_INTEGER;
      BEGIN
        iPos:=lData.FIRST;
        LOOP
          EXIT WHEN iPos IS NULL;
          -- Do whatever you want with the data in the record
          OPEN crEmp(lData(iPos));
          FETCH crEmp INTO recEmp;
          IF crEmp%FOUND THEN
            IF :NEW.EMP_STATUS='Termination' THEN
              DELETE FROM emp
               WHERE EMPID=lData(iPos);
              INSERT INTO TERMINATION (
                empid,
                deptid,
                emp_name,
                work_location,
                t_date
              ) VALUES (
                recEmp.empid,
                recEmp.deptid,
                recEmp.emp_name,
                recEmp.work_location,
                sysdate
            END IF;
          END IF; 
          CLOSE crEmp;
          -- Process next record
          iPos:=lIds.NEXT(iPos);
        END LOOP;
        lIds.DELETE;
      END;
    END;Now create the three triggers calling the appropiate procedures.

  • How to insert apex_application_files file content into another table?

    Hi All,
    I am using Apex 3.2 on Oracle 10g.
    I have used 'file_browse' item to upload a spreadsheet file into apex_application_files table.
    I would like to populate another table with the contents of this spreadsheet file from apex_application_files.
    I have spent almost 2 days looking for an answer on how to do this.
    Can you please tell me how to do this or point me to a good resource?
    Thank you,
    Naushad.

    Hi Thanks,
    I did see this code, but this is not what I was looking for. This code simply inserts the file into another table, but I was looking for the contents of this file (eg. a single column spreadsheet with 10 lines and all ten of these lines to be inserted as rows in a table) inserted as rows into another table.
    I managed to implement this by following below link:
    http://nzchaudhry.wordpress.com/2011/07/18/uploading-csv-using-oracle-application-express-apex/
    Thanks to all of you.
    Naushad.

  • How do you insert new records into multiple tables using the same unique primary key?

    I’ve created a PHP site and MySQL server using a free app called XAMPP.  I have successfully created a form in Dreamweaver that will write data to a (name) table in the SQL database.  Here’s my question: How do you write to two (or more) tables in the same database and pass the same primary key to both tables?  In the SQL database, I defined the first field as ID and set it as the primary key with auto update.  So, when you insert a new record, it creates a unique primary key for that record.  In my form, I’m capturing info that needs to be stored to two tables at the same time; a Name table and Address table. Since the Name and Address tables use the ID field as the primary key, I believe I will need to pass the ID value from the Name table to the insert of the Address table to insure they both have the same primary key, right?

    No. You probably need the primary key from one table to be a foreign key in the other tables. In any case, I believe you can use two methods to obtain the auto generated key. First with SQL:
    http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
    And the other using a PHP function:
    http://us3.php.net/mysql_insert_id

  • PS11 Organizer. how 2 move 1 file(folder) into another? drag & drop doesnt work...

    as it does in Win. also how can i create a new file/folder to put other files/folders into. ex a new folder names "Flowers" then put all the other files that contain flowers such as folder "red roses" into the "main" file of Flowers. Cant figure it out even using the book The Missing Manual. Thanks sara

    It sounds like this question is for Photoshop. This is a Flash forum. In any case, is your question about real folders on your computer, or server, or are asking about the files and folders in the "Layers" panel? Or, is your question about using the Library panel in Flash?

  • JDBC sender: after read insert records into another table

    Hi all,
    I send records from a SQL view (not a table) to RFC via proxy method.
    After reading a record from the view I would like to move this record to a database table called CHECKED. Can anyone provide me a solution for this or is this impossible. (there are 6 fields that have to be inserted in DB CHECKED after reading: admin, bukrs, dagbknr, bkstnr, datum, regel)
    Can I use an INSERT statement in my Update SQL Statement with variables or do I have to create an SP?
    Hope someone can help me out of here...
    Thanks in advance!
    Wouter.

    ur strucutre would of:
    <root>
    <Satement1>
    <TableName action=”INSERT”>
    <table>checked</table>
    <access>
    <admin>val</admin>
    <bukrs>val</bukrs>
    <dagbknr>val</dagbknr>
    <bkstnr>val</bkstnr>
    <datum>val</datum>
    <regel>val</regel>
    </access>
    </dbTableName>
    </StatementName1>
    </root>
    or u can use a SQL DML which wud pose a strucutre similar to
    <root>
      <stmt>
        <Customers action="SQL_DML">
          <access> INSERT CHECKED SET admin=’$admin$’, bukrs=’$bukrs$', dagbknr=’$dagbknr$’, bkstnr=’$bkstnr$', datum=’$datum$’, regel.=’$regel.$'
          </access>
        </Customers>
      </stmt>
    </root>
    for more inputs refer to <a href="/people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30 link on jdbc</a>

  • Hi All How to add an empty record into an table control in mpp

    Hi All,
            If my table control has 10 records , and I want to add an empty record when i click  a push button  for that what is the procedure to do it. please send me the source code for that its Urgent.
    Thanks&Regards.
    Bharat Kumar .

    WHEN 'INSL'.
    insert line above cursor position
          GET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
          SET CURSOR FIELD FLD LINE LINNO OFFSET OFF.
          IF FLD CP 'IT_SPFLI*' AND SY-SUBRC = 0.
            IF LINNO >= 1.
              LINNO = LINNO + TC_SPFLI-TOP_LINE - 1.
              CLEAR IT_SPFLI.
              INSERT IT_SPFLI INDEX LINNO.
              TC_SPFLI-LINES = TC_SPFLI-LINES + 1.
            ELSE.
              CLEAR IT_SPFLI.
              APPEND IT_SPFLI.
              TC_SPFLI-LINES = TC_SPFLI-LINES + 1.
            ENDIF.
          ENDIF.
    Use the above code as sample
    Reemz

  • Insert records into A table in Oracle from SAP

    Hello All,
    I want to know how can we insert a record into a table which is in another server say Oracle and this needs to be done everyday.
    For example, I have a record which gives the information whether the Daily Job has run Successfully or not. Now , I have to update this information in the Oracle table.

    refer amit perfect answer.
    Re: Need to put data in oracle table from sap.

  • Insert multiple records into a table(Oracle 9i) from a single PHP statement

    How can I insert multiple records into a table(Oracle 9i) from a single PHP statement?
    From what all I've found, the statement below would work if I were using MySQL:
         insert into scen
         (indx,share,expire,pitch,curve,surface,call)
         values
         (81202, 28, 171, .27, 0, 0, 'C' ),
         (81204, 28, 501, .25, 0, 0, 'C' ),
         (81203, 17, 35, .222, 0, 0, 'C' ),
         (81202, 28, 171, .27, 2, 0, 'C' ),
         (81204, 28, 501, .20, 0, 1, 'C' ),
         (81203, 28, 135, .22, 1, 0, 'C' )
    The amount of records varies into the multiple-dozens. My aim is to utilize the power of Oracle while avoiding the i/o of dozens of single-record inserts.
    Thank you,
    Will

    You could look at the INSERT ALL statement found in the documentation here:
    http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_913a.htm#2133161
    My personal opinion is that you probably won't see any benefit because under the hood I think Oracle will still be doing single row inserts. I could be wrong though.
    The only way to confirm was if you did a test of multiple inserts vs an INSERT ALL, that is if the INSERT ALL met your requirements.
    HTH.

  • How can I get a count at the same time I am inserting into another table

    I have a requirement where I have to find out the count(number of records inserted into another table) at the same time I insert into the table:
    Like
    I am copying records from table B to A, while doing this I have to find out how many records I've inserted since I need this count in subsequent steps
    INSERT INTO A
    SELECT * FROM B
    how can I store the count into any variable while doing above statement
    Please advice

    No, Warren that doesn't work!
    SQL> set serveroutput on
    SQL> declare
      2     vCtr  number := 0;
      3  begin
      4     insert into emp2
      5     select * from emp;
      6
      7     select count(*)
      8       into vCtr
      9       from emp2;
    10
    11     dbms_output.put_line('rows created '||to_char(vCtr));
    12  end;
    13  /
    rows created 15
    PL/SQL procedure successfully completed.
    SQL> declare
      2     vCtr  number := 0;
      3  begin
      4     insert into emp2
      5     select * from emp;
      6
      7     select count(*)
      8       into vCtr
      9       from emp2;
    10
    11     dbms_output.put_line('rows created '||to_char(vCtr));
    12  end;
    13  /
    rows created 30
    PL/SQL procedure successfully completed.
    SQL>

  • How  to  copy  the  table1selected  records into table 2 in webdynpro java.

    Hi 
           how  to  copy  the  table1selected  records into table 2 in webdynpro java.
    venkat
    Edited by: venkatpvr on Sep 23, 2011 11:53 AM

    Hi Venkat,
    You have 2 Value Nodes one for Table1 and second for Table2.
    Table1 node having one more Value Attribute i.e check Box data type is Boolean. Now you are requirement are select records from Table1 Node and click on One Method that records will moves to Second Table2 Node.
    Create One Method for getting the Records from 1-Table to 2-Table
    CopytoTable2 ()
    In this method you have to write code like this
    If (wdContext.nodeTable1.Checkbox(true))
    If(1. Check the Table1 Value Node Size()>0)
    Get the Table1 records and set to table2 Value node.
    Else
    Please select check box// Error message
    Hope this helps!!
    Regards
    Vijay K

  • How do I read uncommitted records of another session

    HI
    How do I read uncommitted records from another session in Oracle
    Thanks
    Ashwin

    Ashwin,
    Oh I might as well add my thoughts on this as it is kinda an important subject. I'm sort of a different kind of programmer where there have been several times I have wanted to see the changed results that another session is doing. I agree that the rest of the sessions should not be able to SEE the changes until they are committed. HOWEVER, as some examples show below, I don't see why a custom package can't be developed to allow a different session to be able to query the changed data for a particular SID, or even begin issuing DML commands of their own on this changed data to help change it further.
    In reality, there is no reason why a single (and I emphasize single) session is the only one who can see the changed data. It's the other user sessions that really should wait until all the necessary changes are complete before others can see the changed information. There isn't much point in me trying to explain this in great detail, but overall YES other users should wait until the changes are committed, but NO I do think I should be able to connect to another SIDs sessions and be able to view/perform operations on this changed data.
    There are more than enough examples of why others should wait before changes are committed (which I agree), but as some of these real life examples point out, there is a need to let more than a single session perform such changes, each of which need to see each other's changed data.
    No I am no expert on transaction processing (Andrew knows more for sure), but I've done enough to know as a developer I have a number of times wanted to be able to access/monitor another sessions uncommitted data. I think some records might be viewable using committed AUTONOMOUS_TRANSACTION records, but I've yet to really try it out much.
    Examples where one wants to see others uncommitted data
    (+) Say I want to change a hundred / thousand / million tables for a task. Each of these tables require joins/lookups to see each others data (including the changed records). I'm not going to want to do this with one session. Why can't 10 or a 100 sessions be created to allow complex DML operations to be performed to accomplish a given task. It's like thinking of there is 1 session doing this task, but on the oracle side, there are a unlimited number of SIDs processing (100 sqlplus scripts running), all being able to see the uncommitted data. Once everything is done, then the rest of the sessions can see this information.
    (+) A process is running and is changing records, and I want to monitor its progress or even assist it it's getting behind.
    (+) A real life example I just remembered was a soccer game done overseas where a time zone problem allowed people to still be able to place bets even after the game was over (they still paid people even though they knew the final score which was nice of them). In this case yes a process should have been stopped from allowing bets/inserts to continued, but having a second (or more) processes being able to KNOW for certain that another session is inserting data when it shouldn't be, this is can be stopped. And yes once again you can say one can monitor the sga for the appearance of inserts and stop it and yes remove the insert privs from that user after a certain time (come to think of it that wouldn't have worked since the time was off). But yes a whole slue of other things could have been done to stop this process from recording this information. However, NOT being able to select data from that table where the inserts were going into, until its toooooooooo late, is a real problem. Being able to see uncommitted information is very important if it needs to be stopped.
    Overall I do think there should be something considered to allow to a session to be able to see what data another session is doing, but it's more on the side from administration of the data and the performance required to get a task done, even if it means sharing uncommitted changes between sessions.
    Tyler D.

  • How to move my iTunes library to another laptop?

    How to move my iTunes library to another laptop?
    I used an external drive for my library so far and I just want to use this drive to organize my iTunes library on my Laptop.

    See this migrate iTunes library post.
    tt2

  • Images I move from one folder into another are disappearing, at first it was occurring immediately if I did not copy and paste the images. Today however I found out that images I had been using for days just up and vanished from their new location.

    Images I move from one folder into another are disappearing, at first it was occurring immediately and only if I did not copy and paste the images. Today however I found out that images I had been using for days just up and vanished from their new location. A few of these images had copies in another folder that remained and the ones I couldn't find may or may not have ever had copies. I had backed up my system with time machine recently as well, so I went into the backup to retreive the lost images. When I searched and found the backup copies I got the error "the file alias cannot be opened because the original cannot be located". The crazy thing is that the images that remained on my computer did not give me the same error and opened like they should.
    In short images that I am creating, saving, and using are disapearing so epically that even time machine versions are affected when retrieval is attempted. Any suggestions as to what I could be doing wrong without realizing it? Or perhaps other people have had similar bugs that are software related and have a solution?

    Hi Kevin,
    I understand what you tried to do but it doesn't work that way. Swapping drive names will just mess things up.
    You should be able to reconnect the files though: in the Locate Referenced Files dialog make sure you click the Show Reconnect Options button — this will give you access to all the connected drives. Locate one of the files and hit Reconnect All. Should do the trick.
    Best

Maybe you are looking for