Oracle体系结构-归档日志文件(Archive Log Files)

核心概念:什么是归档日志文件?

  • 定义: 归档日志文件(Archive Log Files)是在线重做日志文件(Online Redo Log Files)在被覆盖之前的一个完整副本。它们由 Oracle 的后台进程 ARCn(归档进程)自动或按需创建。
  • 来源: 当在线重做日志组被写满(通过 LOG_ARCHIVE_MAX_PROCESSES 设置)或发生日志切换(手动或自动)时,当前活动的在线重做日志文件就变得“非活动”并可被覆盖。在覆盖发生之前,如果数据库处于 ARCHIVELOG 模式,ARCn 进程会将该“非活动”的重做日志文件的内容复制到一个或多个指定的目的地(如磁盘目录、ASM磁盘组、备用数据库等),这个复制品就是归档日志文件。
  • 目的: 其主要目的是永久保存数据库的所有变更历史记录,超越了有限的在线重做日志组所能保存的时间范围。这使得数据库能够:
    1. 恢复到过去的任意时间点(Point-in-Time Recovery, PITR)。
    2. 在数据文件介质损坏(如磁盘故障)后进行完全恢复(Complete Recovery)。
    3. 支持备用数据库(Data Guard)的持续同步。
    4. 支持更高效的增量备份策略(RMAN)。

一、 原理 (Principle)

  1. 重做机制基础:

    • Oracle 使用“写前日志”(Write-Ahead Logging, WAL)机制保证数据的一致性和可恢复性。
    • 任何对数据库的修改(DML, DDL, DCL)在写入数据文件之前,首先会生成对应的“重做记录”(Redo Record),并写入内存中的 重做日志缓冲区(Redo Log Buffer)
    • LGWR(Log Writer)进程负责在特定条件下(提交时、日志缓冲区满1/3、每3秒、DBWn写脏块前等)将重做日志缓冲区的内容刷新到在线重做日志文件(Online Redo Log Files) 中。
    • 在线重做日志文件是循环使用的:通常由多个组(至少2组)构成,当一个组写满后,LGWR 切换到下一个组。这个切换动作称为日志切换(Log Switch)
  2. ARCHIVELOG vs. NOARCHIVELOG 模式:

    • NOARCHIVELOG 模式: 当发生日志切换时,旧的、非活动的在线重做日志文件可以被 LGWR 直接覆盖重用。不生成归档日志。数据库只能恢复到上一次完整备份(冷备份或一致的热备份)的时间点。无法进行 PITR 或持续同步备用数据库。仅适用于非关键、可丢失数据的测试或开发环境。
    • ARCHIVELOG 模式: 当发生日志切换时,数据库不会立即覆盖刚变为非活动的在线重做日志文件。它会触发 ARCn 进程(如果配置了多个归档进程)将这个文件的内容复制(归档)到一个或多个预设的目的地。只有在该文件被成功归档后,LGWR 才能再次覆盖使用这个日志组。这确保了重做历史的连续性得以永久保存。
  3. 归档进程 (ARCn):

    • 负责执行实际的归档操作。可以配置多个归档进程 (ARC0, ARC1, ... ARC9, ARCa, ... ARCt) 以提高归档吞吐量和并行度(通过 LOG_ARCHIVE_MAX_PROCESSES 参数)。
    • 监听日志切换事件。
    • 识别需要归档的非活动在线重做日志文件。
    • 读取该文件的内容。
    • 将内容写入到配置的归档目标(LOG_ARCHIVE_DEST_n)。
    • 在控制文件和相关的数据字典视图(如 V$ARCHIVED_LOG)中记录归档日志文件的详细信息(序列号、线程号、时间戳、大小、完成时间、目标位置、文件名等)。
    • 标记该在线重做日志文件为“已归档”,允许 LGWR 后续覆盖它。
  4. 归档日志序列 (Sequence):

    • 每个成功生成的归档日志文件都会被赋予一个唯一的、单调递增的序列号
    • 序列号在数据库实例的生命周期内连续增长,即使数据库重启也不会重置(不同于在线重做日志的循环)。
    • 序列号是恢复操作的关键标识符,用于按顺序应用归档日志。V$LOG_HISTORYV$ARCHIVED_LOG 视图记录了序列号信息。
  5. 时间线 (Timeline):

    • 在 Data Guard 环境或执行了不完全恢复(如 OPEN RESETLOGS)后,数据库会开启一个新的时间线(Timeline)。
    • 归档日志文件名或内部信息会包含时间线标识符(通常是一个数字后缀)。
    • 时间线确保了不同历史分支(例如主库时间线1,备库故障切换后成为新主库开启时间线2)的归档日志不会混淆,恢复时能精确找到正确分支上的日志。

