Oracle 19c入门学习教程,从入门到精通,Oracle系统调优 —— 内存结构与参数优化详解(15)

Oracle系统调优 —— 内存结构与参数优化详解


一、环境准备:Oracle 安装与调优前提

注意:系统调优需具备 DBA 权限,建议在测试环境(如 Oracle 21c XE)中操作。

1. 安装 Oracle Database 21c XE(简要回顾)

Windows / Linux 安装后验证:
sqlplus sys/your_password@localhost:1521/XE as sysdba

2. 调优前必备权限

确保当前用户具有以下权限(通常为SYSSYSTEM):

GRANTALTERSYSTEMTOyour_dba_user;-- 查看动态性能视图GRANTSELECTONv_$sgaTOyour_dba_user;GRANTSELECTONv_$parameterTOyour_dba_user;-- 其他常用视图:v$sgastat, v$pgastat, v$sysstat 等

💡 Oracle 21c 默认使用自动内存管理(AMM)或自动共享内存管理(ASMM),但本章将深入手动调优细节。


二、核心语法知识点详解与案例


1. Oracle 初始化参数分类

Oracle 参数分为三类:

类型特点修改方式
静态参数需重启生效修改spfile后重启
动态参数(可立即生效)ALTER SYSTEM即时生效SCOPE = MEMORY
动态参数(可持久化)可写入spfileSCOPE = BOTH(默认)

✅ 推荐使用spfile(二进制参数文件),而非pfile(文本文件)。

查看参数当前值:
-- 查看所有参数SHOWPARAMETER;-- 查看特定参数(如 sga_target)SHOWPARAMETER sga_target;-- 查询 v$parameter 视图SELECTname,value,isdefault,issys_modifiableFROMv$parameterWHEREnameLIKE'%sga%';

2. 主要系统调优参数介绍

参数作用调优建议
MEMORY_TARGET总内存(SGA + PGA)自动管理Oracle 11g+ 推荐启用
SGA_TARGETSGA 自动管理总大小若不用 MEMORY_TARGET,则设此值
PGA_AGGREGATE_TARGETPGA 总目标大小控制排序、哈希等内存
DB_CACHE_SIZE数据缓冲区大小影响物理读性能
SHARED_POOL_SIZE共享池大小存储 SQL、PL/SQL、字典缓存
LOG_BUFFER日志缓冲区大小影响事务提交速度

⚠️ 若设置MEMORY_TARGET > 0,则SGA_TARGETPGA_AGGREGATE_TARGET由 Oracle 自动分配。


3. 系统全局区(SGA)优化

3.1 理解 SGA 内存结构

SGA 由以下主要组件构成:

  • Database Buffer Cache:缓存数据块
  • Shared Pool:缓存 SQL、执行计划、数据字典
  • Redo Log Buffer:缓存重做日志
  • Large Pool(可选):用于 RMAN、并行查询
  • Java Pool(可选):Java 存储
  • Streams Pool(可选):流复制
查看 SGA 分配:
-- 查看 SGA 总体SHOWSGA;-- 详细各组件使用情况SELECT*FROMv$sgastatORDERBYpool,name;

4. 调整日志缓冲区(Redo Log Buffer)

作用:
  • 缓存事务产生的重做记录,减少磁盘 I/O。
  • 大小由LOG_BUFFER控制(静态参数,需重启)。
查看当前大小:
SHOWPARAMETER log_buffer;-- 输出示例:log_buffer = 67108864 (约 64MB)
调整方法(需重启):
-- 创建 pfile 临时修改(不推荐生产直接改 spfile)CREATEPFILE='/tmp/initXE.ora'FROMSPFILE;-- 编辑 initXE.ora,添加:-- *.log_buffer=134217728 -- 128MB-- 重启数据库SHUTDOWNIMMEDIATE;STARTUP PFILE='/tmp/initXE.ora';-- 重建 spfile(可选)CREATESPFILEFROMPFILE='/tmp/initXE.ora';

