Skip to content

Oracle 核心参数配置

内存相关参数

SGA 相关参数

  1. SGA_TARGET

    • 作用:自动共享内存管理(ASMM)的总内存目标
    • 默认值:0(禁用 ASMM)
    • 推荐值:根据系统内存大小,一般设置为系统内存的 40-60%
    • 设置方法
      sql
      ALTER SYSTEM SET sga_target = 4G SCOPE = spfile;
  2. SGA_MAX_SIZE

    • 作用:SGA 的最大大小
    • 默认值:根据系统内存和其他参数计算
    • 推荐值:大于或等于 SGA_TARGET,留有余地
    • 设置方法
      sql
      ALTER SYSTEM SET sga_max_size = 5G SCOPE = spfile;
  3. SHARED_POOL_SIZE

    • 作用:共享池大小,用于存储 SQL 语句、执行计划等
    • 默认值:根据 SGA_TARGET 自动分配
    • 推荐值:对于 OLTP 系统,一般设置为 SGA 的 20-30%
    • 设置方法
      sql
      ALTER SYSTEM SET shared_pool_size = 1G SCOPE = spfile;
  4. BUFFER_CACHE_SIZE

    • 作用:数据库缓冲区缓存大小,用于缓存数据块
    • 默认值:根据 SGA_TARGET 自动分配
    • 推荐值:对于 OLTP 系统,一般设置为 SGA 的 40-60%
    • 设置方法
      sql
      ALTER SYSTEM SET db_cache_size = 2G SCOPE = spfile;
  5. LARGE_POOL_SIZE

    • 作用:大池大小,用于 RMAN、并行查询等
    • 默认值:根据 SGA_TARGET 自动分配
    • 推荐值:一般设置为 100-500MB
    • 设置方法
      sql
      ALTER SYSTEM SET large_pool_size = 200M SCOPE = spfile;
  6. JAVA_POOL_SIZE

    • 作用:Java 池大小,用于 Java 对象和 Java 代码
    • 默认值:根据 SGA_TARGET 自动分配
    • 推荐值:如果使用 Java 功能,一般设置为 100-500MB
    • 设置方法
      sql
      ALTER SYSTEM SET java_pool_size = 150M SCOPE = spfile;
  7. STREAMS_POOL_SIZE

    • 作用:流池大小,用于 Oracle Streams 功能
    • 默认值:根据 SGA_TARGET 自动分配
    • 推荐值:如果使用 Streams 功能,一般设置为 100-500MB
    • 设置方法
      sql
      ALTER SYSTEM SET streams_pool_size = 200M SCOPE = spfile;

PGA 相关参数

  1. PGA_AGGREGATE_TARGET

    • 作用:程序全局区(PGA)的总内存目标
    • 默认值:根据系统内存计算,一般为 SGA_TARGET 的 20%
    • 推荐值:对于 OLTP 系统,一般设置为系统内存的 10-20%;对于 DSS 系统,可设置为 30-50%
    • 设置方法
      sql
      ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE = spfile;
  2. WORKAREA_SIZE_POLICY

    • 作用:工作区大小策略
    • 默认值:AUTO(自动管理)
    • 推荐值:AUTO
    • 设置方法
      sql
      ALTER SYSTEM SET workarea_size_policy = AUTO SCOPE = spfile;

进程相关参数

  1. PROCESSES

    • 作用:最大进程数(包括后台进程和用户进程)
    • 默认值:根据数据库版本和系统配置计算
    • 推荐值:根据系统负载和连接数需求设置,一般为预计最大并发连接数的 1.5-2 倍
    • 设置方法
      sql
      ALTER SYSTEM SET processes = 300 SCOPE = spfile;
  2. SESSIONS

    • 作用:最大会话数
    • 默认值:根据 PROCESSES 计算,一般为 PROCESSES * 1.1 + 5
    • 推荐值:大于或等于预计的最大并发会话数
    • 设置方法
      sql
      ALTER SYSTEM SET sessions = 335 SCOPE = spfile;
  3. TRANSACTIONS

    • 作用:最大事务数
    • 默认值:根据 SESSIONS 计算,一般为 SESSIONS * 1.1
    • 推荐值:大于或等于预计的最大并发事务数
    • 设置方法
      sql
      ALTER SYSTEM SET transactions = 368 SCOPE = spfile;
  4. PARALLEL_MAX_SERVERS

    • 作用:最大并行服务器进程数
    • 默认值:根据系统 CPU 数量计算
    • 推荐值:对于 OLTP 系统,一般设置为 CPU 核心数的 2-4 倍;对于 DSS 系统,可设置为 CPU 核心数的 4-8 倍
    • 设置方法
      sql
      ALTER SYSTEM SET parallel_max_servers = 32 SCOPE = spfile;
  5. PARALLEL_SERVERS_TARGET

    • 作用:并行服务器进程目标数
    • 默认值:根据系统 CPU 数量计算
    • 推荐值:一般设置为 PARALLEL_MAX_SERVERS 的一半
    • 设置方法
      sql
      ALTER SYSTEM SET parallel_servers_target = 16 SCOPE = spfile;

