liuziyi

liuziyi

SGA性能调整与优化:从内部结构到实战思路

SGA(System Global Area)是Oracle数据库的核心内存区域,承载着数据缓存、共享SQL解析、日志缓冲等关键功能,其性能直接决定数据库整体运行效率。

一、BUFFER CACHE:数据缓存的核心优化

BUFFER CACHE是SGA中占比最大的组件,负责缓存数据文件中的数据块,减少磁盘I/O开销。其优化的核心是平衡缓存命中率与数据块争用,提升数据访问效率。

1.1 内部结构解析

BUFFER CACHE的高效运行依赖于严谨的内部组织架构,关键组成包括:

  • BUFFER HEADER:每个数据块对应一个BUFFER HEADER,记录块的状态(如是否被修改、所属表空间、SCN等),是数据块管理的核心元数据。
  • HASH CHAIN与HASH BUCKET:BUFFER HEADER通过哈希算法映射到HASH BUCKET,再通过HASH CHAIN串联相同哈希值的BUFFER HEADER,实现数据块的快速查找。
  • LRU LIST:分为LRU(Least Recently Used)链和LRUW(LRU Write)链,用于管理数据块的淘汰与写入策略,确保热点数据常驻缓存。

1.2 关键等待事件与争用

BUFFER CACHE相关的等待事件直接反映性能瓶颈,核心包括:

  • FREE BUFFER WAITS:缓存中无空闲缓冲区时触发,说明缓存容量不足或脏块写入磁盘缓慢。
  • BUFFER BUSY WAITS:数据块被其他会话占用(如正在写入磁盘、被锁定)时触发,体现数据块争用。
  • LATCH争用:核心LATCH包括CACHE BUFFERS CHAINS(哈希链访问竞争)和CACHE BUFFERS LRU CHAIN(LRU链操作竞争),高并发场景下易成为瓶颈。

1.3 优化指标与实战思路

核心优化指标

  • BUFFER CACHE命中率:理想值应高于95%,可通过V$BUFFER_POOL_STATISTICS视图的PHYSICAL_READSLOGICAL_READS计算(命中率=1-物理读/逻辑读)。
  • AWR报告争用指标:关注“Latch Miss Rate”(LATCH缺失率)、“Buffer Busy Waits”平均等待时间,超过20ms需重点优化。
  • 缓存大小建议值:根据业务类型调整,OLTP系统建议占物理内存的40%-60%,OLAP系统可适当降低(30%-45%),预留内存给PGA和操作系统。

具体优化思路

  1. 内存不足优化:若命中率低于90%且存在FREE BUFFER WAITS,优先增大DB_CACHE_SIZE(动态参数,无需重启);若已达物理内存上限,可通过DB_CACHE_ADVICE视图评估最优缓存大小,或清理非热点数据(如临时表、大表全扫描数据)。
  2. 数据块争用解决:针对BUFFER BUSY WAITS,通过V$SESSION_WAIT的P1(数据块地址)定位争用块,检查是否为热点表(如频繁更新的订单表),可采用分区表拆分、增加索引分散访问、调整事务提交频率等方式缓解。
  3. LATCH争用优化CACHE BUFFERS CHAINS争用可通过增加DB_BLOCK_SIZE减少块数量,或使用DBMS_STATS收集表统计信息优化SQL执行计划;CACHE BUFFERS LRU CHAIN争用可调整DB_WRITER_PROCESSES(增加写进程)、优化CHECKPOINT策略减少脏块堆积。

二、SHARED POOL:共享资源的高效管理

SHARED POOL用于缓存SQL语句、PL/SQL程序、数据字典等共享对象,其优化核心是减少硬解析、避免内存碎片,提升共享资源复用率。

2.1 内部结构与核心概念

  • 堆管理(Heap Management):SHARED POOL以堆(Heap)为单位管理内存,每个堆包含多个子堆(Sub Pool),避免单堆竞争,11g后默认启用自动子堆分配。
  • CHUNK:内存分配的最小单位,分为自由块(Free Chunk)、占用块(Allocated Chunk)和回收块(Recycle Chunk),碎片问题本质是自由块碎片化导致无法满足大对象分配需求。
  • LIST结构:通过FREE LIST(管理自由块)、LRU LIST(管理占用块淘汰)、RESERVED FREE LIST(预留大对象分配空间)实现内存高效调度。

