From:Steve Adams
Date:04-May-2001 08:05
Subject:   Why does GRANT need an X library cache pin?

The grant needs to invalidate the cached meta data for DBMS_PIPE in the library cache. The X pin is required for the invalidation.

I am trying to grant execute on the DBMS_PIPE package to user A. My session was hanging. So I went to V$SESSION_WAIT to find why my session was hanging. My session was waiting for library cache pin. I looked at X$KGLPN and X$KGLOB and saw that my statement was requesting the library cache pin in exclusive mode(3) and a few sessions were executing PL/SQL blocks with calls to DBMS_PIPE.UNPACK_MESSAGE (so holding the same library cache pin in shared mode). My questions is why would GRANT request the library cache pin in exclusive mode? I am not even granting to the same user who is holding the pin. Any ideas?