Oracle DB 自动管理共享内存
- Oracle 数据库体系结构

态调整大小由下列两个后台进程进行处理:内存管理器 (MMAN) 和可管理性监视程序
(MMON) 。
STATISTICS_LEVEL 参数设置为 TYPICAL或ALL ,以使用 ASMM。
- 动态SGA 功能
更改其SGA 配置
FROM V$SGAINFO
区高速缓存、共享池、大型池、Java 池和流池。
数文件,以及重新启动实例。
的参数为 SGA_MAX_SIZE。这是在实例启动时分配的内存量,与个别组件是否会利用全
部内存量无关。
的数量,则将调整 SGA_MAX_SIZE的值,以满足内存要求。
- 区组
FROM V$SGAINFO
区组大小由总 SGA 大小决定。在大多数平台上,如果总 SGA 大小小于 1 GB,则区组大
小为4 MB,如果 SGA 大于1 GB,则区组大小为 16 MB 。某些平台的相关性会增加。例
如,在 32 位Windows 上,如果 SGA 大于 1 GB,则区组大小为 8 MB。
- 内存指导
流池大小的溢出或未溢出活动的关联时间的信息。
- 在组件中手动添加区组
内存。
加组件的内存使用量。
请求。
时才能实现此操作。
小将舍入至与区组大小最接近的倍数。只有存在满足请求的足够可用区组
(SGA_MAX_SIZE减去所有 SGA 组件的当前大小)时,才能成功地使用 ALTER SYSTEM
命令增加组件的内存使用量。服务器不会释放另一个组件的区组来支持 SGA 组件的增加。
服务器可以分配更多的区组,直到 SGA 大小达到 SGA_MAX_SIZE。
区组。
- 增加SGA 组件的大小

- 自动管理共享内存:概览
时的重新学习过程

组件,这样您就不必手动配置这些组件了。ASMM 使用内存指导数据来评估最佳的内存配
置,然后使用动态 SGA 功能调整组件的大小。通过 ASMM 可以更有效地使用可用内存,
从而减少了由采购其它硬件内存资源而导致的成本,并通过更加动态、灵活且更具适应性
的内存管理方案,显著简化了 Oracle 数据库管理。
缓冲区高速缓存和大型池来满足高峰期的要求。通过 ASMM,在运行 OLTP 工作量时,将
为缓冲区高速缓存分配所需的内存,以优化缓冲区高速缓存访问。以后启动决策支持系统
(DSS) 批处理作业时,内存将自动迁移到大型池,以便并行查询操作可以使用内存,而不
会产生内存溢出错误。
闭之前的大小,从而消除了重新学习过程。
- SGA 调整大小参数:概览

动优化的参数”。
会自动优化这些参数。
- 自动管理共享内存的优点

据库中,需要手动指定要为数据库缓冲区高速缓存、共享池、Java 池、大型池和流池分
配的内存量。通常很难将这些组件调整为最佳大小。大小不足可能会导致性能较差,并
出现内存不足错误 (ORA-4031 ),而大小过大可能会浪费内存。
量的要求,定期在幻灯片中所示的组件之间重新分配内存。
以及超过用户指定 SGA 参数的总大小的其它内部元数据分配。此附加内存通常在 10 到
20 MB 之间。
中的所有内存,其中包括自动调整大小的组件、手动调整大小的组件以及启动时的任何
内部分配。
- 动态SGA 传递模式
足错误。为了避免出现该错误,系统将尝试从另一个组件传递区组。如果没有完全
空的可用区组,则此传递可以是部分传递。如果是这种情况,则系统会开始耗尽来
自其它组件的区组来满足内存请求,并将区组部分传递给请求内存的组件。
内存。使用与指导有关的数据来确定最佳内存分配。
大小操作。如果没有空的区组,则增大请求将返回 ORA-4033 错误,收缩请求将返
回ORA-4034 错误。
- 内存中介体系结构