I/O 相关参数

  1. DB_FILE_MULTIBLOCK_READ_COUNT

    • 作用:全表扫描时一次读取的数据块数
    • 默认值:根据操作系统块大小计算
    • 推荐值:对于 OLTP 系统,一般设置为 8-16;对于 DSS 系统,可设置为 32-128
    • 设置方法
      sql
      ALTER SYSTEM SET db_file_multiblock_read_count = 16 SCOPE = spfile;
  2. DISK_ASYNCH_IO

    • 作用:启用或禁用磁盘异步 I/O
    • 默认值:TRUE(启用)
    • 推荐值:TRUE
    • 设置方法
      sql
      ALTER SYSTEM SET disk_asynch_io = TRUE SCOPE = spfile;
  3. DBWR_IO_SLAVES

    • 作用:数据库写入器(DBWR)的 I/O 从进程数
    • 默认值:0(禁用)
    • 推荐值:如果 DISK_ASYNCH_IO 为 FALSE,可设置为 4-8
    • 设置方法
      sql
      ALTER SYSTEM SET dbwr_io_slaves = 4 SCOPE = spfile;
  4. LOG_ARCHIVE_MAX_PROCESSES

    • 作用:日志归档进程数
    • 默认值:4
    • 推荐值:根据归档需求设置,一般为 4-8
    • 设置方法
      sql
      ALTER SYSTEM SET log_archive_max_processes = 4 SCOPE = spfile;
  5. DB_WRITER_PROCESSES

    • 作用:数据库写入器(DBWR)进程数
    • 默认值:根据系统 CPU 数量计算
    • 推荐值:一般为 CPU 核心数的 1/8 到 1/4,最多不超过 10
    • 设置方法
      sql
      ALTER SYSTEM SET db_writer_processes = 2 SCOPE = spfile;

安全相关参数

  1. SEC_CASE_SENSITIVE_LOGON

    • 作用:控制密码是否区分大小写
    • 默认值:TRUE(区分大小写)
    • 推荐值:TRUE(提高安全性)
    • 设置方法
      sql
      ALTER SYSTEM SET sec_case_sensitive_logon = TRUE SCOPE = spfile;
  2. PASSWORD_VERIFY_FUNCTION

    • 作用:密码验证函数
    • 默认值:NULL(未设置)
    • 推荐值:使用 Oracle 提供的验证函数或自定义验证函数
    • 设置方法:通过 profile 设置
      sql
      ALTER PROFILE default LIMIT PASSWORD_VERIFY_FUNCTION ora12c_verify_function;
  3. PASSWORD_LIFE_TIME

    • 作用:密码有效期(天数)
    • 默认值:180
    • 推荐值:根据安全策略设置,一般为 90-180 天
    • 设置方法:通过 profile 设置
      sql
      ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME 90;
  4. FAILED_LOGIN_ATTEMPTS

    • 作用:失败登录尝试次数
    • 默认值:10
    • 推荐值:根据安全策略设置,一般为 3-5 次
    • 设置方法:通过 profile 设置
      sql
      ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 5;
  5. SEC_MAX_FAILED_LOGIN_ATTEMPTS

    • 作用:最大失败登录尝试次数(系统级)
    • 默认值:10
    • 推荐值:根据安全策略设置,一般为 3-5 次
    • 设置方法
      sql
      ALTER SYSTEM SET sec_max_failed_login_attempts = 5 SCOPE = spfile;
  6. AUDIT_TRAIL

    • 作用:审计跟踪设置
    • 默认值:DB(数据库级审计)
    • 推荐值:DB, EXTENDED(详细审计)
    • 设置方法
      sql
      ALTER SYSTEM SET audit_trail = 'DB, EXTENDED' SCOPE = spfile;

