21年网站搭建公司排行榜长沙做网站推广公司咨询
2026/4/18 15:11:04 网站建设 项目流程
21年网站搭建公司排行榜,长沙做网站推广公司咨询,山东有哪些网络公司,爱网站找不到了Oracle系统调优 —— 内存结构与参数优化详解 一、环境准备#xff1a;Oracle 安装与调优前提 注意#xff1a;系统调优需具备 DBA 权限#xff0c;建议在测试环境#xff08;如 Oracle 21c XE#xff09;中操作。 1. 安装 Oracle Database 21c XE#xff08;简要回顾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 日常性能优化工作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询