二、 特性 (Characteristics)

  1. 连续性 (Continuity): 归档日志序列必须是连续的。缺失任何一个序列号的归档日志都会导致后续的恢复操作无法进行(直到缺失点)。V$ARCHIVED_LOG 视图的 SEQUENCE#THREAD# 列可用于验证连续性。
  2. 只读性 (Read-Only): 一旦生成,归档日志文件的内容就固定不变,具有只读属性。
  3. 命名规范 (Naming Convention): 文件名通常遵循特定格式(可通过 LOG_ARCHIVE_FORMAT 参数自定义),默认格式通常包含:
    • %t: 线程号(Thread number),在RAC环境中重要。
    • %s: 日志序列号(Log sequence number)。
    • %r: 重置日志ID(Resetlogs ID),在 OPEN RESETLOGS 后改变,用于区分时间线(在文件名中隐含时间线信息,或直接使用 %T 表示时间线)。
    • 例如:LOG_ARCHIVE_FORMAT = 'arch_%t_%s_%r.arc' 可能生成 arch_1_100_1234567890.arc
  4. 目的地 (Destinations): 归档日志可以写入多个本地或远程目的地,提供冗余和容灾能力。使用 LOG_ARCHIVE_DEST_n (n=1..31) 参数配置(取代旧的 LOG_ARCHIVE_DESTLOG_ARCHIVE_DUPLEX_DEST)。
    • 本地磁盘目录 (LOCATION=)。
    • ASM 磁盘组 (LOCATION=+DISKGROUP/...)。
    • 远程备用数据库 (SERVICE=)。
    • 可以设置状态 (STATUS=ENABLE|DEFER|ALTERNATE)、有效性 (VALID_FOR=...)、是否强制 (MANDATORY|OPTIONAL) 等属性。
  5. 压缩 (Compression): 从 Oracle 10g R2 开始,支持在归档时对日志进行压缩(通过 ALTER SYSTEM SET LOG_ARCHIVE_COMPRESSION=ENABLE),显著节省存储空间,但会增加少量 CPU 开销。压缩算法可通过 LOG_ARCHIVE_COMPRESSION_ALGORITHM 选择。
  6. 加密 (Encryption): 如果数据库配置了透明数据加密(TDE),归档日志可以使用相同的加密密钥进行加密(通过 ALTER SYSTEM SET LOG_ARCHIVE_ENCRYPTION=ENABLE),增强静态数据的安全性。
  7. 分片 (Splitting): 单个非常大的在线重做日志文件归档时,可以自动分割成多个更小的归档日志文件片段(通过设置 LOG_ARCHIVE_MIN_SUCCEED_DESTLOG_ARCHIVE_DEST_nMAX_FAILURE 属性,并结合 LOG_ARCHIVE_FORMAT),便于传输和管理。
  8. 延迟应用 (Deferred Apply - Data Guard): 在物理备用数据库上,可以配置延迟应用归档日志,用于在逻辑错误发生后有时间进行补救。
  9. 12c+ 多租户 (Multitenant): 在 CDB 环境中,归档日志文件包含整个 CDB 和所有 PDB 的重做信息。V$ARCHIVED_LOG 视图在 CDB$ROOT 中显示所有容器的归档日志信息,在 PDB 中仅显示与该 PDB 相关的信息(通过 CON_ID 列区分)。