2.2 关键问题与优化思路

核心问题诊断

  • 内存碎片:表现为ORA-04031错误(共享池内存不足),即使SHARED_POOL_SIZE足够,也因自由块碎片化无法分配连续空间。
  • 硬解析过多:SQL语句未绑定变量、大小写不一致等导致重复解析,消耗CPU和内存资源,可通过V$SQL视图的PARSE_CALLSEXECUTIONS判断(硬解析率=解析次数/执行次数,理想值<10%)。
  • SGA内存抖动:频繁调整SHARED_POOL_SIZEDB_CACHE_SIZE等参数,导致内存重新分配,引发性能波动。

具体优化思路

  1. 减少硬解析:强制应用程序使用绑定变量(如WHERE id = :1),启用CURSOR_SHARING = FORCE(自动绑定相似SQL);规范SQL编写,避免大小写混用、多余空格等导致的解析差异。
  2. 碎片优化:设置SHARED_POOL_RESERVED_SIZE(预留10%-20%共享池空间给大对象),定期执行ALTER SYSTEM FLUSH SHARED_POOL(谨慎使用,避免业务高峰期);对于频繁加载卸载的大PL/SQL程序,使用DBMS_SHARED_POOL.KEEP固定到内存。
  3. 子堆与内存分配调整:若存在子堆争用,可通过_KGL_SHARED_CACHE_SIZE调整子堆大小;禁用自动内存管理(AMM),手动分配SHARED_POOL_SIZEDB_CACHE_SIZE,避免内存抖动。

三、LIBRARY CACHE:共享SQL的解析与争用优化

LIBRARY CACHE是SHARED POOL的核心子组件,存储SQL语句、PL/SQL程序的解析树和执行计划,其优化重点是减少解析开销和LATCH争用。

3.1 内部结构与等待事件

  • 核心对象:包括Library Cache Handle(SQL语句、PL/SQL程序的标识)和Library Cache Object(解析树、执行计划等具体内容)。
  • 关键等待事件
    • LATCH: LIBRARY CACHE:解析SQL时竞争Library Cache Handle导致,常见于硬解析过多场景。
    • LIBRARY CACHE LOCK/PIN:执行SQL时竞争Library Cache Object导致,可能因锁等待、依赖对象失效引发。

3.2 SQL解析过程与优化

SQL解析分为三个层级,优化的核心是提升软解析和软软解析占比:

  • 硬解析:SQL首次执行时,需完成语法分析、语义分析、执行计划生成,开销最大。
  • 软解析:SQL已存在于Library Cache,无需重新生成执行计划,仅需验证权限和依赖对象状态。
  • 软软解析:同一会话重复执行相同SQL,可直接复用解析结果,开销最小。

优化措施

  1. 提升软解析率:通过绑定变量、规范SQL编写减少硬解析,确保V$SQL中相同逻辑SQL的VERSION_COUNT(版本数)尽可能小。
  2. 解决LIBRARY CACHE争用:若存在LIBRARY CACHE LOCK,通过V$SESSION_WAIT的P1RAW参数定位争用对象(如SELECT * FROM X$KGLLK WHERE KGLLKHDL = :P1RAW),检查是否有长期运行的事务占用锁;若存在LATCH: LIBRARY CACHE,增加SHARED_POOL_SIZE或优化SQL解析效率。
  3. 清理无效对象:定期执行UTLRP.SQL编译无效的PL/SQL程序和视图,避免因依赖对象失效导致解析失败。

四、ROW CACHE:数据字典的缓存优化

ROW CACHE(字典缓存)用于缓存数据字典信息(如表结构、用户权限、索引定义),减少数据字典查询的磁盘I/O。其优化核心是避免LATCH争用和缓存不足。

4.1 关键指标与故障诊断

  • 核心指标V$ROWCACHE视图的GETS(请求次数)、GETMISSES(缺失次数),缓存命中率=1-缺失次数/请求次数,理想值高于95%。
  • 常见故障LATCH: ROW CACHE OBJECTS争用,表现为数据库全局性缓慢,尤其在大量用户登录、频繁创建对象的场景中。

