外观
Oracle 日志相关参数
在线重做日志参数
重做日志缓冲区参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
log_buffer | 自动 | 重做日志缓冲区大小 | 建议 10-100MB,避免频繁的日志写入 |
_log_buffer_resize_interval | 0 | 重做日志缓冲区调整间隔 | 0:禁用自动调整,建议禁用 |
_log_io_size | 512 | 重做日志 I/O 大小(KB) | 建议保持默认值 |
_log_write_buffers | 16 | 重做日志写入缓冲区数量 | 建议保持默认值 |
重做日志文件参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
log_file_size | 自动 | 重做日志文件大小 | 建议 512MB-2GB,根据数据库负载调整 |
log_files | 自动 | 重做日志文件数量 | 建议至少 3-4 组,每组 2-3 个成员 |
log_checkpoint_timeout | 1800 | 检查点超时时间(秒) | 建议 3600 或更大,减少检查点频率 |
log_checkpoint_interval | 0 | 检查点间隔(OS 块) | 0:自动管理,建议使用自动管理 |
fast_start_mttr_target | 0 | 故障恢复目标时间(秒) | 建议 300-900,根据业务需求调整 |
log_checkpoint_to_alert | FALSE | 将检查点信息写入告警日志 | TRUE:启用,FALSE:禁用,建议 FALSE |
归档日志参数
归档模式参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
log_archive_start | TRUE | 自动归档启动 | TRUE:启用,FALSE:禁用,建议启用 |
log_archive_max_processes | 4 | 最大归档进程数 | 建议 4-8 个,根据归档负载调整 |
log_archive_min_succeed_dest | 1 | 最小成功归档目标数 | 建议 1-2 个,确保归档可靠性 |
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 |
log_archive_trace | 0 | 归档跟踪级别 | 0:禁用,1-15:启用,建议 0 或 1(仅在调试时使用) |
远程归档参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
log_archive_dest_2 | 空 | 归档日志目标位置 2 | 用于远程归档,如 SERVICE=standby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db |
log_archive_dest_state_2 | ENABLE | 归档日志目标状态 2 | ENABLE:启用,DEFER:延迟,建议 ENABLE |
log_archive_config | 空 | 归档配置 | 如 DG_CONFIG=(primary_db,standby_db),指定 Data Guard 配置 |
log_archive_local_first | TRUE | 优先本地归档 | TRUE:优先本地,FALSE:按顺序归档,建议 TRUE |
闪回日志参数
闪回数据库参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
db_flashback_retention_target | 1440 | 闪回保留目标时间(分钟) | 建议 1440-4320 分钟(1-3 天) |
db_recovery_file_dest | 空 | 恢复文件目标位置 | 用于闪回日志、控制文件自动备份等,建议设置为 +FRA 或单独路径 |
db_recovery_file_dest_size | 0 | 恢复文件目标大小 | 建议设置为数据库大小的 10-20% |
db_flashback_enabled | FALSE | 闪回数据库启用 | TRUE:启用,FALSE:禁用,建议根据需求启用 |
_db_flashback_log_buf_size | 自动 | 闪回日志缓冲区大小 | 建议保持默认值 |
_db_flashback_log_write_batch | 16 | 闪回日志写入批次数 | 建议保持默认值 |
闪回操作参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
flashback_drop_retention_time | 1 | 闪回删除保留时间(天) | 建议 1-7 天,根据需要调整 |
_flashback_scn_to_time_tolerance | 3600 | SCN 到时间的容差(秒) | 建议保持默认值 |
_flashback_max_scn_windows | 20 | 最大 SCN 窗口数 | 建议保持默认值 |
告警日志参数
告警日志配置
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
background_dump_dest | 自动 | 后台进程跟踪文件位置 | 根据实际路径设置,如 /trace |
user_dump_dest | 自动 | 用户进程跟踪文件位置 | 根据实际路径设置,如 /trace |
core_dump_dest | 自动 | 核心转储文件位置 | 根据实际路径设置,如 /core |
alert_log | 自动 | 告警日志文件位置 | 默认为 background_dump_dest 下的 alert_$ORACLE_SID.log |
log_checkpoints_to_alert | FALSE | 将检查点信息写入告警日志 | TRUE:启用,FALSE:禁用,建议 FALSE |
_trace_files_public | FALSE | 跟踪文件公共访问 | TRUE:允许,FALSE:禁止,建议 FALSE |
告警日志内容控制
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
diagnostic_dest | 自动 | 诊断目标位置 | Oracle 11g+ 建议设置,如 /diag |
_diag_trace_level | 1 | 诊断跟踪级别 | 0-5,建议 1-2 |
_alert_log_threshold | 1 | 告警日志阈值 | 0-5,建议 1-2 |
_alert_log_include_xml | FALSE | 告警日志包含 XML 格式 | TRUE:包含,FALSE:不包含,建议 FALSE |
跟踪日志参数
跟踪日志配置
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
max_dump_file_size | UNLIMITED | 最大转储文件大小 | UNLIMITED:无限制,或指定大小,建议 UNLIMITED |
sql_trace | FALSE | SQL 跟踪 | TRUE:启用,FALSE:禁用,建议 FALSE(全局启用会影响性能) |
trace_enabled | TRUE | 跟踪启用 | TRUE:启用,FALSE:禁用,建议 TRUE |
timed_statistics | TRUE | 时间统计 | TRUE:启用,FALSE:禁用,建议 TRUE 用于性能监控 |
statistics_level | TYPICAL | 统计级别 | BASIC:基本,TYPICAL:典型,ALL:所有,建议 TYPICAL |
tracefile_identifier | 空 | 跟踪文件标识符 | 用于标识跟踪文件,如会话 ID 或操作名称 |
会话跟踪参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
_session_trace_enable | FALSE | 会话跟踪启用 | TRUE:启用,FALSE:禁用,建议 FALSE |
_trace_events | 空 | 跟踪事件 | 用于启用特定跟踪事件,如 10046 trace name context forever, level 12 |
_trace_file_name | 自动 | 跟踪文件名 | 自动生成,包含实例名、进程 ID 等信息 |
_trace_file_path | 自动 | 跟踪文件路径 | 默认为 user_dump_dest 或 background_dump_dest |
审计日志参数
审计日志配置
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
audit_trail | DB | 审计跟踪 | DB:数据库,OS:操作系统,NONE:禁用,建议 DB |
audit_file_dest | 自动 | 审计文件目标位置 | 根据实际路径设置,如 /audit |
audit_sys_operations | FALSE | 审计系统操作 | TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作 |
audit_file_mode | 0640 | 审计文件模式 | 文件权限,建议 0640 |
audit_file_rotate_on_size | 0 | 审计文件按大小轮换 | 0:禁用,或指定大小(字节),建议 104857600(100MB) |
audit_file_rotate_age | 0 | 审计文件按时间轮换 | 0:禁用,或指定天数,建议 7 |
统一审计参数
| 参数名称 | 默认值 | 说明 | 建议值 |
|---|---|---|---|
unified_audit_sga_queue_size | 1048576 | 统一审计 SGA 队列大小 | 建议根据审计量调整 |
unified_audit_systemlog | FALSE | 统一审计系统日志 | TRUE:启用,FALSE:禁用,将审计记录发送到系统日志 |
unified_audit_purge_interval | 12 | 统一审计清理间隔(小时) | 建议 12-24 小时 |
unified_audit_purge_delay | 12 | 统一审计清理延迟(小时) | 建议 12-24 小时 |
常见问题(FAQ)
Q1: 如何调整重做日志文件大小?
A: 调整重做日志文件大小的步骤如下:
添加新的重做日志组:
sqlALTER DATABASE ADD LOGFILE GROUP 4 ('/oradata/orcl/redo04a.log', '/oradata/orcl/redo04b.log') SIZE 1G; ALTER DATABASE ADD LOGFILE GROUP 5 ('/oradata/orcl/redo05a.log', '/oradata/orcl/redo05b.log') SIZE 1G; ALTER DATABASE ADD LOGFILE GROUP 6 ('/oradata/orcl/redo06a.log', '/oradata/orcl/redo06b.log') SIZE 1G;切换日志直到旧日志组变为 INACTIVE 状态:
sqlALTER SYSTEM SWITCH LOGFILE;删除旧的重做日志组:
sqlALTER DATABASE DROP LOGFILE GROUP 1; ALTER DATABASE DROP LOGFILE GROUP 2; ALTER DATABASE DROP LOGFILE GROUP 3;删除旧的重做日志文件:
bashrm /oradata/orcl/redo01*.log /oradata/orcl/redo02*.log /oradata/orcl/redo03*.log
Q2: 如何启用归档模式?
A: 启用归档模式的步骤如下:
关闭数据库:
sqlSHUTDOWN IMMEDIATE;以 mount 模式启动数据库:
sqlSTARTUP MOUNT;启用归档模式:
sqlALTER DATABASE ARCHIVELOG;打开数据库:
sqlALTER DATABASE OPEN;验证归档模式:
sqlSELECT log_mode FROM v$database;
Q3: 如何配置闪回数据库?
A: 配置闪回数据库的步骤如下:
设置恢复文件目标:
sqlALTER SYSTEM SET db_recovery_file_dest = '+FRA' SCOPE=SPFILE; ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=SPFILE;设置闪回保留时间:
sqlALTER SYSTEM SET db_flashback_retention_target = 1440 SCOPE=SPFILE;重启数据库到 mount 模式:
sqlSHUTDOWN IMMEDIATE; STARTUP MOUNT;启用闪回数据库:
sqlALTER DATABASE FLASHBACK ON;打开数据库:
sqlALTER DATABASE OPEN;验证闪回数据库状态:
sqlSELECT flashback_on FROM v$database;
Q4: 如何查看告警日志位置?
A: 可以使用以下命令查看告警日志位置:
sql
-- Oracle 11g 及以上
SELECT value FROM v$parameter WHERE name = 'diagnostic_dest';
-- 告警日志通常位于以下路径
-- $DIAGNOSTIC_DEST/diag/rdbms/$DB_UNIQUE_NAME/$INSTANCE_NAME/alert/log.xml
-- Oracle 10g 及以下
SELECT value FROM v$parameter WHERE name = 'background_dump_dest';Q5: 如何清理旧的归档日志?
A: 可以使用以下方法清理旧的归档日志:
使用 RMAN 删除归档日志:
sqlRMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';使用脚本定期清理:
bashfind /archivelog -name "*.dbf" -mtime +7 -delete配置归档日志删除策略:
sqlALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/archivelog DELETE INPUT';
最佳实践
- 合理设置重做日志大小:重做日志文件大小建议在 512MB-2GB 之间,避免过于频繁的日志切换。
- 使用多路复用重做日志:每组重做日志至少使用 2 个成员,分别存储在不同的磁盘上,提高可用性。
- 启用归档模式:生产环境建议始终启用归档模式,确保数据可恢复性。
- 配置远程归档:对于关键业务,建议配置远程归档,提高归档可靠性。
- 合理设置闪回保留时间:根据业务需求设置闪回保留时间,平衡恢复需求和存储空间。
- 定期清理日志文件:定期清理旧的跟踪文件、告警日志和归档日志,避免占用过多存储空间。
- 监控日志相关等待事件:监控 "log file sync"、"log file parallel write" 等等待事件,及时调整日志配置。
- 使用 Oracle 推荐的日志格式:使用包含线程号、序列号和重置日志 ID 的归档日志格式,便于管理和恢复。
- 定期备份告警日志:定期备份告警日志,便于故障排查和审计。
- 配置日志文件自动轮换:对于跟踪文件和审计文件,配置合理的自动轮换策略,避免文件过大。