三、 作用 (Role & Importance)

  1. 数据恢复的基石:

    • 完全恢复 (Complete Recovery): 当发生数据文件介质损坏(如磁盘坏道)时,可以使用最近的全量备份(数据文件备份)结合从备份时间点之后生成的所有归档日志文件和应用在线重做日志中的当前更改,将数据库恢复到故障前的状态,实现零数据丢失(前提是归档日志和在线日志完整)。RMAN 自动管理这个过程。
    • 时间点恢复 (Point-in-Time Recovery, PITR): 可以精确地将数据库(整个数据库、特定表空间或特定数据文件)恢复到过去的任意一个时间点(SCN 或时间戳)。这对于:
      • 撤销用户误操作(如 DROP TABLE, TRUNCATE TABLE, 错误的大批量更新)。
      • 撤销逻辑数据损坏。
      • 满足法规要求(恢复到审计点)。
      • 创建测试环境快照。PITR 完全依赖归档日志文件来“回放”或“前滚”到指定的精确时间点。
    • 不完全恢复 (Incomplete Recovery): 当无法获得完整的归档日志序列(如丢失了某个日志文件)或需要故意停止在某个特定点(如 PITR)时进行的恢复。恢复完成后需要使用 OPEN RESETLOGS 打开数据库,这会重置日志序列并开始一个新的时间线。
  2. 高可用性与容灾 (Data Guard):

    • 归档日志文件是 Oracle Data Guard 技术的生命线。在主库(Primary Database)生成的归档日志文件会被传输(Ship)到一个或多个物理备用数据库(Physical Standby)或逻辑备用数据库(Logical Standby)。
    • 在物理备库上,RFS(Remote File Server)进程接收归档日志,MRP(Managed Recovery Process)进程应用这些日志,使备库与主库保持物理块级别的一致。物理备库可以随时切换(Switchover)或故障转移(Failover)为主库。
    • 在逻辑备库上,LSP(Logical Standby Process)进程解析归档日志中的 SQL 语句并在备库上执行,使备库保持逻辑一致。逻辑备库可以在应用日志的同时保持只读打开状态用于报表查询。
    • 归档日志的连续、可靠传输和应用是实现数据零丢失(Zero Data Loss)保护(如 SYNC / FASTSYNC 传输模式与实时应用)和最小化数据丢失(ASYNC 模式)的关键。
  3. 高效的备份策略 (RMAN):

    • 增量备份的基础: RMAN 的增量备份(Incremental Backups)依赖于归档日志。增量备份只捕获自上次备份(全量或增量)以来发生变化的数据块。为了将增量备份应用到基础备份上以创建一个新的完整映像副本(Image Copy),或者在恢复时应用增量备份,RMAN 需要归档日志文件来确保数据块的一致性(解决“模糊块”问题)。
    • 增量更新备份: 结合增量备份和归档日志应用,可以实现高效的“增量更新”备份策略,快速创建接近当前的完整数据文件副本。
    • 备份归档日志: RMAN 可以备份归档日志文件本身,并在备份后(可选)删除已备份的归档日志文件以释放空间。这是备份策略的重要组成部分,确保拥有恢复所需的完整日志链。
  4. 日志挖掘 (LogMiner):

    • 使用 DBMS_LOGMNR 包可以解析在线或归档日志文件的内容,从中提取原始的 SQL 语句(DDL 和 DML)和事务信息。
    • 用于:
      • 审计用户操作。
      • 诊断问题,分析历史变更。
      • 执行事务级的回滚(Undo SQL)。
      • 逻辑备用数据库的核心技术。
  5. 流复制 (Streams): (注:Oracle Streams 在 12c 后已过时,被 GoldenGate 取代,但其原理类似) 归档日志是捕获数据库变更(Capture Process)的主要来源之一,用于将变更传播到其他数据库。

四、 故障恢复 (Troubleshooting & Recovery from Issues)