网络相关参数

  1. LOCAL_LISTENER

    • 作用:本地监听器配置
    • 默认值:NULL
    • 推荐值:监听器的网络服务名
    • 设置方法
      sql
      ALTER SYSTEM SET local_listener = 'LISTENER_ORCL' SCOPE = spfile;
  2. REMOTE_LISTENER

    • 作用:远程监听器配置(RAC 环境)
    • 默认值:NULL
    • 推荐值:RAC 环境中的 SCAN 监听器
    • 设置方法
      sql
      ALTER SYSTEM SET remote_listener = 'scan-cluster:1521' SCOPE = spfile;
  3. SQLNET.EXPIRE_TIME

    • 作用:网络连接超时时间(分钟)
    • 默认值:0(禁用)
    • 推荐值:10-15 分钟,防止死连接
    • 设置方法:在 sqlnet.ora 文件中设置
      txt
      SQLNET.EXPIRE_TIME=10
  4. DISPATCHERS

    • 作用:共享服务器调度器配置
    • 默认值:根据系统配置计算
    • 推荐值:如果使用共享服务器模式,根据连接数设置
    • 设置方法
      sql
      ALTER SYSTEM SET dispatchers = '(PROTOCOL=TCP) (SERVICE=ORCLXDB)' SCOPE = spfile;
  5. SHARED_SERVERS

    • 作用:共享服务器进程数
    • 默认值:1
    • 推荐值:如果使用共享服务器模式,根据连接数设置
    • 设置方法
      sql
      ALTER SYSTEM SET shared_servers = 5 SCOPE = spfile;

优化相关参数

  1. OPTIMIZER_MODE

    • 作用:优化器模式
    • 默认值:ALL_ROWS(全表扫描优化)
    • 推荐值
      • OLTP 系统:FIRST_ROWS_n(优先返回前 n 行)
      • DSS 系统:ALL_ROWS(全表扫描优化)
    • 设置方法
      sql
      ALTER SYSTEM SET optimizer_mode = FIRST_ROWS_10 SCOPE = spfile;
  2. OPTIMIZER_FEATURES_ENABLE

    • 作用:优化器特性启用版本
    • 默认值:当前数据库版本
    • 推荐值:当前数据库版本
    • 设置方法
      sql
      ALTER SYSTEM SET optimizer_features_enable = '19.1.0' SCOPE = spfile;
  3. STATISTICS_LEVEL

    • 作用:统计信息级别
    • 默认值:TYPICAL(典型)
    • 推荐值:TYPICAL
    • 设置方法
      sql
      ALTER SYSTEM SET statistics_level = TYPICAL SCOPE = spfile;
  4. AUTO_SAMPLE_SIZE

    • 作用:自动采样大小
    • 默认值:0(自动计算)
    • 推荐值:0
    • 设置方法
      sql
      ALTER SYSTEM SET auto_sample_size = 0 SCOPE = spfile;
  5. CURSOR_SHARING

    • 作用:游标共享策略
    • 默认值:EXACT(精确匹配)
    • 推荐值:EXACT(避免绑定变量窥探问题)
    • 设置方法
      sql
      ALTER SYSTEM SET cursor_sharing = EXACT SCOPE = spfile;
  6. PGA_AGGREGATE_LIMIT

    • 作用:PGA 聚合内存限制
    • 默认值:根据系统内存计算
    • 推荐值:一般为 PGA_AGGREGATE_TARGET 的 2 倍
    • 设置方法
      sql
      ALTER SYSTEM SET pga_aggregate_limit = 4G SCOPE = spfile;

日志相关参数

  1. LOG_BUFFER

    • 作用:重做日志缓冲区大小
    • 默认值:根据系统内存计算
    • 推荐值:一般为 16-128MB
    • 设置方法
      sql
      ALTER SYSTEM SET log_buffer = 32M SCOPE = spfile;
  2. LOG_CHECKPOINT_INTERVAL

    • 作用:日志检查点间隔(OS 块)
    • 默认值:0(禁用)
    • 推荐值:0(使用时间间隔控制)
    • 设置方法
      sql
      ALTER SYSTEM SET log_checkpoint_interval = 0 SCOPE = spfile;
  3. LOG_CHECKPOINT_TIMEOUT

    • 作用:日志检查点超时时间(秒)
    • 默认值:1800(30 分钟)
    • 推荐值:900-1800 秒(15-30 分钟)
    • 设置方法
      sql
      ALTER SYSTEM SET log_checkpoint_timeout = 900 SCOPE = spfile;
  4. LOG_ARCHIVE_DEST_1

    • 作用:日志归档目标 1
    • 默认值:NULL
    • 推荐值:本地归档目录
    • 设置方法
      sql
      ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' SCOPE = spfile;
  5. LOG_ARCHIVE_FORMAT

    • 作用:归档日志文件名格式
    • 默认值:根据数据库版本和配置
    • 推荐值:包含时间戳和序列号
    • 设置方法
      sql
      ALTER SYSTEM SET log_archive_format = '%t_%s_%r.dbf' SCOPE = spfile;

