Oracle 数据库参数调优
Oracle 数据库参数调优
适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
参数调优是 Oracle 性能优化基础[1]:
类型:
- 内存参数
- 进程参数
- I/O 参数
- 优化器参数
2. 内存参数
2.1 SGA
-- 自动管理
ALTER SYSTEM SET sga_target = 16G SCOPE=SPFILE;
ALTER SYSTEM SET memory_target = 24G SCOPE=SPFILE; -- AMM
-- 或 ASMM
ALTER SYSTEM SET sga_target = 16G;
ALTER SYSTEM SET pga_aggregate_target = 8G;
2.2 SGA 组件
-- 自动管理下设置最小值
ALTER SYSTEM SET db_cache_size = 8G;
ALTER SYSTEM SET shared_pool_size = 2G;
ALTER SYSTEM SET large_pool_size = 512M;
ALTER SYSTEM SET java_pool_size = 256M;
ALTER SYSTEM SET streams_pool_size = 256M;
2.3 PGA
ALTER SYSTEM SET pga_aggregate_target = 8G;
ALTER SYSTEM SET pga_aggregate_limit = 16G; -- 12c+
2.4 命中率检查
-- Buffer Cache
SELECT 1 - (physical_reads / (db_block_gets + consistent_gets)) AS hit_ratio
FROM v$buffer_pool_statistics;
-- Library Cache
SELECT SUM(gets - getmisses) / SUM(gets) AS hit_ratio
FROM v$librarycache;
3. 进程参数
3.1 关键参数
ALTER SYSTEM SET processes = 500 SCOPE=SPFILE;
ALTER SYSTEM SET sessions = 750 SCOPE=SPFILE;
ALTER SYSTEM SET open_cursors = 1000;
3.2 并行
ALTER SYSTEM SET parallel_max_servers = 64;
ALTER SYSTEM SET parallel_min_servers = 8;
ALTER SYSTEM SET parallel_servers_target = 24;
3.3 JOB
ALTER SYSTEM SET job_queue_processes = 20;
4. I/O 参数
4.1 DBWn
ALTER SYSTEM SET db_writer_processes = 4 SCOPE=SPFILE;
4.2 LGWR
-- Redo 写入优化
ALTER SYSTEM SET log_buffer = 67108864 SCOPE=SPFILE; -- 64M
4.3 ARCn
ALTER SYSTEM SET log_archive_max_processes = 4;
5. 优化器参数
5.1 优化器模式
ALTER SYSTEM SET optimizer_mode = ALL_ROWS SCOPE=BOTH;
-- ALL_ROWS / FIRST_ROWS_n / CHOOSE
5.2 统计信息
ALTER SYSTEM SET optimizer_dynamic_sampling = 2;
ALTER SYSTEM SET optimizer_use_pending_statistics = FALSE;
5.3 自适应
-- 12c+
ALTER SYSTEM SET optimizer_adaptive_plans = TRUE;
ALTER SYSTEM SET optimizer_adaptive_statistics = FALSE;
ALTER SYSTEM SET optimizer_adaptive_cursor_sharing = TRUE;
5.4 绑定变量
ALTER SYSTEM SET cursor_sharing = EXACT; -- 默认
-- EXACT / FORCE / SIMILAR
6. Undo 参数
ALTER SYSTEM SET undo_retention = 3600; -- 1 小时
ALTER SYSTEM SET undo_management = AUTO;
7. Redo 参数
-- 在线 Redo 日志组
-- 至少 3 组,每组多成员
-- 大小
-- 至少每 15-20 分钟切换一次
8. Block 参数
8.1 数据块
-- db_block_size 安装时确定
SHOW PARAMETER db_block_size
8.2 多块读
ALTER SYSTEM SET db_file_multiblock_read_count = 16;
-- 自动管理
9. 网络
9.1 SDU
# sqlnet.ora
DEFAULT_SDU_SIZE = 32767
9.2 入站连接
ALTER SYSTEM SET sec_max_failed_login_attempts = 10;
10. 安全
10.1 失败登录
ALTER SYSTEM SET failed_login_attempts = 10;
ALTER SYSTEM SET password_lock_time = 1;
10.2 资源
ALTER SYSTEM SET sessions_per_user = 10; -- profile
11. 19c 推荐参数
11.1 内存
-- AMM 或 ASMM
sga_target = 50% 物理内存
pga_aggregate_target = 20% 物理内存
pga_aggregate_limit = 2 * pga_aggregate_target
11.2 优化器
optimizer_mode = ALL_ROWS
optimizer_adaptive_plans = TRUE
optimizer_adaptive_statistics = FALSE
cursor_sharing = EXACT
12. 监控
12.1 参数查看
SELECT name, value, isdefault, isses_modifiable, issys_modifiable
FROM v$parameter
ORDER BY name;
12.2 修改历史
SELECT * FROM v$parameter_valid_values WHERE name LIKE '%...%';
12.3 隐藏参数
SELECT ksppinm, ksppstvl FROM x$ksppi a, x$ksppsv b
WHERE a.indx = b.indx;
-- 不推荐修改
13. 常见坑与排错
13.1 参数修改失败
-- 1. SCOPE
ALTER SYSTEM SET ... SCOPE=SPFILE; -- 需重启
ALTER SYSTEM SET ... SCOPE=BOTH;
ALTER SYSTEM SET ... SCOPE=MEMORY;
-- 2. 是否可动态修改
SELECT issys_modifiable FROM v$parameter WHERE name = '...';
13.2 ORA-00821
-- SGA 不足
-- 检查物理内存
-- 调整大小
13.3 ORA-04031
-- Shared Pool 不足
ALTER SYSTEM FLUSH SHARED_POOL;
-- 增大 shared_pool_size
14. 最佳实践
- AMM/ASMM 自动:默认
- 内存 70-80% 物理:合理
- processes 留余量:连接
- open_cursors 大:游标
- Redo 足够大:减少切换
- 优化器 19c 默认:现代
- adaptive_statistics 关:稳定
- 测试验证:影响
- 文档化:变更记录
- 基线对比:性能
15. 参考资料
[1] Oracle Database Reference 19c, “Initialization Parameters” https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/