归档日志相关的问题会严重影响数据库的可用性、恢复能力和 Data Guard 的同步。以下是常见故障及其恢复方法:

  1. 归档目标空间不足 (ARCn 进程挂起):

    • 现象: ARCn 进程无法将日志写入目标目录(空间满),导致归档失败。数据库挂起所有产生重做的操作(因为 LGWR 无法覆盖未归档的在线日志),表现为应用停滞、用户会话挂起。告警日志 (alert_<SID>.log) 中会有明确错误信息 (ORA-00257, ORA-16038, ARCn: Failed to archive log...)。
    • 恢复:
      • 紧急释放空间: 这是最快的方法。连接到数据库主机,清理归档目标目录中旧的、已备份过且不再需要的归档日志文件 (rm 或使用 OS 命令)。切勿删除尚未归档的在线日志或最新的归档日志!
      • 增加空间: 如果可能,扩充归档目标磁盘空间(加磁盘、扩文件系统、挂载新目录)。
      • 修改/增加目标: 临时添加或修改 LOG_ARCHIVE_DEST_n 参数指向一个有足够空间的位置 (ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/new/large/path'),并启用它。可能需要重启实例或让参数生效。
      • 强制日志切换 (慎用): 在空间释放后,如果 ARCn 没有自动恢复归档,可以尝试手动切换日志 (ALTER SYSTEM SWITCH LOGFILE;) 来重新触发归档进程。
    • 预防: 实施监控告警(空间使用率)、定期删除已备份的旧归档日志(通过 RMAN DELETE ARCHIVELOG ... 或脚本)、合理规划归档空间大小。
  2. 归档日志文件损坏或丢失:

    • 现象: 在恢复操作(RMAN 恢复、Data Guard 应用)或 LogMiner 过程中,尝试访问某个归档日志文件时失败,报错如 ORA-00312, ORA-00313, ORA-01547, ORA-19505, ORA-27037 等,指示文件不存在、不可读、头部损坏、校验和错误等。
    • 影响: 灾难性。丢失的归档日志序列之后的恢复操作无法进行。如果该日志是恢复链中必需的,则:
      • 完全恢复只能恢复到丢失日志序列号之前的最新 SCN。
      • PITR 只能恢复到小于等于该 SCN 的时间点。
      • Data Guard 备库会停止应用并报告 GAP。
    • 恢复:
      • 从备份恢复: 最佳方案。 如果该损坏/丢失的归档日志文件之前已经被 RMAN 备份过,使用 RMAN 将其恢复到原始位置或新位置: RESTORE ARCHIVELOG SEQUENCE <seq>;RESTORE ARCHIVELOG FROM TIME '...';。然后继续正常的恢复操作。
      • Data Guard 主库重传 (仅限物理备库 GAP): 如果是在 Data Guard 环境中发现备库缺失某个日志(GAP),主库可能还保留着该归档日志。可以使用 ALTER DATABASE REGISTER ... LOGFILE 手动注册,或用 FAL_CLIENT/FAL_SERVER 机制(较旧)或 RECOVER ... FROM SERVICE (11g+) 自动/手动补缺口。主库缺失则无法补。
      • 从冗余目标恢复: 如果配置了多个归档目标 (LOG_ARCHIVE_DEST_n) 且该文件在其他目标上存在且完好,可以将其复制到缺失/损坏的位置(确保文件名和权限正确)。
      • 重置日志 (OPEN RESETLOGS) - 最后手段: 如果丢失的归档日志是恢复链中不可或缺的(无法从备份或其他地方获取),且必须立即打开数据库,则只能进行不完全恢复到丢失日志之前的 SCN (RECOVER DATABASE UNTIL CHANGE <scn>;),然后强制用 ALTER DATABASE OPEN RESETLOGS; 打开数据库。这会丢弃丢失日志之后的所有数据变更! 这是一个破坏性操作,仅在万不得已时使用。务必在操作前做好全库备份。
    • 预防: 多重冗余! 配置至少两个本地或远程归档目标(如本地磁盘+ASM,或本地+远程备用库)。定期备份归档日志并验证备份。使用 RMAN 验证归档日志的连续性 (VALIDATE ARCHIVELOG ALL;) 和可恢复性 (RESTORE ... VALIDATE ARCHIVELOG ...;)。启用归档日志文件的校验和 (DB_BLOCK_CHECKSUM=TYPICAL/FULL,对写入日志缓冲区的块也有效)。
  3. 归档进程 (ARCn) 故障:

    • 现象: 归档操作停止。告警日志中有 ARCn 进程异常终止的错误堆栈。在线重做日志无法归档,最终导致数据库活动挂起(同空间不足)。
    • 原因: 可能由于 O/S 问题(信号、资源限制)、Oracle Bug、内存冲突、写入目标权限问题、网络问题(远程目标)等。
    • 恢复:
      • 查看告警日志: 仔细分析错误信息,确定根本原因。
      • 检查目标: 确认归档目标目录存在、有足够空间、Oracle 软件所有者(如 oracle)有读写权限、网络可达(远程目标)。
      • 尝试重启 ARCn 有时进程崩溃后会自动重启。如果没有,可以尝试手动重启所有归档进程:ALTER SYSTEM ARCHIVE LOG STOP; (停止所有归档) 然后 ALTER SYSTEM ARCHIVE LOG START; (启动所有归档)。
      • 重启数据库实例: 如果重启 ARCn 无效,尝试重启数据库实例 (SHUTDOWN IMMEDIATE; STARTUP;)。
      • 应用补丁/解决 Bug: 如果告警日志指向已知 Bug,应用相应的数据库补丁集或补丁。
      • 检查 O/S 资源: 确保没有 O/S 级别的资源限制(如进程数、文件描述符)阻止 ARCn 运行。
    • 预防: 保持数据库补丁更新。监控归档进程状态 (V$ARCHIVE_PROCESSES)。确保目标配置正确且稳定。
  4. 归档日志配置错误:

    • 现象: 无法切换到 ARCHIVELOG 模式、归档失败、文件名冲突、目标不可访问等。
    • 常见错误:
      • LOG_ARCHIVE_DEST_n 路径不存在或权限不足。
      • LOG_ARCHIVE_FORMAT 设置不当导致文件名冲突或不符合 O/S 规范。
      • 参数设置冲突(如同时使用 LOG_ARCHIVE_DESTLOG_ARCHIVE_DEST_n)。
      • DB_RECOVERY_FILE_DEST (闪回恢复区) 空间不足且 LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
    • 恢复:
      • 检查参数: SHOW PARAMETER LOG_ARCHIVE_%
      • 检查目标: 验证目录存在、权限正确、空间足够。
      • 修正参数: 使用 ALTER SYSTEM SET ... SCOPE=SPFILE; 修正错误的参数设置(通常需要重启生效)。
      • 清理闪回恢复区: 如果使用 FRA 作为归档目标且空间不足,使用 RMAN DELETE OBSOLETE;DELETE ARCHIVELOG ALL BACKED UP ... TIMES TO DEVICE TYPE ...; 清理旧备份和归档日志,或者扩大 FRA 大小 (ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=...G;)。
  5. Data Guard 归档日志传输/应用延迟或中断 (GAP):

    • 现象: 备库与主库的同步延迟增大 (V$DATAGUARD_STATS, V$ARCHIVE_DEST_STATUS),甚至完全停止应用 (MRP0/LSP 进程停止,V$MANAGED_STANDBY 显示错误)。
    • 原因: 网络中断/拥塞、主库归档慢、备库应用慢、归档日志损坏/丢失(见上)、主备版本/参数不兼容、归档进程问题、存储性能瓶颈、资源竞争等。
    • 恢复/诊断:
      • 检查告警日志: 主库和备库的告警日志是首要信息来源。
      • 检查传输状态: 在主库查 V$ARCHIVE_DEST_STATUS 看目标状态 (STATUS, ERROR)、传输延迟 (TRANSPORT_LAG)、最后成功序列 (LAST_SEQ/NEXT_SEQ)。
      • 检查应用状态: 在备库查 V$DATAGUARD_STATS (apply lag), V$MANAGED_STANDBY (PROCESS, STATUS, SEQUENCE#, ERROR)。
      • 检查网络: 确保主备之间网络畅通、防火墙允许相关端口(通常是 1521 或自定义监听端口)。
      • 解决 GAP: 如前所述,尝试自动或手动补缺口 (RECOVER ... FROM SERVICE, ALTER DATABASE REGISTER LOGFILE ...)。如果 GAP 太大或无法自动解决,可能需要重建备库。
      • 优化性能: 分析主库归档、网络传输、备库应用的瓶颈。可能需要调整 LOG_ARCHIVE_MAX_PROCESSES, 网络带宽、备库 PARALLEL 相关参数、I/O 子系统等。
    • 预防: 网络冗余与监控、平衡主备负载、监控同步延迟、确保归档和传输稳定高效。

五、 管理与最佳实践 (Management & Best Practices)

  1. 监控:

    • 告警日志 (alert_<SID>.log): 首要监控点,记录所有归档相关的重要事件和错误。
    • 视图:
      • V$ARCHIVED_LOG: 已生成的归档日志详细信息(序列号、时间戳、大小、目标、是否已删除、备份状态等)。
      • V$LOG_HISTORY: 日志切换历史记录。
      • V$ARCHIVE_DEST_STATUS: 归档目标状态、错误信息、延迟情况。
      • V$ARCHIVE_PROCESSES: 归档进程状态 (STATUS: BUSY/STOPPED)。
      • V$DATAGUARD_STATS (备库): 主备同步延迟。
      • V$MANAGED_STANDBY (备库): MRP/LSP 进程状态。
      • V$RECOVERY_AREA_USAGE: 闪回恢复区空间使用详情(如果归档到 FRA)。
    • 工具: Enterprise Manager (EM) Cloud Control, Oracle Grid Control, 自定义脚本。
  2. 空间管理:

    • 规划大小: 根据重做生成速率、备份频率和保留策略(需要保留多少天的归档日志用于恢复和PITR)计算所需空间。预留足够缓冲(至少20-30%)。
    • 定期清理: 绝对不要只在操作系统层删除归档日志!必须使用 RMAN 进行删除,因为 RMAN 会同步更新控制文件和恢复目录中的元数据。
      • DELETE ARCHIVELOG ALL; - 删除所有归档日志(极其危险!通常不用)。
      • DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7'; - 删除7天前的归档日志。
      • DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE DISK; - 删除所有已备份到磁盘至少2次的归档日志。
      • DELETE OBSOLETE; - 根据配置的保留策略 (CONFIGURE RETENTION POLICY ...) 删除过期的备份和归档日志。推荐方式。
    • 监控告警: 设置空间使用率阈值告警(如 >80%)。
  3. 备份:

    • 必须备份归档日志! 这是恢复能力的关键环节。
    • 在 RMAN 备份脚本中,通常包含 BACKUP ARCHIVELOG ALL DELETE ALL INPUT;BACKUP ARCHIVELOG ALL DELETE INPUT;。前者备份所有归档日志并删除所有输入文件(无论备份到哪里),后者只删除成功备份到指定设备类型的输入文件(更安全)。
    • 确保归档日志备份和数据库备份(数据文件、控制文件)一起保留,以满足恢复时间目标(RTO)和恢复点目标(RPO)。
  4. 配置最佳实践:

    • 始终为生产数据库使用 ARCHIVELOG 模式。
    • 配置多重归档目标 (LOG_ARCHIVE_DEST_n) 实现冗余(至少本地+远程或本地+本地不同磁盘)。
    • 优先使用 LOG_ARCHIVE_DEST_n (n=1..31) 而非过时的 LOG_ARCHIVE_DEST/LOG_ARCHIVE_DUPLEX_DEST
    • 合理设置 LOG_ARCHIVE_MIN_SUCCEED_DEST(最小成功归档目标数,通常设为1,关键系统可设2)。
    • 考虑启用归档压缩 (LOG_ARCHIVE_COMPRESSION) 节省空间(评估CPU影响)。
    • 如果使用 TDE,考虑启用归档加密 (LOG_ARCHIVE_ENCRYPTION)。
    • 设置清晰合理的 RMAN 保留策略 (CONFIGURE RETENTION POLICY ...) 并定期执行 DELETE OBSOLETE
    • 定期验证备份(包括归档日志)的可恢复性 (RESTORE ... VALIDATE)。
  5. RAC 环境:

    • 每个实例有自己的线程(THREAD#)和在线重做日志组。
    • 归档日志文件包含线程号 (%t),每个实例的 ARCn 进程负责归档本实例的日志。
    • 归档目标通常配置在共享存储(如 ASM 或集群文件系统)上,所有实例都能访问。远程目标配置相同。
    • 恢复时需要所有实例的归档日志序列(按线程和序列号排序应用)。

总结:

归档日志文件是 Oracle 数据库实现数据持久性、高可用性、灾难恢复和灵活恢复能力的核心组件。理解其原理(基于重做机制和 ARCHIVELOG 模式)、特性(连续性、只读性、命名、目的地、压缩加密)、作用(完全恢复/PITR/Data Guard/RMAN备份/LogMiner)以及如何有效管理、监控和应对故障(空间不足、日志损坏丢失、进程故障、配置错误、Data Guard GAP),对于任何负责 Oracle 生产环境稳定运行的 DBA 来说都至关重要。严格遵守最佳实践(启用 ARCHIVELOG、多重冗余目标、定期备份和清理、有效监控)是保障数据库韧性和满足业务连续性要求的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/99218.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/99218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GoogLeNet实战:用PyTorch实现经典Inception模块

配套笔记&讲解视频&#xff0c;点击文末名片获取研究背景&#xff08;Background&#xff09; 1.1 领域现状&#xff08;大环境与挑战&#xff09; 想象一下&#xff0c;你和朋友们在看一大堆照片——猫、狗、汽车、蛋糕&#xff0c;大家要把每张照片贴上标签。几年前&…

【开题答辩全过程】以 “旧书驿站”微信小程序的设计与开发为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

【办公类-112-01】20250912家园每周沟通指导(Deepseek扩写完善+Python模拟点击鼠标自动发送给家长微信)

背景需求 孩子刚上小班,家长比较关心孩子情况(情绪、社交、吃饭等) 所以我每周五晚上和家长沟通一下孩子的情况。 操作流程 第一周(9月5日)是“适应周”,我添加了所有孩子的一位家长的微信号 23份全部是手打,足足写了4个小时。第一周案例多,所以写了很多,措辞酝酿后…

Spark专题-第一部分:Spark 核心概述(1)-Spark 是什么?

众所周知&#xff0c;教学文档总该以理论部分作为开篇&#xff0c;于是我们这篇Spark专题同样会以一堆理论和专有名词开始&#xff0c;笔者会尽可能的让专业词汇通俗易懂 第一部分&#xff1a;Spark 核心概述 Spark 是什么&#xff1f; 1. 大数据时代的"超级赛车"…

从零到一上手 Protocol Buffers用 C# 打造可演进的通讯录

一、为什么是 Protobuf&#xff08;而不是 XML/自定义字符串/.NET 二进制序列化&#xff09; 在需要把结构化对象持久化或跨进程/跨语言传输时&#xff0c;常见方案各有痛点&#xff1a; BinaryFormatter 等 .NET 二进制序列化&#xff1a;对类型签名与版本极其脆弱、体积偏大&…

计算机网络(三)网络层

三、网络层网络层是五层模型中的第三层&#xff0c;位于数据链路层和传输层之间。它的核心任务是实现数据包在不同网络之间&#xff08;跨网络&#xff09;的逻辑传输。网络层的数据传输单位是数据报&#xff08;Datagram&#xff09;或数据包&#xff08;Packet&#xff09;。…

互联网大厂Java面试实录:从基础到微服务全栈技术答疑

互联网大厂Java面试实录&#xff1a;从基础到微服务全栈技术答疑 本文以电商场景为背景&#xff0c;展现一场互联网大厂Java开发职位的面试过程。严肃的面试官与搞笑的水货程序员谢飞机展开三轮技术问答&#xff0c;涵盖Java SE、Spring Boot、数据库、微服务、安全以及CI/CD等…

StringBuilder 深度解析:数据结构与扩容机制的底层细节

文章目录 前言 一、数据结构&#xff1a;不止是简单的字符数组 1. 核心成员变量&#xff08;定义在 AbstractStringBuilder 中&#xff09; 2. 构造器与初始容量 二、扩容机制&#xff1a;从 "不够用" 到 "换大容器" 的全过程 步骤 1&#xff1a;计算…

Elasticsearch面试精讲 Day 17:查询性能调优实践

【Elasticsearch面试精讲 Day 17】查询性能调优实践 在“Elasticsearch面试精讲”系列的第17天&#xff0c;我们聚焦于查询性能调优实践。作为全文检索与数据分析的核心引擎&#xff0c;Elasticsearch的查询性能直接影响用户体验和系统吞吐能力。在高并发、大数据量场景下&…

WPF 数据绑定模式详解(TwoWay、OneWay、OneTime、OneWayToSource、Default)

在WPF中&#xff0c;数据绑定模式&#xff08;Binding Mode&#xff09;用于指定数据流的方向。常见的模式有TwoWay、OneWay、OneTime、OneWayToSource和Default。TwoWay&#xff08;双向绑定&#xff09;&#xff1a;数据从源&#xff08;通常是ViewModel或数据上下文&#xf…

使用 NVIDIA Dynamo 部署 PD 分离推理服务

1 Dynamo 介绍 NVIDIA Dynamo 是一个开源的模块化推理框架&#xff0c;用于在分布式环境上实现生成式 AI 模型的服务化部署。Dynamo 通过动态资源调度、智能路由、内存优化与高速数据传输&#xff0c;无缝扩展大型 GPU 集群之间的推理工作负载。 Dynamo 采用推理引擎无关的设…

答题卡识别改分项目

目录 核心思路 分步实现与代码解析 1. 环境准备与工具函数定义 2. 图片预处理 3. 轮廓提取与筛选 3. 轮廓提取与筛选 4. 透视变换&#xff08;矫正倾斜答题卡&#xff09; 5. 阈值处理&#xff08;突出填涂区域&#xff09; 6. 提取选项圆圈轮廓 7. 选项轮廓排序&…

Python爬虫实战:研究Pandas,构建新浪网股票数据采集和分析系统

1. 系统概述 股票数据分析系统旨在通过自动化手段获取市场数据,进行深度分析,辅助投资决策。本系统主要包含以下核心模块: 数据爬取模块:从新浪财经获取股票列表、基本信息及历史交易数据 数据处理模块:清洗原始数据,处理缺失值与异常值,计算技术指标 分析可视化模块:…

【C++STL】list的详细用法和底层实现

&#x1f31f;个人主页&#xff1a;第七序章 &#x1f308;专栏系列&#xff1a;C&#xff0b;&#xff0b; 目录 ❄️前言&#xff1a; &#x1f308;一&#xff1a;介绍 &#x1f308;二&#xff1a;list的创建 ☀️基本框架 &#x1f319;节点类 &#x1f319;构造函…

AI大模型开发(多模态+提示词)

接着之前的例子&#xff0c;继续测试模型对话&#xff0c;今天主要测试多模态加上系统提示词。 一.多模态 多模态方法&#xff0c;主要添加了对图片的测试。 public String chatWithMessage(UserMessage userMessage){ChatResponse chatResponse qwenChatModel.chat(userMess…

Qt程序单独运行报错问题

Qt程序单独运行报错问题介绍问题原因分析解决方案&#xff08;从最佳实践到临时方法&#xff09;方法一&#xff1a;使用 windeployqt 工具&#xff08;最推荐、最规范&#xff09;方法二&#xff1a;临时修改系统 PATH&#xff08;适合开发调试&#xff09;方法三&#xff1a;…

Flask学习笔记(二)--路由和变量

一、路由Flask支持两种路由1、使用route()装饰器将URL绑定到函数app.route(/hello)def hello_world():return hello world2、使用应用程序对象的add_url_rule()函数def hello_world():return hello worldapp.add_url_rule(/, hello, hello_world)二、变量规则Flask开发中&#…

Skywalking告警配置+简易邮件告警应用配置(保姆级)

Skywalking告警配置简易邮件告警应用配置前言&#xff1a; 前文&#xff1a;SkyWalking Elasticsearch8 容器化部署指南&#xff1a;国内镜像加速与生产级调优_skywalkinges-CSDN博客 ​ SKywalking Agent配置Oracle监控插件安装指南-CSDN博客 Skywalking版本&#xff1a;V10.…

无人机如何实现图传:从原理到实战的全景解读

无人机图传的工作不是简单地把镜头的数据直接“丢”到一个屏幕上&#xff0c;而是一个由编码、传输、解码三段组成的系统。首先是视频编码&#xff1a;摄像头采集的原始画面通常需要经过编解码器压缩&#xff0c;常见标准包括H.264、H.265和VP9等。压缩的目的是减少数据量&…

AS32S601在轨重构(OTA)方案的优化与分析

摘要在轨重构&#xff08;OTA&#xff09;技术因其在航天、工业控制、物联网等领域的高可靠性和持续服务需求而备受关注。本文以国科安芯推出的AS32S601芯片为研究对象&#xff0c;深入分析其OTA方案的设计原理、技术细节及优化策略&#xff0c;并结合芯片的硬件特性&#xff0…