读书笔记:一文搞懂Oracle内存管理:从入门到精通

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

一文搞懂Oracle内存管理:从入门到精通

简单理解Oracle内存结构

想象Oracle数据库就像一个大工厂,它需要合理分配和使用内存空间。这个工厂主要有三大内存区域:

  1. SGA(系统全局区):相当于工厂的公共仓库,所有工人都能从这里取东西
  2. PGA(进程全局区):每个工人自己的工具箱,只有自己能用
  3. UGA(用户全局区):记录每个工人工作进度的记事本,根据工作方式不同放在不同地方

五种内存管理方式对比

Oracle提供了五种内存管理方法,就像工厂的五种管理模式:

管理模式主要设置参数适用情况特点
全自动模式(AMM)MEMORY_TARGET想省心管理最简单但不支持大内存
半自动模式(ASMM)SGA_TARGET只想自动管仓库只自动管理SGA
手动模式DB_CACHE_SIZE等精细控制党每个参数都要自己设
PGA自动管理PGA_AGGREGATE_TARGET推荐使用自动管理工人工具箱
PGA手动管理SORT_AREA_SIZE等老系统兼容不推荐新系统用

深入理解PGA和UGA

PGA就像每个工人的私人工具箱:

  • 需要时就申请空间
  • 只归这个工人自己使用
  • 大小可以随时调整

UGA记录工人的工作状态:

  • 如果是"共享工人"模式,记事本放在公共仓库
  • 如果是"专属工人"模式,记事本就放在自己工具箱里
  • 里面存着SQL工作区、排序区等重要信息
如何开启PGA自动管理

两种常用方法:

  1. 单独设置PGA目标值:
-- 先关闭全自动模式
ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE;
-- 设置PGA目标300MB
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=300M SCOPE=SPFILE;
-- 设置SGA目标1500MB
ALTER SYSTEM SET SGA_TARGET=1500M SCOPE=SPFILE;
-- 重启生效
STARTUP FORCE;
  1. 使用全自动模式(不适合超大内存):
-- 设置总内存1500MB
ALTER SYSTEM SET MEMORY_TARGET=1500M SCOPE=SPFILE;
-- 让系统自动分配
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;
ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;
重要发现:PGA分配的秘密

通过实际测试我们发现:

  • PGA目标值只是个参考,不是硬性限制
  • 工人越多,每个人分到的工具箱空间越小
  • 单独工作时能分到15MB,50人时就只有7MB,200人时稳定在5MB左右
  • 实际使用量可能远超设定(测试中设300MB实际用了560MB)
  • PL/SQL变量占用的空间不受限制

最佳实践建议

  1. 能用自动就用自动:特别是PGA自动管理
  2. 定期检查调整:查看V$PGA_TARGET_ADVICE等视图
  3. 别设得太死:PGA上限可以设置但要留余地
  4. 共享模式要注意:需要更大的SGA空间
  5. 小心大数组变量:它们会占用PGA且不受控制

总结

Oracle内存管理就像管理工厂的空间分配,需要在公共和私人空间之间找到平衡。自动管理让工作更轻松,但特殊情况下还是需要人工干预。理解PGA和UGA的工作原理,合理配置参数,才能让数据库高效稳定运行。下一节我们会详细讲解SGA这个"公共仓库"的管理技巧。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
优快云地址: (https://blog.youkuaiyun.com/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值