存储相关参数

  1. DB_CREATE_FILE_DEST

    • 作用:数据文件默认存储位置
    • 默认值:NULL
    • 推荐值:数据文件存储目录
    • 设置方法
      sql
      ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata' SCOPE = spfile;
  2. DB_CREATE_ONLINE_LOG_DEST_1

    • 作用:联机日志默认存储位置 1
    • 默认值:NULL
    • 推荐值:联机日志存储目录
    • 设置方法
      sql
      ALTER SYSTEM SET db_create_online_log_dest_1 = '/u01/app/oracle/oradata' SCOPE = spfile;
  3. DB_RECOVERY_FILE_DEST

    • 作用:恢复文件目的地(闪回区)
    • 默认值:NULL
    • 推荐值:闪回区存储目录
    • 设置方法
      sql
      ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area' SCOPE = spfile;
  4. DB_RECOVERY_FILE_DEST_SIZE

    • 作用:恢复文件目的地大小
    • 默认值:0
    • 推荐值:根据备份和闪回需求设置,一般为数据库大小的 2-3 倍
    • 设置方法
      sql
      ALTER SYSTEM SET db_recovery_file_dest_size = 20G SCOPE = spfile;
  5. UNDO_TABLESPACE

    • 作用:默认 UNDO 表空间
    • 默认值:系统创建的第一个 UNDO 表空间
    • 推荐值:专用的 UNDO 表空间
    • 设置方法
      sql
      ALTER SYSTEM SET undo_tablespace = 'UNDOTBS1' SCOPE = spfile;
  6. UNDO_RETENTION

    • 作用:UNDO 数据保留时间(秒)
    • 默认值:900(15 分钟)
    • 推荐值:根据闪回和长事务需求设置,一般为 3600-7200 秒(1-2 小时)
    • 设置方法
      sql
      ALTER SYSTEM SET undo_retention = 3600 SCOPE = spfile;

参数配置方法

使用 SQL*Plus 修改参数

  1. 修改系统级参数(需要重启)

    sql
    ALTER SYSTEM SET parameter_name = value SCOPE = spfile;
  2. 修改系统级参数(立即生效)

    sql
    ALTER SYSTEM SET parameter_name = value SCOPE = BOTH;
  3. 修改会话级参数

    sql
    ALTER SESSION SET parameter_name = value;

使用 Oracle Enterprise Manager 修改参数

  1. 登录 OEM

    • 打开浏览器,访问 OEM URL
    • 使用管理员账户登录
  2. 导航到参数页面

    • 在 "数据库" 页面,点击 "服务器" 选项卡
    • 点击 "参数" 链接
  3. 修改参数

    • 在参数列表中找到要修改的参数
    • 点击参数值进行修改
    • 点击 "应用" 按钮保存更改

使用 DBCA 修改参数

  1. 启动 DBCA

    • 在命令行中执行 dbca 命令
  2. 选择操作

    • 选择 "配置数据库选项",点击 "下一步"
  3. 选择数据库

    • 选择要配置的数据库,点击 "下一步"
  4. 修改参数

    • 在 "初始化参数" 页面,修改所需的参数
    • 点击 "完成" 按钮保存更改

参数调优最佳实践

内存参数调优

  1. 整体内存分配

    • 系统内存分配建议:
      • 操作系统:10-20%
      • SGA:40-60%
      • PGA:10-20%
      • 其他应用:10-20%
  2. SGA 调优

    • 对于 OLTP 系统,优先增加 DB_CACHE_SIZE
    • 对于 DSS 系统,优先增加 SHARED_POOL_SIZE
    • 使用自动共享内存管理(ASMM)简化调优
  3. PGA 调优

    • 对于 OLTP 系统,PGA 不宜过大
    • 对于 DSS 系统,可适当增加 PGA 大小
    • 监控 PGA 使用情况,避免过度分配

进程参数调优

  1. 根据负载调整

    • 监控系统负载和连接数
    • 根据实际需求调整 PROCESSES 和 SESSIONS 参数
    • 预留足够的缓冲区,避免达到上限
  2. 并行进程调优

    • 对于 OLTP 系统,限制并行进程数
    • 对于 DSS 系统,合理配置并行进程数
    • 监控并行执行情况,避免资源争用

