外观
Oracle 核心参数说明
内存管理参数
SGA 相关参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
sga_target | 0 (自动管理) | SGA 自动管理的目标大小 | 根据系统内存大小设置,一般为系统内存的 40-50% |
sga_max_size | 等于 sga_target | SGA 的最大允许大小 | 略大于或等于 sga_target,用于动态调整 |
db_cache_size | 自动管理 | 数据库缓冲区高速缓存大小 | 占 SGA 的 40-60%,根据数据库类型调整 |
shared_pool_size | 自动管理 | 共享池大小 | 占 SGA 的 15-25%,复杂查询多的系统可适当增大 |
large_pool_size | 自动管理 | 大型池大小 | 用于 RMAN 备份恢复、并行查询等,建议 100-500MB |
java_pool_size | 自动管理 | Java 池大小 | 仅在使用 Java 存储过程时需要,建议 100-500MB |
streams_pool_size | 自动管理 | Streams 池大小 | 用于 Oracle Streams/ GoldenGate,建议 100-500MB |
db_keep_cache_size | 0 | 保持缓冲区大小 | 用于存放频繁访问且不常修改的表,建议 0 或根据需求设置 |
db_recycle_cache_size | 0 | 回收缓冲区大小 | 用于存放临时访问的表,建议 0 或根据需求设置 |
log_buffer | 自动 | 重做日志缓冲区大小 | 建议 10-100MB,避免频繁的日志写入 |
PGA 相关参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
pga_aggregate_target | 自动 | PGA 聚合目标大小 | 一般为系统内存的 20-30%,或 SGA 的 50-75% |
pga_aggregate_limit | 200% of pga_aggregate_target | PGA 聚合上限 | 防止单个进程过度使用 PGA,建议为 pga_aggregate_target 的 2-3 倍 |
workarea_size_policy | AUTO | 工作区大小策略 | AUTO:自动管理,MANUAL:手动管理,建议使用 AUTO |
sort_area_size | 65536 | 排序区大小 | 仅在手动管理模式下使用,建议 1-4MB |
hash_area_size | 131072 | 哈希区大小 | 仅在手动管理模式下使用,建议 2-8MB |
进程管理参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
processes | 300 | 最大进程数 | 根据系统负载和连接数设置,建议 500-2000 |
sessions | 派生值 | 最大会话数 | 自动计算,一般为 processes 的 1.1+5 |
transactions | 派生值 | 最大事务数 | 自动计算,一般为 sessions 的 1.1 |
sessions_per_user | 0 | 每个用户的最大会话数 | 0 表示无限制,建议根据应用需求设置 |
processes_per_user | 0 | 每个用户的最大进程数 | 0 表示无限制,建议根据应用需求设置 |
parallel_max_servers | 派生值 | 最大并行服务器进程数 | 自动计算,建议 2*CPU 核心数 |
parallel_min_servers | 0 | 最小并行服务器进程数 | 建议 0,根据负载动态调整 |
job_queue_processes | 1000 | 作业队列进程数 | 用于 DBMS_SCHEDULER,建议 100-500 |
db_writer_processes | 自动 | DBWn 进程数 | 自动计算,1 个进程处理 8 个 CPU 核心 |
log_writer_processes | 自动 | LGWR 进程数 | 自动计算,建议 1-4 个,根据日志写入负载调整 |
checkpoint_processes | 1 | 检查点进程数 | 建议 1-4 个,根据系统负载调整 |
log_archive_max_processes | 4 | 归档进程数 | 建议 4-8 个,根据归档负载调整 |
I/O 管理参数
磁盘 I/O 参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
db_files | 200 | 最大数据文件数 | 根据数据库规模设置,建议 500-2000 |
maxdatafiles | 1024 | 控制文件中记录的最大数据文件数 | 建议与 db_files 一致或更大 |
db_file_multiblock_read_count | 自动 | 多块读的块数 | 自动优化,建议 8-64,根据 OS 块大小调整 |
db_file_name_convert | 空 | 数据文件名称转换 | 用于 Data Guard 或克隆数据库,根据实际路径设置 |
log_file_name_convert | 空 | 日志文件名称转换 | 用于 Data Guard 或克隆数据库,根据实际路径设置 |
standby_file_management | MANUAL | 备用文件管理 | MANUAL:手动,AUTO:自动,Data Guard 建议设为 AUTO |
重做日志参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
log_buffer | 自动 | 重做日志缓冲区大小 | 建议 10-100MB,避免频繁的日志写入 |
log_checkpoint_timeout | 1800 | 检查点超时时间(秒) | 建议 3600 或更大,减少检查点频率 |
log_checkpoint_interval | 0 | 检查点间隔(OS 块) | 0:自动管理,建议使用自动管理 |
fast_start_mttr_target | 0 | 故障恢复目标时间(秒) | 建议 300-900,根据业务需求调整 |
fast_start_parallel_rollback | LOW | 并行回滚级别 | LOW:低并行度,HIGH:高并行度,建议 LOW |
log_archive_dest_1 | 空 | 归档日志目标位置 1 | 根据实际路径设置,如 LOCATION=/archivelog |
log_archive_dest_state_1 | ENABLE | 归档日志目标状态 1 | ENABLE:启用,DEFER:延迟,建议 ENABLE |
log_archive_format | %t_%s_%r.dbf | 归档日志格式 | 建议包含线程号、序列号和重置日志 ID |
安全性参数
认证与授权参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
remote_login_passwordfile | EXCLUSIVE | 远程登录密码文件 | EXCLUSIVE:专用,SHARED:共享,NONE:禁用,建议 EXCLUSIVE |
sec_case_sensitive_logon | TRUE | 密码大小写敏感 | TRUE:启用,FALSE:禁用,建议启用以提高安全性 |
audit_trail | DB | 审计跟踪 | DB:数据库,OS:操作系统,NONE:禁用,建议 DB |
audit_file_dest | 自动 | 审计文件目标位置 | 根据实际路径设置,如 /audit |
audit_sys_operations | FALSE | 审计系统操作 | TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作 |
os_authent_prefix | OPS$ | OS 认证前缀 | 用于 OS 认证的用户名前缀,建议保留默认值 |
网络安全参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
sqlnet.ora 中的 SQLNET.ENCRYPTION_SERVER | ACCEPTED | 服务器端加密设置 | REQUIRED:要求加密,建议启用加密 |
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_SERVER | ACCEPTED | 服务器端校验和设置 | REQUIRED:要求校验和,建议启用 |
listener.ora 中的 INBOUND_CONNECT_TIMEOUT_LISTENER | 60 | 监听器入站连接超时 | 建议 30-60 秒 |
listener.ora 中的 VALID_NODE_CHECKING_REGISTRATION_LISTENER | OFF | 节点验证 | ON:启用节点验证,建议启用以增强安全性 |
remote_os_authent | FALSE | 远程 OS 认证 | TRUE:允许,FALSE:禁止,建议 FALSE |
remote_os_roles | FALSE | 远程 OS 角色 | TRUE:允许,FALSE:禁止,建议 FALSE |
性能调优参数
查询优化参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
optimizer_mode | ALL_ROWS | 优化器模式 | ALL_ROWS:所有行,FIRST_ROWS_n:前 n 行,CHOOSE:选择,建议 ALL_ROWS |
optimizer_dynamic_sampling | 2 | 动态采样级别 | 0-11,建议 2-4,根据统计信息完整性调整 |
optimizer_index_caching | 0 | 索引缓存百分比 | 0-100,建议 70-90,模拟索引块在缓存中的比例 |
optimizer_index_cost_adj | 100 | 索引成本调整 | 1-10000,建议 50-90,降低索引访问成本 |
cursor_sharing | EXACT | 游标共享模式 | EXACT:精确匹配,FORCE:强制共享,SIMILAR:相似共享,建议 EXACT |
result_cache_mode | MANUAL | 结果缓存模式 | MANUAL:手动,FORCE:强制,AUTO:自动,建议 MANUAL |
result_cache_max_size | 自动 | 结果缓存最大大小 | 0:禁用,建议 0 或 SGA 的 1-5% |
并行处理参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
parallel_force_local | FALSE | 强制本地并行 | TRUE:强制在本地实例执行,FALSE:允许跨实例并行,RAC 环境建议根据需求设置 |
parallel_adaptive_multi_user | TRUE | 自适应多用户并行 | TRUE:根据负载调整并行度,FALSE:固定并行度,建议 TRUE |
parallel_min_time_threshold | AUTO | 并行最小时间阈值 | AUTO:自动,或指定时间(秒),建议 AUTO |
parallel_degree_policy | MANUAL | 并行度策略 | MANUAL:手动,AUTO:自动,LIMITED:有限自动,建议 MANUAL 或 AUTO |
parallel_max_servers | 自动 | 最大并行服务器进程数 | 建议 2*CPU 核心数 |
数据库管理参数
实例与数据库参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
instance_name | 自动 | 实例名称 | 与 ORACLE_SID 一致 |
db_name | 自动 | 数据库名称 | 创建数据库时指定,不可修改 |
db_unique_name | 与 db_name 一致 | 数据库唯一名称 | 用于 Data Guard 环境,建议与 db_name 不同 |
cluster_database | FALSE | 集群数据库 | TRUE:RAC 环境,FALSE:单实例环境,根据实际环境设置 |
cluster_database_instances | 1 | 集群数据库实例数 | RAC 环境中设置为实例总数 |
compatible | 自动 | 数据库兼容性 | 与数据库版本一致,或设置为较低版本以兼容旧系统 |
表空间与存储参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
db_create_file_dest | 空 | 数据文件默认位置 | ASM 环境建议设置为 +DATA,文件系统环境建议设置为具体路径 |
db_create_online_log_dest_1 | 空 | 在线日志默认位置 1 | 建议与 db_create_file_dest 分开,提高 I/O 性能 |
db_recovery_file_dest | 空 | 恢复文件目标位置 | 用于闪回日志、控制文件自动备份等,建议设置为 +FRA 或单独路径 |
db_recovery_file_dest_size | 0 | 恢复文件目标大小 | 建议设置为数据库大小的 10-20% |
undo_tablespace | 自动 | 默认 UNDO 表空间 | 指定默认的 UNDO 表空间名称 |
undo_management | AUTO | UNDO 管理方式 | AUTO:自动,MANUAL:手动,建议 AUTO |
undo_retention | 900 | UNDO 保留时间(秒) | 建议 1800-7200,根据闪回查询需求调整 |
undo_retention_guarantee | FALSE | UNDO 保留保证 | TRUE:保证,FALSE:不保证,建议 FALSE |
日志与跟踪参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
background_dump_dest | 自动 | 后台进程跟踪文件位置 | 根据实际路径设置,如 /trace |
user_dump_dest | 自动 | 用户进程跟踪文件位置 | 根据实际路径设置,如 /trace |
core_dump_dest | 自动 | 核心转储文件位置 | 根据实际路径设置,如 /core |
trace_enabled | TRUE | 跟踪启用 | TRUE:启用,FALSE:禁用,建议 TRUE |
max_dump_file_size | UNLIMITED | 最大转储文件大小 | UNLIMITED:无限制,或指定大小,建议 UNLIMITED |
log_archive_trace | 0 | 归档跟踪级别 | 0:禁用,1-15:启用,建议 0 或 1(仅在调试时使用) |
sql_trace | FALSE | SQL 跟踪 | TRUE:启用,FALSE:禁用,建议 FALSE(全局启用会影响性能) |
timed_statistics | TRUE | 时间统计 | TRUE:启用,FALSE:禁用,建议 TRUE 用于性能监控 |
statistics_level | TYPICAL | 统计级别 | BASIC:基本,TYPICAL:典型,ALL:所有,建议 TYPICAL |
常见问题(FAQ)
Q1: 如何查看当前数据库的参数设置?
A: 可以使用以下 SQL 命令查看当前数据库的参数设置:
sql
-- 查看所有参数
SHOW PARAMETERS;
-- 查看特定参数
SHOW PARAMETER sga_target;
-- 查看参数的详细信息
SELECT name, value, description FROM v$parameter WHERE name LIKE '%sga%';Q2: 如何修改数据库参数?
A: 可以使用以下 SQL 命令修改数据库参数:
sql
-- 修改动态参数(立即生效,永久保存)
ALTER SYSTEM SET sga_target = 4G SCOPE=BOTH;
-- 修改动态参数(仅当前实例生效)
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=MEMORY;
-- 修改静态参数(需要重启数据库)
ALTER SYSTEM SET sga_max_size = 5G SCOPE=SPFILE;Q3: 如何确定合适的 SGA 和 PGA 大小?
A: 可以根据以下原则确定 SGA 和 PGA 大小:
对于 OLTP 系统:
- SGA 建议为系统内存的 40-50%
- PGA 建议为系统内存的 15-25%
对于 DSS 系统:
- SGA 建议为系统内存的 30-40%
- PGA 建议为系统内存的 25-35%
可以使用 Oracle 提供的内存顾问视图进行调整:
sqlSELECT * FROM v$sga_target_advice; SELECT * FROM v$pga_target_advice;
Q4: 如何优化数据库的 I/O 性能?
A: 可以通过以下参数优化数据库的 I/O 性能:
- 合理设置
db_cache_size,增加数据缓冲区命中率 - 调整
db_writer_processes,增加 DBWn 进程数 - 设置
log_buffer为合理大小,减少日志写入频率 - 使用
async_io或direct_io(通过文件系统设置) - 合理分布数据文件和日志文件,避免 I/O 争用
Q5: 如何提高数据库的安全性?
A: 可以通过以下参数提高数据库的安全性:
- 设置
sec_case_sensitive_logon = TRUE,启用密码大小写敏感 - 设置
audit_trail = DB和audit_sys_operations = TRUE,启用审计 - 设置
remote_login_passwordfile = EXCLUSIVE,使用专用密码文件 - 启用网络加密和校验和
- 设置
sqlnet.ora中的TCP.VALIDNODE_CHECKING = YES,限制合法节点
最佳实践
- 使用自动内存管理:对于大多数系统,建议使用
memory_target和memory_max_target参数启用自动内存管理,简化内存配置。 - 根据系统类型调整参数:OLTP 系统和 DSS 系统的参数配置差异较大,需要根据实际工作负载调整。
- 定期监控参数效果:使用 AWR 报告、动态性能视图等工具定期监控参数的效果,及时调整。
- 谨慎修改静态参数:静态参数需要重启数据库才能生效,修改前需要做好充分测试。
- 保持参数文档化:记录所有参数的修改历史和原因,便于后续维护和故障排查。
- 使用 Oracle 建议值:对于不确定的参数,建议先使用 Oracle 的默认值或建议值,然后根据实际情况调整。
- 避免过度配置:参数配置过高可能导致资源浪费或性能问题,需要根据实际需求合理设置。
- 测试参数修改:在生产环境修改参数前,必须在测试环境进行充分测试,评估修改的影响。
- 考虑 RAC 环境:RAC 环境的参数配置与单实例环境有所不同,需要考虑集群特性。
- 定期回顾参数配置:随着业务发展和系统变化,定期回顾和调整参数配置,确保最佳性能。