4.2 优化思路与故障处理

  1. 缓存大小调整:若命中率低于90%,增大SHARED_POOL_SIZE(ROW CACHE属于SHARED POOL子集),或通过DBMS_SHARED_POOL.KEEP将高频访问的字典对象固定到内存。
  2. LATCH争用处理:若出现LATCH: ROW CACHE OBJECTS,通过以下步骤诊断:
    • 执行SELECT * FROM V$LATCHHOLDER WHERE NAME = 'row cache objects'定位锁持有者。
    • 检查是否有大量DDL操作(如CREATE TABLE、ALTER INDEX)并发执行,暂时停止非紧急DDL。
    • 若为Oracle Bug导致,应用对应PSU补丁(如10gR2的Bug 4493447)。
  3. 实战案例:某系统出现频繁LATCH: ROW CACHE OBJECTS等待,通过跟踪发现是大量用户同时查询DBA_TABLES字典表,优化方案为:创建字典表的物化视图,定期刷新,将用户查询指向物化视图,减少ROW CACHE访问压力。

五、LOG BUFFER:日志缓冲的高效写入优化

LOG BUFFER用于缓存redo日志条目,待积累到一定量后由LGWR进程写入在线日志文件,其优化核心是减少日志写入延迟和等待事件。

5.1 核心配置与等待事件

  • 关键参数LOG_BUFFER(日志缓冲大小,默认较小,建议设置为物理内存的1%-2%,最大不超过16MB)。
  • 核心等待事件
    • LOG FILE SYNC:事务提交时等待LGWR将日志写入磁盘,延迟过高会导致事务响应缓慢。
    • REDO WASTAGE:日志条目因空间不足被拆分,导致日志文件碎片化,增加I/O开销。

5.2 优化思路

  1. 调整LOG_BUFFER大小:若V$SYSTEM_EVENTLOG FILE SYNC平均等待时间超过20ms,且REDO WASTAGE占比过高,适当增大LOG_BUFFER(需重启数据库),减少日志拆分。
  2. 优化LGWR写入效率:确保在线日志文件分散存储在不同磁盘(避免I/O竞争),启用异步I/O(如AIX的aio0设备、Linux的libaio);减少小事务频繁提交,合并批量操作(如批量插入时每1000条提交一次)。
  3. 减少日志量:禁用不必要的日志生成(如临时表的NOLOGGING属性),使用DIRECT PATH INSERT(仅在归档模式下支持),避免重复写入相同日志内容。

六、SGA优化实战Checklist

前置准备

1. 工具与权限

BUFFER CACHE优化 Checklist

1. 监控核心指标(每日/周执行)

指标类型 监控SQL/方法 合格阈值 异常判断标准
缓存命中率 SELECT 1 - (PHYSICAL_READS / LOGICAL_READS) AS HIT_RATE FROM V$BUFFER_POOL_STATISTICS; >95% <90%(内存不足)、90%-95%(需关注)
FREE BUFFER等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT LIKE 'free buffer waits'; 平均等待<10ms 平均等待>20ms(脏块写入慢)
BUFFER BUSY等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT LIKE 'buffer busy waits'; 平均等待<20ms 平均等待>50ms(数据块争用)
LATCH争用 SELECT NAME, MISSES, GETS, (MISSES/GETS)*100 AS MISS_RATE FROM V$LATCH WHERE NAME IN ('cache buffers chains', 'cache buffers lru chain'); 缺失率<1% 缺失率>3%(LATCH竞争激烈)

2. 诊断异常根因(指标超阈值时执行)

  • SELECT 
      p1 "数据块地址",
      DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(p1) "文件号",
      DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(p1) "块号",
      OWNER, SEGMENT_NAME, SEGMENT_TYPE
    FROM V$SESSION_WAIT sw, DBA_EXTENTS de
    WHERE sw.EVENT = 'buffer busy waits'
      AND de.FILE_ID = DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(sw.p1)
      AND de.BLOCK_ID <= DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(sw.p1)
      AND de.BLOCK_ID + de.BLOCKS > DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(sw.p1);
    