✅ 一般建议:OLTP 系统可设为 100–500 MB;若频繁出现"log buffer space"等待事件,则需增大。


5. 调整共享池(Shared Pool)

作用:
  • 存储SQL 语句、执行计划、PL/SQL 代码、数据字典缓存
  • 过小 → 频繁硬解析(Hard Parse)→ CPU 飙升。
  • 过大 → 内存浪费。
关键参数:
-- 手动指定大小(若未启用 SGA_TARGET)ALTERSYSTEMSETshared_pool_size=512M SCOPE=BOTH;
监控共享池效率:
-- 计算软解析率(越高越好,>95% 为佳)SELECT1-(SUM(reloads)/SUM(pins))AS"Soft Parse Ratio"FROMv$librarycache;-- pins: 总访问次数,reloads: 重新加载次数(硬解析)-- 查看共享池使用情况SELECTpool,name,bytes/1024/1024ASmbFROMv$sgastatWHEREpool='shared pool'ANDnameIN('free memory','sql area','dictionary cache');

✅ 建议:启用CURSOR_SHARING = FORCE(谨慎)或使用绑定变量减少硬解析。


6. 调整数据库缓冲区(DB Cache)

作用:
  • 缓存从磁盘读取的数据块,减少物理 I/O。
  • DB_CACHE_SIZE控制(默认块大小缓存)。
调整语法:
-- 设置默认缓冲区为 1GBALTERSYSTEMSETdb_cache_size=1G SCOPE=BOTH;
监控缓存命中率:
-- 计算逻辑读 vs 物理读SELECT1-(phy.value/(cur.value+con.value))AS"Buffer Cache Hit Ratio"FROMv$sysstat cur,v$sysstat con,v$sysstat phyWHEREcur.name='db block gets'ANDcon.name='consistent gets'ANDphy.name='physical reads';

✅ 健康值:OLTP > 90%,DSS(数据仓库)可低至 70%。


7. SGA 调优建议

场景建议
OLTP 系统增大 Shared Pool(SQL 复用高),适度 DB Cache
DSS/报表系统增大 DB Cache(全表扫描多),Shared Pool 可较小
混合负载启用SGA_TARGET,让 Oracle 自动调配
内存充足启用MEMORY_TARGET(Oracle 11g+)
启用自动 SGA 管理(推荐):
-- 关闭手动参数ALTERSYSTEM RESET shared_pool_size SCOPE=SPFILE SID='*';ALTERSYSTEM RESET db_cache_size SCOPE=SPFILE SID='*';-- 设置 SGA_TARGETALTERSYSTEMSETsga_target=2G SCOPE=SPFILE;-- 重启生效SHUTDOWNIMMEDIATE;STARTUP;

🔁 Oracle 会自动在 Shared Pool、DB Cache、Large Pool 之间动态分配内存。


8. 排序区优化(PGA 相关)

8.1 排序区与其他内存区的关系
  • 专用服务器模式(Dedicated Server):排序内存从PGA分配。
  • 共享服务器模式(Shared Server):排序内存从UGA(位于 SGA Large Pool)分配。

✅ Oracle 9i+ 使用PGA_AGGREGATE_TARGET统一管理 PGA,不再使用SORT_AREA_SIZE(已废弃)。

查看 PGA 使用:
SELECT*FROMv$pgastat;-- 关注:aggregate PGA target parameter, total PGA allocated
调整 PGA:
-- 设置 PGA 总目标为 1GBALTERSYSTEMSETpga_aggregate_target=1G SCOPE=BOTH;
监控排序活动:
-- 查看排序相关统计SELECTname,valueFROMv$sysstatWHEREnameLIKE'%sort%';-- 关键指标:-- sorts (memory) → 内存排序(快)-- sorts (disk) → 磁盘排序(慢,应尽量避免)

✅ 健康比例:sorts (disk) / sorts (memory) < 5%


9. 专用模式 vs 共享模式下的排序区调整