I/O 参数调优

  1. 存储配置

    • 使用 RAID 技术提高 I/O 性能和可靠性
    • 分离数据文件、日志文件和归档文件到不同的存储设备
    • 使用 SSD 存储提高 I/O 性能
  2. I/O 参数设置

    • 启用异步 I/O
    • 合理配置 DBWR 进程数
    • 监控 I/O 等待时间,及时调整

网络参数调优

  1. 监听器配置

    • 合理配置监听器数量和端口
    • 使用 LOCAL_LISTENER 和 REMOTE_LISTENER 参数
    • 监控监听器状态,确保正常运行
  2. 连接管理

    • 启用连接池减少连接开销
    • 配置合理的连接超时参数
    • 使用共享服务器模式处理大量短连接

安全参数调优

  1. 密码策略

    • 启用密码复杂性验证
    • 设置合理的密码有效期
    • 限制失败登录尝试次数
  2. 审计配置

    • 启用详细的审计跟踪
    • 定期审查审计日志
    • 保护审计数据的安全性

常见问题(FAQ)

Q1: 修改参数后需要重启数据库吗?

A1: 这取决于参数的类型和修改方式:

  • 动态参数:使用 SCOPE = BOTHSCOPE = MEMORY 修改后立即生效,无需重启
  • 静态参数:使用 SCOPE = SPFILE 修改后需要重启数据库才能生效
  • 可通过查询 V$PARAMETER 视图的 ISSES_MODIFIABLEISSYS_MODIFIABLE 列了解参数是否可动态修改

Q2: 如何确定参数的当前值?

A2: 可以使用以下方法查看参数的当前值:

  • SQL*Plus
    sql
    SHOW PARAMETER parameter_name;
  • 查询数据字典
    sql
    SELECT name, value, isdefault, isses_modifiable, issys_modifiable 
    FROM v$parameter 
    WHERE name LIKE '%parameter_name%';

Q3: 如何恢复参数的默认值?

A3: 可以使用以下方法恢复参数的默认值:

  • SQL*Plus
    sql
    ALTER SYSTEM RESET parameter_name SCOPE = spfile;
  • 重启数据库后,参数将恢复为默认值

Q4: 如何监控参数修改的影响?

A4: 监控参数修改影响的方法:

  • 性能视图:查询 V$SYSSTATV$SESSTAT 等视图
  • AWR 报告:生成并分析 AWR 报告
  • ASH 报告:分析 Active Session History 报告
  • 性能监控工具:使用 Oracle Enterprise Manager 监控性能指标

Q5: 如何优化内存参数以提高性能?

A5: 内存参数优化建议:

  • 使用自动内存管理:设置 MEMORY_TARGETMEMORY_MAX_TARGET 参数
  • 监控内存使用:定期查看 V$SGAV$PGASTAT 等视图
  • 根据工作负载调整
    • OLTP 系统:增加 DB_CACHE_SIZE
    • DSS 系统:增加 SHARED_POOL_SIZE 和 PGA_AGGREGATE_TARGET
  • 避免过度分配:内存分配不宜超过系统实际可用内存

Q6: 如何处理参数配置错误导致的数据库无法启动?

A6: 处理参数配置错误的方法:

  • 使用 PFILE 启动
    1. 从 SPFILE 创建 PFILE:
      bash
      sqlplus / as sysdba
      CREATE PFILE FROM SPFILE;
    2. 编辑 PFILE,修正错误参数
    3. 使用 PFILE 启动数据库:
      bash
      startup pfile='/path/to/init.ora'
    4. 从 PFILE 创建新的 SPFILE:
      sql
      CREATE SPFILE FROM PFILE;
  • 使用默认参数启动:在紧急情况下,可使用最小配置启动数据库

Q7: 如何配置参数以支持高可用性?

A7: 高可用性参数配置建议:

  • RAC 环境
    • 配置 REMOTE_LISTENER 参数指向 SCAN 监听器
    • 设置合理的并行进程参数
  • Data Guard 环境
    • 配置 LOG_ARCHIVE_DEST_n 参数
    • 设置合理的日志传输参数
  • 闪回功能
    • 配置闪回区和相关参数
    • 启用闪回数据库功能

Q8: 如何监控参数的使用情况?

A8: 监控参数使用情况的方法:

  • 动态性能视图
    • V$PARAMETER:当前参数值
    • V$PARAMETER2:参数详细信息
    • V$SPPARAMETER:SPFILE 中的参数值
  • AWR 报告:包含参数配置和性能统计
  • OEM:图形化监控参数使用情况
  • 自定义监控脚本:定期收集参数值和性能指标