Skip to content

Oracle 参数配置建议

核心参数配置

内存相关参数

SGA 参数设置

sql
-- 查看当前 SGA 设置
SHOW PARAMETER sga;

-- 设置 SGA 大小(示例:4GB)
ALTER SYSTEM SET sga_target=4G SCOPE=SPFILE;
ALTER SYSTEM SET sga_max_size=4G SCOPE=SPFILE;

PGA 参数设置

sql
-- 查看当前 PGA 设置
SHOW PARAMETER pga;

-- 设置 PGA 大小(示例:1GB)
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;

进程相关参数

最大进程数设置

sql
-- 查看当前最大进程数
SHOW PARAMETER processes;

-- 设置最大进程数(示例:300)
ALTER SYSTEM SET processes=300 SCOPE=SPFILE;

会话相关参数

sql
-- 查看当前会话设置
SHOW PARAMETER sessions;

-- 设置会话数(通常为 processes 的 1.1 到 1.5 倍)
ALTER SYSTEM SET sessions=330 SCOPE=SPFILE;

性能相关参数

游标相关参数

游标共享设置

sql
-- 查看游标共享设置
SHOW PARAMETER cursor_sharing;

-- 设置游标共享(生产环境建议使用 EXACT)
ALTER SYSTEM SET cursor_sharing=EXACT SCOPE=SPFILE;

游标缓存设置

sql
-- 查看游标缓存设置
SHOW PARAMETER open_cursors;

-- 设置游标缓存大小(示例:3000)
ALTER SYSTEM SET open_cursors=3000 SCOPE=SPFILE;

并行相关参数

并行执行设置

sql
-- 查看并行执行设置
SHOW PARAMETER parallel;

-- 设置并行执行度(示例:4)
ALTER SYSTEM SET parallel_max_servers=4 SCOPE=SPFILE;
ALTER SYSTEM SET parallel_degree_policy=AUTO SCOPE=SPFILE;

存储相关参数

表空间相关参数

临时表空间设置

sql
-- 查看临时表空间设置
SELECT tablespace_name, file_name, bytes/1024/1024 MB FROM dba_temp_files;

-- 设置临时表空间自动扩展
ALTER DATABASE TEMPFILE 'path_to_tempfile.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

日志相关参数

重做日志设置

sql
-- 查看重做日志设置
SELECT group#, member, bytes/1024/1024 MB FROM v$logfile;

-- 设置重做日志大小(建议至少 512MB)
ALTER DATABASE ADD LOGFILE GROUP 4 ('path_to_redolog4a.log', 'path_to_redolog4b.log') SIZE 512M;

安全相关参数

审计相关参数

审计设置

sql
-- 查看审计设置
SHOW PARAMETER audit;

-- 启用审计
ALTER SYSTEM SET audit_trail=DB,EXTENDED SCOPE=SPFILE;

密码相关参数

密码策略设置

sql
-- 查看密码策略设置
SELECT * FROM dba_profiles WHERE profile='DEFAULT';

-- 设置密码有效期(示例:90天)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

版本差异考虑

Oracle 11g 参数特点

  • 引入了自动内存管理(AMM)
  • 支持 sga_target 和 pga_aggregate_target 自动调整

Oracle 12c 参数特点

  • 引入了多租户架构相关参数
  • 增强了并行执行参数
  • 新增了 PDB 相关参数

Oracle 19c 参数特点

  • 进一步优化了内存管理参数
  • 增强了安全相关参数
  • 改进了性能调优参数

生产环境最佳实践

内存参数调优建议

  • 根据服务器内存大小合理分配 SGA 和 PGA
  • 对于 OLTP 系统,SGA 通常占总内存的 50-60%
  • 对于 OLAP 系统,PGA 可能需要更大的比例

进程参数调优建议

  • 根据并发用户数和应用需求设置 processes 参数
  • 预留足够的会话数,避免会话耗尽

存储参数调优建议

  • 合理设置重做日志大小,减少日志切换频率
  • 为临时表空间预留足够空间
  • 监控表空间使用情况,及时扩展

常见问题(FAQ)

Q1: 如何确定合适的 SGA 大小?

A1: 确定合适的 SGA 大小需要考虑以下因素:

  • 服务器总内存大小
  • 并发用户数
  • 数据库大小
  • 应用类型(OLTP 或 OLAP) 一般建议 SGA 不超过服务器总内存的 60%,并根据实际运行情况进行调整。

Q2: 游标共享参数应该如何设置?

A2: 游标共享参数(cursor_sharing)的设置建议:

  • 生产环境:建议使用 EXACT,确保 SQL 执行计划的稳定性
  • 测试环境:可以考虑使用 FORCE 或 SIMILAR 来减少硬解析

Q3: 如何优化重做日志性能?

A3: 优化重做日志性能的建议:

  • 增加重做日志组的数量(至少 3 组)
  • 增大重做日志文件的大小(建议至少 512MB)
  • 将重做日志文件分散到不同的磁盘上
  • 监控日志切换频率,避免过于频繁的切换

Q4: 如何设置合理的并行度?

A4: 设置合理的并行度需要考虑:

  • 服务器 CPU 核心数
  • 数据库负载情况
  • 操作类型(查询或 DML) 一般建议并行度不超过 CPU 核心数的一半,具体需要根据实际情况调整。

Q5: 密码策略参数应该如何配置?

A5: 密码策略参数的建议配置:

  • PASSWORD_LIFE_TIME:90 天
  • PASSWORD_GRACE_TIME:7 天
  • PASSWORD_REUSE_TIME:365 天
  • PASSWORD_REUSE_MAX:10
  • FAILED_LOGIN_ATTEMPTS:10
  • PASSWORD_LOCK_TIME:1 天

Q6: 如何监控参数配置的效果?

A6: 监控参数配置效果的方法:

  • 使用 AWR 报告分析数据库性能
  • 监控系统等待事件
  • 观察 SQL 执行计划的变化
  • 跟踪数据库响应时间
  • 监控资源使用率(CPU、内存、I/O)

Q7: 参数修改后是否需要重启数据库?

A7: 参数修改是否需要重启数据库取决于参数的类型:

  • 动态参数:可以通过 ALTER SYSTEM 命令立即生效
  • 静态参数:需要修改 SPFILE 并重启数据库才能生效 可以通过查询 V$PARAMETER 视图中的 ISSES_MODIFIABLE 和 ISSYS_MODIFIABLE 列来确定参数的类型。