Skip to content

Oracle 核心参数说明

内存管理参数

SGA 相关参数

参数名称默认值说明建议值
sga_target0 (自动管理)SGA 自动管理的目标大小根据系统内存大小设置,一般为系统内存的 40-50%
sga_max_size等于 sga_targetSGA 的最大允许大小略大于或等于 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_size0保持缓冲区大小用于存放频繁访问且不常修改的表,建议 0 或根据需求设置
db_recycle_cache_size0回收缓冲区大小用于存放临时访问的表,建议 0 或根据需求设置
log_buffer自动重做日志缓冲区大小建议 10-100MB,避免频繁的日志写入

PGA 相关参数

参数名称默认值说明建议值
pga_aggregate_target自动PGA 聚合目标大小一般为系统内存的 20-30%,或 SGA 的 50-75%
pga_aggregate_limit200% of pga_aggregate_targetPGA 聚合上限防止单个进程过度使用 PGA,建议为 pga_aggregate_target 的 2-3 倍
workarea_size_policyAUTO工作区大小策略AUTO:自动管理,MANUAL:手动管理,建议使用 AUTO
sort_area_size65536排序区大小仅在手动管理模式下使用,建议 1-4MB
hash_area_size131072哈希区大小仅在手动管理模式下使用,建议 2-8MB

进程管理参数

参数名称默认值说明建议值
processes300最大进程数根据系统负载和连接数设置,建议 500-2000
sessions派生值最大会话数自动计算,一般为 processes 的 1.1+5
transactions派生值最大事务数自动计算,一般为 sessions 的 1.1
sessions_per_user0每个用户的最大会话数0 表示无限制,建议根据应用需求设置
processes_per_user0每个用户的最大进程数0 表示无限制,建议根据应用需求设置
parallel_max_servers派生值最大并行服务器进程数自动计算,建议 2*CPU 核心数
parallel_min_servers0最小并行服务器进程数建议 0,根据负载动态调整
job_queue_processes1000作业队列进程数用于 DBMS_SCHEDULER,建议 100-500
db_writer_processes自动DBWn 进程数自动计算,1 个进程处理 8 个 CPU 核心
log_writer_processes自动LGWR 进程数自动计算,建议 1-4 个,根据日志写入负载调整
checkpoint_processes1检查点进程数建议 1-4 个,根据系统负载调整
log_archive_max_processes4归档进程数建议 4-8 个,根据归档负载调整

I/O 管理参数

磁盘 I/O 参数

参数名称默认值说明建议值
db_files200最大数据文件数根据数据库规模设置,建议 500-2000
maxdatafiles1024控制文件中记录的最大数据文件数建议与 db_files 一致或更大
db_file_multiblock_read_count自动多块读的块数自动优化,建议 8-64,根据 OS 块大小调整
db_file_name_convert数据文件名称转换用于 Data Guard 或克隆数据库,根据实际路径设置
log_file_name_convert日志文件名称转换用于 Data Guard 或克隆数据库,根据实际路径设置
standby_file_managementMANUAL备用文件管理MANUAL:手动,AUTO:自动,Data Guard 建议设为 AUTO

重做日志参数

参数名称默认值说明建议值
log_buffer自动重做日志缓冲区大小建议 10-100MB,避免频繁的日志写入
log_checkpoint_timeout1800检查点超时时间(秒)建议 3600 或更大,减少检查点频率
log_checkpoint_interval0检查点间隔(OS 块)0:自动管理,建议使用自动管理
fast_start_mttr_target0故障恢复目标时间(秒)建议 300-900,根据业务需求调整
fast_start_parallel_rollbackLOW并行回滚级别LOW:低并行度,HIGH:高并行度,建议 LOW
log_archive_dest_1归档日志目标位置 1根据实际路径设置,如 LOCATION=/archivelog
log_archive_dest_state_1ENABLE归档日志目标状态 1ENABLE:启用,DEFER:延迟,建议 ENABLE
log_archive_format%t_%s_%r.dbf归档日志格式建议包含线程号、序列号和重置日志 ID

