Updating records in batch

Hi,
I have around 1 laks records in my database in one table.
I have to update one field of those records.
I do not want to update all records at a time, because its a production database.
There is no any range field avaialbe on that table.
Can somebody help me for doing this activity.
I want to update records in the batch, say of 500 or 1000.
Best regards,
Kiran

Why can't you just update all the rows? 100,000 rows isn't all that many these days, and Oracle locking is such that you would only lock users that were trying to update one of those rows, not insert a new row, for the length of the transaction. Is that really a problem? On my puny laptop, updating twice that many rows happens in 12 seconds
SCOTT @ jcave102 Local> create table a( col1 number );
Table created.
Elapsed: 00:00:00.12
SCOTT @ jcave102 Local> insert into a select rownum from all_objects;
42492 rows created.
Elapsed: 00:00:10.29
SCOTT @ jcave102 Local> insert into a select * from a;
42492 rows created.
Elapsed: 00:00:01.75
SCOTT @ jcave102 Local> insert into a select * from a;
84984 rows created.
Elapsed: 00:00:01.51
SCOTT @ jcave102 Local> commit;
Commit complete.
Elapsed: 00:00:00.01
SCOTT @ jcave102 Local> select count(*) from a;
  COUNT(*)
    169968
Elapsed: 00:00:00.04
SCOTT @ jcave102 Local> update a set col1=col1+1;
169968 rows updated.
Elapsed: 00:00:11.93If it is a problem, are you sure that other sessions reading data that's in the middle of being changed isn't a problem?
How will you handle the situation where your program dies in the middle? How will you know which rows have been processed and which have not?
Justin