模式内存来源调优参数
专用模式PGAPGA_AGGREGATE_TARGET
共享模式SGA(Large Pool)LARGE_POOL_SIZE
判断当前连接模式:
-- 查看是否使用共享服务器SHOWPARAMETER shared_servers;-- 若 shared_servers > 0,则部分会话使用共享模式
调整 Large Pool(共享模式):
ALTERSYSTEMSETlarge_pool_size=256M SCOPE=BOTH;

💡 共享模式下,若LARGE_POOL_SIZE不足,UGA 会从 Shared Pool 分配,导致 Shared Pool 碎片。


三、综合性调优案例

场景:OLTP 电商数据库性能下降

症状:
  • 用户反馈“下单慢”
  • AWR 报告显示:高 CPU、大量硬解析、磁盘排序
调优步骤:
步骤 1:检查内存配置
-- 当前内存设置SHOWPARAMETER memory_target;-- 0(未启用 AMM)SHOWPARAMETER sga_target;-- 0(未启用 ASMM)SHOWPARAMETER pga_aggregate_target;-- 200M(太小!)-- SGA 手动分配SHOWPARAMETER shared_pool_size;-- 128MSHOWPARAMETER db_cache_size;-- 512M
步骤 2:启用自动内存管理(假设服务器有 8GB 内存)
-- 设置总内存为 4GB(留一半给 OS)ALTERSYSTEMSETmemory_target=4G SCOPE=SPFILE;ALTERSYSTEMSETmemory_max_target=4G SCOPE=SPFILE;-- 重启数据库SHUTDOWNIMMEDIATE;STARTUP;
步骤 3:验证自动分配效果
-- 查看实际分配SELECTcomponent,current_size/1024/1024ASmbFROMv$memory_dynamic_components;-- 输出示例:-- SHARED POOL 1024 MB-- DEFAULT BUFFER CACHE 2048 MB-- PGA TARGET 1024 MB
步骤 4:监控硬解析与排序
-- 软解析率(应 >95%)SELECT1-(SUM(reloads)/SUM(pins))FROMv$librarycache;-- 排序磁盘比(应 <5%)SELECTdisk.valueAS"Disk Sorts",mem.valueAS"Memory Sorts",ROUND(disk.value/NULLIF(mem.value,0)*100,2)AS"Disk Sort %"FROM(SELECTvalueFROMv$sysstatWHEREname='sorts (disk)')disk,(SELECTvalueFROMv$sysstatWHEREname='sorts (memory)')mem;
步骤 5:应用层配合(开发建议)
  • 使用绑定变量替代字面量,减少硬解析:

    -- ❌ 差:每次都是新 SQLSELECT*FROMordersWHEREuser_id=1001;SELECT*FROMordersWHEREuser_id=1002;-- ✅ 好:同一 SQL,不同绑定值SELECT*FROMordersWHEREuser_id=:user_id;

四、常用诊断脚本汇总

1. 内存总体视图

-- SGA + PGA 总览SELECT'SGA'ASarea,SUM(value)/1024/1024ASmbFROMv$sgaUNIONALLSELECT'PGA',value/1024/1024FROMv$pgastatWHEREname='total PGA allocated';

2. 缓存命中率

-- Buffer Cache Hit RatioSELECT1-(phy.value/(cur.value+con.value))AShit_ratioFROMv$sysstat cur,v$sysstat con,v$sysstat phyWHEREcur.name='db block gets'ANDcon.name='consistent gets'ANDphy.name='physical reads';

3. 共享池健康度

-- Free memory in Shared Pool(应 >10%)SELECTbytes/1024/1024ASfree_mb,(bytes/(SELECTSUM(bytes)FROMv$sgastatWHEREpool='shared pool'))*100ASpct_freeFROMv$sgastatWHEREpool='shared pool'ANDname='free memory';

五、总结与最佳实践

