ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 读书笔记:深入解析oracle-第5章 内存管理

读书笔记:深入解析oracle-第5章 内存管理

原创 Linux操作系统 作者:浪漫双鱼 时间:2011-06-13 15:28:14 0 删除 编辑

1、 PGA指的是程序全局区(Program Global Area),是服务器进程(Server Process)使用的一块包含数据和控制信息的内存区域,是非共享内存,所以pga中的内存结构不需要用latch来保护。

2、 PGA分为固定PGA和可变PGA(又分为会话内存和私有的SQL区(又分为永久区域和运行时区域))

3、 PGA是服务于进程的内存结构,包含进程信息;而UGA是服务于会话的,包含的是会话的信息。

4、 参数_use_realfree_heap设置为true时,oracle会为CGAcall global area调用全局区)、UGA单独分配堆,而不从PGA中分配,当设置了pga_aggregate_target后,它的值为true

5、 Workarea_size_policy参数设为auto时,才会使用自动PGA管理功能。

6、 Sql在工作区中以3种方式执行

A、 optimal:至所有处理可以在内存中完成。

B、 onepass:大部分操作可以在内存中完成,但是需要使用到磁盘操作

C、 multipass:大量操作需要产生磁盘交互,性能极差。

7、 sga fixed size 部分是SGA中的固定部分,包含数据库和实例的状态等通用信息,后台进程需要访问这部分信息,不存储用户数据,通常只需要很小部分内存。

8、 SGA的设置在LINUX/UNIX上和一个操作系统内核参数shmmax有关。实际上shmmax内核参数定义的是系统允许的单个共享内存段的最大值,如果该参数设置小于SGA设置,那么SGA会被分配多个共享内存段。通常推荐通过调整shmmax设置,将SGA限制在一个共享内存段中。

9、 内存不足的告警可能是因为数据库异常关闭,后台进程未正常退出,共享内存未及时释放引起的,对于这种情况,可以通过ipcs命令找到共享内存段id(shared memory id),然后通过ipcrm命令可以强制释放该共享内存段,完成这些特殊处理后,数据库通常就可以正常启动了。

10、      设置参数SGA_MAX_SIZE用以控制各缓冲池使用的内存总和,本质上是在进程中预先分配一段虚拟地址备用而不分配物理内存,目的是防止和私有地址段的冲突。

11、      自动的共享内存管理引入了一个新的后台进程MMAN(Memory Manager).该进程用以动态调整内存组件。

12、      通过动态视图v$sga_dynamic_components可以看到各动态组件调整的时间和调整类型等信息。

13、       这是一个可以参考的数值,在为oracle规划内存使用时,我们必须清楚,如果oracle耗用的内存过高,甚至超过了系统的物理内存,那么系统的性能就会受到严重的影响,当系统执行任务时,如果没有足够的内存,那么系统就会进行分页或交换,以完成当前活动事务。

      当系统执行分页时,会将当前没有使用的信息从内存专移到硬盘上,这样就可以为当前需要内存的程序分配内存。如果频繁发生分页,系统性能就会严重降低,从而导致很多程序的执行时间变长。

     当系统执行交换时,会将某些进程所分配的不活跃内存页(根据LRU算法)从内存转移到硬盘上,这样另一个活动进程就可以得到所需要的内存。交际基于系统循环时间。如果交换太过频繁,系统甚至会出现当机。

14、      关于操作系统,一般swap区的推荐值为2*RAM

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11088128/viewspace-697808/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    87
  • 访问量
    231909