DBMS_SHARED_POOL包的作用把需要的对象pin在shared pool中,由此被pin住的对象就
不再受shared pool LRU法则的约束而永久的驻留在shared pool中。
shared_pool_reserverd的含义是,当shared_pool 被不断的写入,同时由于LRU法则的存在
较旧的对象被交换出去,这样就会造成shared_pool被分割成许多较小的区域,这时如果应用
请求一个 较大的连续的内存区域时,如果没有shared_pool_reserved的存在,oracle就会
去搜索整个shared pool以寻找一个连续的较大区域,当搜索不到满足需求的区域时,oracle
就不得不释放一些区域来满足新来的需求,这样就可能造成性能的下降,因为被释放的区域可能
恰恰是其他应用所需要的,oracle又不得不进行重新解析。为了避免这种情况的出现,
shared_pool_reserverd_size用来设置一个shared pool 保留的区域,用于应用对较大内存
区域的需求,保留区的信息可以查询v$shared_pool_reserved视图。
DBMS_SHARED_POOL可以由?\RDBMS\ADMIN\DBMSPOOL.SQL创建
SQL> @?\rdbms\admin\dbmspool.sql
程序包已创建。
授权成功。
视图已创建。
程序包体已创建。
查询v$db_object_cache视图,看dbms_job包在library cache中的状态。
v$db_object_cache用于查询cache在library cache中的对象信息,这里的对象包括表,
索引,聚簇,同义词,PL/SQL过程,包,触发器。
SQL> col name for a20
SQL> col type for a20
SQL> select name,type,sharable_mem,loads,kept from v$db_object_cache
2 where upper(name)=upper('dbms_job');NAME TYPE SHARABLE_MEM LOADS KEP
-------------------- -------------------- ------------ ---------- ---
DBMS_JOB NOT LOADED 0 1 NO
DBMS_JOB NOT LOADED 0 1 NO对dbms_job包进行keep操作
SQL> exec dbms_shared_pool.keep('dbms_job');PL/SQL 过程已成功完成。
SQL> select name,type,sharable_mem,loads,kept from v$db_object_cache
2 where upper(name)=upper('dbms_job');NAME TYPE SHARABLE_MEM LOADS KEP
-------------------- -------------------- ------------ ---------- ---
DBMS_JOB PACKAGE 20828 2 YES
DBMS_JOB PACKAGE BODY 12636 2 YES对dbms_job包进行unkeep操作
SQL> exec dbms_shared_pool.unkeep('dbms_job');PL/SQL 过程已成功完成。
SQL> select name,type,sharable_mem,loads,kept from v$db_object_cache
2 where upper(name)=upper('dbms_job');NAME TYPE SHARABLE_MEM LOADS KEP
-------------------- -------------------- ------------ ---------- ---
DBMS_JOB PACKAGE 20828 2 NO
DBMS_JOB PACKAGE BODY 12636 2 NOFLUSH shared pool
SQL> alter system flush shared_pool;系统已更改。
SQL> select name,type,sharable_mem,loads,kept from v$db_object_cache
2 where upper(name)=upper('dbms_job');NAME TYPE SHARABLE_MEM LOADS KEP
-------------------- -------------------- ------------ ---------- ---
DBMS_JOB NOT LOADED 0 2 NO
DBMS_JOB NOT LOADED 0 2 NO

扫描二维码关注我的微学堂
搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