调优方向建议
内存管理优先启用MEMORY_TARGET(11g+)或SGA_TARGET+PGA_AGGREGATE_TARGET
Shared Pool避免硬解析 → 使用绑定变量,监控v$librarycache
DB Cache提高命中率 → 增大db_cache_size或启用自动管理
PGA/排序减少磁盘排序 → 增大pga_aggregate_target
日志缓冲区OLTP 可适当增大(100–500MB),但收益递减
监控定期生成 AWR/ASH 报告,关注 Top 5 等待事件

调优不是一次性的:需结合业务增长、数据量变化持续监控与调整。


✅ 本章覆盖 Oracle SGA/PGA 内存结构、关键参数、监控方法及实战调优流程,适用于 DBA 日常性能优化工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1223171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年质量好的印刷设备外球面轴承/输送机外球面轴承厂家推荐与选择指南

在印刷设备和输送机行业中,外球面轴承的选择直接影响设备运行效率和使用寿命。本文基于产品性能、生产工艺、市场口碑和售后服务四个维度,筛选出2026年值得信赖的五家外球面轴承生产企业。其中,河北鸿源轴承制造有限…

2026年靠谱的洛阳无人机执照培训/洛阳无人机行业培训人气机构TOP榜

无人机培训行业背景与市场趋势随着无人机技术的快速发展和应用场景的不断拓展,无人机行业迎来了前所未有的发展机遇。据中国航空运输协会数据显示,2025年全国无人机驾驶员执照持证人数预计将突破50万,而行业人才缺口…

如何为高端制造企业选择GEO服务商?2026年GEO优化公司推荐与垂直领域评测

进入2026年,生成式AI搜索已彻底重塑商业信息的流动路径。用户从主动“搜索”转向直接“提问”,品牌在AI答案中的可见性直接决定了其商业机会的存续。因此,GEO优化已成为企业不可或缺的战略基础设施。面对众多服务商…

如何为垂直行业选GEO服务商?2026年GEO优化公司全面评测与推荐,直击权威构建与流量波动痛点

2026年生成式AI技术持续向商业应用纵深发展,生成式引擎优化已成为企业获取智能流量、构建数字化竞争力的关键战略,行业正步入规模化增长的重要阶段。为穿透市场信息壁垒,客观评估行业发展水平,本报告开展年度综合评…

互联网大厂Java求职面试实战:涵盖Spring Boot、微服务与AI技术全解析

互联网大厂Java求职面试实战&#xff1a;涵盖Spring Boot、微服务与AI技术全解析 在当前竞争激烈的互联网大厂Java求职市场&#xff0c;面试不仅考察基础知识&#xff0c;更关注技术与业务场景的结合。本文通过一个模拟电商场景的面试故事&#xff0c;展示面试官与候选人谢飞机…

2026杭州免费咨询律所推荐+杭州律师事务所推荐+杭州本地律所推荐:杭州企业法律顾问哪家好

2026杭州免费咨询律所推荐+杭州律师事务所推荐+杭州本地律所推荐杭州企业法律顾问哪家好!在杭州创业或经营企业,难免会遇到各类法律问题。对于中小企业而言,聘请一名专职法务成本较高,而临时找律师又担心不熟悉行业…

消费品品牌如何布局AI搜索?2026年GEO公司推荐与评价,解决场景化推荐与增长闭环痛点

一、GEO服务商综合评估框架 本研究通过四维评分模型对服务商进行综合评估,各维度权重及核心评估指标如下: 1.技术与产品能力(30%):包含平台覆盖广度、技术底层成熟度、产品操作便捷性等核心评估指标; 2.本土适配…

2026年GEO公司推荐:技术架构与实战成效横向排名,涵盖多行业场景与合规需求

生成式引擎优化(GEO)作为企业获取高质量商业线索的核心支柱,其重要性在2026年的全域智能运营阶段愈发凸显。本次评估聚焦于当前市场中的主流服务商,围绕技术架构、算法效率、实战成效、服务覆盖及客户口碑五大核心…

