oracle性能调整 Shared pool深入分析及性能调整

http://tech.ddvip.com   2007年09月11日    社区交流

内容摘要:本文首先详细介绍了oracle中shared pool的概念以及所包含的内存结构。然后深入介绍了oracle对于shared pool的管理机制。最后全面介绍了有关buffer cache监控以及调优的实用方法。

  b) child table:含有当前对象的子对象,只有游标具有child table.Child table中的每个条目都指向一个可执行的SQL命令所对应的句柄。

  c) translation table:包含当前对象所引用的名称是如何解释为oracle底层对象的名称,只有游标具有translation table.

  d) authorization table:包含该对象上所对应的权限,一个条目对应一个权限。

  e) access table:对于dependency table中的每一个条目,都会在access table中存在对应的一个或多个条目。比如,假设对象A依赖对象B,那么在A的dependency table和access table中都会存在一个条目指向B.位于access table中的指向B的条目说明了对B具有什么样的访问类型,从而也就说明了用户要执行A则必须具有对B的权限。

  f) read-only dependency table:类似于dependency table,但是存放只读的对象。

  g) schema name table:包含authorization table中的条目所属的schema.

  5) data blocks:对象的其他信息会存放在不同的heap中,为了找到这些heap,会在heap 0中存放多个(最多16个,但是这16个data block不会都用到)data blocks结构,每个data block含有指向这些实际heap内存块的指针。

  除了heap 0以外,还有11个heap,根据对象的不同进行分配,并存放了不同的内容:

  1) Heap 1:存放PL/SQL对象的源代码。

  2) Heap 2:存放PL/SQL对象的解析树,这有个好听的名字: DIANA.

  3) Heap 3:存放PL/SQL对象的伪代码。

  4) Heap 4:存放PL/SQL对象的基于硬件的伪代码。

  5) Heap 5:存放了编译时的错误信息。

  6) Heap 6:存放了共享游标对象的SQL文本。

  7) Heap 7:可用空间。

  8) Heaps 8–11:根据对象的不同而使用的子heap.

  我们可以通过查询v$db_object_cache来显示library cache中有哪些对象被缓存,以及这些对象的大小

  尺寸。比如,我们可以用下面的SQL语句来显示每个namespace中,大小尺寸排在前3名的对象:

  select *
  
  from (select row_number() over(partition by namespace order by sharable_mem desc) size_rank,
  
  namespace,
  
  sharable_mem,
  
  substr(name, 1, 50) name
  
  from v$db_object_cache
  
  order by sharable_mem desc)
  
  where size_rank <= 3
  
  order by namespace, size_rank;

责编:豆豆技术应用

正在加载评论...