Re: Library lock issue

  • From: Lothar Flatz <l.flatz@xxxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Thu, 13 May 2021 12:48:25 +0200

You can query dba_hist_sql_bind or v$sql_bind_capture and find out what the mismatch is.
Have it corrected.

Am 13.05.2021 um 11:39 schrieb Lok P:

One of the procedures does accept ~400 input bind values, so suspecting it as a bind value mismatch causing a lot of cursor , few team mates suggest calling dbms_shared_pool.markhot by passing the package.procedure name to it. But at the moment , I do see 5 entries in gv$sql_shared_cursor for that sql_id and each of them having a 'bind_mismatch'column set as 'Y'. So I am yet to check the working of markhot and so I'm wondering if it's really going to help, because 5 child cursors doesn't seem to be a big number but it may be that during peak periods it reaches to some very high number.

On Thu, May 13, 2021 at 12:32 PM Lok P <loknath.73@xxxxxxxxx <mailto:loknath.73@xxxxxxxxx>> wrote:


     I am seeing none of the three package.procedure has the latest
    timestamp pointing to recent time. So there may be no
    recompilation thing happening as we suspected.

    You were correct that the object address in gV$db_object_cache is
    of 16 character length. But when i tried to pass that value of
    ADDR to the query it didn't give me any result. So we have not
    restarted the database from the time of issue but I think I may
    need to query the gv$db_object_cache during run time when the
    issue is occurring and then perhaps will get non zero rows from
    v$db_object_cache for that addr value. Also is it that the
    gv$db_object_cache is only going to tell us about the name of the
    package only which we already know of , or any additional
    information can be obtained to dig more into the issue.

    But i did see in dba_hist_active_sess_history during the library
    cache load lock wait event , the blocking session appears to be
    executing the same package.procedure. So wondering what does that
    mean? I did check with the dev team , as per the business
    functionality it is supposed to run from multiple concurrent
    sessions during peak activity time. But we never encountered this
    issue in the past while this database was in older
    versions(11.2.0.4) and old Non Exa -hardware.

    Just for information we have below sga parameters set , not sure
    if this has anything to do with it.

    db_cache_size - 6GB

    shared_pool_size - 6GB

    shared_pool_reserved_size - 1GB

    sga_max_size - 35GB

    sga_target - 0


          sga_min_size - 0


    On Thu, May 13, 2021 at 1:05 AM Andy Sayer <andysayer@xxxxxxxxx
    <mailto:andysayer@xxxxxxxxx>> wrote:

        Usually it will be heavy access when there is also a
        recompilation requirement. Check the dates and time stamps for
        these packages in dba_objects and see if they’re recent.

        It’s worth getting the results from v$db_object_cache as that
        will show the blocker more clearly (eg your three procedures
        might share a call in another package which is getting
        recompiled).

        Thanks,
        Andrew

        On Wed, 12 May 2021 at 20:22, Lok P <loknath.73@xxxxxxxxx
        <mailto:loknath.73@xxxxxxxxx>> wrote:

            The spike during the period which is contributing to
            'library cache load lock' waits are mainly pointing to
            three different procedures associated to two packages.
            This is quite visible from OEM top activity section. Yet
            to look into v$db_object_cache information. Can it be
            because of heavy access to this packages?


            On Thu, 13 May 2021, 12:42 am Andy Sayer,
            <andysayer@xxxxxxxxx <mailto:andysayer@xxxxxxxxx>> wrote:

                Hi Lok,

                First step would be to see what the library lock was
                against. Since 12.1, this information is easily
                accessed in v$db_object_cache :
                select * from v$db_object_cache where addr =
                to_char(30836511936,lpad('0X',16,'0'));
                (I can't remember off the top of my head if you need
                to lpad to 16 characters or 18 so try 18 if this one
                doesn't return anything. This is all in memory so it
                won't work after a restart and you will need to be
                instance sensitive for RAC)
                Then some further information about the calls that are
                requiring this library lock:
                select sql_id, plsql_entry_object_id,
                plsql_entry_subprogram_id, plsql_object_id,
                plsql_subprogram_id
                ,time_model
                , count(*)
                from v$active_session_history
                where event='library cache load lock'
                group by sql_id, plsql_entry_object_id,
                plsql_entry_subprogram_id, plsql_object_id,
                plsql_subprogram_id
                ,time_model
                order by count(*) desc fetch first 10 rows only;

                There might be something obvious based on these results.

                Thanks,
                Andrew

                On Wed, 12 May 2021 at 18:43, Lok P
                <loknath.73@xxxxxxxxx <mailto:loknath.73@xxxxxxxxx>>
                wrote:

                    This is version 19.9.0.0.0 Oracle version and it's
                    an Exadata machine. We are seeing high wait events
                    of "library cache load locks" on this database
                    during a high activity period. Below attached is
                    the ASH report from the specific period. Want to
                    understand if this version has any bugs around this ?

                    I see one bug as below related to "library cache
                    load lock" but I am not seeing such parallel
                    maintenance operations in our case though we have
                    many DMLs involved with partition tables during
                    this window. So it does not fully match our symptoms.

                    High Library Cache Lock and Library Cache Load
                    Lock Waits During Concurrent Heavy Mixed PMOPs and
                    DML on Several Partitioned Tables (Doc ID 2181034.1)


                    Regards
                    Lok


Other related posts: