Skip to content

Oracle 日志相关参数

在线重做日志参数

重做日志缓冲区参数

参数名称默认值说明建议值
log_buffer自动重做日志缓冲区大小建议 10-100MB,避免频繁的日志写入
_log_buffer_resize_interval0重做日志缓冲区调整间隔0:禁用自动调整,建议禁用
_log_io_size512重做日志 I/O 大小(KB)建议保持默认值
_log_write_buffers16重做日志写入缓冲区数量建议保持默认值

重做日志文件参数

参数名称默认值说明建议值
log_file_size自动重做日志文件大小建议 512MB-2GB,根据数据库负载调整
log_files自动重做日志文件数量建议至少 3-4 组,每组 2-3 个成员
log_checkpoint_timeout1800检查点超时时间(秒)建议 3600 或更大,减少检查点频率
log_checkpoint_interval0检查点间隔(OS 块)0:自动管理,建议使用自动管理
fast_start_mttr_target0故障恢复目标时间(秒)建议 300-900,根据业务需求调整
log_checkpoint_to_alertFALSE将检查点信息写入告警日志TRUE:启用,FALSE:禁用,建议 FALSE

归档日志参数

归档模式参数

参数名称默认值说明建议值
log_archive_startTRUE自动归档启动TRUE:启用,FALSE:禁用,建议启用
log_archive_max_processes4最大归档进程数建议 4-8 个,根据归档负载调整
log_archive_min_succeed_dest1最小成功归档目标数建议 1-2 个,确保归档可靠性
log_archive_dest_1归档日志目标位置 1根据实际路径设置,如 LOCATION=/archivelog
log_archive_dest_state_1ENABLE归档日志目标状态 1ENABLE:启用,DEFER:延迟,建议 ENABLE
log_archive_format%t_%s_%r.dbf归档日志格式建议包含线程号、序列号和重置日志 ID
log_archive_trace0归档跟踪级别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_2ENABLE归档日志目标状态 2ENABLE:启用,DEFER:延迟,建议 ENABLE
log_archive_config归档配置DG_CONFIG=(primary_db,standby_db),指定 Data Guard 配置
log_archive_local_firstTRUE优先本地归档TRUE:优先本地,FALSE:按顺序归档,建议 TRUE

闪回日志参数

闪回数据库参数

参数名称默认值说明建议值
db_flashback_retention_target1440闪回保留目标时间(分钟)建议 1440-4320 分钟(1-3 天)
db_recovery_file_dest恢复文件目标位置用于闪回日志、控制文件自动备份等,建议设置为 +FRA 或单独路径
db_recovery_file_dest_size0恢复文件目标大小建议设置为数据库大小的 10-20%
db_flashback_enabledFALSE闪回数据库启用TRUE:启用,FALSE:禁用,建议根据需求启用
_db_flashback_log_buf_size自动闪回日志缓冲区大小建议保持默认值
_db_flashback_log_write_batch16闪回日志写入批次数建议保持默认值

闪回操作参数

参数名称默认值说明建议值
flashback_drop_retention_time1闪回删除保留时间(天)建议 1-7 天,根据需要调整
_flashback_scn_to_time_tolerance3600SCN 到时间的容差(秒)建议保持默认值
_flashback_max_scn_windows20最大 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_alertFALSE将检查点信息写入告警日志TRUE:启用,FALSE:禁用,建议 FALSE
_trace_files_publicFALSE跟踪文件公共访问TRUE:允许,FALSE:禁止,建议 FALSE

告警日志内容控制

参数名称默认值说明建议值
diagnostic_dest自动诊断目标位置Oracle 11g+ 建议设置,如 /diag
_diag_trace_level1诊断跟踪级别0-5,建议 1-2
_alert_log_threshold1告警日志阈值0-5,建议 1-2
_alert_log_include_xmlFALSE告警日志包含 XML 格式TRUE:包含,FALSE:不包含,建议 FALSE

跟踪日志参数

跟踪日志配置

参数名称默认值说明建议值
max_dump_file_sizeUNLIMITED最大转储文件大小UNLIMITED:无限制,或指定大小,建议 UNLIMITED
sql_traceFALSESQL 跟踪TRUE:启用,FALSE:禁用,建议 FALSE(全局启用会影响性能)
trace_enabledTRUE跟踪启用TRUE:启用,FALSE:禁用,建议 TRUE
timed_statisticsTRUE时间统计TRUE:启用,FALSE:禁用,建议 TRUE 用于性能监控
statistics_levelTYPICAL统计级别BASIC:基本,TYPICAL:典型,ALL:所有,建议 TYPICAL
tracefile_identifier跟踪文件标识符用于标识跟踪文件,如会话 ID 或操作名称

会话跟踪参数

参数名称默认值说明建议值
_session_trace_enableFALSE会话跟踪启用TRUE:启用,FALSE:禁用,建议 FALSE
_trace_events跟踪事件用于启用特定跟踪事件,如 10046 trace name context forever, level 12
_trace_file_name自动跟踪文件名自动生成,包含实例名、进程 ID 等信息
_trace_file_path自动跟踪文件路径默认为 user_dump_destbackground_dump_dest

审计日志参数

审计日志配置

参数名称默认值说明建议值
audit_trailDB审计跟踪DB:数据库,OS:操作系统,NONE:禁用,建议 DB
audit_file_dest自动审计文件目标位置根据实际路径设置,如 /audit
audit_sys_operationsFALSE审计系统操作TRUE:启用,FALSE:禁用,建议启用以审计 SYS 用户操作
audit_file_mode0640审计文件模式文件权限,建议 0640
audit_file_rotate_on_size0审计文件按大小轮换0:禁用,或指定大小(字节),建议 104857600(100MB)
audit_file_rotate_age0审计文件按时间轮换0:禁用,或指定天数,建议 7

统一审计参数

参数名称默认值说明建议值
unified_audit_sga_queue_size1048576统一审计 SGA 队列大小建议根据审计量调整
unified_audit_systemlogFALSE统一审计系统日志TRUE:启用,FALSE:禁用,将审计记录发送到系统日志
unified_audit_purge_interval12统一审计清理间隔(小时)建议 12-24 小时
unified_audit_purge_delay12统一审计清理延迟(小时)建议 12-24 小时

常见问题(FAQ)

Q1: 如何调整重做日志文件大小?

A: 调整重做日志文件大小的步骤如下:

  1. 添加新的重做日志组:

    sql
    ALTER 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;
  2. 切换日志直到旧日志组变为 INACTIVE 状态:

    sql
    ALTER SYSTEM SWITCH LOGFILE;
  3. 删除旧的重做日志组:

    sql
    ALTER DATABASE DROP LOGFILE GROUP 1;
    ALTER DATABASE DROP LOGFILE GROUP 2;
    ALTER DATABASE DROP LOGFILE GROUP 3;
  4. 删除旧的重做日志文件:

    bash
    rm /oradata/orcl/redo01*.log /oradata/orcl/redo02*.log /oradata/orcl/redo03*.log

Q2: 如何启用归档模式?

A: 启用归档模式的步骤如下:

  1. 关闭数据库:

    sql
    SHUTDOWN IMMEDIATE;
  2. 以 mount 模式启动数据库:

    sql
    STARTUP MOUNT;
  3. 启用归档模式:

    sql
    ALTER DATABASE ARCHIVELOG;
  4. 打开数据库:

    sql
    ALTER DATABASE OPEN;
  5. 验证归档模式:

    sql
    SELECT log_mode FROM v$database;

Q3: 如何配置闪回数据库?

A: 配置闪回数据库的步骤如下:

  1. 设置恢复文件目标:

    sql
    ALTER SYSTEM SET db_recovery_file_dest = '+FRA' SCOPE=SPFILE;
    ALTER SYSTEM SET db_recovery_file_dest_size = 50G SCOPE=SPFILE;
  2. 设置闪回保留时间:

    sql
    ALTER SYSTEM SET db_flashback_retention_target = 1440 SCOPE=SPFILE;
  3. 重启数据库到 mount 模式:

    sql
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
  4. 启用闪回数据库:

    sql
    ALTER DATABASE FLASHBACK ON;
  5. 打开数据库:

    sql
    ALTER DATABASE OPEN;
  6. 验证闪回数据库状态:

    sql
    SELECT 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: 可以使用以下方法清理旧的归档日志:

  1. 使用 RMAN 删除归档日志:

    sql
    RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
  2. 使用脚本定期清理:

    bash
    find /archivelog -name "*.dbf" -mtime +7 -delete
  3. 配置归档日志删除策略:

    sql
    ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/archivelog DELETE INPUT';

最佳实践

  1. 合理设置重做日志大小:重做日志文件大小建议在 512MB-2GB 之间,避免过于频繁的日志切换。
  2. 使用多路复用重做日志:每组重做日志至少使用 2 个成员,分别存储在不同的磁盘上,提高可用性。
  3. 启用归档模式:生产环境建议始终启用归档模式,确保数据可恢复性。
  4. 配置远程归档:对于关键业务,建议配置远程归档,提高归档可靠性。
  5. 合理设置闪回保留时间:根据业务需求设置闪回保留时间,平衡恢复需求和存储空间。
  6. 定期清理日志文件:定期清理旧的跟踪文件、告警日志和归档日志,避免占用过多存储空间。
  7. 监控日志相关等待事件:监控 "log file sync"、"log file parallel write" 等等待事件,及时调整日志配置。
  8. 使用 Oracle 推荐的日志格式:使用包含线程号、序列号和重置日志 ID 的归档日志格式,便于管理和恢复。
  9. 定期备份告警日志:定期备份告警日志,便于故障排查和审计。
  10. 配置日志文件自动轮换:对于跟踪文件和审计文件,配置合理的自动轮换策略,避免文件过大。