3. 优化措施(按需执行)

异常场景 优化操作 注意事项
缓存命中率低 1. 动态增大DB_CACHE_SIZEALTER SYSTEM SET DB_CACHE_SIZE=XXG SCOPE=BOTH;(11g后支持)
2. 清理非热点数据:ALTER TABLE 大表名 CACHE NO;(避免全表扫描占用缓存)
1. 预留20%-30%内存给PGA/操作系统
2. 若为RAC,所有节点需同步调整
数据块争用(热点表) 1. 分区表拆分:将高频更新表(如订单表)按时间/地区分区
2. 增加索引:对频繁查询的列建索引,分散块访问
3. 调整事务:减少单事务更新行数,避免长期锁块
分区需业务配合,索引需避免过度创建(影响DML)
LATCH争用(CACHE BUFFERS CHAINS) 1. 增大DB_BLOCK_SIZE(需重建数据库,谨慎!)
2. 优化SQL:通过AWR定位全表扫描SQL,增加索引
3. 调整_DB_BLOCK_HASH_BUCKETS(隐含参数,需Oracle支持)
隐含参数调整前需备份参数文件

4. 优化验证(执行后1-24小时复查)

SHARED POOL优化 Checklist

1. 监控核心指标(每日执行)

指标类型 监控SQL/方法 合格阈值 异常判断标准
硬解析率 SELECT (PARSE_CALLS - SOFT_PARSES) / PARSE_CALLS * 100 AS HARD_PARSE_RATE FROM V$SYSSTAT WHERE NAME = 'parse calls'; <10% >20%(硬解析过多)
内存碎片 SELECT REQUESTS, MISSES, (MISSES/REQUESTS)*100 AS RESERVED_MISS_RATE FROM V$SHARED_POOL_RESERVED; <5% >10%(碎片严重)
ORA-04031错误 SELECT * FROM V$DIAG_ALERT_EXT WHERE MESSAGE_TEXT LIKE '%ORA-04031%' AND ORIGINATING_TIMESTAMP > SYSDATE-1; 0次/天 ≥1次/天(碎片或内存不足)
SGA内存抖动 SELECT BEGIN_TIME, END_TIME, DB_CACHE_SIZE, SHARED_POOL_SIZE FROM V$SGA_DYNAMIC_COMPONENTS_HISTORY WHERE END_TIME > SYSDATE-1; 波动<10% 波动>20%(自动内存管理失控)

2. 诊断异常根因(指标超阈值时执行)

  • SELECT 
      SQL_TEXT, 
      EXECUTIONS, 
      PARSE_CALLS, 
      (PARSE_CALLS/EXECUTIONS) AS PARSE_PER_EXEC 
    FROM V$SQL 
    WHERE EXECUTIONS > 100 
      AND (PARSE_CALLS/EXECUTIONS) > 0.2  -- 解析次数/执行次数>20%
    ORDER BY PARSE_PER_EXEC DESC;
    

3. 优化措施(按需执行)

