Oracle 19c入门学习教程,从入门到精通,Oracle系统调优 —— 内存结构与参数优化详解(15)
Oracle系统调优 —— 内存结构与参数优化详解一、环境准备Oracle 安装与调优前提注意系统调优需具备 DBA 权限建议在测试环境如 Oracle 21c XE中操作。1. 安装 Oracle Database 21c XE简要回顾Windows / Linux 安装后验证sqlplus sys/your_passwordlocalhost:1521/XE as sysdba2. 调优前必备权限确保当前用户具有以下权限通常为SYS或SYSTEMGRANTALTERSYSTEMTOyour_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_targetSHOWPARAMETER 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_TARGET和PGA_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 临时修改不推荐生产直接改 spfileCREATEPFILE/tmp/initXE.oraFROMSPFILE;-- 编辑 initXE.ora添加-- *.log_buffer134217728 -- 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_TARGETALTERSYSTEMSETshared_pool_size512M SCOPEBOTH;监控共享池效率-- 计算软解析率越高越好95% 为佳SELECT1-(SUM(reloads)/SUM(pins))ASSoft Parse RatioFROMv$librarycache;-- pins: 总访问次数reloads: 重新加载次数硬解析-- 查看共享池使用情况SELECTpool,name,bytes/1024/1024ASmbFROMv$sgastatWHEREpoolshared poolANDnameIN(free memory,sql area,dictionary cache);✅ 建议启用CURSOR_SHARING FORCE谨慎或使用绑定变量减少硬解析。6. 调整数据库缓冲区DB Cache作用缓存从磁盘读取的数据块减少物理 I/O。由DB_CACHE_SIZE控制默认块大小缓存。调整语法-- 设置默认缓冲区为 1GBALTERSYSTEMSETdb_cache_size1G SCOPEBOTH;监控缓存命中率-- 计算逻辑读 vs 物理读SELECT1-(phy.value/(cur.valuecon.value))ASBuffer Cache Hit RatioFROMv$sysstat cur,v$sysstat con,v$sysstat phyWHEREcur.namedb block getsANDcon.nameconsistent getsANDphy.namephysical reads;✅ 健康值OLTP 90%DSS数据仓库可低至 70%。7. SGA 调优建议场景建议OLTP 系统增大 Shared PoolSQL 复用高适度 DB CacheDSS/报表系统增大 DB Cache全表扫描多Shared Pool 可较小混合负载启用SGA_TARGET让 Oracle 自动调配内存充足启用MEMORY_TARGETOracle 11g启用自动 SGA 管理推荐-- 关闭手动参数ALTERSYSTEM RESET shared_pool_size SCOPESPFILE SID*;ALTERSYSTEM RESET db_cache_size SCOPESPFILE SID*;-- 设置 SGA_TARGETALTERSYSTEMSETsga_target2G SCOPESPFILE;-- 重启生效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_target1G SCOPEBOTH;监控排序活动-- 查看排序相关统计SELECTname,valueFROMv$sysstatWHEREnameLIKE%sort%;-- 关键指标-- sorts (memory) → 内存排序快-- sorts (disk) → 磁盘排序慢应尽量避免✅ 健康比例sorts (disk) / sorts (memory) 5%9. 专用模式 vs 共享模式下的排序区调整模式内存来源调优参数专用模式PGAPGA_AGGREGATE_TARGET共享模式SGALarge PoolLARGE_POOL_SIZE判断当前连接模式-- 查看是否使用共享服务器SHOWPARAMETER shared_servers;-- 若 shared_servers 0则部分会话使用共享模式调整 Large Pool共享模式ALTERSYSTEMSETlarge_pool_size256M SCOPEBOTH; 共享模式下若LARGE_POOL_SIZE不足UGA 会从 Shared Pool 分配导致 Shared Pool 碎片。三、综合性调优案例场景OLTP 电商数据库性能下降症状用户反馈“下单慢”AWR 报告显示高 CPU、大量硬解析、磁盘排序调优步骤步骤 1检查内存配置-- 当前内存设置SHOWPARAMETER memory_target;-- 0未启用 AMMSHOWPARAMETER sga_target;-- 0未启用 ASMMSHOWPARAMETER pga_aggregate_target;-- 200M太小-- SGA 手动分配SHOWPARAMETER shared_pool_size;-- 128MSHOWPARAMETER db_cache_size;-- 512M步骤 2启用自动内存管理假设服务器有 8GB 内存-- 设置总内存为 4GB留一半给 OSALTERSYSTEMSETmemory_target4G SCOPESPFILE;ALTERSYSTEMSETmemory_max_target4G SCOPESPFILE;-- 重启数据库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.valueASDisk Sorts,mem.valueASMemory Sorts,ROUND(disk.value/NULLIF(mem.value,0)*100,2)ASDisk Sort %FROM(SELECTvalueFROMv$sysstatWHEREnamesorts (disk))disk,(SELECTvalueFROMv$sysstatWHEREnamesorts (memory))mem;步骤 5应用层配合开发建议使用绑定变量替代字面量减少硬解析-- ❌ 差每次都是新 SQLSELECT*FROMordersWHEREuser_id1001;SELECT*FROMordersWHEREuser_id1002;-- ✅ 好同一 SQL不同绑定值SELECT*FROMordersWHEREuser_id:user_id;四、常用诊断脚本汇总1. 内存总体视图-- SGA PGA 总览SELECTSGAASarea,SUM(value)/1024/1024ASmbFROMv$sgaUNIONALLSELECTPGA,value/1024/1024FROMv$pgastatWHEREnametotal PGA allocated;2. 缓存命中率-- Buffer Cache Hit RatioSELECT1-(phy.value/(cur.valuecon.value))AShit_ratioFROMv$sysstat cur,v$sysstat con,v$sysstat phyWHEREcur.namedb block getsANDcon.nameconsistent getsANDphy.namephysical reads;3. 共享池健康度-- Free memory in Shared Pool应 10%SELECTbytes/1024/1024ASfree_mb,(bytes/(SELECTSUM(bytes)FROMv$sgastatWHEREpoolshared pool))*100ASpct_freeFROMv$sgastatWHEREpoolshared poolANDnamefree memory;五、总结与最佳实践调优方向建议内存管理优先启用MEMORY_TARGET11g或SGA_TARGETPGA_AGGREGATE_TARGETShared Pool避免硬解析 → 使用绑定变量监控v$librarycacheDB Cache提高命中率 → 增大db_cache_size或启用自动管理PGA/排序减少磁盘排序 → 增大pga_aggregate_target日志缓冲区OLTP 可适当增大100–500MB但收益递减监控定期生成 AWR/ASH 报告关注 Top 5 等待事件✅调优不是一次性的需结合业务增长、数据量变化持续监控与调整。✅ 本章覆盖 Oracle SGA/PGA 内存结构、关键参数、监控方法及实战调优流程适用于 DBA 日常性能优化工作。

