暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle内存架构.pdf
946
1页
54次
2023-02-21
5墨值下载
Oracle内存架构
Oracle内存架构
SGA
system global area
共享全局区:存放实例的控制信息,共享区域
SGA是一组共享内存结构,包含数据和数据库实例的控制信息
SGA是被所有的请求服务和后台进程共享的。
PGA
program global area
程序全局区:存放服务进程的相关信息,被进程私有,私有区域
PGA是一个内存区域,包含数据和一个服务进程的控制信息,不被Oracle数据库共享
为每个服务器进程分配单独的PGA,也会为后台进程分配自己的PGA,两者的内
存和为常说的PGA
OS memory > 数据库实例memory = SGA+PGA
PGA <= 最大可以分配的大小
数据库实例memory <= 最大可以分配的大小
内存管理
概述
内存管理是随着数据库的改变按需优化调整内存的大小
Oracle支持多种不同的内存管理方式,这些不同的方式可以通过修改参数来设置
内存的管理方式
自动管理:Automatic Memory Management(AMM)
自动管理SGA和PGA
只需要设置实例需要的总内存大小
动态调整SGA和PGA
动态优化单独的SGA和PGA的组件内容
AMM
初始状态:DBCA创建数据库时
OS memory <= 4G AMM 会被启用
OS memory > 4G AMM被禁用,且ASMM被启用
当选择advanced installation时 可自定义选择AMM或ASMM
工具
AMM启用之后,ASMM会自动启用 Memory Size Advisor
ASMM启用,AMM没有启用 SGA Size Advisor
实现方式及参数
只需要设置target memory参数(MEMORY_TARGET)
总的内存大小相对恒定,并且实例自动分布SGA和PGA之间的内存
随着内存需求的改变,实例动态重新分布SGA和PGA之间的内存
动态参数,可以不在重启数据库的情况下更改
选择性设置maximum memory参数(MEMORY_MAX_TARGET) 静态参数,作为MWMORY_TARGET参数值的上限
启用AMM
1.以sysdba登录到数据库 sqlplus / as sysdba
2.计算MEMORY_TARGET的最小值
查看SGA和PGA当前值
show parameter SGA_TARGET
show parameter PGA_AGGREGATE_TARGET
查看PGA允许分配的最大值
SELECT VALUE/1048576
FROM V$PGASTAT
WHERE NAME='MAXIMUM PGA ALLOCATED';
计算MEMORY_TARGET最小值
MEMORY_TARGET=
SGA_TARGET+MAX(PGA_AGGREGATE_TARGET, MAXIMUM PGA ALLOCATED)
3.为MEMORY_TARGET选择合适的值m
可以是步骤二中计算得到的最小值
也可以根据物理内存的情况设置一个大的值
4.为MEMORY_MAX_TARGET选择合适的值n 可以与MEMOTY_TARGET相同也可以比它大
5.修改参数文件中的参数值
默认从spfile启动时
ALTER SYSTEM SET MEMORY_MAX_TARGET=nM SCOPE=SPFILE;
ALTER SYSTEM SET SGA_TARGET=0;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0;
默认从pfile启动时
memory_max_target=nM
memory_target=mM
6.重启数据库
shutdown immediate;
startup;
监控和优化AMM
动态性能视图V$MEMORY_DYNAMIC_COMPONENTS
展示了当前所有动态优化的内存组件,包括SGA和PGA的总大小
select
COMPONENT,CURRENT_SIZE/1024/1024,MIN_SIZE/1024/1024,MAX_SIZE/1024/1024
from V$MEMORY_DYNAMIC_COMPONENTS
where COMPONENT = 'SGA Target' or COMPONENT = 'PGA Target'
V$MEMORY_TARGET_ADVICE
提供了对MEMORY_TARGET参数的优化建议:
select * from v$memory_target_advice order by memory_size;
MEMORY_SIZE表示内存大小
MEMORY_SIZE_FACTOR为1的行展示的当前内存的大小
ESTD_DB_TIME表示消耗的DB time
ESTD_DB_TIME_FACTOR表示不同内存下的DB time与当前DB time的比率
手工管理:Manual Memory Management(MMM)
禁用内存自动管理
配置手工的内存管理
保存了一定程度的自动管理
管理方式
PGA
Automatic PGA memory management - for the instance PGA
设置PGA的总大小
动态优化调整单独组件大小
Manual PGA memory management - for the instance PGA
为每个组件内容设置大小
不建议使用
SGA
Automatic shared memory management - for the SGA(ASMM)
概述
简化了SGA内存管理
设置SGA的目标最大值 参数:SGA_TARGET
数据库动态优化SGA组件内容大小,允许系统最大化的使用所有可用的SGA内存
SGA组件内容和颗粒度
SGA组件的内存分配和释放是以granules细粒度进行的
SGA组件动态分配是通过细粒度单元来分配的
细粒度大小由SGA的大小来决定
SGA大小 小于或等于 1G,细粒度的大小为4M
SGA大小 大于 1G,细粒度的大小为16M
Oracle通过SGA内存使用的细粒度个数来跟踪每个组件的使用情况
通过查询V$SGAINFO视图来查看细粒度
所有的SGA内存组件使用相同的细粒度
如果组件的大小不是细粒度的整数倍,那么ORACLE会进行进位的整数倍扩展
Maximum SGA Size
SGA_MAX_SIZE指定SGA的最大值
要比所有组件的内存和大或者相等
如果没有指定参数值 Oracle选择默认的值为所有组件的内存
如果指定的参数值小于内存组件的和,以及默认值小于组件内存和 Oracle会忽略参数值并且选择一个正确的值
SGA Target Size
通过设置该参数来启用ASMM
设置了SGA的总大小,自动按需分配内存组件的大小
所有参数设置为0启用完全的自动优化管理
一个或多个参数设置为非零值,可作为优化SGA的最小值
Manual shared memory management - for the SGA(MSMM)
设置单独的SGA组件内容大小
根据业务运行情况不间断的优化单独组件的大小
直接控制单独内存组件
@ |
of 1
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文档被以下合辑收录

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