变化这个目标。如果总的来说这样做有好处,则会完成传递。
不同缓冲区条目之间的增量代表不同时段的统计信息。这些增量由 MMON 计算。
MMON 使用内存中介策略分析增量并检查长期趋势和短期趋势。
MMON 通过在调整大小请求系统队列中发布请求,可以根据此分析生成调整大小决策。
MMAN 定期扫描请求系统队列,以执行相应的内存传递。
- 手动调整动态SGA 参数的大小
的大小
调整大小才会立即更改组件的大小。例如,如果将 SGA_TARGET设置为8 GB,并将
SHARED_POOL_SIZE 设置为 2 GB,则应确保共享池始终至少为 2 GB,以适应必要的内
存分配。此后,如果将 SHARED_POOL_SIZE 的值调整为 1 GB,则不会立即影响共享池
的大小。这样做只会允许自动内存优化算法在必要时将共享池大小减少到 1 GB。但是,
如果最初将共享池的大小设置为 1 GB,则将 SHARED_POOL_SIZE 的值调整为 2 GB 会
使共享池组件的大小增加到 2 GB。此调整大小操作使用的内存从一个或多个自动优化的
组件中获取,手动组件的大小不受影响。
的精确大小。因此,如果手动组件的大小增加,则会从一个或多个自动调整大小的组件
获取额外的内存。如果手动组件的大小减小,则会将释放的内存分配给自动调整大小的
组件。
- 自动优化的SGA 参数的行为
包含内部启动开销
与以前的版本相比,值可能需要增加
FROM V$SGA_DYNAMIC_COMPONENTS;
SHARED_POOL_SIZE 参数不包含元数据(进程、会话等的数据结构)的内部开销分配,
但是现在包含这些内部开销分配。
SHARED_POOL_SIZE 的值,以包含内部分配。例如,如果在以前的版本中使用的
SHARED_POOL_SIZE 值为 256 MB,并且内部分配的值为 32 MB ,则需要将 Oracle
Database 10 g 的SHARED_POOL_SIZE 设置为288 MB。使用以下查询可以找到内部启动
开销的准确值:
自动调整这些组件的大小。但是,如果将它们设置为非零值,则指定的值将作为下限使用。
例如,如果将 SGA_TARGET设置为8 GB,并将 SHARED_POOL_SIZE 设置为1 GB,则
共享池不会收缩到小于 1 GB 的值,但是可能增加到更大的值。可以使用查询来确定 SGA
中自动优化的组件的实际大小。
- 手动优化的SGA 参数的行为
控制SGA 大小。
将余数分配给自动优化的 SGA 组件。
则五个自动优化的组件(共享池、Java 池、默认缓冲区高速缓存、大型池和流池)的总大
小限制为 7 GB。7 GB 大小包括固定 SGA 和日志缓冲区。只有分配了这些内存之后,才
会在自动优化的组件之间分配剩余的内存。保留高速缓存的大小为 1 GB,由参数指定。
- 使用V$PARAMETER 视图

V$PARAMETER 视图中自动优化的 SGA 参数的值为 0,ISDEFAULT 列的值为 TRUE。
如果为任何自动优化的 SGA 参数指定了一个值,则查询 V$PARAMETER 时显示的值是为
该参数指定的值。
- 调整SGA_TARGET 的大小
SGA_TARGET最大可以增大到 SGA_MAX_SIZE的值。可以缩小此参数,直到任何一个自
动优化的组件都达到其最小大小:用户指定的最小值或内部确定的最小值。
如果增加 SGA_TARGET的值,则将根据自动优化策略在自动优化的组件之间分配附加的
内存。
内存。因此,SGA_TARGET的值中的任何更改只影响自动优化的组件大小。
DB_KEEP_CACHE_SIZE 设置为1 GB,并将 SGA_TARGET增加到9 GB,则只在
SGA_TARGET控制的组件之间分配附加的 1 GB。DB_KEEP_CACHE_SIZE 的值不受影响。
同样,如果将 SGA_TARGET减小到7 GB,则将只从 SGA_TARGET控制的组件获取 1 GB。
此减小操作不会更改明确设置的参数(例如 DB_KEEP_CACHE_SIZE )的最小值设置。
- 禁用自动管理共享内存

会将所有自动优化的参数的值设置为相应组件的当前大小,即使以前为自动优化的参数指
定了不同的非零值也是如此。
如果系统在内部将共享池组件的大小调整为 1.5 GB ,然后将 SGA_TARGET设置为零,则
会使SHARED_POOL_SIZE 被设置为1.5 GB ,从而覆盖原来用户指定的值。
- 配置ASMM

参数)”。
(启用)”按钮,然后输入总的 SGA 大小(MB)。此大小代表为 SGA_TARGET指定
的值。
“Disable(禁用)”。
在“Memory Parameters(内存参数)”页上可以看到一个新的图表,用于显示 SGA 分配
的历史记录。可以将光标放在图表中您感兴趣的区域,以便在图表右侧突出显示图例中的
组件。
- SGA Advisor

