Clear blocking locks

Clear blocking locks
We have a situation where an update (using sqlplus, tranaction is commited) causes a blocking condition for a client application.
The single client can be running once this occurs. However, other clients hang on startup.
Additionaly, the situation clears it self after a couple of hours.
Bounceing the database, killing the connection has no effect.
What is going on?

A nearly identical post was placed on metalink related to this problem.
When the database is restarted then for all practical purposes then for all practical purposes there are no user sessions nor any locks. If the application still has an issue then the problem is most likely in the application, the Application Server, or Web Server and not in Oracle.
Mark, you need to post some query results that show an issue in Oracle. Such as what does v$session_wait show these sessions are waiting on? Do any of the sessions show as being lockwaited in v$session?
For all we know the client grabs a single control record (row) on startup and the other sessions hang waiting for the first session to commit. The board readers need more specifics to go on.
HTH -- Mark D Powell --

Similar Messages

  • Monitoring blocking Locks

    Hi
    This question relates to monitoring blocking locks on a 9.2.0.5 2 node RAC
    Origionally I have been monitoring bocking locks with every 5 mins using the following query:
    "select * from dba_blockers"
    I have recently implemented monitoring via grid control this is running an out of the box metric every 5 mins, the sql behind it is as follows:
    "SELECT blocking_sid, num_blocked
    FROM ( SELECT blocking_sid, SUM(num_blocked) num_blocked
    FROM ( SELECT l.id1, l.id2,
    MAX(DECODE(l.block, 1, i.instance_name||'-'||l.sid,
    2, i.instance_name||'-'||l.sid, 0 )) blocking_sid,
    SUM(DECODE(l.request, 0, 0, 1 )) num_blocked
    FROM gv$lock l, gv$instance i
    WHERE ( l.block!= 0 OR l.request > 0 ) AND
    l.inst_id = i.inst_id
    GROUP BY l.id1, l.id2)
    GROUP BY blocking_sid
    ORDER BY num_blocked DESC)
    WHERE num_blocked != 0 "
    Now.. At one point today the alert using "select * from dba_blockers" fired where as the out of the box metric from gird control did not fire.... alert duration was around 5 - 10 mins
    At first i simply assumed that this could have been a brief lock and due to both 5 min intervals being out of sync, the lock had shown and cleared before the grid control interval run.
    now im a little more curious.
    Is there any significan difference in what these 2 different SQL's will alert on, I was under the impression that DBA_BLOCKERS was simply querying a number of joined views, and Oracle had decided to use V$lock for their out of the box metric as it was more efficient.
    Any comments welcome
    Thanks

    Just to prove that the SQL is correct I have constrcuted a demo for you...
    SQL> create table t (a char(1));
    Table created.
    SQL> insert into t values ('z');
    1 row created.
    SQL> commit;
    in session 1 ---->
    select * from t where a='z' for update;
    ==================================================================
    in session 2 ---->
    update t set a='x' where a='z';
    (session simply hangs)
    ==================================================================
    in session 3 ------>
    SQL> select * from dba_blockers;
    HOLDING_SESSION
    48
    SQL>
    SQL> SELECT blocking_sid, num_blocked
    FROM ( SELECT blocking_sid, SUM(num_blocked) num_blocked
    FROM ( SELECT l.id1, l.id2, MAX(DECODE(l.block, 1, i.instance_name||'-'||l.sid,
    2, i.instance_name||'-'||l.sid, 0 )) blocking_sid,
    SUM(DECODE(l.request, 0, 0, 1 )) num_blocked
    FROM gv$lock l, gv$instance i
    WHERE ( l.block!= 0 OR l.request > 0 ) AND
    l.inst_id = i.inst_id
    GROUP BY l.id1, l.id2)
    GROUP BY blocking_sid
    ORDER BY num_blocked DESC)
    WHERE num_blocked != 0;
    2 3 4 5 6 7 8 9 10 11 12
    BLOCKING_SID NUM_BLOCKED
    RAC1-48 1
    So back to the origional question,
    I am using both these queries from different monitors on my prod syystem, both running on 5 minute intervals, " select * from dba_blockers" fired where as the above query - querying gv$lock did not fire.
    Origionaly i assumed that the blocking lock may have simply lasted 3t0 seconds, and due the 5 minute monitor intervals of each metric not being in sync, ... "select * from dba_blockers" may have picked up the lock, then the query selecting from gv$lock ran 2 mins later by which time the lock had disapeared.
    -Can anyone suggest any other reasons other than this why one monitor (select * from dba_blockers) picked up the lock and the other (gv$lock) didnt?
    Thanks

  • Monitoring Blocking locks (dba_blockers vs v$lock)

    Hi
    This question relates to monitoring blocking locks on a 9.2.0.5 database
    Origionally I have been monitoring bocking locks with every 5 mins using the following query:
    "select * from dba_blockers"
    I have recently implemented monitoring via grid control this is running an out of the box metric every 5 mins, the sql behind it is as follows:
    "SELECT blocking_sid, num_blocked
    FROM ( SELECT blocking_sid, SUM(num_blocked) num_blocked
    FROM ( SELECT l.id1, l.id2,
    MAX(DECODE(l.block, 1,l.sid,
    2,l.sid, 0 )) blocking_sid,
    SUM(DECODE(l.request, 0, 0, 1 )) num_blocked
    FROM v$lock l
    WHERE ( l.block!= 0 OR l.request > 0 ) AND
    GROUP BY l.id1, l.id2)
    GROUP BY blocking_sid
    ORDER BY num_blocked DESC)
    WHERE num_blocked != 0 "
    Now.. At one point today the alert using "select * from dba_blockers" fired where as the out of the box metric from gird control did not fire.... alert duration was around 5 - 10 mins
    At first i simply assumed that this could have been a brief lock and due to both 5 min intervals being out of sync, the lock had shown and cleared before the grid control interval run.
    now im a little more curious.
    Is there any significan difference in what these 2 different SQL's will alert on (different types of blocking locks / sessions?) , I was under the impression that DBA_BLOCKERS was simply querying a number of joined views, and Oracle had decided to use V$lock for their out of the box metric as it was more efficient.
    Any comments welcome
    Thanks

    Re: Monitoring blocking Locks

  • How to clear a lock

    Database has a lock that is preventing users from using it. How do I clear this lock?

    Have Adam's great stored procedure to see who/how/by whom is locked
    Who Is Active? v10.00 (2010-10-21)
    (C) 2007-2010, Adam Machanic
    Feedback: mailto:[email protected]
    Updates: http://sqlblog.com/blogs/adam_machanic/archive/tags/who+is+active/default.aspx
    "Beta" Builds: http://sqlblog.com/files/folders/beta/tags/who+is+active/default.aspx
    License: 
    Who is Active? is free to download and use for personal, educational, and internal 
    corporate purposes, provided that this header is preserved. Redistribution or sale 
    of Who is Active?, in whole or in part, is prohibited without the author's express 
    written consent.
    Usage
    /*BLOCKING*/
    EXEC dbo.sp_WhoIsActive @find_block_leaders =1,
    @output_column_list ='[blocked_session_count][blocking_session_id][session_id][CPU][status][wait_info]
                          [database_name][sql_text][host_name][open_tran_count]',
    @sort_order='[blocked_session_count]DESC'
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

  • How to check blocking locks

    I have a query as to how to check for blocking locks in the database. I am trying to check it from TOAD but the session of TOAD is hanging. I hope, my question is clear.
    Please, help in solving the doubt.
    regards

    Hi user574290,
    Here is other script:
    clear screen
    set serveroutput on
    BEGIN
    dbms_output.enable(1000000);
    for do_loop in (select session_id, a.object_id, xidsqn, oracle_username, b.owner owner,
                    b.object_name object_name, b.object_type object_type
                    FROM v$locked_object a, dba_objects b
                       WHERE xidsqn != 0
                        and b.object_id = a.object_id)
    loop
        dbms_output.put_line('.');
        dbms_output.put_line('Blocking Session   : '||do_loop.session_id);
         dbms_output.put_line('Object (Owner/Name): '||do_loop.owner||'.'||do_loop.object_name);
        dbms_output.put_line('Object Type        : '||do_loop.object_type);
         for next_loop in (select sid from v$lock
                         where id2 = do_loop.xidsqn
                             and sid != do_loop.session_id)
         LOOP
              dbms_output.put_line('Sessions being blocked   :  '||next_loop.sid);
        end loop;          
    end loop;
    END;
    /Best Regards,
    Francisco Munoz Alvarez
    www.oraclenz.com

  • Blocking Lock on Unique Index in Oracle

    Hi
    I would like to know under which circumstances blocking lock on unique index would happen in oracle.
    This is happening in one of our system intermittenly and because of this blocking lock the whole system become super slow
    and we need to kill session that holding this blocking lock
    And how to avoid this kind of lock?
    For time being , i plan to create schedule job that will clear this blocking lock every 5 minutes.
    Thanks

    Hi,
    I would suggest, when you see the problem, have a look in v$lock (you do that now) and v$locked_object and v$session. From v$lock and locked_object, you can find the session which has generated the lock and from v$session you can get the exact SQL (sql_id) running in the session.
    Get the text of that sql from v$sql.
    The objective is to find out which SQL is generating the lock. It can be some update (after which there is no commit) or something like that.
    Once you find out the SQL(s) causing the lock you can give a real solution.
    Regards

  • SQL Timeouts and Blocking Locks

    SQL Timeouts and Blocking Locks
    Just wanted to check in and see if anyone here has feedback on application settings, ColdFusion settings, JBOSS settings or other settings that could help to limit or remove SQL Timeouts and blocking locks on SID's.
    We're using MS SQL 2000 with JBOSS and IIS5.
    We've been seeing the following error in our logs that starts blocking locks in SQL:
    java.sql.SQLException: [newScale] [SQLServer JDBC Drive] [SQLServer] Lock request time out period exceeded.
    Once this happens, we're hosed until we remove the blocking SID in SQL.  These are the connections to the application.
    Any feedback would be great.  Thanks!

    Hi
    This is your exact solution:
    Select a.username, a.sid, a.serial#, b.id1, c.sql_text
    From v$session a, v$lock b, v$sqltext c
    Where b.id1 in( Select distinct e.id1
    from v$session d , v$lock e
    where d.lockwait = e.kaddr ) and
    a.sid = b.sid and
    c.hash_value = a.sql_hash_value and
    b.request =0;
    Thanks
    Sarju
    Oracle DBA
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by I'm clueless:
    Can someone give me the SQL statement to
    show if there are any blocking database locks and if so - which user is locking the Database?
    Thanks in Advance<HR></BLOCKQUOTE>
    null

  • Using OleDbDataAdapter Update with InsertCommands and getting blocking locks on Oracle table

    The following code snippet shows the use of OleDbDataAdapter with InsertCommands.  This code is producing many inserts on the Oracle table and is now suffering from contention... all on the same table.  How does the OleDbDataAdapter produce
    inserts from a dataset... what characteristics do these inserts inherent in terms of batch behavior... or do they naturally contend for the same resource. 
    oc.Open();
    for (int i = 0; i < xImageId.Count; i++)
    // Create the oracle adapter using a SQL which will not return any actual rows just the structure
    OleDbDataAdapter da =
       new OleDbDataAdapter("SELECT BUSINESS_UNIT, INVOICE, ASSIGNMENT_ID, END_DT, RI_TIMECARD_ID, IMAGE_ID, FILENAME, BARCODE_LABEL_ID, " +
       "DIRECT_INVOICING, EXCLUDE_FLG, DTTM_CREATED, DTTM_MODIFIED, IMAGE_DATA, PROCESS_INSTANCE FROM sysadm.PS_RI_INV_PDF_MERG WHERE 1 = 2", oc);
    // Create a data set
    DataSet ds = new DataSet("documents");
    da.Fill(ds, "documents");
    // Loop through invoices and write to oracle
    string[] sInvoices = invoiceNumber.Split(',');
    foreach (string sInvoice in sInvoices)
        // Create a data set row
        DataRow dr = ds.Tables["documents"].NewRow();
        ... map the data
        // Populate the dataset
        ds.Tables["documents"].Rows.Add(dr);
    // Create the insert command
    string insertCommandText =
        "INSERT /*+ append */ INTO PS_table " +
        "(SEQ_NBR, BUSINESS_UNIT, INVOICE, ASSIGNMENT_ID, END_DT, RI_TIMECARD_ID, IMAGE_ID, FILENAME, BARCODE_LABEL_ID, DIRECT_INVOICING, " +
        "EXCLUDE_FLG, DTTM_CREATED, DTTM_MODIFIED, IMAGE_DATA, PROCESS_INSTANCE) " +
        "VALUES (INV.nextval, :BUSINESS_UNIT, :INVOICE, :ASSIGNMENT_ID, :END_DT, :RI_TIMECARD_ID, :IMAGE_ID, :FILENAME,  " +
        ":BARCODE_LABEL_ID, :DIRECT_INVOICING, :EXCLUDE_FLG, :DTTM_CREATED, :DTTM_MODIFIED, :IMAGE_DATA, :PROCESS_INSTANCE)";
    // Add the insert command to the data adapter
    da.InsertCommand = new OleDbCommand(insertCommandText);
    da.InsertCommand.Connection = oc;
    // Add the params to the insert
    da.InsertCommand.Parameters.Add(":BUSINESS_UNIT", OleDbType.VarChar, 5, "BUSINESS_UNIT");
    da.InsertCommand.Parameters.Add(":INVOICE", OleDbType.VarChar, 22, "INVOICE");
    da.InsertCommand.Parameters.Add(":ASSIGNMENT_ID", OleDbType.VarChar, 15, "ASSIGNMENT_ID");
    da.InsertCommand.Parameters.Add(":END_DT", OleDbType.Date, 0, "END_DT");
    da.InsertCommand.Parameters.Add(":RI_TIMECARD_ID", OleDbType.VarChar, 10, "RI_TIMECARD_ID");
    da.InsertCommand.Parameters.Add(":IMAGE_ID", OleDbType.VarChar, 8, "IMAGE_ID");
    da.InsertCommand.Parameters.Add(":FILENAME", OleDbType.VarChar, 80, "FILENAME");
    da.InsertCommand.Parameters.Add(":BARCODE_LABEL_ID", OleDbType.VarChar, 18, "BARCODE_LABEL_ID");
    da.InsertCommand.Parameters.Add(":DIRECT_INVOICING", OleDbType.VarChar, 1, "DIRECT_INVOICING");
    da.InsertCommand.Parameters.Add(":EXCLUDE_FLG", OleDbType.VarChar, 1, "EXCLUDE_FLG");
    da.InsertCommand.Parameters.Add(":DTTM_CREATED", OleDbType.Date, 0, "DTTM_CREATED");
    da.InsertCommand.Parameters.Add(":DTTM_MODIFIED", OleDbType.Date, 0, "DTTM_MODIFIED");
    da.InsertCommand.Parameters.Add(":IMAGE_DATA", OleDbType.Binary, System.Convert.ToInt32(filedata.Length), "IMAGE_DATA");
    da.InsertCommand.Parameters.Add(":PROCESS_INSTANCE", OleDbType.VarChar, 10, "PROCESS_INSTANCE");
    // Update the table
    da.Update(ds, "documents");

    Here is what Oracle is showing as blocking locks and the SQL that has been identified with each of the SIDS.  Not sure why there is contention.  There are no triggers or joined tables in this piece of code.
    Here is the SQL all of the SIDs below are running:
    INSERT INTO sysadm.PS_RI_INV_PDF_MERG (SEQ_NBR, BUSINESS_UNIT, INVOICE, ASSIGNMENT_ID, END_DT, RI_TIMECARD_ID, IMAGE_ID, FILENAME, BARCODE_LABEL_ID, DIRECT_INVOICING, EXCLUDE_FLG, DTTM_CREATED, DTTM_MODIFIED, IMAGE_DATA, PROCESS_INSTANCE) VALUES (SYSADM.INV_PDF_MERG.nextval,
    :BUSINESS_UNIT, :INVOICE, :ASSIGNMENT_ID, :END_DT, :RI_TIMECARD_ID, :IMAGE_ID, :FILENAME, :BARCODE_LABEL_ID, :DIRECT_INVOICING, :EXCLUDE_FLG, :DTTM_CREATED, :DTTM_MODIFIED, :IMAGE_DATA, :PROCESS_INSTANCE)
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 1150 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 1156 (BTSUSER,biztprdi,BTSNTSvc64.exe) in instance FSLX3
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 6 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX2
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 1726 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX2
    SID 1452 (BTSUSER,BIZTPRDI,BTSNTSvc64.exe) in instance FSLX1 is blocking SID 2016 (BTSUSER,biztprdi,BTSNTSvc64.exe) in instance FSLX2

  • Blocking Locks - What Was Likely Going On?

    I had a blocking lock yesterday that showed up in OEM under Cluster Database --> Cluster Database Locks. The blocking lock was a row exclusive (RX) table lock that was blocking 175 other sessions that were listed under the blocking lock as having requested row share (RS) locks. It was an hour before I found out about this problem.
    Two questions:
    1.] The "Oracle Database Concepts 10gR2" book, Table 13-13, states that a row exclusive (RX) table lock can be obtained as a result of INSERT, UPDATE or DELETE DML and that in RX mode share lock modes are not permitted (which is why I had 175 blocked sessions). Does this mean that a user must have been doing a long running (1 hour plus) INSERT, UPDATE or DELETE or is there another more likely cause that I'm not aware of?
    2.] The only ways I know of to request a row share lock (of which 175 were blocked due to the RX lock) is by using:
    LOCK_TABLE <table name> IN SHARE MODE;
    LOCK_TABLE <table name> IN SHARE EXCLUSIVE MODE;
    LOCK_TABLE <table name> IN EXCLUSIVE MODE;
    I can't imagine a user doing any of these commands so is there another more likely reason that 175 row share (RX) locks were being requested (and blocked)?
    Thanks for any insight you can offer. I ended up killing the session that held the RX lock and that resolved the problem but I'd like to better understand what was happening.

    1.] The "Oracle Database Concepts 10gR2" book, Table
    13-13, states that a row exclusive (RX) table lock
    can be obtained as a result of INSERT, UPDATE or
    DELETE DML and that in RX mode share lock modes are
    not permittedThat table shows that RS (mode 2) is permitted while RX lock is held.
    Did you mean to say that sessions were waiting on a S mode (4) lock?
    This could indicate that update/delete was attempted on a parent table and that dependend table was lacking an index on fk column. (may answer your q.2)

  • Blocking locks encountered while splitting partitions in 11g

    Background: I've taken over administration of a database that has several date-range partitioned tables that, suffering from a lack of proper administration, have not had their MAXVALUE partition split into the requisite monthly partitions, in almost a year. As a result, in some cases the MAXVALUE partition has 10 million rows (the monthly partitions should average 750K rows).
    My understanding is that the syntax I am using to perform the split, should allow for on-line access to the tables while the split is being performed. Here is my syntax without the actual table names:
    ALTER TABLE owner.table_name
    SPLIT PARTITION MAXVALUE AT
    (TO_DATE(' 2012-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    INTO (PARTITION PART201201
    TABLESPACE tablespace
    PCTFREE 10
    INITRANS 1
    MAXTRANS 255,
    PARTITION MAXVALUE) update indexes;
    Problem: In attempting to split the MAXVALUE partition into monthly partitions while the database is on-line and accessible, I see application sessions being blocked by my split session.
    So, is my understanding above incorrect? Is there some additional syntax that I am missing? Or, are the blocking locks I'm seeing merely transient in nature, and can be ignored? The server I'm running on is not very "beefy", and the split is taking quite a while to run.
    Any assistance would be appreciated.

    >
    Background: I've taken over administration of a database that has several date-range partitioned tables that, suffering from a lack of proper administration, have not had their MAXVALUE partition split into the requisite monthly partitions, in almost a year. As a result, in some cases the MAXVALUE partition has 10 million rows (the monthly partitions should average 750K rows).
    My understanding is that the syntax I am using to perform the split, should allow for on-line access to the tables while the split is being performed.
    Problem: In attempting to split the MAXVALUE partition into monthly partitions while the database is on-line and accessible, I see application sessions being blocked by my split session.
    So, is my understanding above incorrect? Is there some additional syntax that I am missing? Or, are the blocking locks I'm seeing merely transient in nature, and can be ignored? The server I'm running on is not very "beefy", and the split is taking quite a while to run.
    >
    DML that modifies the table cannot be performed on the table while the split is ongoing.
    Your bigger problem is that you are using the WRONG method for your use case. If you repeatedly split the MAXVALUE partition you will be repeatedly copying and moving the same ultimate MAXVALUE data over and over again.
    DBMS_REDEFINITION is one of your options. But since I just answered this same question 3 days ago see my reply in this thread for a more thorough discussion of your options.
    Re: Which is the Best method to Split Partition

  • Blocking locks by user report hangs

    Please,
    "Blocking locks by user" report under "Database Administration Section" of "Data Dictionary Reports" is hanging
    every time we try to run it against any database.
    Please, confirm this issue in Oracle Sql Developer 4.0 EA since it was working perfectly in
    Oracle SQL Developer 3.2.2 (3.2.20.09.87).
    Also, allow us an estimate deadline for correction.
    Thanks in advance,
    Andraly Ng

    please make a copy of the posting in the report-forum

  • Blocking Locks

    Oracle 9.2.0.8
    Our database is used as backend for IIS Servers. Several times per week we experience Blocking locks situation when we could have around 300 – 400 session waiting. Most time when somebody fire up some Update or Delete process. Every time when I check dba_waiters table during this it gives me 10 – 20 holding session. After killing them all things go back to normal.
    My question how do I know which one out of this 10 – 20 session is first or real offender. The reason I asked that sometimes after checking SQL’s from several holding sessions they different. And I am not sure which one is the real issue. If I could find this I would be able to go back to developers and see if they missed commit or something in code.

    You can use DBA_BLOCKERS and DBA_WAITERS to generate a hierarchy-- the session at the top of the hierarchy is the real offender (assuming, of course, that the locking is not intentional).
    In DBA_WAITERS, you'll see a WAITING_SESSION and a HOLDING_SESSION. If you see entries indicating that A is waiting for B, B is waiting for C, and C is waiting for D, you see that there is a hierarchy of locks. Session D in this case is the ultimate culprit (it is blocking a session and it is not blocked by any other session). Of course, in reality, there may be multiple culprit sessions. And you'd want to run the query a couple of times to make sure that what you're seeing is consistent-- if the blockers and waiters change regularly, that's a very different situation than if things are stuck because one session has gone out to lunch.
    Justin

  • Blocking Locks monitoring in 12c cloud control

    Ours is a 11.2 4 node RAC environment, and to check for blocking locks i run a sql script. I want to monitor the blocking locks in the system and if there are any locks for more than say 10 minutes then send out a mail to a group to look into it.
    We have 12c cloud control setup, my question is if there is a way to setup alerting/monitoring via 12c for checking blocking locks on all nodes and send out email notifications if there are any. I am not much familiar with 12c, please let me know and if its possible let me know the steps to set it up.

    Resolved by removing and re-adding the target...

  • How to find out the reason for blocking locks?

    PB Application try to create data in ASE 12.5. With this operation, there are sql, sp, trigger involved. Most of the it is okay. With lock of sleeping or sync sleeping lock. User wait for a short time to get the result.
    but some time, there are blocking lock.
    If spid for the app is 1. then looks like this app also generate another spid, say it is 2. and 2 is blocking by 1. spid 1 holding lock!
    then all user is frozen because of spid 1 holding lock!!!  How to figure it out the reason for blocking locks?

    Thanks, Mark. Yes, sp_lock, sp_who, ... are common tool I used.
    I found out one case like:
    I have a SP which call a View for data.
    When I run this SP, suppose the sipd is 1. then it will create another spid 2 because of access view and it gone very quick. This cause spid 1 block spid 2 within a short time.
    If the are many user run the app, the app will be  frozen and everyone is waiting. Finally it release, no dead lock, but the performance is not acceptable.
    That why I have this question.

  • A lot of blocking locks on NRIV daily

    Hi experts,
      Our system has a lot of blocking locks on NRIV. I use DMV to check and find many processes update RF_BELEG frequently. I find note 840901 can solve using parallel buffering, but our FI users do not agree sale document number without continuous chronological ascending order. Any solution from SAP or SQL server? Could SQL server parallel update NRIV table?

    hi dennis,
    this issue would be complicated since if you're not allowing your Apps server buffering NRIV than your SAP performance will decrease. this is because every transaction which require number need to be generated first every time your user save data to your SAP system.
    This buffering technique is used to handle  this issue so if your Apps server do not need to ask new number every time your user save their transaction data.
    i have same issue when our external (public) auditor ask me than i ask for SAP support and then they explain about this. when i explain this issue to my external auditor, they understand this issue and they said no problem as long as  this issue could be accepted.
    ardhian
    http://sapbasis.wordpress.com
    http://ardhian.kioslinux.com

Maybe you are looking for

  • Flashing yellow light?

    I've been reading other posts regarding the problems encountered by some after upgrading the Apple TV to 2.2. I believe my problem is related, but not sure. Others have found relieve by holding the "menu" and "-" keys on the remote to regain control,

  • Can anyone explain this - iSight and fan speed?

    Hello - I pulled out my external iSight camera and hooked it up to my Powermac G4. I have a wind tunnel machine when the firewire was inserted in the iSight, the tower fans all revved down to a dull roar. I unplugged the the firewire and the fans rev

  • Problems importing photos....

    my iphoto is acting really funny. When you import photos, it seems as though they have actually imported but then a notification comes up that says that iphoto cannot read the (DSC....IMG...) type of files. now there are areas in my library that had

  • TODAY - iTunes Release 9.01 ..What does it do ???

    Can any of the Apple Support peolpe point me into the right direction where I can read what problems this "update" is suppose to fix before I do anything ??. I do not want to run into more troubles (Quicktime and some other VIDEO applications as I di

  • Installing new and uninstalling old Flash Player

    I installed the latest Adobe Flash Player version on my iMac.  Now I keep getting an icon and window telling me to install Flash player everytime I click on my hard drive.  When I click to go ahead and install, I receive the message that a later vers