了解X$KSMSP视图: Shared Pool的空间分配和使用情况,可以通过一个内部视图来观察,这个视图就是X$KSMSP([K]ernal [S]torage [M]emory Management [S]GA Hea[P]),其中每一行都代表着Shared Pool中的一个Chunk。以下是X$KSMSP的结构: sys@CCDB> desc x$ksmsp Name  [......]
Oracle 10g 共享池管理的增强
Oracle 10g 共享池管理的增强: 子缓冲池的分配的算法很简单:·每个子缓冲池必须满足一定的内存约束;·每4颗CPU可以分配一个子缓冲池,最多7个。 在Oracle 9i中,每个SubPool至少128MB,在Oracle 10g中,每个子缓冲池至少为265MB。如上篇日志所述,SubPool的数量可以通过_kghdsidx_count参数来控制,但是没有参数可以显示地控制SubPool的大小。 根据以上规则,在一个12颗CPU的系统中,如果分配300MB Shared Pool,Oracle 9i将创建2个SubPool,每个大约150MB,如果共享池增加到500MB,Oracl[......]
Oracle 9i 子缓冲池的增强
Oracle 9i 子缓冲池的增强: 从Oracle 9i开始,Shared Pool可以被分割为多个子缓冲池(SubPool)进行管理,每个SubPool可以被看作是一个Mini Shared Pool,拥有自己独立的Free List、内存结构以及LRU List。同时Oracle提供多个Latch对各个子缓冲池进行管理,从而避免单个Latch的竞争(Shared Pool Reserved Area同样进行分割管理)。SubPool最多可以有7个,Shared Pool Latch也从原来的一个增加到现在的7个。如果系统有4个或4个以上的CPU,并且SHARED_POOL_SIZE大于[......]
Oracle 11g新特性:Result Cache
Oracle 11g新特性:Result Cache 结果集缓存(Result Cache)是Oracle Database 11g新引入的功能,除了可以在服务器端缓存结果集(Server Result Cache)之外,还可以在客户端缓存结果集(Client Result Cache)。下面着重介绍一下服务器端结果集缓存。 服务器端的Result Cache Memorey由两部分组成。·SQL Query Result Cache:存储SQL查询的结果集。·PL/SQL Function Result Cache:用于存储PL/SQL函数的结果集。 Oracle 通过一个新引入的初始[......]
Shared Pool 的基本原理
Shared Pool 的基本原理: Shared Pool是Oracle SGA设置中最复杂也是最重要的一部分内容,Oracle通过Shared Pool来实现SQL共享、减少代码硬解析等,从而提高数据库的性能。在某些版本中,如果设置不当,Shared Pool可能会极大影响数据库的正常运行。 在Oracle 7 之前,Shared Pool并不存在,每个Oracle连接都有一个独立的Server进程与之相关联,Server进程负责解析和优化SQL和PL/SQL代码。典型的,在OLTP环境中,很多代码具有相同或类似的结构,反复的独立解析浪费了大量的时间以及资源,Oracle最终认识到这个[......]