Skip to content

Oracle 参数参考

内存参数

SGA 相关参数

  • SGA_TARGET

    • 自动内存管理模式下的 SGA 总大小
    • 默认值:根据系统内存自动计算
    • 建议值:系统内存的 40-50%
    • 版本差异:11g 及以上版本支持
  • SGA_MAX_SIZE

    • SGA 最大可分配大小
    • 默认值:等于 SGA_TARGET
    • 建议值:不超过系统内存的 60%
    • 注意事项:修改需要重启实例
  • SHARED_POOL_SIZE

    • 共享池大小,用于存储 SQL 语句和执行计划
    • 默认值:根据 SGA_TARGET 自动计算
    • 建议值:SGA_TARGET 的 15-20%
    • 监控指标:V$SHARED_POOL_RESERVED
  • DB_CACHE_SIZE

    • 数据库缓冲区缓存大小
    • 默认值:根据 SGA_TARGET 自动计算
    • 建议值:SGA_TARGET 的 40-50%
    • 监控指标:V$DB_CACHE_ADVICE

PGA 相关参数

  • PGA_AGGREGATE_TARGET

    • PGA 总大小限制
    • 默认值:根据系统内存自动计算
    • 建议值:系统内存的 20-30%
    • 版本差异:9i 及以上版本支持
  • WORKAREA_SIZE_POLICY

    • 工作区大小管理策略
    • 值:AUTO(自动)或 MANUAL(手动)
    • 建议值:AUTO
    • 注意事项:AUTO 模式下由 Oracle 自动管理

性能参数

游标相关参数

  • OPEN_CURSORS

    • 每个会话最多可打开的游标数
    • 默认值:50
    • 建议值:500-1000
    • 监控指标:V$SYSSTAT 中的 "opened cursors current"
  • SESSION_CACHED_CURSORS

    • 会话缓存的游标数
    • 默认值:50
    • 建议值:200-300
    • 注意事项:减少硬解析

并行处理参数

  • PARALLEL_MAX_SERVERS

    • 最大并行服务器进程数
    • 默认值:CPU_COUNT × PARALLEL_THREADS_PER_CPU × 2
    • 建议值:根据系统资源调整
    • 监控指标:V$PQ_SYSSTAT
  • PARALLEL_DEGREE_POLICY

    • 并行度策略
    • 值:MANUAL、LIMITED、AUTO、ADAPTIVE
    • 建议值:根据工作负载类型调整
    • 版本差异:11gR2 及以上版本支持

存储参数

控制文件参数

  • CONTROL_FILES
    • 控制文件路径列表
    • 默认值:安装时指定
    • 建议值:至少 3 个,分散在不同磁盘
    • 注意事项:修改需要重启实例

重做日志参数

  • LOG_BUFFER

    • 重做日志缓冲区大小
    • 默认值:根据 SGA 大小自动计算
    • 建议值:1-2MB 或 SGA 的 1%
    • 监控指标:V$INSTANCE_RECOVERY
  • MAXLOGFILES

    • 最大日志文件组数
    • 默认值:16
    • 建议值:根据业务需求调整
    • 注意事项:修改需要重建控制文件

安全参数

密码相关参数

  • PASSWORD_VERIFY_FUNCTION

    • 密码验证函数
    • 默认值:NULL
    • 建议值:启用默认验证函数或自定义
    • 版本差异:11g 及以上版本默认启用
  • PASSWORD_LIFE_TIME

    • 密码有效期(天)
    • 默认值:180
    • 建议值:根据安全策略调整
    • 版本差异:11g 及以上版本支持

审计参数

  • AUDIT_TRAIL

    • 审计轨迹存储方式
    • 值:NONE、OS、DB、DB_EXTENDED、XML、XML_EXTENDED
    • 建议值:DB 或 DB_EXTENDED
    • 注意事项:启用审计会增加系统开销
  • AUDIT_SYS_OPERATIONS

    • 是否审计 sys 用户操作
    • 值:TRUE/FALSE
    • 建议值:TRUE
    • 安全建议:生产环境必须启用

网络参数

监听器参数

  • LISTENER_NETWORKS
    • 监听器网络配置
    • 默认值:NULL
    • 建议值:根据网络拓扑调整
    • 版本差异:10g 及以上版本支持

连接参数

  • PROCESSES

    • 最大进程数
    • 默认值:根据实例类型自动计算
    • 建议值:根据并发连接数调整
    • 注意事项:修改需要重启实例
  • SESSIONS

    • 最大会话数
    • 默认值:PROCESSES × 1.1 + 5
    • 建议值:根据并发用户数调整
    • 注意事项:修改需要重启实例

参数调整最佳实践

调整流程

  1. 监控:使用 AWR、ASH 等工具监控系统性能
  2. 分析:识别瓶颈和需要调整的参数
  3. 测试:在测试环境中进行参数调整
  4. 实施:在生产环境中实施调整
  5. 验证:验证调整效果

调整原则

  • 循序渐进:每次只调整少量参数
  • 记录变更:详细记录参数变更和效果
  • 考虑版本:不同版本的参数行为可能不同
  • 综合评估:参数调整需要综合考虑系统整体情况

版本差异

11g vs 12c

  • 内存管理:12c 引入了自动内存管理增强
  • 并行处理:12c 改进了并行度策略
  • 安全参数:12c 增强了密码策略和审计功能

12c vs 19c

  • 参数默认值:19c 调整了部分参数的默认值
  • 新参数:19c 引入了更多性能优化参数
  • 废弃参数:19c 废弃了部分旧版本参数

常见问题(FAQ)

Q1: 如何查看当前参数值?

A1: 使用以下命令查看参数值:

sql
SHOW PARAMETER parameter_name;
-- 或
SELECT name, value, description FROM v$parameter WHERE name = 'parameter_name';

Q2: 如何修改参数值?

A2: 根据参数类型使用不同的修改方式:

  • 动态参数:
    sql
    ALTER SYSTEM SET parameter_name = value SCOPE = MEMORY;
    -- 或
    ALTER SYSTEM SET parameter_name = value SCOPE = BOTH;
  • 静态参数(需要重启):
    sql
    ALTER SYSTEM SET parameter_name = value SCOPE = SPFILE;

Q3: 参数调整后如何验证效果?

A3: 可以通过以下方式验证:

  • 监控系统性能指标变化
  • 运行 AWR 报告比较调整前后的差异
  • 观察 SQL 执行计划的变化
  • 检查系统日志是否有相关告警

Q4: 如何确定参数的最佳值?

A4: 确定参数最佳值的方法:

  • 参考 Oracle 官方文档和最佳实践
  • 根据系统硬件配置调整
  • 基于实际工作负载测试
  • 参考类似系统的配置经验

Q5: 参数调整可能带来哪些风险?

A5: 参数调整的潜在风险:

  • 性能下降:不当的参数设置可能导致性能恶化
  • 系统不稳定:某些参数调整可能影响系统稳定性
  • 兼容性问题:不同版本的参数行为可能不同
  • 资源耗尽:过度分配资源可能导致系统资源耗尽

Q6: 如何回滚参数变更?

A6: 回滚参数变更的方法:

  • 对于动态参数:重新设置为原始值
  • 对于静态参数:修改 SPFILE 后重启实例
  • 紧急情况下:使用之前的 SPFILE 或 pfile 重启实例