异常场景 优化操作 注意事项
硬解析过多 1. 启用绑定变量:ALTER SYSTEM SET CURSOR_SHARING=FORCE SCOPE=BOTH;(自动绑定相似SQL)
2. 规范应用:要求开发人员使用绑定变量(如WHERE id = :1
3. 固定高频SQL:EXEC DBMS_SHARED_POOL.KEEP('SQL_ID', 'SQL');
1. CURSOR_SHARING=FORCE可能影响SQL计划稳定性
2. 固定SQL前需验证执行计划最优
内存碎片严重 1. 调整预留空间:ALTER SYSTEM SET SHARED_POOL_RESERVED_SIZE=XXM SCOPE=SPFILE;(建议为SHARED_POOL_SIZE的10%-20%)
2. 手动清理碎片:ALTER SYSTEM FLUSH SHARED_POOL;(业务低峰执行!)
3. 禁用AMM:ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE;(避免自动调整导致碎片)
1. 预留空间调整需重启数据库
2. FLUSH会导致所有共享对象失效,需提前通知业务
ORA-04031错误 1. 增大SHARED_POOL_SIZEALTER SYSTEM SET SHARED_POOL_SIZE=XXG SCOPE=BOTH;(11g后支持动态调整)
2. 清理无效对象:@?/rdbms/admin/utlrp.sql(编译无效PL/SQL)
3. 排除Bug:查询MOS确认是否为已知Bug(如11gR2的Bug 14065287)
若为Bug,需应用对应PSU补丁

4. 优化验证(执行后12-48小时复查)

LIBRARY CACHE优化 Checklist

1. 监控核心指标(每日执行)

指标类型 监控SQL/方法 合格阈值 异常判断标准
LIBRARY CACHE LOCK等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT = 'library cache lock'; <100次/天,平均等待<50ms >500次/天或平均等待>100ms
LIBRARY CACHE PIN等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT = 'library cache pin'; <50次/天,平均等待<30ms >200次/天或平均等待>80ms
无效对象数量 SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS = 'INVALID' AND OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION', 'PACKAGE', 'VIEW'); <10个 >50个(依赖失效)

2. 诊断异常根因(指标超阈值时执行)

  • SELECT 
      b.SID, 
      a.USER_NAME, 
      a.KGLNAOBJ AS OBJECT_NAME  -- 争用对象名
    FROM X$KGLLK a, V$SESSION b 
    WHERE a.KGLLKHDL IN (
      SELECT P1RAW FROM V$SESSION_WAIT 
      WHERE WAIT_TIME=0 AND EVENT='library cache lock'
    ) 
      AND a.KGLLKMOD <> 0  -- 锁持有者(非等待者)
      AND b.SADDR = a.KGLLKUSE;
    

3. 优化措施(按需执行)

异常场景 优化操作 注意事项
LIBRARY CACHE LOCK/PIN争用 1. 终止长期锁会话:ALTER SYSTEM KILL SESSION 'SID,SERIAL#';(需确认会话非核心业务)
2. 重建依赖对象:ALTER VIEW/PROCEDURE 对象名 COMPILE;
3. 避免DDL并发:禁止业务高峰期执行ALTER TABLE、DROP INDEX等DDL
终止会话前需通知业务,避免数据不一致
无效对象过多 1. 批量编译:@?/rdbms/admin/utlrp.sql(自动编译无效对象)
2. 定位失效原因:SELECT * FROM DBA_OBJECTS WHERE STATUS='INVALID' AND LAST_DDL_TIME > SYSDATE-1;(查看最近修改的对象)
编译前备份对象定义(如CREATE OR REPLACE VIEW ...

4. 优化验证(执行后1-4小时复查)

ROW CACHE优化 Checklist

1. 监控核心指标(每日执行)

指标类型 监控SQL/方法 合格阈值 异常判断标准
字典缓存命中率 SELECT 1 - (GETMISSES/GETS)*100 AS HIT_RATE FROM V$ROWCACHE WHERE CACHE_NAME IN ('dc_tables', 'dc_users', 'dc_indexes'); >95% <90%(缓存不足)
LATCH: ROW CACHE OBJECTS等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT = 'latch: row cache objects'; <50次/天,平均等待<20ms >200次/天或平均等待>50ms

2. 诊断异常根因(指标超阈值时执行)

3. 优化措施(按需执行)

异常场景 优化操作 注意事项
字典缓存命中率低 1. 增大SHARED_POOL_SIZE(ROW CACHE属于SHARED POOL子集)
2. 固定高频字典对象:EXEC DBMS_SHARED_POOL.KEEP('DC_TABLES', 'ROW CACHE');
固定对象前需确认对象为高频访问(如dc_tables)
LATCH: ROW CACHE OBJECTS争用 1. 减少字典查询:创建物化视图(如CREATE MATERIALIZED VIEW MV_DBA_TABLES AS SELECT * FROM DBA_TABLES;),定期刷新
2. 应用补丁:若为Oracle Bug(如10g的Bug 4493447),安装对应PSU
物化视图需同步更新,避免数据滞后

4. 优化验证(执行后12小时复查)

LOG BUFFER优化 Checklist

1. 监控核心指标(每小时执行,OLTP系统重点关注)

指标类型 监控SQL/方法 合格阈值 异常判断标准
LOG FILE SYNC等待 SELECT EVENT, TOTAL_WAITS, AVG_WAIT_TIME FROM V$SYSTEM_EVENT WHERE EVENT = 'log file sync'; <50ms >100ms(事务提交慢)
REDO WASTAGE SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME = 'redo wastage'; <100KB/小时 >1MB/小时(日志拆分多)
日志切换频率 SELECT TO_CHAR(FIRST_TIME, 'HH24') AS HOUR, COUNT(*) AS SWITCH_COUNT FROM V$LOG_HISTORY WHERE FIRST_TIME > SYSDATE-1 GROUP BY TO_CHAR(FIRST_TIME, 'HH24'); <60次/小时 >120次/小时(日志文件过小)

2. 诊断异常根因(指标超阈值时执行)

3. 优化措施(按需执行)

异常场景 优化操作 注意事项
LOG FILE SYNC等待>100ms 1. 分散日志文件:将在线日志组分散到不同磁盘(如GROUP 1存/dev/sdb1,GROUP 2存/dev/sdc1)
2. 启用异步I/O:AIX执行chdev -l aio0 -a autoconfig=available,Linux安装libaio并设置DISK_ASYNCH_IO=TRUE
3. 合并小事务:要求开发人员批量提交(如每1000条INSERT提交一次)
日志文件迁移需重建日志组,谨慎操作
REDO WASTAGE>1MB/小时 增大LOG_BUFFERALTER SYSTEM SET LOG_BUFFER=XXM SCOPE=SPFILE;(建议设置为16-64MB,无需过大) 需重启数据库生效,重启前备份参数文件
日志切换>120次/小时 增大日志文件:ALTER DATABASE ADD LOGFILE GROUP 4 ('/oradata/redo04.log') SIZE 1000M;,删除小日志组(需确保状态为INACTIVE) 新增日志组数量建议为CPU核心数的2-3倍

4. 优化验证(执行后1-2小时复查)

整体优化收尾

  1. 参数备份:执行CREATE PFILE='/backup/pfile_optimize.ora' FROM SPFILE;,避免优化失败无法回滚
  2. AWR对比:优化前后各生成1份24小时AWR报告,对比核心指标(如DB Time、SQL响应时间、等待事件占比)
  3. 定期维护
    • 每周:生成SGA动态组件历史报告(V$SGA_DYNAMIC_COMPONENTS_HISTORY
    • 每月:全量检查SGA优化效果,调整参数(如业务增长后增大DB_CACHE_SIZE
  4. 风险规避
    • 静态参数(如LOG_BUFFERDB_BLOCK_SIZE)调整前需确认业务停机窗口
    • 隐含参数(如_DB_BLOCK_HASH_BUCKETS)调整需联系Oracle技术支持,避免未知风险

附录:核心视图与工具速查

组件 核心视图 工具/脚本
BUFFER CACHE V$BUFFER_POOL_STATISTICS、V$SESSION_WAIT AWR报告“Buffer Pool Statistics”部分
SHARED POOL V$SHARED_POOL_RESERVED、V$SQL ASH报告“Top SQL by DB Time”
LIBRARY CACHE X$KGLLK、V$LIBRARYCACHE utlrp.sql(编译无效对象)
ROW CACHE V$ROWCACHE、V$LATCHHOLDER DBMS_SHARED_POOL.KEEP(固定对象)
LOG BUFFER V$LOG、V$SYSSTAT 日志切换监控脚本(自定义)

七、SGA优化核心总结

SGA优化的本质是“资源合理分配+瓶颈精准定位”,核心要点包括:

  1. 基于业务类型分配内存:OLTP系统优先保障BUFFER CACHE和LOG BUFFER,OLAP系统可适当增大SHARED_POOL以支持复杂SQL解析。
  2. 以等待事件为诊断入口:通过V$SESSION_WAIT、AWR报告定位LATCH争用、I/O延迟等具体瓶颈,避免盲目调整参数。
  3. 平衡“缓存命中率”与“资源争用”:缓存并非越大越好,需预留足够内存给操作系统和PGA,同时通过SQL优化、对象设计减少争用。

posted on 2025-12-05 15:17  刘子毅  阅读(0)  评论(0)    收藏  举报

导航