int过的SQL使用。
PL/SQL Function Result Cache
PL/SQL function result cache存储着function结果集,如果没有缓存,那么 一个function 执行一次一秒,如果调用了1000次,那么就是1000秒。如果有缓存,调用1000次相同输入值的相同function,总共就需要1秒。在相对静态的数据上被频繁调用的functions,result cache是个很好的选择。
PL/SQL function 中代码可以包含一个请求 去cache它自己的结果。在调用这次function时,系统会检查cache。如果cache中包含了之前函数通过相同参数值调用的结果,那么系统会将这个结果返回给调用者,不会再重新执行function的身体部分。如果cache中没有包含结果集,那么系统会执行function的身体然后在返回结果给调用者之前将结果先(这些input参数)添加到cache中。
注意:你可以具体说明在计算中使用到了哪些object,这样如果它们任何一个发生更改,那么cached 结果将被置为无效,下次使用必须重新计算。
Cache可以累计存放多个结果——一个结果对应一个函数中输入参数的唯一组合值。如果数据库需要更多的内存,那么它将把一个或多个cached 结果移除。
Reserved Pool
Reserved pool是shared pool中的一个内存区域,数据库用它来分配大的 连续的 内存chunkss。
Shard pool中的内存分配是通过chunks。Chunk允许大的对象(大于5KB)不需要请求一个单独连续区 也可以加载到内存中。这样一来,因为碎片而导致 连续内存不足的可能性就降低了。
偶尔,JAVA,PL/SQL或SQL cursors可能会从shared pool中分配超过5KB大小的内存,为了使这些分配更快速,数据库隔离出一部分shared_pool的内存到reserved pool。
Large Pool
Large pool是个可选内存区,它用来做内存分配。里面分配的大小 往往比sharedpool中分配的要大。Large pool可以为下列内容提供大内存划分:
·shared server模式中的UGA以及ORACLE XA接口(和多个数据库进行交互的事务)
·语句执行并行时的Message buffer
·Recovery Manager(RMAN) I/O 从属进程使用的buffers。
通过在large pool中为shared SQL 分配会话内存,数据库避免了因为shared SQL area收缩造成的性能消耗。
下图描述了large pool

Large pool和shared pool中的reservedspace不同,reserved space和shared pool中的其他内存使用了同样的LRU列表。而Large pool根本就没有LRU列表。一片内存被分配出去,直到操作后,才可以释放。当内存中的一个chunk 释放后,其他进程就可以使用它了
Java Pool
Java pool是一个内存区域,存储session相关的java代码以及JavaVirtual Machine(JVM)中的数据。
在dedicated server连接模式,Java pool包括每个Java class的共享部分,包括method(方法)以及只读内存比如 code vectors,但不是每个session的 JAVA 状态。在shared server连接模式中,这个吃包括每个class的共享部分,以及每个session状态的一些UGA。每个UGA根据需要增长,以及收缩,但是总的UGA大小必须能在Java pool 空间存放。
Java pool Advisor 统计提供Java在librarycache中使用的内存,以及预测Java pool的大小如何改变可以影响解析率。当statistics_level参数设为TYPICAL或更高时,Java Pool Advisor自动会打开(on)。这些统计信息将在advisor关闭后(off)清空。
Streams Pool
Streams pool存储缓冲的队列消息,以及提供OracleStreams 捕获进程和应用进程所使用的内存。Streams pool被Oracle Streams独立使用。
除非你特别配置它,Streams pool开始的大小是0。大小的根据Oracle Streams的需要自动调整的。
Fixed SGA
Fixed SGA是内部的内务处理区,举个例子,fixedSGA包含:
·产生数据库和instance的状态信息(后台进程需要访问)
·进程之间通讯的信息,比如关于locks的信息
Fixed SG的大小由Oracle数据库设定,不能手工改变。FixedSGA size在版本之间可能会改变
Overview of Software Code Areas
Software code areas是内存的一些部分,它们存着代码是正在运行或者将要运行的,Oracle数据库代码就存在software area,它的位置普遍比用户程序的更加独占以及更加被保护。
Software areas 通常大小是静态,只有当程序升级或者重装的时候,才可能更改。这些区域需要的大小各个操作系统都不同。
Software areas 是只读的。以及可以安装为共享或非共享的。一些数据库工具和实用程序,比如说Oracle Forms以及SQL*Plus,可以安装为共享的,但一些则不行。只要有可能,数据库代码都是共享的,这样所有用户都可以直接访问它,而不用在内存中存在多份拷贝。这样会使内存使用减少,以及全面提升性能。一个数据库上不同的实例,可以和机器上其他的数据库使用相同的daabase code area。
注意:以共享方式安装软件并不是在所有操作系统都可用,举个例子,在PC上的操作系统WINDOWS。可以看你操作系统特定的文档去获得更多信息。