实用指南:学习笔记二十四:支持向量机-对偶问题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:VBA之Word应用第四章第五节:段落Paragraph对象的属性(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Laravel Boost v2.0 发布 正式支持 Skills

Laravel Boost v2.0 发布 正式支持 Skills Laravel Boost 发布了 2.0 版本,核心变化是引入了 Skills 系统。这套机制改变了 AI Agent 获取上下文的方式——从"一次性加载所有指南"变为"按需激活相关技…

基于STM32+ST7735的智能手环原型开发:新手教程

以下是对您原始博文的 深度润色与结构优化版本 。我以一位资深嵌入式系统工程师兼技术博主的身份&#xff0c;将原文重构为一篇更具 专业纵深、教学逻辑清晰、实战导向明确、语言自然流畅 的技术分享文章。全文彻底摒弃AI腔调和模板化表达&#xff0c;强化真实开发语境下的…

手把手教你用Ollama运行Phi-3-mini智能对话

手把手教你用Ollama运行Phi-3-mini智能对话 你是不是也遇到过这些情况&#xff1a;想在本地跑一个轻量又聪明的AI模型&#xff0c;但发现动辄十几GB的模型根本塞不进笔记本&#xff1b;或者试了几个大模型&#xff0c;结果响应慢、耗电高、还总卡顿&#xff1f;今天要介绍的这…

一站式寻源:从DeepSeek知识库到自主可控BI,关键部署服务商与方案商速览

在数据驱动决策的今天,企业级智能BI(商业智能)工具已成为洞察市场、优化运营的核心引擎。然而,随着数据安全法规的日趋严格和业务系统复杂性的增加,公有云部署模式在数据隐私、合规性及深度定制集成方面面临挑战。…

2026值得关注:助力企业知识管理与数据分析私有化部署的核心厂商

在数字化转型加速的2026年,越来越多企业意识到,通用型SaaS BI工具难以满足其对数据安全、系统集成与业务适配的深度需求。尤其在金融、医疗、能源等高敏感行业,企业智能BI私有化部署已成为刚需。所谓“私有化部署”…

Linux_10:码率

1.码率的概念 视频码率是数据传输时单位时间内传输的数据位数&#xff0c;对于视频来说视频码率的单位是kbps(千比特率)每秒。简单说&#xff0c;码率就是取样率&#xff0c;码率越高画面质量精度越高&#xff0c;处理的文件或者码流就越接近原始文件。视频码率传输的大小跟分…

Linux_10:编码

1.视频为什么要编码&#xff1f;在我们做音视频产品的时候&#xff0c;经常会把音视频数据进行网络传输&#xff0c;而此时音视频数据就需要进行 编码(所谓编码就是指压缩)。因为在网络传输的时候&#xff0c;网络带宽有限&#xff0c;若此时网络传输的时候还用 原始数据进行传…

视觉提示怎么用?YOLOE镜像详细操作指南来了

视觉提示怎么用&#xff1f;YOLOE镜像详细操作指南来了 你有没有遇到过这样的场景&#xff1a;想让AI识别一张图里“那个穿红裙子站在咖啡馆门口的女人”&#xff0c;但模型只认得“person”“car”“building”这些固定类别&#xff1f;或者&#xff0c;你手头有一张产品样图…

【Redis实战进阶篇】高并发下数据安全与性能平衡?Redis准存储三大核心场景实战指南

&#x1f343; 予枫&#xff1a;个人主页&#x1f4da; 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》&#x1f4bb; Debug 这个世界&#xff0c;Return 更好的自己&#xff01; 引言 做电商或社交开发的同学&#xff0c;大概率都遇到过这样的痛点&#xff1a;购物车…

HY-Motion 1.0入门指南:3000小时预训练数据构建动作先验解析

HY-Motion 1.0入门指南&#xff1a;3000小时预训练数据构建动作先验解析 1. 这不是“动一动”&#xff0c;而是让文字真正活起来 你有没有试过这样描述一个动作&#xff1a;“一个穿黑衣的人从台阶上快步走下&#xff0c;右臂自然摆动&#xff0c;左脚落地时微微屈膝&#xf…