keep代码在shared pool内存

1、创建此包

SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\dbmspool.sql

程序包已创建。


授权成功。


视图已创建。


程序包体已创建。

SQL> grant execute on dbms_shared_pool to users;

授权成功。

2、使用

SQL> exec dbms_shared_pool.keep('SCHEMA.P_AUTONOMOUS_TRANSACTION','p');

PL/SQL 过程已成功完成。

SQL> exec dbms_shared_pool.UNkeep('SCHEMA.P_AUTONOMOUS_TRANSACTION','p');

PL/SQL 过程已成功完成。

SQL> exec dbms_shared_pool.sizes(400);
SIZE(K) KEPT   NAME
------- ------ --------------------------------------------------
2250 YES    XDB.XDbD/PLZ01TcHgNAgAIIegtw==(IFS)
1953 YES    XDB.XDZynXpO5DTv2jNMI2jLTZZA==(IFS)
740 YES    HELIOS.BIG_WIN_LOTTERY        (INVALID TYPE)
683 YES    HELIOS.VOID_LOTTERY           (INVALID TYPE)
461 YES    HELIOS.WIN_LOTTERY            (INVALID TYPE)
453        XDB.XD/3VTOXUnSvCfAvCFKObNPg==(IFS)
428        SYS.STANDARD                  (PACKAGE)
423 YES    HELIOS.PK_BIG_WIN_LOTTERY     (INVALID TYPE)

PL/SQL 过程已成功完成。

3、dbms_shared_pool.aborted_request_threshold(5000);

作用:当共享池满无足够内存来满足给定请求时,它将开始释放对象,知道有了足够内存。如果释放出足够多的对象,有可能会影响到性能。我们可以设定当至少超出THESHOLD个字节时,才释放。

SQL> exec dbms_shared_pool.aborted_request_threshold(1000);
BEGIN dbms_shared_pool.aborted_request_threshold(1000); END;

*
第 1 行出现错误:
ORA-20000: threshold_size not in valid range: (5000 - 2147483647)
ORA-06512: 在 "SYS.DBMS_SHARED_POOL", line 72
ORA-06512: 在 line 1


SQL> exec dbms_shared_pool.aborted_request_threshold(5000);

PL/SQL 过程已成功完成。

4、解释

DBMS_SHARED_POOL.KEEP OR UNKEEP(name ,flag)

当第一次加载时(并不是立即)锁定此对象在shared pool 中,永远不释放,除非你主动释放。可以改进性能

name : p 包、存储过程、函数;Q 序列 ;R 触发器;T 对象类型;C SQL游标;JS,JC,JR,JD为java相关
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值