安全性参数

认证与授权参数

参数名称默认值说明建议值
remote_login_passwordfileEXCLUSIVE远程登录密码文件EXCLUSIVE:专用,SHARED:共享,NONE:禁用,建议 EXCLUSIVE
sec_case_sensitive_logonTRUE密码大小写敏感TRUE:启用,FALSE:禁用,建议启用以提高安全性
audit_trailDB审计跟踪DB:数据库,OS:操作系统,NONE:禁用,建议 DB
audit_file_dest自动审计文件目标位置根据实际路径设置,如 /audit
audit_sys_operationsFALSE审计系统操作TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作
os_authent_prefixOPS$OS 认证前缀用于 OS 认证的用户名前缀,建议保留默认值

网络安全参数

参数名称默认值说明建议值
sqlnet.ora 中的 SQLNET.ENCRYPTION_SERVERACCEPTED服务器端加密设置REQUIRED:要求加密,建议启用加密
sqlnet.ora 中的 SQLNET.CRYPTO_CHECKSUM_SERVERACCEPTED服务器端校验和设置REQUIRED:要求校验和,建议启用
listener.ora 中的 INBOUND_CONNECT_TIMEOUT_LISTENER60监听器入站连接超时建议 30-60 秒
listener.ora 中的 VALID_NODE_CHECKING_REGISTRATION_LISTENEROFF节点验证ON:启用节点验证,建议启用以增强安全性
remote_os_authentFALSE远程 OS 认证TRUE:允许,FALSE:禁止,建议 FALSE
remote_os_rolesFALSE远程 OS 角色TRUE:允许,FALSE:禁止,建议 FALSE

性能调优参数

查询优化参数

参数名称默认值说明建议值
optimizer_modeALL_ROWS优化器模式ALL_ROWS:所有行,FIRST_ROWS_n:前 n 行,CHOOSE:选择,建议 ALL_ROWS
optimizer_dynamic_sampling2动态采样级别0-11,建议 2-4,根据统计信息完整性调整
optimizer_index_caching0索引缓存百分比0-100,建议 70-90,模拟索引块在缓存中的比例
optimizer_index_cost_adj100索引成本调整1-10000,建议 50-90,降低索引访问成本
cursor_sharingEXACT游标共享模式EXACT:精确匹配,FORCE:强制共享,SIMILAR:相似共享,建议 EXACT
result_cache_modeMANUAL结果缓存模式MANUAL:手动,FORCE:强制,AUTO:自动,建议 MANUAL
result_cache_max_size自动结果缓存最大大小0:禁用,建议 0 或 SGA 的 1-5%

并行处理参数

参数名称默认值说明建议值
parallel_force_localFALSE强制本地并行TRUE:强制在本地实例执行,FALSE:允许跨实例并行,RAC 环境建议根据需求设置
parallel_adaptive_multi_userTRUE自适应多用户并行TRUE:根据负载调整并行度,FALSE:固定并行度,建议 TRUE
parallel_min_time_thresholdAUTO并行最小时间阈值AUTO:自动,或指定时间(秒),建议 AUTO
parallel_degree_policyMANUAL并行度策略MANUAL:手动,AUTO:自动,LIMITED:有限自动,建议 MANUAL 或 AUTO
parallel_max_servers自动最大并行服务器进程数建议 2*CPU 核心数

数据库管理参数

实例与数据库参数

参数名称默认值说明建议值
instance_name自动实例名称与 ORACLE_SID 一致
db_name自动数据库名称创建数据库时指定,不可修改
db_unique_namedb_name 一致数据库唯一名称用于 Data Guard 环境,建议与 db_name 不同
cluster_databaseFALSE集群数据库TRUE:RAC 环境,FALSE:单实例环境,根据实际环境设置
cluster_database_instances1集群数据库实例数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_size0恢复文件目标大小建议设置为数据库大小的 10-20%
undo_tablespace自动默认 UNDO 表空间指定默认的 UNDO 表空间名称
undo_managementAUTOUNDO 管理方式AUTO:自动,MANUAL:手动,建议 AUTO
undo_retention900UNDO 保留时间(秒)建议 1800-7200,根据闪回查询需求调整
undo_retention_guaranteeFALSEUNDO 保留保证TRUE:保证,FALSE:不保证,建议 FALSE

