参考:http://www.cnblogs.com/zlja/archive/2011/06/24/2449313.html
1,包dbms_shared_pool的数据字典,通过它来执行过程锁定内存
2,v$db_object_cache 来查询那个过程锁定
SYS@sen>select owner,name,type from v$db_object_cache where SHARABLE_MEM>10000 AND (TYPE='PACKAGE' OR TYPE='PACKAGE BODY' OR TYPE='FUNCTION' OR TYPE='PROCEDURE') AND kept='NO';
3,在scott用户下新建一个procedure
create or replace procedure p1 as begin null; end;
DBA_objects查看,注意这里scott需要大写
SYS@sen>select owner, object_type,OBJECT_NAME from DBA_objects where object_type='PROCEDURE' and owner='SCOTT';
查看scott下面的所有存储过程
4,将这个过程锁在内存
SYS@sen>exec dbms_shared_pool.keep('SCOTT.p1','P')
查看
SYS@sen>select owner,name,type from v$db_object_cache where owner='SCOTT' AND kept='YES';
解锁
SYS@sen>exec dbms_shared_pool.unkeep('SCOTT.p1','P')
试验中的系统触发器需要grant
grant execute on dbms_shared_pool to HR;
下面是将scott下面的emp表的select等权限给用户HR
SCOTT@DB112>grant select,insert,update,delete on emp to hr;