Similar Messages

  • How to update bulk no of records using  Batch Update

    i am trying to insert and update records into multiple tables using Statement addBatch() and executeBatch() method. But some times it is not executing properly. some tables records are inserting and some tables it is not inserting. But I want all the records need to excute and commit or if any error is there then all records need to rollback.
    This is the code i am using.
    public String addBatchQueryWithDB(StringBuffer quries, Connection conNew,Statement stmtNew) throws Exception {
    String success="0";
    try {         
    conNew.setAutoCommit(false);
    String[] splitquery=quries.toString().trim().replace("||","##").split("\\|");
    for(int i=0;i<splitquery.length;i++) {
    //System.out.println("query.."+i+".."+splitquery.trim().replace("##","||"));
    stmtNew.addBatch(splitquery[i].trim().replace("##","||"));
    int[] updCnt = stmtNew.executeBatch();
    for(int k=0;k<updCnt.length;k++){
    int test=updCnt[k];
    if(test>=0){
    success=String.valueOf(Integer.parseInt(success)+1);
    // System.out.println(".updCnt..."+updCnt[k]);
    System.out.println("success...length.."+success);
    if(updCnt.length==Integer.parseInt(success)){
    success="1";
    //conNew.commit();
    } catch (BatchUpdateException be) {
    //handle batch update exception
    int[] counts = be.getUpdateCounts();
    for (int i=0; i<counts.length; i++) {
    System.out.println("DB::addBatchQuery:Statement["+i+"] :"+counts[i]);
    success="0";
    conNew.rollback();
    throw new Exception(be.getMessage());
    } catch (SQLException ee) {
    success="0";
    System.out.println("DB::addBatchQuery:SQLExc:"+ee);
    conNew.rollback();
    throw new Exception(ee.getMessage());
    } catch (Exception ee) {
    success="0";
    System.out.println("DB::addBatchQuery:Exc:"+ee);
    conNew.rollback();
    throw new Exception(ee.getMessage());
    }finally {
    // determine operation result
    if(success!=null && success.equalsIgnoreCase("1")){
    System.out.println("commiting......");
    conNew.commit();
    }else{
    System.out.println("rolling back......");
    success="0";
    conNew.rollback();
    conNew.setAutoCommit(true);
    return success;
    }

    Koteshwar wrote:
    Thank you for ur reply,
    I am using single connection only, but different schemas. Then I am passing a Stringbuffer to a method, and First iam setting con.setAutoCommit(false); and then in that method i am splitting my queries in stringbuffer and adding it to stmt.addBatch(). After that I am executing the batch.after executing the batch i am commiting the connectionIf I am reading that right then you should stop using Batch.
    The intent of Batch is that you have one statement and you are going to be using it over and over again with different data.

  • A better way to delete IT2001 records in batch.,

    Hi Gurus,
    A little problem here. Due to data source error, I need to delete IT2001 records in batch.
    Currently I am using standard report RPUREOPN to do this. But RPUREOPN will not update those deduction in IT2006 quota. So I've to delete & reupload cooresponding IT2006 quota data which is inconvenient.
    Is there a better way to do this job? I mean deleting IT2001 in batch and also update the deductions in IT2006.
    Thanks in adv!
    Br,Kee

    After running the report you mentioned above to delete absences/attn you can try running the report RPTUPD00 to revaluate the attendance and absence.
    Regards,
    Divya

  • How to update for single batch id in one a table by using mutiple parametrs

    Hi Everyone,
    I need simple pl/sql logic to update one table using with some parametrs.I need a logic for single batch_id there will be 100 of records are there .how do i update my custom table ? how do i show how many records have been updated for each batch ? how to handle excpetions while updating ?Som body could help me it will be great.
    -- Sample Code
    PROCEDURE UPDATE_table (P_IN_BATCH_ID IN Number,
    P_IN_TRANS_ID IN number,
    P_IN_TRANS_STATUS IN varchar2,
    P_IN_ERROR_MSSG IN varchar2
                                                 ) is
    cursor
    select*from xx_cust_table
    BEGIN
    UPDATE xx_cust_table
    SET TRANSMISSION_ID=P_IN_TRANS_ID
    TRANSMISSION_MSG=P_IN_TRANS_STATUS     
    PROCESSED_FLAG=P_IN_ERROR_MSSG
    where BATCH_ID=P_IN_BATCH_ID
    END UPDATE_table;

    PROCEDURE UPDATE_table (P_IN_BATCH_ID IN Number,
    P_IN_TRANS_ID IN number,
    P_IN_TRANS_STATUS IN varchar2,
    P_IN_ERROR_MSSG IN varchar2
    ) IS
    BEGIN
    UPDATE xx_cust_table
           SET TRANSMISSION_ID=P_IN_TRANS_ID
                  TRANSMISSION_MSG=P_IN_TRANS_STATUS
                   PROCESSED_FLAG=P_IN_ERROR_MSSG
      WHERE BATCH_ID=P_IN_BATCH_ID;
    DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT||' rows updated!');
    --EXCEPTION
    --  WHEN DUP_VAL_ON_INDEX THEN
    --    DBMS_OUTPUT.PUT_LINE('Duplicate value');
    --  WHEN OTHERS THEN
    --   <display sqlcode and sqlerrm>
    END UPDATE_table;

  • Error records in Batch Input

    how to get the list of error records from batch input method.

    u can record them using bdcmsgcoll and also in t100 table.
    *&      Form  prepare_bdc_tab
    Prepare BDC Table for updating Copack Purchase Prices
    FORM prepare_bdc_tab .
      REFRESH gv_bdc_tab.
    *MEK1 intial screen
      PERFORM bdc_dynpro      USING 'SAPMV13A' '0100'.
      PERFORM bdc_field       USING 'BDC_CURSOR' 'RV13A-KSCHL'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      PERFORM bdc_field       USING 'RV13A-KSCHL' 'PB00'.
      PERFORM bdc_dynpro      USING 'SAPLV14A' '0100'.
      PERFORM bdc_field       USING 'BDC_CURSOR' 'RV130-SELKZ(03)'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '=WEIT'.
      PERFORM bdc_field       USING 'RV130-SELKZ(01)' ''.
      PERFORM bdc_field       USING 'RV130-SELKZ(03)' 'X'.
      PERFORM bdc_dynpro      USING 'SAPMV13A' '1018'.
      PERFORM bdc_field       USING 'BDC_CURSOR' 'RV13A-DATBI(01)'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      PERFORM bdc_field       USING 'KOMG-LIFNR' gs_data-lifnr.
      PERFORM bdc_field       USING 'KOMG-MATNR' gs_data-matnr.
      PERFORM bdc_field       USING 'KOMG-EKORG' gs_data-ekorg.
      PERFORM bdc_field       USING 'KOMG-ESOKZ(01)' '0'.
      PERFORM bdc_field       USING 'KONP-KBETR(01)'  gs_data-kbetr.
      PERFORM bdc_field       USING 'KONP-KONWA(01)' 'USD'.
      PERFORM bdc_field       USING 'KONP-KPEIN(01)'  gs_data-peinh.
      PERFORM bdc_field       USING 'RV13A-DATAB(01)' gs_data-datab.
      PERFORM bdc_field       USING 'RV13A-DATBI(01)' gs_data-datbi.
      PERFORM bdc_dynpro      USING 'SAPMV13A' '1018'.
      PERFORM bdc_field       USING 'BDC_CURSOR'  'KOMG-ESOKZ(01)'.
      PERFORM bdc_field       USING 'BDC_OKCODE'  '=SICH'.
    ENDFORM.                    " prepare_bdc_tab
           Start new screen                                              *
    FORM bdc_dynpro USING program dynpro.
      CLEAR:  gs_bdc_tab.
      gs_bdc_tab-program  = program.
      gs_bdc_tab-dynpro   = dynpro.
      gs_bdc_tab-dynbegin = gc_x.
      APPEND gs_bdc_tab TO gv_bdc_tab.
    ENDFORM.                    "bdc_dynpro
           Insert field
    FORM bdc_field USING fnam fval.
      CLEAR:  gs_bdc_tab.
      gs_bdc_tab-fnam = fnam.
      gs_bdc_tab-fval = fval.
      APPEND gs_bdc_tab TO gv_bdc_tab.
    ENDFORM.                    "bdc_field
    *&      Form  call_transaction_mek1
    Call Transaction for updating CoPack Price entries
    FORM call_transaction_mek1 .
    *Local  Data Declaration
      CONSTANTS:lc_e         TYPE c VALUE 'E',
                lc_mek1(4)   TYPE c VALUE 'MEK1',
                lc_mode(1)   TYPE c VALUE 'N',
                lc_update(1) TYPE c VALUE 'U'.
      REFRESH: gv_bdc_msg.
    *Call MEK1 Transaction
      CALL TRANSACTION     lc_mek1
                USING      gv_bdc_tab
                 MODE      lc_mode
               UPDATE      lc_update
        MESSAGES INTO      gv_bdc_msg.
      IF sy-subrc NE 0.
        IF gv_bdc_open_flag IS INITIAL.
          PERFORM bdc_open_group.
          gv_bdc_open_flag = gc_x.
        ENDIF.
        PERFORM bdc_insert_group.
        DELETE gv_bdc_msg WHERE msgtyp NE lc_e.
        REFRESH:gv_bdc_msg,
                gv_bdc_tab.
      ENDIF.
      CLEAR:gs_data.
    ENDFORM.                    " call_transaction_mek1
    *&      Form  bdc_open_group
    Subroutine for Open BDC Group
    FORM bdc_open_group .
      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          client              = sy-mandt
          group               = p_esnm
          user                = sy-uname
        EXCEPTIONS
          client_invalid      = 1
          destination_invalid = 2
          group_invalid       = 3
          group_is_locked     = 4
          holddate_invalid    = 5
          internal_error      = 6
          queue_error         = 7
          running             = 8
          system_lock_error   = 9
          user_invalid        = 10
          OTHERS              = 11.
      IF sy-subrc <> 0.
        WRITE :/ text-040. "Error in BDC_OPEN_GROUP
        EXIT.
      ENDIF.
    ENDFORM.                    " bdc_open_group
    *&      Form  BDC_INSERT_GROUP
    Subroutine for calling BDC_INSERT for inserting BDC Table
    FORM bdc_insert_group .
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode            = 'MEK1'
        TABLES
          dynprotab        = gv_bdc_tab
        EXCEPTIONS
          internal_error   = 1
          not_open         = 2
          queue_error      = 3
          tcode_invalid    = 4
          printing_invalid = 5
          posting_invalid  = 6
          OTHERS           = 7.
      IF sy-subrc <> 0.
        WRITE :/ text-041. "Error in BDC_INSERT
        EXIT.
      ENDIF.
    ENDFORM.                    " BDC_INSERT_GROUP
    *&      Form  BDC_CLOSE_GROUP
    Subroutine for Closeing of BDC group
    FORM bdc_close_group .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          not_open    = 1
          queue_error = 2
          OTHERS      = 3.
      IF sy-subrc <> 0.
        WRITE :/ text-042.         "Error in BDC_CLOSE_GROUP.
        EXIT.
      ENDIF.
    ENDFORM.                    " BDC_CLOSE_GROUP
    if u can see gv_bdc_msg is holding the messages
    hope this helps
    dont go through the code as it is ...it is only part of it
    Message was edited by:
            Durgaprasad Kare

  • No matching records found 'Batchs and Serial Numbers' (OSRD) (ODBC-1028)

    Hi experts,
    These days In our 2007 system, we had a serial number maintain problem on 'Recipt from Production' transaction.
    When we open 'Serial Number Management' form, we can not update S/N by 'Complete' operation mode for some items. but it works for 'Update' operation mode.
    The system show 'No matching records found 'Batchs and Serial Numbers' (OSRD) (ODBC-1028)' in the status bar.
    How could I fix it ?
    thanks for your help.

    Hi Wilson,
    Do you manage the serial number transaction for respective item with "On Every Transaction" or "On Release Only" (in Item master data)? Because, when you manage those item with "On Every Transaction", you should already filled the serial number when you tried to receive those item whether by Goods Receipt PO or Receive from Production transaction.
    "Complete" operation in Serial Numbers Management only works for item which you manage by "On Release Only", it doesn't work for item which managed using "On Every Transaction". Hope I don't misunderstood your question.
    Best Regards,
    Hendry Wijaya

  • Detect updated records

    Hi all,
    is there a way to find all the updated record of a table?
    (I don't have any field on the table that can help me such as update_date or similar).
    Thanks.

    I don't think we're disagreeing, just want to make sure I'm following
    rp0428 wrote:
    >
    If there was a timestamp on the row, your refresh process would need to know the timestamp that the destination was current as of and would need to pull the changes since that timestamp.
    >
    Unfortunately that approach has a big, gaping hole which can render it unreliable.True. But using a timestamp to do the replication was never a suggestion here. Dan correctly pointed out that if you wanted to convert the SCN to a timestamp, there are limits on the accuracy of the conversion and the time frame during which that conversion is possible. I was simply emphasizing that there was no need to do that conversion in the first place unless you needed to know when a row changed rather than merely that it had changed and I compared how you would identify changed data using the ORA_ROWSCNto how you might do it if there was a timestamp that could be used.
    The value of the timestamp is typically set by using SYSDATE or SYSTIMESTAMP but the record containing that value isn't 'current' until the record is committed.
    So if a query/process begins before midnight tonight but is not commited until after midnight (e.g. 1am tomorrow) the timestamp will have today's value but will NOT get pulled by a query after midnight but before 1am and processed in tonight's batch process.
    That data will also not get processed in tomorrow's batch process because the timestamp makes it appear as if it has already been processed.
    Timestamp's only work reliably when it is known that the above use case cannot happen.Or if you define a maximum transaction length and pull data since last_extract_time - maximum_transaction_length. Obviously not perfect, which is why there are tons of technologies to allow you to replicate changes (CDC, Streams, materialized views, etc.) rather than rolling your own solution. Using the SCN would, of course, be preferrable from a correctness standpoint in the extremely rare case that there is a need to roll your own change data capture process.
    Justin

  • Error in updating records brought by LOV

    Hi everybody
    I am using Oracle 10 g
    when fetching data from the database by choosing a specific record from LOV then trying to make "save" means "commit" I have this error
    FRM-40509: Oracle error: unable to update record
    I think there is a problem in mapping btw the record in the form and the cursor pointing to that record in the database because when i execute "next_recod" button after choosing one in LOV it go to the record next the one specified before choosing from LOV
    knowing that updating process working correctly when choosing by ("first_record, previous_record, next_record or last_record)
    so what is the solution
    please help
    thank you very much

    yes please
    I didn't know what do you mean by customized or default menu
    I build LOV using the wizard and bind it by a query to a table then make Show_LOV from the form
    so when I choose one of the rows and they brought to the text boxes assigend to them after that when I make "Commit" I got that error
    thank you for help
    and sorry for bieng late in reply, I don't have enternet after 2:00 pm

  • Need help to insert and update records in MDM

    Hi ,
    I am trying to develop an webdynpro application which can create and update records in tables of a repository of MDM . For example .. I want to insert values and later update values in Vendor table.
    I am new to webdynpro and MDM. If any one can help step by step or can send a sample code which I can be ready to use that would be great help.
    If anyone can have a sample code .. kindly mail to "[email protected]"
    It is urgent. Please help.
    Regards,
    Niraj
    Edited by: Niraj Kumar on May 23, 2008 6:50 AM

    Hi Niraj,
    Are u going to work with webdynpro Java/ABAP?
    some materials which are found useful are sent.
    Cheers,
    Mary

  • How to send an updated list using batch job

    Hi All,
      The program displays data on the screen, if the data looks ok, then there is an option to update.
    When I run update, the program submits a batch job and the basic list gets updated, but my batch job is still sending the data on the screen. how can i send the updated list using batch job.
      Ex: output of the program
                    1         2
           there is an update button on the screen, when i press update button, my program submits in batch job, the above list becomes
                    1        2
                    3        4
    but when i check the spool, it shows the o/p as         1           2 ..it is not sending the updated list.
    Please suggest me how to send the updated data
    Thanks,
    Kumar

    Hi Krishna,
      I have added a button on the alv list. when i press update button, my program updates the list, then submits the batch job. I am attaching the sample test program i am trying with, please suggest me how can i get the updated list.
    *& Report  ZTESTSSSSS
    REPORT  ZTESTSSSSS.
    DATA: gt_fieldcat TYPE slis_fieldcat_alv,
          lt_fieldcat type slis_t_fieldcat_alv,
          gt_sort     TYPE slis_t_sortinfo_alv,
          g_repid     LIKE sy-repid,
          gt_layout   TYPE slis_layout_alv.
    start-of-selection.
      lt_return-type = 'S'.
      lt_return-message = 'test message'.
      append lt_return.
      CLEAR gt_fieldcat.
      gt_fieldcat-fieldname = 'TYPE'.
      gt_fieldcat-outputlen = '3'.
      gt_fieldcat-tabname   = 'LT_RETURN'.
      gt_fieldcat-seltext_l  =  'Type'.
      gt_fieldcat-seltext_m  =  'Type'.
      gt_fieldcat-seltext_s  =  'Type'.
      APPEND gt_fieldcat TO lt_fieldcat.
      CLEAR gt_fieldcat.
      gt_fieldcat-fieldname = 'MESSAGE'.
      gt_fieldcat-outputlen = '15'.
      gt_fieldcat-tabname   = 'LT_RETURN'.
      gt_fieldcat-seltext_l  =  'Message'.
      gt_fieldcat-seltext_m  =  'Message'.
      gt_fieldcat-seltext_s  =  'Message'.
      APPEND gt_fieldcat TO lt_fieldcat.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = sy-repid
          I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
          I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
          IT_FIELDCAT              = lt_fieldcat
        TABLES
          T_OUTTAB                 = lt_return
        EXCEPTIONS
          PROGRAM_ERROR            = 1
          OTHERS                   = 2.
    *&      Form  set_pf_status
          text
         -->RT_EXTAB   text
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDARD'.
    ENDFORM. "Set_pf_status
    *&      Form  user_command
          text
         -->R_UCOMM      text
         -->RS_SELFIELD  text
    FORM user_command USING r_ucomm     LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      DATA: li_count TYPE I.
      IF r_ucomm EQ 'UPD'.
    Adding another message
        lt_return-type = 'S'.
        lt_return-message = 'Another test message'.
        APPEND lt_return.
        rs_selfield-refresh = 'X'.
        rs_selfield-col_stable = 'X'.
        rs_selfield-row_stable = 'X'.
        l_upd = 'X'.
       LOOP AT lt_return.
         WRITE: / lt_return-type, lt_return-message.
       ENDLOOP.
        IF sy-batch IS INITIAL.
          l_upd = 'X'.
    Open the Job
          CALL FUNCTION 'JOB_OPEN'
            EXPORTING
              jobname          = w_name
            IMPORTING
              jobcount         = w_number
            EXCEPTIONS
              cant_create_job  = 1
              invalid_job_data = 2
              jobname_missing  = 3
              OTHERS           = 4.
          IF sy-subrc = 0.
            SUBMIT ('ZTESTSSSSS') VIA JOB w_name NUMBER w_number
                    AND RETURN
                    WITH p_recnnr = p_recnnr.
            CALL FUNCTION 'JOB_CLOSE'
              EXPORTING
                jobcount             = w_number
                jobname              = w_name
                strtimmed            = 'X'
              EXCEPTIONS
                cant_start_immediate = 1
                invalid_startdate    = 2
                jobname_missing      = 3
                job_close_failed     = 4
                job_nosteps          = 5
                job_notex            = 6
                lock_failed          = 7
                OTHERS               = 8.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.  "User_command
    Thanks,
    Kumar

  • How can I update record in the block that Data Source is PROCEDURE?

    I like use Procedure as the Data Source of block.It's very flexible.
    Usually I do this only query the record,but now I must update record in the block that Data Source is Procedure.
    What next step can I do?Can anyone offer some examples?
    This is example, you goto
    http://www.2shared.com/file/1923834/e0b65fb7/Example.html
    Wait about 30 sec, Click "Save file to your PC: click here",and then you can download it.

    <p>I have written an article about some advanced Forms features.
    Have a look at the 2.3.2 paragraph</p>
    Francois

  • Mapping problem with compressed key update record

    Hi, could you please advise?
    I'm getting the following problem:
    About a week ago replicat abened with "Error in mapping" error. I found in discard file some record looking like:
    filed1 = NULL
    field2 =
    field3 =
    field4 =
    field5 =
    datefield = -04-09 00:00:00
    field6 =
    field8 =
    field9 = NULL
    field10 =
    Where filed9 = @GETENV("GGHEADER", "COMMITTIMESTAM"), field10 = = @GETENV("GGHEADER", "COMMITTIMESTAM"), others are table fields mapped by USEDEFAULTS
    So I got Mapping problem with compressed key update record at 2012-06-01 15:44
    I guess I need to mention that extract failed in 5 minuts before it with: VAM function VAMRead returned unexpected result: error 600 - VAM Client Report <[CFileInfo::Read] Timeout expired after 10 retries with 1000 ms delay, waiting to read transaction log or backup files. To increase the number of retries, use SETENV (GGS_CacheRetryCount = n) in Extract parameter file. To control retry delay time, use SETENV (GGS_CacheRetryDelay = n). handle: 0000000000000398 ReadFile GetLastError:997 Wait GetLastError:997>.
    I don't know if it has ther same source as data corruption, could you tell me if it is?
    Well, I created new extract, starting 2012-06-01 15:30 to check if there was something with extract at the time, but got the same error.
    If I run extract beging at 15:52 it starts and works.
    But well, I got another one today. Data didn't look that bad, but yet one column came with null value:( And I'm using it as a key column, so I got Mapping problem with compressed key update record again:(
    I'm replicating from SQL Server 2008 to Oracle 11g.
    I'm actually using NOCOMPRESSUPDATES in Extract.
    CDC is enabled for all tables replicated. The only thing is that it is enabled not by ADD TRANDATA command, but by SQL Server sys.sp_cdc_enable_table, does it matter?
    Could you please advise why does it happen?

    Well, the problem begins somewhere in extract or before extract, may be in transaction log, I don't know:(
    Here are extract parameters:
    EXTRACT ETCHECK
    TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT
    SOURCEDB TEST, USERID **, PASSWORD *****
    exttrail ./dirdat/ec
    NOCOMPRESSUPDATES
    NOCOMPRESSDELETES
    TABLE tst.table1, COLS (field1, field2, field3, field4, field5, field6, field7, field8 );
    TABLE tst.table2, COLS (field1, field2, field3, field4 );
    Data pump:
    EXTRACT DTCHECK
    SOURCEDB TEST, USERID **, PASSWORD *****
    RMTHOST ***, MGRPORT 7809
    RMTTRAIL ./dirdat/dc
    TABLE tst.table1;
    TABLE tst.table2;
    Replicat:
    REPLICAT rtcheck
    USERID tst, PASSWORD ***
    DISCARDFILE ./dirrpt/rtcheck.txt, PURGE
    SOURCEDEFS ./dirdef/sourcei.def
    HANDLECOLLISIONS
    UPDATEDELETES
    MAP tst.table1, t.table1, COLMAP (USEDEFAULTS , filed9 = @GETENV("GGHEADER", "COMMITTIMESTAMP"), filed10= @CASE(@GETENV("GGHEADER", "OPTYPE"), "SQL COMPUPDATE", "U", "PK UPDATE", "U",@GETENV("GGHEADER", "OPTYPE")) ), KEYCOLS (field3);
    MAP dbo.TPROCPERIODCONFIRMSTAV, TARGET R_019_000001.TPROCPERIODCONFIRMSTAV, COLMAP (USEDEFAULTS , field5 = @GETENV("GGHEADER", "COMMITTIMESTAMP"), filed6= @CASE(@GETENV("GGHEADER", "OPTYPE"), "SQL COMPUPDATE", "U", "PK UPDATE", "U",@GETENV("GGHEADER", "OPTYPE")) ), KEYCOLS (filed1, field2, field3);
    Rpt file for replicat:
    Oracle GoldenGate Delivery for Oracle
    Version 11.1.1.1 OGGCORE_11.1.1_PLATFORMS_110421.2040
    Windows x64 (optimized), Oracle 11g on Apr 22 2011 00:34:07
    Copyright (C) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
    Starting at 2012-06-05 12:49:38
    Operating System Version:
    Microsoft Windows Server 2008 R2 , on x64
    Version 6.1 (Build 7601: Service Pack 1)
    Process id: 2264
    Description:
    ** Running with the following parameters **
    REPLICAT rtcheck
    USERID tst, PASSWORD ***
    DISCARDFILE ./dirrpt/rtcheck.txt, PURGE
    SOURCEDEFS ./dirdef/sourcei.def
    HANDLECOLLISIONS
    UPDATEDELETES
    MAP tst.table1, t.table1, COLMAP (USEDEFAULTS , filed9 = @GETENV("GGHEADER", "COMMITTIMESTAMP"), filed10= @CASE(@GETENV("GGHEADER", "OPTYPE"), "SQL COMPUPDATE", "U", "PK UPDATE", "U",@GETENV("GGHEADER", "OPTYPE")) ), KEYCOLS (field3);
    MAP dbo.TPROCPERIODCONFIRMSTAV, TARGET R_019_000001.TPROCPERIODCONFIRMSTAV, COLMAP (USEDEFAULTS , field5 = @GETENV("GGHEADER", "COMMITTIMESTAMP"), filed6= @CASE(@GETENV("GGHEADER", "OPTYPE"), "SQL COMPUPDATE", "U", "PK UPDATE", "U",@GETENV("GGHEADER", "OPTYPE")) ), KEYCOLS (filed1, field2, field3);
    CACHEMGR virtual memory values (may have been adjusted)
    CACHEBUFFERSIZE: 64K
    CACHESIZE: 512M
    CACHEBUFFERSIZE (soft max): 4M
    CACHEPAGEOUTSIZE (normal): 4M
    PROCESS VM AVAIL FROM OS (min): 1G
    CACHESIZEMAX (strict force to disk): 881M
    Database Version:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE     11.2.0.1.0     Production
    TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
    Database Language and Character Set:
    NLS_LANG = "AMERICAN_AMERICA.CL8MSWIN1251"
    NLS_LANGUAGE = "AMERICAN"
    NLS_TERRITORY = "AMERICA"
    NLS_CHARACTERSET = "CL8MSWIN1251"
    For further information on character set settings, please refer to user manual.
    ** Run Time Messages **
    Opened trail file ./dirdat/dc000000 at 2012-06-05 12:49:39
    2012-06-05 12:58:14 INFO OGG-01020 Processed extract process RESTART_ABEND record at seq 0, rba 925 (aborted 0 records).
    MAP resolved (entry tst.table1):
    MAP tst.table1, t.table1, COLMAP (USEDEFAULTS , filed9 = @GETENV("GGHEADER", "COMMITTIMESTAMP"), filed10= @CASE(@GETENV("GGHEADER", "OPTYPE"), "SQL COMPUPDATE", "U", "PK UPDATE", "U",@GETENV("GGHEADER", "OPTYPE")) ), KEYCOLS (field3);
    2012-06-05 12:58:14 WARNING OGG-00869 No unique key is defined for table table1. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
    Using the following default columns with matching names:
    field1=field1, field2=field2, field3=field3, field4=field4, field5=field5, field6=field6, field7=field7, field8=field8
    Using the following key columns for target table R_019_000001.TCALCULATE: field3.
    2012-06-05 12:58:14 WARNING OGG-01431 Aborted grouped transaction on 'tst.table1', Mapping error.
    2012-06-05 12:58:14 WARNING OGG-01003 Repositioning to rba 987 in seqno 0.
    2012-06-05 12:58:14 WARNING OGG-01151 Error mapping from tst.table1 to tst.table1.
    2012-06-05 12:58:14 WARNING OGG-01003 Repositioning to rba 987 in seqno 0.
    Source Context :
    SourceModule : [er.main]
    SourceID : [er/rep.c]
    SourceFunction : [take_rep_err_action]
    SourceLine : [16064]
    ThreadBacktrace : [8] elements
    : [C:\App\OGG\replicat.exe(ERCALLBACK+0x143034) [0x00000001402192B4]]
    : [C:\App\OGG\replicat.exe(ERCALLBACK+0x11dd44) [0x00000001401F3FC4]]
    : [C:\App\OGG\replicat.exe(<RCALLBACK+0x11dd44) [0x000000014009F102]]
    : [C:\App\OGG\replicat.exe(<RCALLBACK+0x11dd44) [0x00000001400B29CC]]
    : [C:\App\OGG\replicat.exe(<RCALLBACK+0x11dd44) [0x00000001400B8887]]
    : [C:\App\OGG\replicat.exe(releaseCProcessManagerInstance+0x25250) [0x000000014028F200]]
    : [C:\Windows\system32\kernel32.dll(BaseThreadInitThunk+0xd) [0x000000007720652D]]
    : [C:\Windows\SYSTEM32\ntdll.dll(RtlUserThreadStart+0x21) [0x000000007733C521]]
    2012-06-05 12:58:14 ERROR OGG-01296 Error mapping from tst.table1 to tst.table1.
    * ** Run Time Statistics ** *
    Last record for the last committed transaction is the following:
    Trail name : ./dirdat/dc000000
    Hdr-Ind : E (x45) Partition : . (x04)
    UndoFlag : . (x00) BeforeAfter: A (x41)
    RecLength : 249 (x00f9) IO Time : 2012-06-01 15:48:56.285333
    IOType : 115 (x73) OrigNode : 255 (xff)
    TransInd : . (x03) FormatType : R (x52)
    SyskeyLen : 0 (x00) Incomplete : . (x00)
    AuditRBA : 44 AuditPos : 71176199289771
    Continued : N (x00) RecCount : 1 (x01)
    2012-06-01 15:48:56.285333 GGSKeyFieldComp Len 249 RBA 987
    Name: DBO.TCALCULATE
    Reading ./dirdat/dc000000, current RBA 987, 0 records
    Report at 2012-06-05 12:58:14 (activity since 2012-06-05 12:58:14)
    From Table tst.table1 to tst.table1:
    # inserts: 0
    # updates: 0
    # deletes: 0
    # discards: 1
    Last log location read:
    FILE: ./dirdat/dc000000
    SEQNO: 0
    RBA: 987
    TIMESTAMP: 2012-06-01 15:48:56.285333
    EOF: NO
    READERR: 0
    2012-06-05 12:58:14 ERROR OGG-01668 PROCESS ABENDING.
    Discard file:
    Oracle GoldenGate Delivery for Oracle process started, group RTCHECK discard file opened: 2012-06-05 12:49:39
    Key column filed3 (0) is missing from update on table tst.table1
    Missing 1 key columns in update for table tst.table1.
    Current time: 2012-06-05 12:58:14
    Discarded record from action ABEND on error 0
    Aborting transaction on ./dirdat/dc beginning at seqno 0 rba 987
    error at seqno 0 rba 987
    Problem replicating tst.table1 to tst.table1
    Mapping problem with compressed key update record (target format)...
    filed1 = NULL
    field2 =
    field3 =
    field4 =
    field5 =
    datefield = -04-09 00:00:00
    field6 =
    field8 =
    field9 = NULL
    field10 =
    Process Abending : 2012-06-05 12:58:14

  • Mapping problem with compressed key update record (target format)...

    Hi Guys,
    Getting below error while replication from Source to target. Source table is having NOT NULL Column, but on target replicat process giving error about some NULL value ??
    How to overcome this issue, any idea...
    2011-08-04 10:35:04 INFO OGG-00995 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: REPLICAT RMASTRK starting.
    2011-08-04 10:35:05 INFO OGG-00996 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: REPLICAT RMASTRK started.
    2011-08-04 10:35:06 WARNING OGG-00869 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: OCI Error ORA-01407: cannot update ("INFRA"."CUST"."CODE") to NULL (status = 1407), SQL <UPDATE "INFRA"."CUST" SET "ORD_ID" = :a2,"DP_ID" = :a3,"EXCHNG_CODE" = :a4,"ORD_QTY" = :a5,"ORD_PRICE" = :a6,"CODE" = :a7,"MKRT_CODE" = :a8,"CHANN>.
    2011-08-04 10:35:06 WARNING OGG-01004 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: Aborted grouped transaction on 'INFRA.CUST', Database error 1407 (ORA-01407: cannot update ("INFRA"."CUST"."SCRP_CODE") to NULL).
    2011-08-04 10:35:06 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: Repositioning to rba 44132192 in seqno 68708.
    2011-08-04 10:35:06 *WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: SQL error 1407 mapping INFRA.CUST to INFRA.CUST OCI Error ORA-01407:* *cannot update ("INFRA"."CUST"."SCRP_CODE") to NULL (status = 1407), SQL <UPDATE "INFRA"."CUST" SET "ORD_ID" = :a2,"DP_ID" = :a3,"EXCHNG_CODE"=:a4,"ORD_QTY"*
    *= :a5,"ORD_PRICE" = :a6,"SCRP_CODE" = :a7,"MKRT_CODE" = :a8,"CHANN>.*
    2011-08-04 10:35:06 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: Repositioning to rba 44132192 in seqno 68708.
    2011-08-04 10:35:06 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: Error mapping from INFRA.CUST to INFRA.CUST.
    2011-08-04 10:35:06 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, rmastrk.prm: PROCESS ABENDING.
    Oracle GoldenGate Delivery for Oracle process started, group RMASTRK discard file opened: 2011-08-04 10:35:05
    Current time: 2011-08-04 10:35:06
    Discarded record from action ABEND on error 1407
    OCI Error ORA-01407: cannot update ("INFRA"."CUST"."SCRP_CODE") to NULL
    (status = 1407), SQL <UPDATE "INFRA"."CUST" SET "ORD_ID" = :a2,"MKRT_CODE" = :a8,"CHANN>
    Aborting transaction on ./dirdat/pm beginning at seqno 68708 rba 44132192
    error at seqno 68708 rba 44132192
    Problem replicating INFRA.CUST to INFRA.CUST
    *Mapping problem with compressed key update record (target format)...*
    ORD_QTY = 500
    ORD_PRICE = 37430
    SCRP_CODE =
    MKRT_CODE = N
    Oracle GoldenGate Delivery for Oracle process started, group RMASTRK discard file opened: 2011-08-
    04 10:35:05
    Current time: 2011-08-04 10:35:06
    Discarded record from action ABEND on error 1407
    OCI Error ORA-01407: cannot update ("INFRA"."CUST"."SCRP_CODE") to NULL
    (status = 1407), SQL <UPDATE "INFRA"."CUST" SET "ORD_ID" = :a2,"MKRT_CODE" = :a8,"CHANN>
    Aborting transaction on ./dirdat/pm beginning at seqno 68708 rba 44132192
    error at seqno 68708 rba 44132192
    Problem replicating INFRA.CUST to INFRA.CUST
    Mapping problem with compressed key update record (target format)...
    ORD_QTY = 500
    ORD_PRICE = 37430
    SCRP_CODE =
    MKRT_CODE = N
    Any inputs / help would be appreciated.
    Regards,
    Manish

    The SCRP_CODE column has a NOT NULL constraint. The ORA-01407 error is telling you that you cannot update or set a value for this column to null because of the constraint. This has absolutely nothing to do with an index. You can use a marker/sentinel value in lieu of using NULL. For a numeric field, where everything is positive, a negative value (-1) can be decoded as meaning null. For a character field, a code such as NA can represent NULL.
    This also has nothing to do (directly) with GoldenGate failing because of this error. The underlying SQL statement will fail everywhere, regardless of the tool or application. It is not a case of failing only in GoldenGate.

  • Getting the error "Error while trying to update record" when I try to force complete a plan in DAC

    Hello Everyone ,
    I am using OBIA 7.9.3.7 . One of my execution plan has finished executing all the tasks but it is still in running mode . When I try to force complete it , it gives the error " Error while trying to update record" . Upon checking the log file , I found the below errors :
    MESSAGE:::ORA-04092: cannot COMMIT in a trigger
    ORA-06512: at "DAC_CUSTSCM.ETL_FAIL_NOTOFICATION", line 9
    ORA-04088: error during execution of trigger 'DAC_CUSTSCM.ETL_FAIL_NOTOFICATION'
    EXCEPTION CLASS::: java.sql.SQLSyntaxErrorException
    The Plan is in running state for past couple of days . I tried to re-start the DAC services , but again it gave the same error . Kindly suggest .
    Regards
    Satyendra

    Just to correct , the version of obia is 7.9.6.3

  • Batch Updation with new Batch via IDoc

    Hi,
    Is it possible to update the existing batch at the delivery level with the new batch from the IDoc during the Picking or PGI
    I checked the FM WS_DELVRY_UPDATE2 which is not allowing to do this...
    Any pointers on this will be helpful
    Any Clue on the above issue ?
    Thanks in Advance
    Rajesh
    Edited by: Rajesh on Mar 6, 2012 8:39 PM

    Possibly, have a look at OSS 748216.
    https://websmp230.sap-ag.de/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/sapnotes/index2.htm?numm=748216
    Regards,
    Nick

Maybe you are looking for