日志与跟踪参数

参数名称默认值说明建议值
background_dump_dest自动后台进程跟踪文件位置根据实际路径设置,如 /trace
user_dump_dest自动用户进程跟踪文件位置根据实际路径设置,如 /trace
core_dump_dest自动核心转储文件位置根据实际路径设置,如 /core
trace_enabledTRUE跟踪启用TRUE:启用,FALSE:禁用,建议 TRUE
max_dump_file_sizeUNLIMITED最大转储文件大小UNLIMITED:无限制,或指定大小,建议 UNLIMITED
log_archive_trace0归档跟踪级别0:禁用,1-15:启用,建议 0 或 1(仅在调试时使用)
sql_traceFALSESQL 跟踪TRUE:启用,FALSE:禁用,建议 FALSE(全局启用会影响性能)
timed_statisticsTRUE时间统计TRUE:启用,FALSE:禁用,建议 TRUE 用于性能监控
statistics_levelTYPICAL统计级别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 大小:

  1. 对于 OLTP 系统:

    • SGA 建议为系统内存的 40-50%
    • PGA 建议为系统内存的 15-25%
  2. 对于 DSS 系统:

    • SGA 建议为系统内存的 30-40%
    • PGA 建议为系统内存的 25-35%
  3. 可以使用 Oracle 提供的内存顾问视图进行调整:

    sql
    SELECT * FROM v$sga_target_advice;
    SELECT * FROM v$pga_target_advice;

Q4: 如何优化数据库的 I/O 性能?

A: 可以通过以下参数优化数据库的 I/O 性能:

  1. 合理设置 db_cache_size,增加数据缓冲区命中率
  2. 调整 db_writer_processes,增加 DBWn 进程数
  3. 设置 log_buffer 为合理大小,减少日志写入频率
  4. 使用 async_iodirect_io(通过文件系统设置)
  5. 合理分布数据文件和日志文件,避免 I/O 争用

Q5: 如何提高数据库的安全性?

A: 可以通过以下参数提高数据库的安全性:

  1. 设置 sec_case_sensitive_logon = TRUE,启用密码大小写敏感
  2. 设置 audit_trail = DBaudit_sys_operations = TRUE,启用审计
  3. 设置 remote_login_passwordfile = EXCLUSIVE,使用专用密码文件
  4. 启用网络加密和校验和
  5. 设置 sqlnet.ora 中的 TCP.VALIDNODE_CHECKING = YES,限制合法节点

最佳实践

  1. 使用自动内存管理:对于大多数系统,建议使用 memory_targetmemory_max_target 参数启用自动内存管理,简化内存配置。
  2. 根据系统类型调整参数:OLTP 系统和 DSS 系统的参数配置差异较大,需要根据实际工作负载调整。
  3. 定期监控参数效果:使用 AWR 报告、动态性能视图等工具定期监控参数的效果,及时调整。
  4. 谨慎修改静态参数:静态参数需要重启数据库才能生效,修改前需要做好充分测试。
  5. 保持参数文档化:记录所有参数的修改历史和原因,便于后续维护和故障排查。
  6. 使用 Oracle 建议值:对于不确定的参数,建议先使用 Oracle 的默认值或建议值,然后根据实际情况调整。
  7. 避免过度配置:参数配置过高可能导致资源浪费或性能问题,需要根据实际需求合理设置。
  8. 测试参数修改:在生产环境修改参数前,必须在测试环境进行充分测试,评估修改的影响。
  9. 考虑 RAC 环境:RAC 环境的参数配置与单实例环境有所不同,需要考虑集群特性。
  10. 定期回顾参数配置:随着业务发展和系统变化,定期回顾和调整参数配置,确保最佳性能。