外观
Oracle 核心参数配置
内存相关参数
SGA 相关参数
SGA_TARGET
- 作用:自动共享内存管理(ASMM)的总内存目标
- 默认值:0(禁用 ASMM)
- 推荐值:根据系统内存大小,一般设置为系统内存的 40-60%
- 设置方法:sql
ALTER SYSTEM SET sga_target = 4G SCOPE = spfile;
SGA_MAX_SIZE
- 作用:SGA 的最大大小
- 默认值:根据系统内存和其他参数计算
- 推荐值:大于或等于 SGA_TARGET,留有余地
- 设置方法:sql
ALTER SYSTEM SET sga_max_size = 5G SCOPE = spfile;
SHARED_POOL_SIZE
- 作用:共享池大小,用于存储 SQL 语句、执行计划等
- 默认值:根据 SGA_TARGET 自动分配
- 推荐值:对于 OLTP 系统,一般设置为 SGA 的 20-30%
- 设置方法:sql
ALTER SYSTEM SET shared_pool_size = 1G SCOPE = spfile;
BUFFER_CACHE_SIZE
- 作用:数据库缓冲区缓存大小,用于缓存数据块
- 默认值:根据 SGA_TARGET 自动分配
- 推荐值:对于 OLTP 系统,一般设置为 SGA 的 40-60%
- 设置方法:sql
ALTER SYSTEM SET db_cache_size = 2G SCOPE = spfile;
LARGE_POOL_SIZE
- 作用:大池大小,用于 RMAN、并行查询等
- 默认值:根据 SGA_TARGET 自动分配
- 推荐值:一般设置为 100-500MB
- 设置方法:sql
ALTER SYSTEM SET large_pool_size = 200M SCOPE = spfile;
JAVA_POOL_SIZE
- 作用:Java 池大小,用于 Java 对象和 Java 代码
- 默认值:根据 SGA_TARGET 自动分配
- 推荐值:如果使用 Java 功能,一般设置为 100-500MB
- 设置方法:sql
ALTER SYSTEM SET java_pool_size = 150M SCOPE = spfile;
STREAMS_POOL_SIZE
- 作用:流池大小,用于 Oracle Streams 功能
- 默认值:根据 SGA_TARGET 自动分配
- 推荐值:如果使用 Streams 功能,一般设置为 100-500MB
- 设置方法:sql
ALTER SYSTEM SET streams_pool_size = 200M SCOPE = spfile;
PGA 相关参数
PGA_AGGREGATE_TARGET
- 作用:程序全局区(PGA)的总内存目标
- 默认值:根据系统内存计算,一般为 SGA_TARGET 的 20%
- 推荐值:对于 OLTP 系统,一般设置为系统内存的 10-20%;对于 DSS 系统,可设置为 30-50%
- 设置方法:sql
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE = spfile;
WORKAREA_SIZE_POLICY
- 作用:工作区大小策略
- 默认值:AUTO(自动管理)
- 推荐值:AUTO
- 设置方法:sql
ALTER SYSTEM SET workarea_size_policy = AUTO SCOPE = spfile;
进程相关参数
PROCESSES
- 作用:最大进程数(包括后台进程和用户进程)
- 默认值:根据数据库版本和系统配置计算
- 推荐值:根据系统负载和连接数需求设置,一般为预计最大并发连接数的 1.5-2 倍
- 设置方法:sql
ALTER SYSTEM SET processes = 300 SCOPE = spfile;
SESSIONS
- 作用:最大会话数
- 默认值:根据 PROCESSES 计算,一般为 PROCESSES * 1.1 + 5
- 推荐值:大于或等于预计的最大并发会话数
- 设置方法:sql
ALTER SYSTEM SET sessions = 335 SCOPE = spfile;
TRANSACTIONS
- 作用:最大事务数
- 默认值:根据 SESSIONS 计算,一般为 SESSIONS * 1.1
- 推荐值:大于或等于预计的最大并发事务数
- 设置方法:sql
ALTER SYSTEM SET transactions = 368 SCOPE = spfile;
PARALLEL_MAX_SERVERS
- 作用:最大并行服务器进程数
- 默认值:根据系统 CPU 数量计算
- 推荐值:对于 OLTP 系统,一般设置为 CPU 核心数的 2-4 倍;对于 DSS 系统,可设置为 CPU 核心数的 4-8 倍
- 设置方法:sql
ALTER SYSTEM SET parallel_max_servers = 32 SCOPE = spfile;
PARALLEL_SERVERS_TARGET
- 作用:并行服务器进程目标数
- 默认值:根据系统 CPU 数量计算
- 推荐值:一般设置为 PARALLEL_MAX_SERVERS 的一半
- 设置方法:sql
ALTER SYSTEM SET parallel_servers_target = 16 SCOPE = spfile;
I/O 相关参数
DB_FILE_MULTIBLOCK_READ_COUNT
- 作用:全表扫描时一次读取的数据块数
- 默认值:根据操作系统块大小计算
- 推荐值:对于 OLTP 系统,一般设置为 8-16;对于 DSS 系统,可设置为 32-128
- 设置方法:sql
ALTER SYSTEM SET db_file_multiblock_read_count = 16 SCOPE = spfile;
DISK_ASYNCH_IO
- 作用:启用或禁用磁盘异步 I/O
- 默认值:TRUE(启用)
- 推荐值:TRUE
- 设置方法:sql
ALTER SYSTEM SET disk_asynch_io = TRUE SCOPE = spfile;
DBWR_IO_SLAVES
- 作用:数据库写入器(DBWR)的 I/O 从进程数
- 默认值:0(禁用)
- 推荐值:如果 DISK_ASYNCH_IO 为 FALSE,可设置为 4-8
- 设置方法:sql
ALTER SYSTEM SET dbwr_io_slaves = 4 SCOPE = spfile;
LOG_ARCHIVE_MAX_PROCESSES
- 作用:日志归档进程数
- 默认值:4
- 推荐值:根据归档需求设置,一般为 4-8
- 设置方法:sql
ALTER SYSTEM SET log_archive_max_processes = 4 SCOPE = spfile;
DB_WRITER_PROCESSES
- 作用:数据库写入器(DBWR)进程数
- 默认值:根据系统 CPU 数量计算
- 推荐值:一般为 CPU 核心数的 1/8 到 1/4,最多不超过 10
- 设置方法:sql
ALTER SYSTEM SET db_writer_processes = 2 SCOPE = spfile;
安全相关参数
SEC_CASE_SENSITIVE_LOGON
- 作用:控制密码是否区分大小写
- 默认值:TRUE(区分大小写)
- 推荐值:TRUE(提高安全性)
- 设置方法:sql
ALTER SYSTEM SET sec_case_sensitive_logon = TRUE SCOPE = spfile;
PASSWORD_VERIFY_FUNCTION
- 作用:密码验证函数
- 默认值:NULL(未设置)
- 推荐值:使用 Oracle 提供的验证函数或自定义验证函数
- 设置方法:通过 profile 设置sql
ALTER PROFILE default LIMIT PASSWORD_VERIFY_FUNCTION ora12c_verify_function;
PASSWORD_LIFE_TIME
- 作用:密码有效期(天数)
- 默认值:180
- 推荐值:根据安全策略设置,一般为 90-180 天
- 设置方法:通过 profile 设置sql
ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME 90;
FAILED_LOGIN_ATTEMPTS
- 作用:失败登录尝试次数
- 默认值:10
- 推荐值:根据安全策略设置,一般为 3-5 次
- 设置方法:通过 profile 设置sql
ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 5;
SEC_MAX_FAILED_LOGIN_ATTEMPTS
- 作用:最大失败登录尝试次数(系统级)
- 默认值:10
- 推荐值:根据安全策略设置,一般为 3-5 次
- 设置方法:sql
ALTER SYSTEM SET sec_max_failed_login_attempts = 5 SCOPE = spfile;
AUDIT_TRAIL
- 作用:审计跟踪设置
- 默认值:DB(数据库级审计)
- 推荐值:DB, EXTENDED(详细审计)
- 设置方法:sql
ALTER SYSTEM SET audit_trail = 'DB, EXTENDED' SCOPE = spfile;
网络相关参数
LOCAL_LISTENER
- 作用:本地监听器配置
- 默认值:NULL
- 推荐值:监听器的网络服务名
- 设置方法:sql
ALTER SYSTEM SET local_listener = 'LISTENER_ORCL' SCOPE = spfile;
REMOTE_LISTENER
- 作用:远程监听器配置(RAC 环境)
- 默认值:NULL
- 推荐值:RAC 环境中的 SCAN 监听器
- 设置方法:sql
ALTER SYSTEM SET remote_listener = 'scan-cluster:1521' SCOPE = spfile;
SQLNET.EXPIRE_TIME
- 作用:网络连接超时时间(分钟)
- 默认值:0(禁用)
- 推荐值:10-15 分钟,防止死连接
- 设置方法:在 sqlnet.ora 文件中设置txt
SQLNET.EXPIRE_TIME=10
DISPATCHERS
- 作用:共享服务器调度器配置
- 默认值:根据系统配置计算
- 推荐值:如果使用共享服务器模式,根据连接数设置
- 设置方法:sql
ALTER SYSTEM SET dispatchers = '(PROTOCOL=TCP) (SERVICE=ORCLXDB)' SCOPE = spfile;
SHARED_SERVERS
- 作用:共享服务器进程数
- 默认值:1
- 推荐值:如果使用共享服务器模式,根据连接数设置
- 设置方法:sql
ALTER SYSTEM SET shared_servers = 5 SCOPE = spfile;
优化相关参数
OPTIMIZER_MODE
- 作用:优化器模式
- 默认值:ALL_ROWS(全表扫描优化)
- 推荐值:
- OLTP 系统:FIRST_ROWS_n(优先返回前 n 行)
- DSS 系统:ALL_ROWS(全表扫描优化)
- 设置方法:sql
ALTER SYSTEM SET optimizer_mode = FIRST_ROWS_10 SCOPE = spfile;
OPTIMIZER_FEATURES_ENABLE
- 作用:优化器特性启用版本
- 默认值:当前数据库版本
- 推荐值:当前数据库版本
- 设置方法:sql
ALTER SYSTEM SET optimizer_features_enable = '19.1.0' SCOPE = spfile;
STATISTICS_LEVEL
- 作用:统计信息级别
- 默认值:TYPICAL(典型)
- 推荐值:TYPICAL
- 设置方法:sql
ALTER SYSTEM SET statistics_level = TYPICAL SCOPE = spfile;
AUTO_SAMPLE_SIZE
- 作用:自动采样大小
- 默认值:0(自动计算)
- 推荐值:0
- 设置方法:sql
ALTER SYSTEM SET auto_sample_size = 0 SCOPE = spfile;
CURSOR_SHARING
- 作用:游标共享策略
- 默认值:EXACT(精确匹配)
- 推荐值:EXACT(避免绑定变量窥探问题)
- 设置方法:sql
ALTER SYSTEM SET cursor_sharing = EXACT SCOPE = spfile;
PGA_AGGREGATE_LIMIT
- 作用:PGA 聚合内存限制
- 默认值:根据系统内存计算
- 推荐值:一般为 PGA_AGGREGATE_TARGET 的 2 倍
- 设置方法:sql
ALTER SYSTEM SET pga_aggregate_limit = 4G SCOPE = spfile;
日志相关参数
LOG_BUFFER
- 作用:重做日志缓冲区大小
- 默认值:根据系统内存计算
- 推荐值:一般为 16-128MB
- 设置方法:sql
ALTER SYSTEM SET log_buffer = 32M SCOPE = spfile;
LOG_CHECKPOINT_INTERVAL
- 作用:日志检查点间隔(OS 块)
- 默认值:0(禁用)
- 推荐值:0(使用时间间隔控制)
- 设置方法:sql
ALTER SYSTEM SET log_checkpoint_interval = 0 SCOPE = spfile;
LOG_CHECKPOINT_TIMEOUT
- 作用:日志检查点超时时间(秒)
- 默认值:1800(30 分钟)
- 推荐值:900-1800 秒(15-30 分钟)
- 设置方法:sql
ALTER SYSTEM SET log_checkpoint_timeout = 900 SCOPE = spfile;
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;
LOG_ARCHIVE_FORMAT
- 作用:归档日志文件名格式
- 默认值:根据数据库版本和配置
- 推荐值:包含时间戳和序列号
- 设置方法:sql
ALTER SYSTEM SET log_archive_format = '%t_%s_%r.dbf' SCOPE = spfile;
存储相关参数
DB_CREATE_FILE_DEST
- 作用:数据文件默认存储位置
- 默认值:NULL
- 推荐值:数据文件存储目录
- 设置方法:sql
ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata' SCOPE = spfile;
DB_CREATE_ONLINE_LOG_DEST_1
- 作用:联机日志默认存储位置 1
- 默认值:NULL
- 推荐值:联机日志存储目录
- 设置方法:sql
ALTER SYSTEM SET db_create_online_log_dest_1 = '/u01/app/oracle/oradata' SCOPE = spfile;
DB_RECOVERY_FILE_DEST
- 作用:恢复文件目的地(闪回区)
- 默认值:NULL
- 推荐值:闪回区存储目录
- 设置方法:sql
ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area' SCOPE = spfile;
DB_RECOVERY_FILE_DEST_SIZE
- 作用:恢复文件目的地大小
- 默认值:0
- 推荐值:根据备份和闪回需求设置,一般为数据库大小的 2-3 倍
- 设置方法:sql
ALTER SYSTEM SET db_recovery_file_dest_size = 20G SCOPE = spfile;
UNDO_TABLESPACE
- 作用:默认 UNDO 表空间
- 默认值:系统创建的第一个 UNDO 表空间
- 推荐值:专用的 UNDO 表空间
- 设置方法:sql
ALTER SYSTEM SET undo_tablespace = 'UNDOTBS1' SCOPE = spfile;
UNDO_RETENTION
- 作用:UNDO 数据保留时间(秒)
- 默认值:900(15 分钟)
- 推荐值:根据闪回和长事务需求设置,一般为 3600-7200 秒(1-2 小时)
- 设置方法:sql
ALTER SYSTEM SET undo_retention = 3600 SCOPE = spfile;
参数配置方法
使用 SQL*Plus 修改参数
修改系统级参数(需要重启)
sqlALTER SYSTEM SET parameter_name = value SCOPE = spfile;修改系统级参数(立即生效)
sqlALTER SYSTEM SET parameter_name = value SCOPE = BOTH;修改会话级参数
sqlALTER SESSION SET parameter_name = value;
使用 Oracle Enterprise Manager 修改参数
登录 OEM
- 打开浏览器,访问 OEM URL
- 使用管理员账户登录
导航到参数页面
- 在 "数据库" 页面,点击 "服务器" 选项卡
- 点击 "参数" 链接
修改参数
- 在参数列表中找到要修改的参数
- 点击参数值进行修改
- 点击 "应用" 按钮保存更改
使用 DBCA 修改参数
启动 DBCA
- 在命令行中执行
dbca命令
- 在命令行中执行
选择操作
- 选择 "配置数据库选项",点击 "下一步"
选择数据库
- 选择要配置的数据库,点击 "下一步"
修改参数
- 在 "初始化参数" 页面,修改所需的参数
- 点击 "完成" 按钮保存更改
参数调优最佳实践
内存参数调优
整体内存分配
- 系统内存分配建议:
- 操作系统:10-20%
- SGA:40-60%
- PGA:10-20%
- 其他应用:10-20%
- 系统内存分配建议:
SGA 调优
- 对于 OLTP 系统,优先增加 DB_CACHE_SIZE
- 对于 DSS 系统,优先增加 SHARED_POOL_SIZE
- 使用自动共享内存管理(ASMM)简化调优
PGA 调优
- 对于 OLTP 系统,PGA 不宜过大
- 对于 DSS 系统,可适当增加 PGA 大小
- 监控 PGA 使用情况,避免过度分配
进程参数调优
根据负载调整
- 监控系统负载和连接数
- 根据实际需求调整 PROCESSES 和 SESSIONS 参数
- 预留足够的缓冲区,避免达到上限
并行进程调优
- 对于 OLTP 系统,限制并行进程数
- 对于 DSS 系统,合理配置并行进程数
- 监控并行执行情况,避免资源争用
I/O 参数调优
存储配置
- 使用 RAID 技术提高 I/O 性能和可靠性
- 分离数据文件、日志文件和归档文件到不同的存储设备
- 使用 SSD 存储提高 I/O 性能
I/O 参数设置
- 启用异步 I/O
- 合理配置 DBWR 进程数
- 监控 I/O 等待时间,及时调整
网络参数调优
监听器配置
- 合理配置监听器数量和端口
- 使用 LOCAL_LISTENER 和 REMOTE_LISTENER 参数
- 监控监听器状态,确保正常运行
连接管理
- 启用连接池减少连接开销
- 配置合理的连接超时参数
- 使用共享服务器模式处理大量短连接
安全参数调优
密码策略
- 启用密码复杂性验证
- 设置合理的密码有效期
- 限制失败登录尝试次数
审计配置
- 启用详细的审计跟踪
- 定期审查审计日志
- 保护审计数据的安全性
常见问题(FAQ)
Q1: 修改参数后需要重启数据库吗?
A1: 这取决于参数的类型和修改方式:
- 动态参数:使用
SCOPE = BOTH或SCOPE = MEMORY修改后立即生效,无需重启 - 静态参数:使用
SCOPE = SPFILE修改后需要重启数据库才能生效 - 可通过查询
V$PARAMETER视图的ISSES_MODIFIABLE和ISSYS_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$SYSSTAT、V$SESSTAT等视图 - AWR 报告:生成并分析 AWR 报告
- ASH 报告:分析 Active Session History 报告
- 性能监控工具:使用 Oracle Enterprise Manager 监控性能指标
Q5: 如何优化内存参数以提高性能?
A5: 内存参数优化建议:
- 使用自动内存管理:设置
MEMORY_TARGET和MEMORY_MAX_TARGET参数 - 监控内存使用:定期查看
V$SGA、V$PGASTAT等视图 - 根据工作负载调整:
- OLTP 系统:增加 DB_CACHE_SIZE
- DSS 系统:增加 SHARED_POOL_SIZE 和 PGA_AGGREGATE_TARGET
- 避免过度分配:内存分配不宜超过系统实际可用内存
Q6: 如何处理参数配置错误导致的数据库无法启动?
A6: 处理参数配置错误的方法:
- 使用 PFILE 启动:
- 从 SPFILE 创建 PFILE:bash
sqlplus / as sysdba CREATE PFILE FROM SPFILE; - 编辑 PFILE,修正错误参数
- 使用 PFILE 启动数据库:bash
startup pfile='/path/to/init.ora' - 从 PFILE 创建新的 SPFILE:sql
CREATE SPFILE FROM PFILE;
- 从 SPFILE 创建 PFILE:
- 使用默认参数启动:在紧急情况下,可使用最小配置启动数据库
Q7: 如何配置参数以支持高可用性?
A7: 高可用性参数配置建议:
- RAC 环境:
- 配置
REMOTE_LISTENER参数指向 SCAN 监听器 - 设置合理的并行进程参数
- 配置
- Data Guard 环境:
- 配置
LOG_ARCHIVE_DEST_n参数 - 设置合理的日志传输参数
- 配置
- 闪回功能:
- 配置闪回区和相关参数
- 启用闪回数据库功能
Q8: 如何监控参数的使用情况?
A8: 监控参数使用情况的方法:
- 动态性能视图:
V$PARAMETER:当前参数值V$PARAMETER2:参数详细信息V$SPPARAMETER:SPFILE 中的参数值
- AWR 报告:包含参数配置和性能统计
- OEM:图形化监控参数使用情况
- 自定义监控脚本:定期收集参数值和性能指标