相关新闻

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

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

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

2026/7/12 12:17:40 阅读更多 →
基于STM32+ST7735的智能手环原型开发:新手教程

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

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

2026/7/7 9:13:34 阅读更多 →
手把手教你用Ollama运行Phi-3-mini智能对话

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

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

2026/7/10 13:57:56 阅读更多 →

最新新闻

Docker镜像构建完全指南:Docker and Kubernetes Fundamentals Hands-On深度解析

Docker镜像构建完全指南:Docker and Kubernetes Fundamentals Hands-On深度解析

Docker镜像构建完全指南:Docker and Kubernetes Fundamentals Hands-On深度解析 【免费下载链接】Fundamentals-HandsOn Files for the Docker and Kubernetes Fundamentals Hands-On labs 项目地址: https://gitcode.com/gh_mirrors/fu/Fundamentals-HandsOn …

2026/7/12 22:06:44 阅读更多 →
如何在3分钟内让AI助手掌握Obsidian核心操作:Obsidian-Skills深度解析

如何在3分钟内让AI助手掌握Obsidian核心操作:Obsidian-Skills深度解析

如何在3分钟内让AI助手掌握Obsidian核心操作:Obsidian-Skills深度解析 【免费下载链接】obsidian-skills Agent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas. 项目地址: https://gitcod…

2026/7/12 22:00:43 阅读更多 →
如何快速搭建llmcord:3步实现Discord与任意LLM无缝集成

如何快速搭建llmcord:3步实现Discord与任意LLM无缝集成

如何快速搭建llmcord:3步实现Discord与任意LLM无缝集成 【免费下载链接】discord-llm-chatbot Make Discord your LLM frontend - Supports any OpenAI compatible API (OpenRouter, Ollama and more) 项目地址: https://gitcode.com/gh_mirrors/di/discord-llm-c…

2026/7/12 21:58:43 阅读更多 →
如何高效部署WSABuilds:Windows Android子系统终极解决方案

如何高效部署WSABuilds:Windows Android子系统终极解决方案

如何高效部署WSABuilds:Windows Android子系统终极解决方案 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (roo…

2026/7/12 21:54:42 阅读更多 →
default_value_for:为ActiveRecord模型提供声明式默认值的终极指南

default_value_for:为ActiveRecord模型提供声明式默认值的终极指南

default_value_for:为ActiveRecord模型提供声明式默认值的终极指南 【免费下载链接】default_value_for Provides a way to specify default values for ActiveRecord models 项目地址: https://gitcode.com/gh_mirrors/de/default_value_for default_value_…

2026/7/12 21:52:42 阅读更多 →
快速上手Chrome Password Grabber:3分钟学会提取Chrome保存的密码

快速上手Chrome Password Grabber:3分钟学会提取Chrome保存的密码

快速上手Chrome Password Grabber:3分钟学会提取Chrome保存的密码 【免费下载链接】chrome_password_grabber Get unencrypted Saved Password from Google Chrome 项目地址: https://gitcode.com/gh_mirrors/ch/chrome_password_grabber Chrome Password Gr…

2026/7/12 21:46:36 阅读更多 →

日新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/12 0:03:13 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/12 0:03:14 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/12 0:03:14 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/12 0:03:13 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/12 0:03:14 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/12 0:03:14 阅读更多 →

月新闻