例中,如果总的 SGA 大小增加到大约 470 MB,则数据库时间方面大约可以得到 5% 的
改善。
据库时间包括执行操作的所有等待,在这种情况下,差异在于不同 SGA_TARGET大小所
需的读取数和写入数。
- 监视ASMM
决策:
大小SGA 操作的信息
请求的循环历史记录缓冲区
状态
操作可用的SGA 内存的信息
操作可以是增加或收缩动态 SGA 组件。
包括当前正在进行的任何操作。
动后完成的所有 SGA 调整大小操作汇总信息。
内存量的信息。
- 小结
Oracle DB 自动管理共享内存的更多相关文章
- Oracle DB管理内存
• 描述SGA 中的内存组件• 实施自动内存管理• 手动配置SGA 参数• 配置自动PGA 内存管理 内存管理:概览DBA 必须将内存管理视为其工作中至关重要的部分,因为:• 可用内存空间量有限• ...
- Delphi内存管理(Integer、Boolean、Record、枚举等都是在作用域内编译器自动申请内存,出了作用域自动释放;另外,字符串、Variant、动态数组、接口也是由Delphi自动管理)
一.什么是堆.栈? 程序需要的内存空间分为 heap(堆) 和 stack(栈),heap 是自由存储区, stack 是自动存储区,使用 heap 需要手动申请.手动释放, stack 是自动申请. ...
- Boost:shared_memory_object --- 共享内存
什么是共享内存 共享内存是最快速的进程间通信机制.操作系统在几个进程的地址空间上映射一段内存,然后这几个进程可以在不需要调用操作系统函数的情况下在那段内存上进行读/写操作.但是,在进程读写共享内存时, ...
- Linux进程间通信—共享内存
五.共享内存(shared memory) 共享内存映射为一段可以被其他进程访问的内存.该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中.共享内存是最快的IPC机制,但由于linux本身 ...
- Linux共享内存使用常见陷阱与分析
所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式.是针对其他通信机制运行效率较低而设计的.往往与其它通信机制,如 信号量结合使用,来达到进程间的同步及互斥.其他进程能把同一段 ...
- linux网络编程之system v共享内存
接着上次的共享内存继续学习,这次主要是学习system v共享内存的使用,下面继续: 跟消息队列一样,共享内存也是有自己的数据结构的,system v共享内存也是随内核持续的,也就是说当最后一个访问内 ...
- 转:Linux--进程间通信(信号量,共享内存)
源地址:http://www.cnblogs.com/forstudy/archive/2012/03/26/2413724.html Linux--进程间通信(信号量,共享内存)(转) 一. 信 ...
- Oracle DB 使用调度程序自动执行任务
• 使用调度程序来简化管理任务 • 创建作业.程序和调度 • 监视作业执行 • 使用基于时间或基于事件的调度来执行调度程序作业 • 描述窗口.窗口组.作业类和使用者组的用途 • 使用电子邮件通知 • ...
- Oracle DB 管理数据库的空间
• 描述4 KB 扇区磁盘的概念及使用 • 使用可移动表空间 • 描述可移动表空间的概念 数据库存储 数据库存储 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物 理存储 ...
随机推荐
- PHP中的预定义超全局数组
定义 超全局变量,是在全部作用域中始终可用的内置变量. PHP中的许多预定义变量都是"超全局的",这意味着它们在一个脚本的全部作用域中都可用. 在函数或方法中无需执行 global ...
- yii2源码学习笔记(十四)
Module类是模块和应用类的基类. yiisoft\yii2\base\Module.php <?php /** * @link http://www.yiiframework.com/ * ...
- setTimeout和setInterval的深入理解
以前写的setTimeout和setInterval的文章有些不足之处,今天抽时间整理了一下,要想真正理解还得从javascript的单线程机制说起 大概半年前发表过一篇关于setTimeout和se ...
- js实现幻灯片播放图片示例代码
幻灯片播放图片的效果想必大家都有见到过吧,下面有个不错的示例,感兴趣的朋友可以参考下 复制代码代码如下: <select id="img_date" style=" ...
- 韩顺平_JAVA_视频教程_下载(打开迅雷,直接复制链接地址即可下载)
ed2k://|file|韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇.avi|37021064|f4fb2fb3db938a642146ccc8f0935fed|h=ao2k3ep7p ...
- 【javascript 动态添加数据到 HTML 页面】
今天简单的学习了一下有关对象字面量的定义和 javascript 如何取出对象字面量的值的知识,javascript 动态添加数据到 HTML 页面的问题. [学习目标]有如下的一组数据通过 Ajax ...
- Djang DJANGO_SETTINGS_MODULE
在 site-packages\django 新建一个文件 ’settings.py‘ 内容如下: DEBUG = TrueDEFAULT_FROM_EMAIL = 'alangwansui@qq.c ...
- word 2013 没有控件菜单怎么办,添加控件菜单
方法/步骤 打开word软件,然后点击菜单栏中最左边的“文件”菜单项,如下图红色方框所示 2 点击文件后,就打开word的设置对话框,然后在左边的设置列表中点击“自定义功能区”,打开自定义功能区设 ...
- SQL 多条件查询
网上有不少人提出过类似的问题:“看到有人写了WHERE 1=1这样的SQL,到底是什么意思?”.其实使用这种用法的开发人员一般都是在使用动态组装的SQL.让我们想像如下的场景:用户要求提供一个灵活的查 ...
- SimpleMembership: The future of membership for ASP.NET
http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal- ...