WEB开发网
开发学院数据库Oracle Oracle 10G数据库自动内存管理分析 阅读

Oracle 10G数据库自动内存管理分析

 2007-05-12 12:27:06 来源:WEB开发网   
核心提示: 假定您决定了这些池的值分别是 2GB、1GB、1GB 和 1GB,您将设置以下初始化参数来为数据库例程规定池的大小,Oracle 10G数据库自动内存管理分析(2),db_cache_size = 2gshared_pool_size = 1glarge_pool_size = 1gjav

假定您决定了这些池的值分别是 2GB、1GB、1GB 和 1GB。您将设置以下初始化参数来为数据库例程规定池的大小。

  db_cache_size = 2g
  shared_pool_size = 1g
  large_pool_size = 1g
  java_pool_size = 1g

现在,仔细看一下这些参数。坦白讲,这些值是否准确?我相信您一定会有疑虑。在实际中,没有人能够为这些池指定确切的内存数 — 它们太依赖于数据库内部的处理,而处理的特性随时在变化。

下面是一个示例场景。假定您有一个典型的、大部分属于 OLTP 的数据库,并且为缓冲高速缓存分配的专用内存比为纯 OLTP 数据库(现在已经很少见了)分配的要少。有一天,您的用户放开了一些非常大的全表扫描,以创建当天的结束报表。Oracle9i 数据库为您提供了在线修改内存分配的功能,但由于提供的总物理内存有限,您决定从大型池和 Java 池中取出一些内存:

  alter system set db_cache_size = 3g scope=memory;
  alter system set large_pool_size = 512m scope=memory;
  alter system set java_pool_size = 512m scope=memory;

这个解决方案能够很好地工作一段时间,但是接着夜间的 RMAN 作业(它们使用大型池)开始了,大型池将立即出现内存不足。同样,您从数据库高速缓存中取出一些内存来补充大型池,以挽救这种局面。

RMAN 作业完成,然后启动一个广泛使用 Java 的批处理程序,接着您开始看到与 Java 池相关的错误。因此,您(再次)重新分配池,以满足 Java 池和数据库高速缓存上的内存需求:

  alter system set db_cache_size = 2G scope=memory;
  alter system set large_pool_size = 512M scope=memory;
  alter system set java_pool_size = 1.5G scope=memory;

上一页  1 2 3 4 5  下一页

Tags:Oracle 数据库 自动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接