• oracle内存概述

       oracle用内存在存储如下信息:

        1.程序代码;

        2.会话信息,不管会话活动与否;

        3.程序执行时所需的信息(例如,查询返回哪些行)

        4.oracle进程之间通信和共享的信息(例如,锁)

        5.需要在外部内存里永久保存的缓存数据(例如,数据块和redo日志条目)

       oracle基本内存结构的分类:

        1.System Global Area(SGA),它可以被所有服务和后台进程共享;

        2.Program Global Area(PGA),每个服务和后台进程都一个私有的PGA。

  • oracle内存结构图

QB50C~ERU$_J}B[H1T)JH02

       如图所示,SGA是由Java Pool,Buffer Cache等内存结构组成的,它可以被所有的server和process共享,而PGA是私有的,每个server和Process都单独拥有一个PGA。

  • SGA简介

SGA是System Global Area的简写,它是oracle实例中包含数据信息和控制信息的共享内存的集合。当有很多用户同时连接到数据库实例时,那么所有的用户都可以共享SGA,SGA也叫Shared Global Area。

一个oracle实例是由SGA和oracle进程组成的。当oracle启动是它会自动分配内存给SGA,当实例关闭时操作系统收回分配给SGA的内存,每个oracle实例都有属于他自己的SGA。

SGA是可读写的。所有连接到多进程的oracle实例都可以读SGA中的信息,一些进程在oracle运行时向SGA写数据。

组成SGA的内存结构:

  • Java Pool
  • Large Pool
  • Share Pool
  • Stream Pool
  • Database buffer cache
  • Redo log buffer
  • Data dictionary cache
  • othe miscellaneous information

一部分SGA中包含数据库和实例的一般信息和后台进程需要访问的信息,这部分SGA叫fixed SGA。没有用户的数据存储在这里。

如果数据库用的是共享模式,SGA里还包含请求和相应队列和一些PGA包含的内容。