3.2.1共享池
共享池由许多子结构组成,这些子结构由oracle服务器内部自动管理。在共享池的总体大小范围内,各个结构的大小将因针对实例的活动模式而异。共享池本身的大小可以动态重调。
a.库缓存是内存区域,按其已分析的格式存储最近执行的代码。分析就是将编程人员编写的代码转换为可执行的代码,这是oracle根据需要执行的一个过程。通过将代码缓存在共享池,可以在不重新分析的情况下重用,极大地提高性能。
b.数据字典缓存有时称为“行缓存”,它存储最近使用的对象定义:表、索引、用户和其他元数据定义的描述。通过将此类定义放在SGA的内存中,以便使所有会话可以直接访问它们,而不是被迫从磁盘上的数据字典中重复读取它们,从而提高分析性能。
c.PL/SQL区:存储的PL/SQL对象是过程、函数、打包的过程、打包的函数、对象类型定义和触发器。它们全都像源代码那样存储在数据字典中,也使用已编译的格式。当会话调用存储的PL/SQL对象时,它必须从数据字典读取。为了避免重复读取,将对象缓存到共享池的PL/SQL区。
共享池的大小对性能产生重要影响,它应该足够大,以便缓存所有频繁执行的代码和频繁访问的对象定义,但也不能过大,以至于连仅执行一次的语句也要缓存。如果共享池过小,则性能下降,因为服务器会话将反复抢夺其中的空间来分析语句,此后,这些语句会被其他语句重写,在重新执行时,将不得不再次分析。过大的共享池也会对性能产生不良影响,因为搜索需要的时间过长。如果共享池小于最优容量,则性能将下降。但有一个最小容量,如果低于此限度,则语句将失败。确定最优容量是一个性能调整问题,大多数数据库都需要一个数百MB的共享池。有些应用程序需要1GB以上的共享池,但很少有应用程序能够在共享池小于100 MB时充分运行。
共享池在实例启动时分配。从9i开始,可以随时将其调大或调小。可以采用手动方式重调,也可以根据工作负荷自动调整大小。
手动调整共享池的大小:
select COMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZE from v$sga_dynamic_components;//显示可以动态重设大小的SGA组件的当前、最大和最小容量
SQL> select COMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZE from v$sga_dynamic_components;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------------------------------- ------------ ---------- ----------
shared pool 104857600 100663296 0
large pool 4194304 4194304 0
java pool 4194304 4194304 0
streams pool 0 0 0
DEFAULT buffer cache 167772160 167772160 0
KEEP buffer cache 0 0 0
RECYCLE buffer cache 0 0 0
DEFAULT 2K buffer cache 0 0 0
DEFAULT 4K buffer cache 0 0 0
DEFAULT 8K buffer cache 0 0 0
DEFAULT 16K buffer cache 0 0 0
DEFAULT 32K buffer cache 0 0 0
ASM Buffer Cache 0 0 0
13 rows selected.
SQL> ALTER SYSTEM SET SHARED_POOL_SIZE = 110M;
System altered.
SQL> select COMPONENT,CURRENT_SIZE,MIN_SIZE,MAX_SIZE from v$sga_dynamic_components;
COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE
---------------------------------------------------------------- ------------ ---------- ----------
shared pool 117440512 100663296 0
large pool 4194304 4194304 0
java pool 4194304 4194304 0
streams pool 0 0 0
DEFAULT buffer cache 155189248 155189248 0
KEEP buffer cache 0 0 0
RECYCLE buffer cache 0 0 0
DEFAULT 2K buffer cache 0 0 0
DEFAULT 4K buffer cache 0 0 0
DEFAULT 8K buffer cache 0 0 0
DEFAULT 16K buffer cache 0 0 0
DEFAULT 32K buffer cache 0 0 0
ASM Buffer Cache 0 0 0
13 rows selected.