How to lock a table/record from being read

Hi,
We are facing a problem executing a backend operation due to the presence of 2 JVMs.
We have a set of batch jobs that needs to run on a daily basis. We are using a flag in a table to check if any job is currently running, based on which the job is kicked off.
The problem comes up when the 2nd JVM tries to read the same data present in the table and kicks off the job, which it shouldnt.
Currently this is how i am implementing it:
SELECT COUNT(1) into l_status FROM Log_Table
where job_status is NULL
FOR UPDATE;
IF (l_status = 1) THEN
UPDATE Log_Table
SET Job_Status = 'In_Execution'
WHERE Job_status = NULL; -- Only 1 rec will contain this field as NULL
END IF;
COMMIT;
l_status decides whether the job should run or not.
SELECT..FOR UPDATE does not stop the 2nd JVM from reading the data (or will it?). The 2nd JVM will just wait for the lock to be released, execute the UPDATE without knowing the current value of Job_Status and then start the batch job. Correct me if my knowledge of SELECT FOR UPDATE is wrong.
What can be done to completely avoid the 2nd JVM from intervening?
Solutions would be much appreciated.

I have dealed with your problem. Please checkout thread Is it possible to pevent select operation on a table?

Similar Messages

  • How do I stop my SMSs from being read by other family members?

    How do i stop my SMSs from being read by other family members?

    batterseauser wrote:
    They r receiving my text messages onto their iPhones and they are not allowing me access to stop this
    Change the password for your AppleID you used to set up iMessaging, and do not tell them the password.  Tell them to get their own AppleIDs for use with their own iMessage accounts.

  • How can  distribute 5 lakhs records from sap R/3 setup tables ?

    How can  distribute 5 lakhs records from sap R/3 setup tables in to multiple  requests in sap BI?

    Hello,
    what is "lakhs" ?
    Please use plain English words on a world wide forum...
    Regards,
    Olivier

  • How to lock a specific record

    Let’s say I need to lock a specific record from a form so nobody could even select this record from database.
    How do I do this?
    Thank you in advance

    Add a default_where property for your block that will eliminate this record from being selected.
    For example:
    set_block_property('emp','default_where','ename!='SCOTT');

  • Re: How do I keep an application from being started morethan once?

    Here are some quick ideas. None of them should be too hard to implement,
    although each has some drawbacks.
    1. Have a login server track who is logged on, and if there is already a
    logon for a given user or a given machine, then deny the application
    startup. The nice thing about this is that a user will not be able to have
    multiple logins even by going to another machine. Then again, this may not
    be so nice, and you also get a possible single point of failure on the
    login server for which you will have to prepare.
    2. Drop to the operating system, and get a list of processes for the client
    machine. If the name of one of them matches the name of application that
    is being run, then deny startup. This avoids a network hit, but requires
    some OS specific code. Also, a clever user could change the name of an
    executable to get around this. Note that a user could have another login
    on another machine.
    3. Write to a file on the local machine. You can hide the file in some
    suitable place, and can also scramble some information so that a user
    cannot get around having this file present by reading from the file at
    startup and then writing to it. Based on the state of your application,
    the file will have some scrambled information indicating if an instance of
    an application can be started. If you retain the write lock (i.e. do not
    close) the file for the duration of the application, you increase your
    security at the risk of a confused user if the application gets terminated
    without releasing the lock. Depending on the OS where the client will run,
    this could be an issue. If you like this option, perform some experiments
    first on all configurations of an example client machine to determine the
    behavior. Again, this only works to prevent an extra login on a single
    machine, not system wide.
    If you are not concerned about your users hacking around too much and don't
    care about a login on another machine, I would opt for some version of
    number 3. Otherwise, I would venture number 1.
    Regards
    CSB
    At 07:47 AM 2/18/98 -0500, Martin G Nystrom wrote:
    A user can launch an application, then launch it again. How do we make it so
    that the user can only run one instance of the application?
    Martin Nystrom
    Eli Lilly and Company
    ([email protected])
    Curtis Bragdon, Senior Consultant, Forte Software
    [email protected]
    Voice Mail: (510) 986-3807
    Paging: (888) 687-6723
    "I've seen dozens of triggering towns." - Richard Hugo

    Yet another quick and dirty solution is to use local ExternalConnections.
    This is a single instance per machine solution.
    Example is attached.
    (See attached file: TestOne.pex)
    [email protected] on 02/18/98 10:01:07 PM
    Please respond to [email protected]
    To: [email protected]
    cc: [email protected]
    Subject: Re: How do I keep an application from being started more than
    once?
    Martin,
    there are two ways to read your question
    (a) no more than one instance of an application per machine
    (b) no more than one instance of an application per "user"
    now if a user has only one machine, and your system has "userids" and you
    only want
    one active "session" per "user" then the distinction is irrelevant.
    However, many systems
    let people share logins, so a token based thing enforcing one login will be
    problematic.
    The downside of #1 approach suggested by Curtis happens when a machine gets
    hosed without "logging" the user off the security system, then they can't
    get in until their ticket expires or a sysadmin gets involved. Should be
    manageable, however. But this enforces one application
    instance per user, unless you check both for the presence of an active
    token for that user as well as the presence of a token tied to that
    particular node name. Otherwise there is nothing to prevent the same user
    from launching the app again and logging in as a different user. This is
    definitely the best approach of the bunch, and can be adapted for either
    (a) or (b).
    Suggestion # 2 won't work unless the application is built as a compiled
    client,
    since the process name will be 'ftexec' and not the "name" of the
    application. And it doesn't
    prevent a user from launching the app from a different machine (or people
    sharing logins). So again it depends on what you are trying to achieve.
    #3 also only prevents multiple instances per machine, not necessarily by
    user. Of course
    most people don't have multiple machines. The point is that you may be
    trying to
    prevent your users from sharing logins. In which case the file thing won't
    do it.
    Some other ideas:
    1. You could, however, enforce one application per machine using the
    installed partition agent's ExecutingPartition instrument name. As long as
    the user doesn't run the app in a different environment, you can have the
    app check at startup time if there is another
    ActivePartition running under the same InstalledPartition name.
    (ActivePartitions are child agents
    of InstalledPartitions).
    2. use the ObjectLocationManager and bind a simple object into the naming
    system using a naming scheme such as
    /MyApplication/MyNode or
    /MyApplication/MyUserId
    the presence of either one would indicate that another instance of that
    application is running on either that machine or that user. Of course
    these have to be cleaned out, and subject to similar downside as
    alternative #1. So you'd essentially be using the forte naming system as a
    distributed lock manager (ouch).
    3. Have the application remove the shortcut to launch it upon startup, and
    recreate it when it is finished, or move it to a hidden place. There it
    is - the worst idea I've ever come up with. Don't
    do this!
    Regards,
    John
    From: Curtis Bragdon <[email protected]>
    Date: Wed, 18 Feb 1998 16:36:58 -0500
    Subject: Re: How do I keep an application from being started more than
    once?
    Here are some quick ideas. None of them should be too hard to implement,
    although each has some drawbacks.
    1. Have a login server track who is logged on, and if there is already a
    logon for a given user or a given machine, then deny the application
    startup. The nice thing about this is that a user will not be able to have
    multiple logins even by going to another machine. Then again, this may not
    be so nice, and you also get a possible single point of failure on the
    login server for which you will have to prepare.
    2. Drop to the operating system, and get a list of processes for the client
    machine. If the name of one of them matches the name of application that
    is being run, then deny startup. This avoids a network hit, but requires
    some OS specific code. Also, a clever user could change the name of an
    executable to get around this. Note that a user could have another login
    on another machine.
    3. Write to a file on the local machine. You can hide the file in some
    suitable place, and can also scramble some information so that a user
    cannot get around having this file present by reading from the file at
    startup and then writing to it. Based on the state of your application,
    the file will have some scrambled information indicating if an instance of
    an application can be started. If you retain the write lock (i.e. do not
    close) the file for the duration of the application, you increase your
    security at the risk of a confused user if the application gets terminated
    without releasing the lock. Depending on the OS where the client will run,
    this could be an issue. If you like this option, perform some experiments
    first on all configurations of an example client machine to determine the
    behavior. Again, this only works to prevent an extra login on a single
    machine, not system wide.
    If you are not concerned about your users hacking around too much and don't
    care about a login on another machine, I would opt for some version of
    number 3. Otherwise, I would venture number 1.
    Regards
    CSB
    At 07:47 AM 2/18/98 -0500, Martin G Nystrom wrote:
    A user can launch an application, then launch it again. How do we make itso
    that the user can only run one instance of the application?
    Martin Nystrom
    Eli Lilly and Company
    ([email protected])
    Curtis Bragdon, Senior Consultant, Forte Software
    [email protected]
    Voice Mail: (510) 986-3807
    Paging: (888) 687-6723
    "I've seen dozens of triggering towns." - Richard Hugo
    John Jamison
    Vice President of Technology
    Sage IT Partners, Inc.
    415 392 7243 x 306
    [email protected]

  • Locking of table record

    Hi,
    I want to lock particular table record when user click on Update button and unlock when user click on Save Changes button. So that if user updating any record other user should not able to update it.
    For this i have used TableLocking's lock method with UserSession lifetime and stateless bean. Its working fine but if user click on update button and then without clicking on Save Changes button if he close the browser, obviously that record will not be unlock. I have to manually unlock that record in doExit method.
    Am i doing it write or is there any easy way to do this?
    I have also tried to use lifetime as Transaction so that record get unlock automatically as update query fired and its working but record also get unlock if any other query fired like insert or delete as Database tool internally automatically fire the commit command.
    So plz suggest batter way to do locking?

    Hi Vikram
    I'm not sure if I could help you but what we have done in one of our projects is that we have used the enqueue/dequeueu mechanism when using rfc's. So for example:
    1. One WebDynpro view where we read data from backend via a rfc call. In that process we do an enqueue so that the records that we read from backend are locked. (Note you can't do a disconnectIfAlive in this step because then the connection with the backend and the lock will be lost)
    2. A second WebDynpro view where the user can update the data and save the data via another rfc call. Here we do an dequeue (if the data entered is validated ok) so that the records are unlocked. Here you must do a .disconnectIfAlive() so that the connection with backend is released.
    Here is another thread discussing the same subject:
    Regards
    Göran

  • Creating BOM using BDC :How to display no of records from flat file under

    Hi,
          How to display no of records from flat file under one (Alternative BOM) vertically.
        When i execute, the records are replacing one by one.
    Here my coding:
    report ZBOM1
           no standard page heading line-size 255.
    *include bdcrecx1.
    DATA: BEGIN OF bdc OCCURS 0,
           matnr(18),
           werks(4),
           stlan(1),
          END OF BDC.
    DATA: BEGIN OF BDC1 OCCURS 0,
           idnrk(18),
           MENGE(18),
           MEINS(3),
           postp(1),
          END OF bdc1.
    DATA: BEGIN OF BDCDATA OCCURS 0,
             matnr(18),
             werks(4),
             stlan(1),
             idnrk(18),
             MENGE(18),
             MEINS(3),
             postp(1),
             posnr(4),
          END OF BDCDATA.
    data: ibdcdata type  standard table of bdcdata WITH HEADER LINE.
    *start-of-selection.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = 'C:\Documents and Settings\dilipkumar.b\Desktop\soft.txt'
       FILETYPE                       = 'ASC'
       HAS_FIELD_SEPARATOR            = ','
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
      VIRUS_SCAN_PROFILE            =
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                     =
      HEADER                         =
      TABLES
        DATA_TAB                      = BDCDATA
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_READ_ERROR               = 2
      NO_BATCH                      = 3
      GUI_REFUSE_FILETRANSFER       = 4
      INVALID_TYPE                  = 5
      NO_AUTHORITY                  = 6
      UNKNOWN_ERROR                 = 7
      BAD_DATA_FORMAT               = 8
      HEADER_NOT_ALLOWED            = 9
      SEPARATOR_NOT_ALLOWED         = 10
      HEADER_TOO_LONG               = 11
      UNKNOWN_DP_ERROR              = 12
      ACCESS_DENIED                 = 13
      DP_OUT_OF_MEMORY              = 14
      DISK_FULL                     = 15
      DP_TIMEOUT                    = 16
      OTHERS                        = 17
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    *perform open_group.
    loop at bdcdata.
    perform bdc_dynpro      using 'SAPLCSDI' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29N-STLAN'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RC29N-MATNR'
                                  'SOFTDRINKS'.
    perform bdc_field       using 'RC29N-WERKS'
                                  'WIND'.
    perform bdc_field       using 'RC29N-STLAN'
                                  '1'.
    perform bdc_field       using 'RC29N-DATUV'
                                  '16.09.2008'.
    perform bdc_dynpro      using 'SAPLCSDI' '0110'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RC29K-BMENG'
                                  '1'.
    perform bdc_field       using 'RC29K-STLST'
                                  '1'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29K-EXSTL'.
    perform bdc_dynpro      using 'SAPLCSDI' '0111'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29K-LABOR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLCSDI' '0140'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29P-POSTP(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=FCBU'.
    perform bdc_field       using 'RC29P-IDNRK(01)'
                                  BDCDATA-IDNRK.
    perform bdc_field       using 'RC29P-MENGE(01)'
                                  BDCDATA-MENGE.
    perform bdc_field       using 'RC29P-MEINS(01)'
                                  BDCDATA-MEINS.
    perform bdc_field       using 'RC29P-POSTP(01)'
                                  BDCDATA-POSTP.
    perform bdc_dynpro      using 'SAPLCSDI' '0130'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29P-POSNR'.
    perform bdc_field       using 'RC29P-POSNR'
                                   BDCDATA-POSNR.            "'0010'.
    perform bdc_field       using 'RC29P-IDNRK'
                                  BDCDATA-IDNRK.             "'15'.
    perform bdc_field       using 'RC29P-MENGE'
                                  BDCDATA-MENGE.             "'1'.
    perform bdc_field       using 'RC29P-MEINS'
                                  BDCDATA-MEINS.             "'ml'.
    perform bdc_dynpro      using 'SAPLCSDI' '0131'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RC29P-POTX1'.
    perform bdc_field       using 'RC29P-SANKA'
                                  'X'.
    *perform bdc_transaction using 'CS01'.
    *perform close_group.
    CALL TRANSACTION 'CS01' USING IBDCDATA MODE 'A' UPDATE 'S'.
    REFRESH IBDCDATA.
    endloop.
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR iBDCDATA.
      iBDCDATA-PROGRAM  = PROGRAM.
      iBDCDATA-DYNPRO   = DYNPRO.
      iBDCDATA-DYNBEGIN = 'X'.
      APPEND ibDCDATA .
    ENDFORM.
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
    IF FVAL <> NODATA.
        CLEAR iBDCDATA.
        iBDCDATA-FNAM = FNAM.
        iBDCDATA-FVAL = FVAL.
        APPEND iBDCDATA .
    ENDIF.
    ENDFORM.

    Hi,
    the BDCDATA structure must be fnam, fval,dynbegin,dynpro,program.
    You have to declare like this and pass this in your CALL TRANSACTION statement.
    Please give some other table name for BDCDATA you declared for and also for IBDCDATA.

  • How do I keep my Imessages from being viewed on other devices under my apple ID?

    How do I keep my Imessages from being viewed on other devices under my apple ID?

    No, you can authorize any number of email addresses on your Apple Id and then select one of those to use as an alternate Send and Recieve for Messages. It isn't necessary to use seperate AppleIDs. I use my phone number on my iPhone and an email address on the iPad.

  • All my contact are being copied to my friend's iphone and i also am getting his contacts on my phone,when i delete a contact it also deletes it from his phone,we are sharing the same apple ID. How can i stop our contacts from being shared between us

    All my contact are being copied to my friend's iphone and i also am getting his contacts on my phone,when i delete a contact it also deletes it from his phone,we are sharing the same apple ID. How can i stop our contacts from being shared between us

    Everything that you have checked in your icloud settings will be shared between devices using the same Apple ID.  If you don't want icloud to share that information, then simply turn off that process under settings > icloud

  • HOW TO  FIND OUT TABLE DESCRIPTION FROM JDBC?

    HOW WILL FIND OUT TABLE DESCRIPTION FROM JDBC?

    Have a look at ResultSetMetaData
    getColumnCount()
    getColumnName(int)
    getColumnTypeName(int)
    getColumnDisplaySize(int)
    ***Annie***

  • How to access internal table data from webdynpro to Flex application.

    Hi Connoisseur
    The data transfer from Abap WebDeypro to flex island works well. I followed , there is an example from Thomas Jung (by the way as always Great Work) and  Karthikeyan Venkatesan (Infosys) but this example covers simple type only.
    There is no example with complex types like arrayCollection which handle the transfer of data from flex to WebDynpro.
    i tried to do pass internal table value  to flex-datagrid.but its not work.
    i would like to know
    1.how to access internal table data from webdynpro to Flex application.
    2.how to pass the internal table to flex-datagrid.
    2.how to pass dynamically in ADOBE flex.
    3. how to do Flex is receiving the wd context data?
    4. how can we update WD context with FLEX data.
    Ple give me sample example and step by step procedure.
    Regards
    laxmikanth

    Hi Laxmikanth,
    Please refer this...
    Flash island: update complex type from flex
    Cheers..
    kris.

  • How can i stop an email from being sent?  i cannot find an outbox in outlook

    How can I stop an email from being sent.  I cannot find an outbox in Outlook

    Outlook is a Microsoft product, I'd suggest posting on the Office for Mac Product Forums.

  • How to lock a table when i insert a row

    hi, friends,
    how to lock a table when i insert a row, then unlock the table

    If you want to lock the whole table so that no-one else can do DML then you go LOCK TABLE <table> IN EXCLUSIVE MODE. This lock remains in force until you commit or rollback.
    There are less powerful locking modes available, but you can look those up in the OTN online documentation.
    APC

  • How do I stop google crome from being added to my computer when downloading Adobe Reader?

    How do I stop google crome from being added to my computer when downloading Adobe Reader?

    By unchecking the box on the download page.
    Or by downloading the offline installer from the FTP site or http://get.adobe.com/reader/enterprise/

  • I downloaded a movie to my ipad, when synced with computer, the computer is now also downloading the movie. why? and how do i stop the movie from being downloaded again

    i downloaded a movie to my ipad, when synced with computer, the computer is now also downloading the movie. why? and how do i stop the movie from being downloaded again

    Do you not want a backup of the iTunes content on your computer in the event the iPad is lost, stolen, or simply fails?

Maybe you are looking for

  • Unable to load itunes store on iphone 4S after updating to ios 7

    After I updated my iphone 4S to ios 7, I am unable to load the itunes store on my phone.  It spins like it is loading and then stops, but the screen is blank.  Does anyone know what might cause this?

  • Need more basic information

    I have the opportunity to teach a bunch of students at my school Flash.  I am NOT a Flash programmer.  I am/was a C/Unix and VB programmer.  So, I have 4-5 months to LEARN everything I need to learn (of course, I will continue to learn while I am tea

  • Running F110 with message "Proposal has been released 07/22/10 06:42:33"

    Dear experts, When I made proposal through F110,  it shows me "Parameters have been entered", then after setting the related parameters, I tried to run Proposal with check on "Start immediately", then the message "Proposal has been released 07/22/10

  • Image border problem

    Hoping someone can help with a pesky border problem. I'm working on a Mac and have no problem creating a thin, off-white border (2 pixels) around an image and everything seems fine. But after posting, the border acts like a rollover and changes colou

  • Creating Card/Book/Calendar Freezes iPhoto 11

    Trying to create holiday cards. When go to Create>Card - get the spinning ball for long period. Go to Force Quit and it shows iPhoto (not responding). Have closed and tried it over and same thing happens. Also went to Create>Book and Create>Calendar