自动内存(SGA)管理

如何调整最佳PGS SIZEhtml

1. 首先估计一个 PGA_AGGREGATE_TARGET 参数值。
2. 使实例运行在预期的负载下,经过 Oracle 收集的 PGA 统计信息来监控系统性能,从而决定当前参数值是否适当。
3. 根据 PGA 顾问工具的统计数据来调整 PGA_AGGREGATE_TARGET 参数的值。java

SQL> show parameter workarea_size_policy

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy                 string      AUTO
如何肯定PGA内存自动管理

oracle自动内存管理算法

oracle 11g内存自动管理 sql

当用户启用了自动共享内存管理后,须要用户常常调整的内存组件将被Oracle自动地调整.这样的内存组件包括:数据库

  1. shared pool(供sql 及 pl/sql执行使用)
  2. java pool(供java程序执行适用)
  3. large pool(用于大量的内存分配,例如RMAN的备份缓冲区)
  4. database buffer pool
  5. stream pool

用户无需显示地为这些内存组件设定容量,默认状况下这些组件的容量参数均显示为0.当某个内存组件须要扩展容量时,她将想系统发出请求,Oracle则经过内部的自动调节机制将其余组件的内存转移给她。上述过程对用户是透明的.服务器

oracle组件负责监控各个内存组件的性能.实例根据内部视图的信息及其余统计信息来决定如何在各个自动管理的组件间分配内存达到最优.这样,当工做负载改变时内存就可以被从新分配,从而确保系统在新负载下也能得到最优性能.内存分配调整算法会同时考虑系统运行的短时间与长期趋势.oracle

对于自动管理的内存组件,用户能够为其指定最小容量.当用户了解了其应用所需的各个内存组件的容量时,就可使用此功能.(我的观点:伴随业务的发展变化,设定其最小容量后,其内存需求也会随之变化,还不如保持其自动管理功能;真正须要关心的是能够适当调整总的pga_aggregate_target参数大小便可)ide

若是数据库使用了服务器参数文件(server parameter file->spfile),那么自动调整内存组件的参数在实例关闭后依然能被保留.系统下次启动时可使用上次关闭时保留的参数.工具

使用自动SGA内存管理的最大好处是:各个SGA组件的容量是灵活可变的.可以适应不一样的工做负载而无需用户干预.除了是可用内存最大化以外,自动共享内存管理还有助于提供系统性能.采用手工内存管理时,已编译的SQL语句可能会由于共享池容量不足而 被清除出共享池.这将致使频繁的硬解析(hard parse)进而影响系统性能.而启用了自动内存管理后,内部调节算法将监控系统性能,如认为增大共享池有助于减小硬解析的话就会对内存组件作出相应调整.此功能提升了系统性能,且无需想系统添加资源,也无需任何手工调整操做.性能

空间回收

数据段收缩属于联机操做,当表的数据段被收缩时,此表依然能够进行查询或DML操做.此外,数据段收缩无需额外的存储空间.本地收缩与经过联机重定义的方式收缩相比更有优点.用户能够在夜间按期调度做业在执行数据库对象的收缩操做,而无需为数据库提供额外的存储空间.

采用了自动段空间管理(automatic segment space management)的表空间中,数据段收缩能够做用于

  • 堆表(heap-orgnized table)
  • 索引表(index-organized table)
  • 索引表的溢出段(row overflow area)
  • LOB对象
  • LOB段
  • 物化视图
  • 容许行移动的索引

若是对带有索引的表进行数据段收缩操做,当数据行发生移动时oracle可以自动地维护索引.但用户自定义的触发器不会被触发,由于数据段收送属于物理操做,对应用程序没有影响.

Oracle服务

一个服务能够跨越一个数据库的多个实例,还能够跨一个集群的多个数据库,而一个实例也可以支持多个服务.

ASM(自动存储管理)

磁盘组

每一个自动存储管理文件只能存在一个磁盘组内.但一个磁盘组能够存储属于不一样数据库的数据文件,一个数据库也可以使用多个磁盘组提供的存储资源.管理员能够为数据库指定一个或多个默认的磁盘组来存储其数据文件.

大部分数据库都会使用多个磁盘组.使用多个磁盘组的缘由以下:

  • 应将不一样容量或不一样性能的磁盘划分为不一样的磁盘组.
  • 应根据外部冗余能力(external redundancy)来划分磁盘组:具有相同外部冗余能力的磁盘应划入统一磁盘组,而外部冗余能力不一样的磁盘不该化为统一磁盘组.
  • 将数据库去(database area)与快速恢复区(flash recovery area)放置在不一样的磁盘组.

磁盘组的类型

  • 正常冗余
  • 高冗余
  • 外部冗余

Oracle instance ->    ASMB(负责实例通讯)    <--- asm instance

如何判断oracle是自动内存管理的?

参考文章

参考意见:

经过查看命令:show parameter sga,显示若是sga_target值为0,表示手动管理;非0是自动管理.

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 1584M
sga_target                           big integer 0
相关文章
相关标签/搜索