oracle优化------缓存对象与数据(7)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:37 点击:

SQL> exec dbms_shared_pool.keep(000000008E8532A8,97348712);

begin dbms_shared_pool.keep(000000008E8532A8,97348712); end;

ORA-01426: 数字溢出
ORA-06512: 在 "SYS.DBMS_UTILITY", line 114
ORA-06512: 在 "SYS.DBMS_SHARED_POOL", line 45
ORA-06512: 在 "SYS.DBMS_SHARED_POOL", line 53
ORA-06512: 在 line 1

SQL> exec dbms_shared_pool.keep(000000008E8532A8,97348712,C);

PL/SQL procedure successfully completed

SQL>

检查是否被keep住

SQL> select oc.KEPT,sq.ADDRESS,sq.HASH_VALUE
  2    from v$db_object_cache oc,
  3         v$sqlarea sq
  4   where sq.SQL_TEXT=oc.NAME
  5   and   sq.HASH_VALUE=97348712
  6  ;

KEPT ADDRESS          HASH_VALUE
---- ---------------- ----------
YES  000000008E8532A8   97348712

SQL>

取消对象的keep

SQL> exec dbms_shared_pool.unkeep(000000008E8532A8,97348712,C);

PL/SQL procedure successfully completed

SQL>


确认当前匿名块是否被取消keep
SQL> select oc.KEPT,sq.ADDRESS,sq.HASH_VALUE
  2    from v$db_object_cache oc,
  3         v$sqlarea sq
  4   where sq.SQL_TEXT=oc.NAME
  5   and   sq.HASH_VALUE=97348712
  6  ;

KEPT ADDRESS          HASH_VALUE
---- ---------------- ----------
NO   000000008E8532A8   97348712


SQL>


剩下keep住package和sequnce就都类似了

共享池碎片问题
绑定变量问题

-----end-----

cursor分为:1.缓存打开的游标--可以从v$open_cursor,2.查到缓存关闭的游标,3.未被缓存打开的游标 。session_CACHED_CURSORS正是缓存关闭的游标; OPEN_CURSORS 是包括缓存打开的游标和未被缓存打开的游标(可以从v$sesstat 查到)。 假如session_CACHED_CURSORS=200,缓存200个关闭游标,而open_cursor=100,允许最大打开100个游标,缓存用的就不是很充分,而这些缓存资源又是非常宝贵的,所以如果缓存太多的游标占用的资源太多,反而起副作用。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1