Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

29

积分

0

好友

5

主题
1#
发表于 2013-7-18 18:44:27 | 查看: 3050| 回复: 3
本帖最后由 tom_fu 于 2013-7-18 18:47 编辑

SQL> select namespace,type,sharable_mem,loads,executions,kept from V$DB_OBJECT_CACHE;

NAMESPACE                TYPE                      SHARABLE_MEM      LOADS EXECUTIONS KEPT
--------------------        ---------------------------- ----------                    ----------               ----
TABLE/PROCEDURE      PACKAGE                    29288                   1          0              NO
BODY                          PACKAGE BODY           87920                   1          2              NO
请问SHARABLE_MEM列查出的大小是否是过程或包调用之后在共享池中占用的内存大小?
如果共享池碎片化严重,是不是可以通过查询此列来判断哪些包可以keep在内存中。这些包是不是都是超过默认4400限制可以加载到保留池中的对象?
2#
发表于 2013-7-18 20:42:23
1、 V$DB_OBJECT_CACHE 数据来源于 X$KGLOB

2、 一个library cache object不等于 一个memory chunk, 4400是对于一个连续chunk而言, 和object没有可比性

回复 只看该作者 道具 举报

3#
发表于 2013-7-18 22:35:41
如何判断一个包在共享池到底占用了多少内存呢?

回复 只看该作者 道具 举报

4#
发表于 2013-7-18 23:42:44
SQL> SELECT * FROM user_object_size where name='DELETE_TABLE';

NAME                           TYPE               SOURCE_SIZE PARSED_SIZE  CODE_SIZE ERROR_SIZE
------------------------------ ------------------ ----------- ----------- ---------- ----------
DELETE_TABLE                   PACKAGE BODY             24414        2851      65367          0
DELETE_TABLE                   PACKAGE                    436        1596        687          0

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-29 15:25 , Processed in 0.047662 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569