Row Level Locking while inserting a record.

It is a good practice to lock the whole table or do the row level locking while performing any DELETE / UPDATE / MODIFY actions on a database table. Is it necessary to do the same thing while inserting a record via INSERT statement?
One point may arise if two  users are inserting same records at a same time....
Well i am little bit confused here bcos if a record doen't exist in a table what is the point of locking it.
Please help me.

create a lock object using SE11 for that perticular table and include field names in Lock parameters. Then it will generate two FMs one for locking and another for unlocking.
Call the lock FM before updating the table and pass that row key value(For fields which taken in lock parameters for creating lock objects) to the exporting parameters.
Then do the updation.
Reward if useful...................

Similar Messages

  • Pl sql row level locking with wait ?

    Hi,
    I am using oracle 10g.
    I am new to Oracle locks. I have two tables Table1(id_no, employee, salary) and Table2(id_no, employee, salary).
    I need to pull any requested row from Table1 into Table2 only once on demand. I have a procedure to pull data and there could be more than one requests try to call same procedure to pull a row from Table1 into Table2 at any given time.
    I coded below to achieve row level lock. if one transaction gets row level lock on Table1 at 2, so other Transactions should wait till the lock is released at line 2 or 5 to avoid duplicates.
    But below code is not working, I am getting duplicates when I call this using two concurrent java threads.
    How do I control this concurrency issue so that I can avoid duplicate entries in Table2. Could any one please help?
    1.begin
    2.select 0 into emp_cnt
    3.from Table1 where id=id_no
    4.for update;
    5.update Table1 set employee='xyz'
    6.where id=id_no;
    7.select count(*) into table2_cnt from Table2 where id=id_no;
    8.if(table2_cnt =0) then
    9.code to insert above row from Table1 to Table2;
    10.end if;
    11.commit;
    12.End;
    Edited by: 980916 on Jan 9, 2013 5:48 PM

    Welcome to the forums and welcome to Oracle.
    Lets establish one thing right from the beginning ... the Oracle Database is not a Microsoft product.
    There is no general reason to use row level locks, you should not want to use row level locks, you don't need row level locks, and you will almost never have any valid reason to consider row level locks.
    That said there are two situations were it may be necessary to lock a row prior to an update or delete (possibly in a merge) and in those cases you want to use the built-in SELECT FOR UPDATE syntax. (Demo here: http://www.morganslibrary.org/reference/deadlocks.html#dlfu). But we should be clear here ... one rarely needs to use this locking mechanism as the chances of a collision in a well designed application are essentially zero.
    Also as you are new to Oracle please explore the dynamic performance view V$RESERVED_WORDS and do not name objects, columns, etc. with reserved word names not that there is an excuse in any product to name a column "ID." Something Joe Celko has railed about for decades and a tradition I think we should all follow.
    In the case of your posted code example (btw please read the FAQ and learn how to use tags) the solution is SELECT FOR UPDATE if locking can be justified which is unlikely.
    Edited by: damorgan on Jan 9, 2013 6:11 PM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Row level locks

    Hi All,
    Version - Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
    I have a card's data in a table. Whenver a two different sessions/threads selects the data sometimes they get the same card.
    Now I need to lock the record. If Thred-1 selects then it will lock the first records and thread-2 must select the second record as the first record is locked by thread-1.
    I have written a piece of code , at first session it locks one record and when second session select it selects no records.
    I have takem MIN group function because I want the cards to be selected in order.
    Can you please tell where is my code went wrong or need some changes. Data and code is given below.
    SQL> SELECT * FROM crm_pps_cards_sz ORDER BY 1;
    CARD_NO          PIN  SERIAL_NUMBER DATE_CREATED DATE_MERGED DATE_ALLOCATED DATE_REGISTERED
    6338079966430591 9985 9950013661    12/06/2011                             
    6338079973369543 6858 9950013660    12/06/2011                             
    6338079978994154 7144 9950013655    12/06/2011                             
    6338079981471778 7631 9950013654    12/06/2011                             
    6338079986365041 7849 9950013657    12/06/2011                             
    SQL>
    Thread - 1
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
    Connected as crm
    SQL> set serveroutput on
    SQL>
    SQL> DECLARE
      2    l_rec crm_pps_cards_sz%ROWTYPE;
      3    CURSOR c IS
      4      SELECT * FROM crm_pps_cards_sz t WHERE t.card_no =
      5      (SELECT MIN(card_no) card FROM crm_pps_cards_sz)
      6      FOR UPDATE NOWAIT SKIP LOCKED;
      7 
      8  BEGIN
      9    OPEN c;
    10    FETCH c
    11      INTO l_rec;
    12    CLOSE c;
    13    dbms_output.put_line('Card Allocated ' || l_rec.card_no);
    14 
    15  END;
    16  /
    Card Allocated 6338079966430591
    PL/SQL procedure successfully completed
    SQL>
    Thread - 2
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
    Connected as crm
    SQL> set serveroutput on
    SQL>
    SQL> DECLARE
      2    l_rec crm_pps_cards_sz%ROWTYPE;
      3    CURSOR c IS
      4      SELECT * FROM crm_pps_cards_sz t WHERE t.card_no =
      5      (SELECT MIN(card_no) card FROM crm_pps_cards_sz)
      6      FOR UPDATE NOWAIT SKIP LOCKED;
      7 
      8  BEGIN
      9    OPEN c;
    10    FETCH c
    11      INTO l_rec;
    12    CLOSE c;
    13    dbms_output.put_line('Card Allocated ' || l_rec.card_no);
    14 
    15  END;
    16  /
    Card Allocated
    PL/SQL procedure successfully completed
    SQL> My concern is that it must allocate in the order
    6338079966430591
    6338079973369543
    ....

    It is because MIN(ard_no) is able to find value from table which is locked by you thread 1 and thread 1 mentioned NOWAIT thus it thread 2 went out without getting anything.
    Please check my reply to your duplicate thread "row level locking" .

  • Problem while inserting a record to infotype 416

    Iam facing a problem while inserting a record to the infotype 416 for a personnel no using the FM 'HR_INFOTYPE_OPERATION'.I have created a FM to insert a record to the infotype 416.In that FM iam using the FM 'HR_INFOTYPE_OPERATION' to create a record for infotype 416.while executing  my FM the FM 'HR_INFOTYPE_OPERATION' is returning the return value 0.But when i check in PA30 for the infotype 416,there is no record created for that personnel no.Also in the table PA0416 the record is not get created.SO what might be the problem.can anyone please provide me help on this.
    I have attached the code of my FM for ur reference.
    FUNCTION Y_ESS_FL_ENCASH.
    DATA: G_COMPENSATION_AMOUNT LIKE PA0416-AMONT,
          G_RETURN TYPE BAPIRETURN1.
    DATA T_PA0416 LIKE P0416 OCCURS 0 WITH HEADER LINE.
    CALL FUNCTION 'HR_READ_INFOTYPE'
        EXPORTING
           TCLAS                 = 'A'
           PERNR                 = '00000014'
           INFTY                 = '0416'
         BEGDA                 = sy-datum
         ENDDA                 =  sy-datum
           BYPASS_BUFFER         = 'X'
         LEGACY_MODE           = ' '
    IMPORTING
         SUBRC                 =
          TABLES
            INFTY_TAB             = T_PA0416
    EXCEPTIONS
      INFTY_NOT_FOUND       = 1
      OTHERS                = 2
        LOOP AT T_PA0416
        WHERE SUBTY = '1002'.
        ENDLOOP.
        IF SY-SUBRC <> 0.
          CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
            EXPORTING
               NUMBER = '00000014'
            IMPORTING
               RETURN = G_RETURN.
          IF SY-SUBRC <> 0.
             MESSAGE I016(RP) WITH ' RECORD IS ALREADY LOCKED'.
          ENDIF.
          T_PA0416-PERNR = '00000014'.
          T_PA0416-SUBTY = '1002'.
          T_PA0416-INFTY = '0416'.
          T_PA0416-OBJPS = ''.
          T_PA0416-SPRPS = ''.
          T_PA0416-SEQNR = ''.
          T_PA0416-AEDTM = SY-DATUM.
          T_PA0416-UNAME = SY-UNAME.
          T_PA0416-ENDDA = SY-DATUM.
          T_PA0416-BEGDA = SY-DATUM.
          T_PA0416-NUMBR = '10'.
          T_PA0416-WGTYP = '1530'.
          T_PA0416-AMONT = '15000'.
          T_PA0416-WAERS = 'INR'.
          T_PA0416-QUONR = '1'.
          APPEND T_PA0416.
          CALL FUNCTION 'HR_INFOTYPE_OPERATION'
            EXPORTING
              INFTY                  = '0416'
              NUMBER                 = '00000014'
              SUBTYPE                = '1002'
      OBJECTID               =
      LOCKINDICATOR          =
             VALIDITYEND            = '31129999'
             VALIDITYBEGIN          = SY-DATUM
            RECORDNUMBER           = ''
              RECORD                 = T_PA0416
              OPERATION              = 'INS'
              TCLAS                  = 'A'
      DIALOG_MODE            = '0'
            NOCOMMIT               = 'X'
      VIEW_IDENTIFIER        =
      SECONDARY_RECORD       =
            IMPORTING
              RETURN                 = G_RETURN.
      KEY                    =
          IF G_RETURN+0(1) EQ 'E'.
                  MESSAGE I086(ZHR) WITH 'Record is not inserted in IT416'.
          ELSE.
              COMMIT WORK.
          ENDIF.
          CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
            EXPORTING
              NUMBER = '00000014'
            IMPORTING
              RETURN = G_RETURN.
        ENDIF.
    ENDFUNCTION.

    Hi Murthy
    With a first glance, I think you have given a wrong parameter value to "validityend". It should be '99991231' not '31129999' .
    If your problem still persists, try inserting the data online from PA30. If your input causes no errors, then please state what the return parameter contains.
    Regards
    *--Serdar <a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=qbk%2bsag%2bjiw%3d">[ BC ]</a>

  • Detail screen for row level locking

    Hi All ,
    I have developed row level locking for a table , Next requirment is to display the details of each row i another screen when the user click on each row .And if the row which is clicked for display is geyout in first screen then it should be grey in details screen also .If the row is editable in the first screen then it should be in change mode in details screen .
    I appreciate the help and support .
    please provide the answer as soon as possbile .....
    Thanks,
    NJ

    Yes, if a process holds many row level locks on a table, those locks by default can be escalated to partition locks, and, if necessary, table locks.  Unless you are getting and holding many locks on a given table, this will not happen.
    You say you are exporting data.  If all you are doing is selecting from the table (not updating, deleting or inserting data) and you are using the read committed transaction isolation level, you would only hold a lock on a row for the small fraction
    of a second when you are actually reading it.  So you will never have large numbers of locks at one time.  If you are doing large numbers of updates, inserts, or deletes in a singletransaction or if you are doing large numbers of selects in a single
    transaction with the isolation level set to repeatable read or serializable, then it is possible to get enough locks to cause SQL server to escalate to partition or table locks.  This is normally a good thing (that's the reason Microsoft made it the default). 
    To many locks eats up memory.
    However, if you determine this is causing you a problem and you do not want the locks on a particular table ever escalated, you can use the ALTER TABLE SET (LOCK_ESCALATION = DISABLE) command to prevent most cases of lock escalation on a table by table basis. 
    See BOL for a description of the ALTER TABLE command.  However, I would recommend you not use this unless you have determined that lock escalation is causing you problems.  It is very easy to make things worse, not better by doing this.
    Tom

  • Getting error msg while inserting a record

    HI
    Am getting error msg while am inserting a new record. Am unable to view the data that i inserted in to database. If any one can help in sorting of the problem plz help. I used the following code in Application Module(AM) and Controller(CO)
    processRequest()
    -- am.invokeMethod("insertmethod");
    processFormRequest()
    -- if(pageContext.getParameter("Create")!=null)
    -- am.invokeMethod("savemethod");
    In AM Code
    public void insertmethod()
    EOVOImpl vo=getEOVO1();
    if(!vo.isPreparedForExecution())
    {    vo.executeQuery(); }
    Row ro=vo.createRow();
    vo.insertRow(ro);
    ro.setNewRowState(Row.STATUS_INITIALIZED);
    public void savemethod()
    {   OADBTransaction oa=getOADBTransaction();
    oa.commit(); }
    Error
    Attribute SummaryFlag in kiInsertAM.kiInsertEOVO1 is required

    Hi,
    Either on the form you don't have SummaryFlag field or you forgot to map VO attribute i.e. SummaryFlag to that field.
    If you don't have SummaryFlag field on form then you need to set it programatically before committing record.
    Please check and let us know.
    Regards,
    Mukesh Uchaniya

  • Getting Error While inserting a record in table PDSNR through Tcode PA30

    Hi Experts,
    Im doing a transaction in  TCode PA30 by entering a pernr and infty as 14 and wage type.
    My need is when im entering a particular wage type in PA30 with infotype 14 , for that particular wage type and infotype i need to assign a different cost centre. This requirement was doing now manually by changing the cost centre form EDIT - > Maintain Cost Assignment.
    But my Client Needs to do it automatically. by comparing the wage type and infotype the cost centre needs to get automatically updated.
    So i use the Enhancement EXIT_SAPFP50M_002 * INCLUDE ZXPADU02.* and wrote coding like below
    CASE innnn-infty.
    To check whether the record belong to pa0014
    If so,check the wage type for the updation
    If so update the values of cost center assignments in the table assob and asshe
    when '0014'.
    if innnn-subty eq '2211'.
    Select the last updated sequence number in the table pdsnr
    if sy-ucomm eq 'UPD' or sy-ucomm eq 'INS'.
    select single * from pa0001 into wa_0001 where pernr eq INNNN-pernr and
                                                   endda eq '99991231'.
      if sy-subrc = 0.
    call function 'ENQUEUE_EPPRELE'
    EXPORTING
       MODE_PREL            = 'E'
       MANDT                = SY-MANDT
       PERNR                = INNNN-pernr
       INFTY                = INNNN-INFTY
       SUBTY                = INNNN-SUBTY
    EXCEPTIONS
       FOREIGN_LOCK         = 1
       SYSTEM_FAILURE       = 2
       OTHERS               = 3
    if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    CLEAR : lv_pdsnr.
    select MAX( pdsnr ) from pdsnr into lv_pdsnr.
    lv_pdsnr = lv_pdsnr + 1.
        ls_assob-pdsnr = lv_pdsnr.
        ls_assob-pernr = INNNN-pernr.
        ls_assob-bukrs = wa_0001-bukrs. "'1001'.
        ls_assob-gsber = wa_0001-gsber. "'0001'.
        ls_assob-kokrs = wa_0001-kokrs. "'1000'.
        ls_assob-kostl = '1-1361'.
        ls_asshr-pdsnr = lv_pdsnr.
        ls_asshr-pernr = INNNN-pernr.
        ls_asshr-infty = innnn-infty.
        ls_asshr-subty = innnn-subty.
        ls_asshr-begda = sy-datum.
        ls_asshr-endda = '99991231'.
        ls_PDSNR-pdsnr = lv_pdsnr.
        ls_PDSNR-PDGRP = '5B'.
    insert into pdsnr values ls_pdsnr.
    insert into asshr values ls_asshr.
    insert into assob VALUES ls_assob.
    call function 'DEQUEUE_EPPRELE'
    EXPORTING
       MODE_PREL       = 'E'
       MANDT           = SY-MANDT
       PERNR           = INNNN-pernr
       INFTY           = INNNN-INFTY
       SUBTY           = INNNN-SUBTY.
        ENDIF.
    ENDIF.
    ENDIF.
    COMMIT WORK.
    ENDCASE.
    This is to update the three tables PDSNR, ASSOB,ASSHR.
    Its getting Updated correctly, But when i goto EDIT - > Maintain Cost Assignment to do some changes and while saving the data i get the following Error Message :
    You Cannot insert data in table : PDSNR.
    Message no. P2715
    Can Anyone please suggest me how to solve this issue.
    Thanks,
    Vijayan.R

    Hi. Were you able to fix the error?

  • DAC Error: Error while inserting a record!

    Hi,
    I want to create a new DAC on my system but I am getting below error while trying to create record or saving any records.
    Can't create reference
    MESSAGE:::INSERT INTO W_ETL_OBJ_REF(OBJ_WID, OBJ_REF_WID, OBJ_TYPE, OBJ_REF_TYPE_CD, APP_WID, LAST_UPD, SOFT_DEL_FLG, ROW_WID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
    Values :
    KEY : 1
    VALUE : 202CB962AC5975B964B7152D234B70
    KEY : 2
    VALUE : 202CB962AC5975B964B7152D234B70
    KEY : 3
    VALUE : W_ETL_SA
    KEY : 4
    VALUE : 1
    KEY : 5
    VALUE : null
    KEY : 6
    VALUE : 2011-10-12 15:17:11.586
    KEY : 7
    VALUE : N
    KEY : 8
    VALUE : 7716EB6EA78A5B2E2D3C2AE1CF204A2C
    EXCEPTION CLASS::: com.siebel.etl.database.IllegalSQLQueryException
    com.siebel.etl.database.DBUtils.batchUpdate(DBUtils.java:1946)
    com.siebel.etl.gui.util.UncommitUpdateHelper.executeUpdate(UncommitUpdateHelper.java:84)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createReference(BaseDACObject.java:1362)
    com.siebel.analytics.etl.client.data.dataobject.DACObject.createReference(DACObject.java:78)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createUpdateReference(BaseDACObject.java:1274)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createOwnedObject(BaseDACObject.java:565)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.create(BaseDACObject.java:544)
    com.siebel.analytics.etl.client.data.dataobject.UpdatableDataObject.createUpdate(UpdatableDataObject.java:210)
    com.siebel.analytics.etl.client.data.dataobject.DACObject.createUpdate(DACObject.java:213)
    com.siebel.analytics.etl.client.data.dataobject.UpdatableDataObject.createUpdate(UpdatableDataObject.java:198)
    com.siebel.analytics.etl.client.data.model.ResultSetParser.insertNewRecord(ResultSetParser.java:226)
    com.siebel.analytics.etl.client.data.model.UpdatableDataTableModel.insertNewRecord(UpdatableDataTableModel.java:122)
    com.siebel.analytics.etl.client.data.model.DACTableModel.insertNewRecord(DACTableModel.java:335)
    com.siebel.analytics.etl.client.data.model.DACTableModel.insertNewRecord(DACTableModel.java:320)
    com.siebel.analytics.etl.client.data.model.UpdatableDataTableModel.updateRecord(UpdatableDataTableModel.java:76)
    com.siebel.analytics.etl.client.view.edit.EditObject.save(EditObject.java:326)
    com.siebel.analytics.etl.client.view.edit.EditObject.actionPerformed(EditObject.java:616)
    javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    java.awt.Component.processMouseEvent(Component.java:6041)
    javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    java.awt.Component.processEvent(Component.java:5806)
    java.awt.Container.processEvent(Container.java:2058)
    java.awt.Component.dispatchEventImpl(Component.java:4413)
    java.awt.Container.dispatchEventImpl(Container.java:2116)
    java.awt.Component.dispatchEvent(Component.java:4243)
    java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    java.awt.Container.dispatchEventImpl(Container.java:2102)
    java.awt.Window.dispatchEventImpl(Window.java:2440)
    java.awt.Component.dispatchEvent(Component.java:4243)
    java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    ::: CAUSE :::
    MESSAGE:::ORA-01400: cannot insert NULL into ("DW"."W_ETL_OBJ_REF"."APP_WID")
    EXCEPTION CLASS::: java.sql.SQLIntegrityConstraintViolationException
    oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:737)
    oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:647)
    oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:530)
    oracle.jdbc.driver.T2CPreparedStatement.executeForRows(T2CPreparedStatement.java:713)
    oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
    oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
    oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
    oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
    com.siebel.etl.database.cancellable.CancellablePreparedStatement.executeUpdate(CancellablePreparedStatement.java:91)
    com.siebel.etl.database.DBUtils.batchUpdate(DBUtils.java:1942)
    com.siebel.etl.gui.util.UncommitUpdateHelper.executeUpdate(UncommitUpdateHelper.java:84)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createReference(BaseDACObject.java:1362)
    com.siebel.analytics.etl.client.data.dataobject.DACObject.createReference(DACObject.java:78)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createUpdateReference(BaseDACObject.java:1274)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.createOwnedObject(BaseDACObject.java:565)
    com.siebel.analytics.etl.client.data.dataobject.BaseDACObject.create(BaseDACObject.java:544)
    com.siebel.analytics.etl.client.data.dataobject.UpdatableDataObject.createUpdate(UpdatableDataObject.java:210)
    com.siebel.analytics.etl.client.data.dataobject.DACObject.createUpdate(DACObject.java:213)
    com.siebel.analytics.etl.client.data.dataobject.UpdatableDataObject.createUpdate(UpdatableDataObject.java:198)
    com.siebel.analytics.etl.client.data.model.ResultSetParser.insertNewRecord(ResultSetParser.java:226)
    com.siebel.analytics.etl.client.data.model.UpdatableDataTableModel.insertNewRecord(UpdatableDataTableModel.java:122)
    com.siebel.analytics.etl.client.data.model.DACTableModel.insertNewRecord(DACTableModel.java:335)
    com.siebel.analytics.etl.client.data.model.DACTableModel.insertNewRecord(DACTableModel.java:320)
    com.siebel.analytics.etl.client.data.model.UpdatableDataTableModel.updateRecord(UpdatableDataTableModel.java:76)
    com.siebel.analytics.etl.client.view.edit.EditObject.save(EditObject.java:326)
    com.siebel.analytics.etl.client.view.edit.EditObject.actionPerformed(EditObject.java:616)
    javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    java.awt.Component.processMouseEvent(Component.java:6041)
    javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    java.awt.Component.processEvent(Component.java:5806)
    java.awt.Container.processEvent(Container.java:2058)
    java.awt.Component.dispatchEventImpl(Component.java:4413)
    java.awt.Container.dispatchEventImpl(Container.java:2116)
    java.awt.Component.dispatchEvent(Component.java:4243)
    java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    java.awt.Container.dispatchEventImpl(Container.java:2102)
    java.awt.Window.dispatchEventImpl(Window.java:2440)
    java.awt.Component.dispatchEvent(Component.java:4243)
    java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Why it happened and how to solve it?

    The error is not because a table is MISSING..it is because its trying to insert a NULL and its failing: ORA-01400: cannot insert NULL.
    I would check the following:
    Make sure all DAC related patches are applied (you can find these on metalink) for the DAC version you are on
    Is this your first time to try a load? Is there any load that may not have cleaned up all process that was previously runninng..if so restart the DAC services and retry
    Make sure the DAC repository metadat tables are created properly. Go to the table in question W_ETL_OBJ_REF and see if it is correctly created
    Did you assemble all Subject Areas and successfully Build the execution plan? If not, do that and retry.
    Let me know how it goes.
    if this is helpful, please mark as correct or helpful.

  • Stuck with a problem while inserting a record into infotype

    Hi Gurus,
    I have to insert all active record into 378 infotype. At particular pernr hr_operation_infotype is throughing with an error stating 'E00                  058Entry    does not exist - check your entry' . How to rectify it.
    Ravi

    error message is 'E00                  058Entry    does not exist - check your entry            '
    My code is as follows
      INFOTYPES : 0378.
      DATA: BEGIN OF abc1 OCCURS 0,
                  pernr   TYPE pa0000-pernr,
                  stat2   TYPE pa0000-stat2,
                  begda   TYPE pa0000-begda,
            END OF abc1.
      DATA lt_pernr_pa0000 LIKE TABLE OF abc1.
      DATA ls_pernr_pa0000 LIKE  abc1.
      DATA l_subrc LIKE sy-subrc.
      DATA l_return LIKE bapireturn1 VALUE ' '.
    DATA begda LIKE sy-datum.
      DATA endda LIKE sy-datum.
      CLEAR: ls_pernr_pa0000, lt_pernr_pa0000.
      SELECT  pernr stat2 begda
        INTO  CORRESPONDING FIELDS OF TABLE lt_pernr_pa0000
        FROM pa0000
        WHERE  stat2 = '3' AND endda = '99991231'  and pernr = 198.
      LOOP AT lt_pernr_pa0000 INTO ls_pernr_pa0000.
        REFRESH p0378.
        CALL FUNCTION 'HR_READ_INFOTYPE'
             EXPORTING
                  pernr           = ls_pernr_pa0000-pernr
                  infty           = '0378'
                  endda           = '99991231'
             IMPORTING
                  subrc           = l_subrc
             TABLES
                  infty_tab       = p0378
             EXCEPTIONS
                  infty_not_found = 1
                  OTHERS          = 2.
        IF l_subrc = 0.
          IF p0378-event = 'open' AND p0378-subty = 'open' AND
                        p0378-pernr = ls_pernr_pa0000-pernr.
            EXIT.
          ENDIF.
        ELSE.
    locking the pernr ********************
          CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
               EXPORTING
                    number        = ls_pernr_pa0000-pernr
                    validitybegin = ls_pernr_pa0000-begda
               IMPORTING
                    return        = l_return.
    change the end date to 12/31/2007*************
          IF l_return-number IS INITIAL.
            p0378-pernr = ls_pernr_pa0000-pernr.
            p0378-endda = '99991231'.
            p0378-begda = '20070909'.
            p0378-subty = 'OPEN'.
            p0378-event = 'OPEN'.
            p0378-barea = 'US'.
            MODIFY p0378 INDEX 1  TRANSPORTING pernr endda begda subty event
                barea.
            CALL FUNCTION 'HR_INFOTYPE_OPERATION'
                 EXPORTING
                      infty         = '0378'
                      number        = ls_pernr_pa0000-pernr
                      record        = p0378
                      operation     = 'INS'
                 IMPORTING
                      return        = l_return.
          ENDIF.
    unlocking the pernr ********************
          IF l_return-number IS INITIAL.
            COMMIT WORK AND WAIT.
          ELSE.
            ROLLBACK WORK.
            EXIT.
          ENDIF.
          CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
               EXPORTING
                    number        = ls_pernr_pa0000-pernr
                    validitybegin = ls_pernr_pa0000-begda
               IMPORTING
                    return        = l_return.
        ENDIF.
      ENDLOOP.
    ENDFUNCTION.

  • ORA-00997: illegal use of LONG datatype - while inserting a record

    Hello,
    I have this table:
    create table TEST
    USER VARCHAR2(20) not null,
    WINCFG LONG RAW
    There are a few records, some with user='OLDUSER'.
    I want to add new records with a statement like this one:
    insert into TEST
    select 'NEWUSER',wincfg from TEST where user='OLDUSER'
    But Oracle returns the error:
    "ORA-00997: illegal use of LONG datatype"
    I have no idea...
    Thank you

    SQL> insert into TEST
      2  (
      3  select 'NEWUSER',wincfg from TEST where user='OLDUSER'
      4  );
    select 'NEWUSER',wincfg from TEST where user='OLDUSER'
    ERROR at line 3:
    ORA-00997: illegal use of LONG datatype
    SQL> copy from scott/tiger@mydb insert test using select * from test;
    Array fetch/bind size is 15. (arraysize is 15)
    Will commit when done. (copycommit is 0)
    Maximum long size is 80. (long is 80)
       1 rows selected from scott@mydb.
       1 rows inserted into TEST.
       1 rows committed into TEST at DEFAULT HOST connection.Hope it help

  • Row Level Security for INSERT's

    Hello there,
    I implemented security-policies for the actions SELECT, UPDATE, DELETE and INSERT. All policies work well with exemption to the INSERT-policy. My question is:
    How does the dynamic predicate work for INSERT-actions?
    As far as I learned, a command like "SELECT ... FROM ..." is extended by a "WHERE " + predicate (from policy). But does this work with INSERT? I mean does something like "INSERT INTO Testtable VALUES(....)" + "WHERE " + predicate work? Am I constructing my predicate wrong or does RLS not work in this case?
    Regards
    Philipp Pott

    Ok, I found the answer myself:
    for INSERT's and UPDATE's the "update_check"-option of the DBMS_RLS.ADD_POLICY procedure (see PL/SQL Supplied Packages Reference, 61-5) is applicable. Setting this value to TRUE will let the server run the policy also after the insert.
    With running the policy after the insert suddenly my routine worked and now rejects (prohibited) inserts with error ORA-28115 "Policy with check option violation".
    Unfortunately this is not mentioned or shown by an example in the Oracle documentation. I found an example in the security-corner (http://otn.oracle.com/sample_code/deploy/security/9i_security.html) and some text in a technical white-paper (http://otn.oracle.com/deploy/security/oracle9iR2/pdf/VPD9ir2twp.pdf).
    Huhh, on to the next steps / problems ..
    Regards
    Philipp

  • GTT table getting Row Exclusive lock

    I have a procedure which loads a table which is used for reporting.
    Currently it is a single process which picks up most of the data after joining 2-3 big tables(around 70-80GB) and then loading the main table.
    The joins are on PI and also partitions are also being used. Then a lot of updates are done on the main table to update other columns which are being picked from different tables.
    As the processing is happening on huge amount of data(around 1M), so processing is taking a lot of time.
    This process is taking around 40-45 minutes.
    I am planning to use parallelism to run it in 75 sessions. So the initial big insert will be faster and later on all the updates will be done on smaller chunks which will benefit the performance.
    I planned to use GTT table so that i dont have to create 75 temp tables for each sessions.
    But while using GTT table(ON COMMIT DELETE ROWS) in parallel sessions, i am seeing that the GTT table is getting Row Exclusive lock and the time taken by overall process is increasing by lot.
    So i tested by using 75 temp tables. There i saw that the performance has increased by lots as assumed initially.
    Please let me know if there is any other way or how to remove the locks on GTT table.

    First you should question why you think you need 75 GTT.
    Also your question contains no useful information
    (no four digit version of Oracle, no OS, no number of processors) , this paragrah
    Currently it is a single process which picks up most of the data after joining 2-3 big tables(around 70-80GB) and then loading the main table.
    The joins are on PI and also partitions are also being used. Then a lot of updates are done on the main table to update other columns which are being picked from different tables.
    As the processing is happening on huge amount of data(around 1M), so processing is taking a lot of time.
    This process is taking around 40-45 minutes.tells nothing,
    so basically your questions boils down to
    - Hey I come from a sqlserver background (this is just an educated guess), how can I find a workaround to wreck Oracle to make it work like sqlserver.
    75 parallel sessions on say 4 to 8 processors is a very bad idea, as these sessions will be simple competing for resources.
    Also a row exclusive lock is just that: a row level lock. This isn't a problem, usually.
    Sybrand Bakker
    Senior Oracle DBA

  • Error while Inserting DB

    Hi,
    We are getting the below error while inserting a record in to DB. It is not occuring always, as sometimes the transactions are passing and some times it is throwing the below error. Any one faced this issue and have solution for the same?
    The invocation resulted in an error: <jca-transport-application-error xmlns="http://www.bea.com/wli/sb/transports/jca" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <jca-transport-error-message>Invoke JCA outbound service failed with application error</jca-transport-error-message>
    <jca-runtime-fault-detail>
    <eis-error-code xsi:nil="true"/>
    <eis-error-message xsi:nil="true"/>
    <exception>com.bea.wli.sb.transports.jca.JCATransportException: oracle.tip.adapter.sa.api.JCABindingException: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/ServiceProcessor_1.00/src/osb/resources/wsdls/Service_DB_Write_1.00 [ ServiceDBAdp_ptt::insert(SampleMiddlewareLogCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    ; nested exception is:
    BINDING.JCA-11616
    DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake.
    at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invokeOneWay(JCATransportOutboundOperationBindingServiceImpl.java:114)
    at com.bea.wli.sb.transports.jca.JCATransportEndpoint.sendOneWay(JCATransportEndpoint.java:191)
    at com.bea.wli.sb.transports.jca.JCATransportEndpoint.send(JCATransportEndpoint.java:168)
    at com.bea.wli.sb.transports.jca.JCATransportProvider.sendMessageAsync(JCATransportProvider.java:598)
    at sun.reflect.GeneratedMethodAccessor900.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.bea.wli.sb.transports.Util$1.invoke(Util.java:83)
    at $Proxy142.sendMessageAsync(Unknown Source)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageAsync(LoadBalanceFailoverListener.java:148)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToServiceAsync(LoadBalanceFailoverListener.java:603)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToService(LoadBalanceFailoverListener.java:538)
    at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageToService(TransportManagerImpl.java:558)
    at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageAsync(TransportManagerImpl.java:426)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:380)
    at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:79)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:137)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:135)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:140)
    at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
    at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
    at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(Unknown Source)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    Caused by: oracle.tip.adapter.sa.api.JCABindingException: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/ServiceProcessor_1.00/src/osb/resources/wsdls/Service_DB_Write_1.00 [ ServiceDBAdp_ptt::insert(SampleMiddlewareLogCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    ; nested exception is:
    BINDING.JCA-11616
    DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake.
    at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.post(JCABindingReferenceImpl.java:197)
    at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invokeOneWay(JCATransportOutboundOperationBindingServiceImpl.java:109)
    ... 37 more
    Caused by: oracle.tip.adapter.sa.impl.fw.ext.org.collaxa.thirdparty.apache.wsif.WSIFException: servicebus:/WSDL/ServiceProcessor_1.00/src/osb/resources/wsdls/Service_DB_Write_1.00 [ ServiceDBAdp_ptt::insert(SampleMiddlewareLogCollection) ] - WSIF JCA Execute of operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    ; nested exception is:
    BINDING.JCA-11616
    DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake.
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.performOperation(WSIFOperation_JCA.java:662)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeOperation(WSIFOperation_JCA.java:353)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:312)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeInputOnlyOperation(WSIFOperation_JCA.java:291)
    at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.invokeWsifProvider(JCABindingReferenceImpl.java:345)
    at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.post(JCABindingReferenceImpl.java:195)
    ... 38 more
    Caused by: BINDING.JCA-11616
    DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [ServiceDBAdp.SampleMiddlewareLog].
    Caused by java.lang.ArrayIndexOutOfBoundsException.
    Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake.
    at oracle.tip.adapter.db.exceptions.DBResourceException.createNonRetriableException(DBResourceException.java:682)
    at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:648)
    at oracle.tip.adapter.db.exceptions.DBResourceException.outboundWriteException(DBResourceException.java:696)
    at oracle.tip.adapter.db.DBInteraction.executeOutboundWrite(DBInteraction.java:1056)
    at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:240)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.performOperation(WSIFOperation_JCA.java:529)
    ... 43 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException</exception>
    </jca-runtime-fault-detail>
    </jca-transport-application-error>.
    Thanks

    Hi
    Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array you are sending.
    make sure your table can able to recieve that array of data

  • How to get a row level share lock

    Is it possible to acquire a row-level share lock, which would do all of the following?
    1. Prevent others from updating that row.
    2. Allow others to read that row.
    3. Allow others to update other rows in the same table.
    I have the following scenario where two transactions need to lock eachother out:
    Set-up:
    Insert into TABLE_A(value_a) values ('ok');
    Insert into TABLE_B(value_b) values ('ok');
    Transaction A:
    Select value_b from TABLE_B
    If value_b = 'ok', update TABLE_A set value_a = 'not ok'
    Transaction B:
    Select value_a from TABLE_A
    If value_a = 'ok', update TABLE_B set value_b = 'not ok'
    If transaction A runs first then the end result is "not ok" only in TABLE_A.
    If transaction B runs first then the end result is "not ok" only in TABLE_B.
    If the two transactions run concurrently, it is possible to get "not ok" in both tables. This is what I would like to prevent.
    One way to get what I want is to use "select for update":
    Transaction A:
    Select value_a from TABLE_A for update
    Select value_b from TABLE_B for update
    If value_b = 'ok', update TABLE_A set value_a = 'not ok'
    Transaction B:
    Select value_a from TABLE_A for update
    Select value_b from TABLE_B for update
    If value_b = 'ok', update TABLE_B set value_a = 'not ok'
    This way both transactions won't perform their update unless they know that the result if their select will still be the same after they commit. However, by using "select for update" Transaction A has gained an exclusive lock on the TABLE_B row. If a Transaction C with the same contents as Transaction A happens concurrently, then the two will block eachother even though all they both want is to read data from the same table.
    Another way is to use "lock table", however using that would block out not only writes to a specific row, but writes to all rows in the table. (In my example there is only one row, but obviously that's just a simplified example.)
    I have looked at the "serializable" isolation level, but that doesn't seem to help because the queries and updates involve more than one table.
    I know that "reads don't block writes" is a fundamental part of the Oracle design that makes Oracle what it is, but is there any way I can explicitly make it happen anyway? Or can anyone see some other solution to what I'm trying to achieve?

    Let me give a more real-world example to show what I'm talking about.
    Imagine a simple bug-reporting OLTP application. Each bug has 3 fields:
    1. Description
    2. Resolution
    3. Status (open/closed)
    The application also has some rules:
    A. If the Status is "closed", Description and Resolution cannot be changed.
    B. In order to change the Status to "closed", both a Description and Resolution must be specified.
    Now as long as only one person at a time updates a bug, everything is fine. However, if one person switches the Status to "closed" while another concurrently blanks out the Resolution you end up with a closed bug that has no Resolution. This is why some locking is necessary.
    If Description, Resolution, and Status are all stored in the same table row, then it makes sense for each transaction to simply select the whole row FOR UPDATE, and then UPDATE it after it ensures all the rules are passed. However, in my fictional bug-reporting application they are all stored in separate tables. Now, the transaction that is making the change to Resolution could lock the row in the Status table FOR UPDATE (as everyone so far has suggested). Transactions making a similar change to the Description should then also lock the row in the Status table FOR UPDATE for the same reason. The end result of this is that Description changes and Resolution changes lock eachother out (can't happen concurrently, are serialized) when they don't need to be. Description changes and Resolution changes don't affect eachother, but because they both need to (exclusively) lock the same row, they are serialized.
    If there was a way to acquire a share lock on the row in the Status table, then Description and Resolution changes would use that and not affect eachother. Status changes would still acquire an exclusive lock on the row, and would be blocked by (and block any further) concurrent Description and Resolution changes. This would be ideal.

  • Database got halted while inserting rows

    I have a 9i database running on solaris not restarted for 15 days.It just got halted or hanged while inserting rows in a table.When restarted everything is just fine and those rows have been inserted in no time!!What might be the reason?Dont tell me 'lock' because I have already checked for ora:60 error in alertlog.Would you please give some direction to drill it down .

    Did you met the problem , only when you inserting the rows ? Or is there something else which leads this situation ? most of the occasion when
    you found your database halt is because of your archivelogs . I would
    still like to know if you running your db in archivelog mode ? It also be the
    case that you set archive_log_start = true in the pfile and diden't fire
    alter database archivelog at the sql prompt .
    Hare Krishna
    Alok

Maybe you are looking for

  • Download error on trial mastersuite cs6

    It keeps gettiing suck for a week now

  • Vista and dw cs3

    am i correct that when using vista home premium with dw cs3, I checked the adobe req's page, that 32 bit is all that is needed or is it 64 bit. thx

  • Display not showing same color/contrast at top of screen as at bottom.

    I just got the new Al and Glass 2.4 Ghz imac and my wife noticed that the colors at the top of the screen were deeper and showed more contrast. The same colors at the bottom of the display looked washed out. This is unaffected by viewing angle and ti

  • Calling logical database

    Hi, I have created one logical database using BSAK & BSEG named as "ZVENLDB". While iam calling this LDB into abap program...it is showing error that "BSAK is not a node of the logical database". Could any one tell me where might be the problem? ...t

  • Default playlists / getting videos onto ipod

    when i installed itunes, it automatically came with Recently Added playlists, etc. is there a way i can get them back? (i accidentally deleted them!!!!) please help? i also converted one of my videos to mp4, i can view it on itunes, but i dont see it