一、概述

  • 归档日志:非活动的重做日志,用来保存所有的重做历史记录。
  • 什么时候写归档日志:当数据库处于archivelog模式并重做日志切换的时候,后台进程ARCH会启动将重做日志的内容完整的保存到归档日志中。
  • 日志操作模式NOARCHIVELOGARCHIVELOG模式
    • NOARCHIVELOG模式不保留重做日志记录的历史,只能保护例程失败不能保护介质失败。
      • 特点:
        1. LGWR进程写日志的时候覆盖原先的重做日志内容
        2. 如果日志内容被覆盖,只能恢复到过去完整备份的点
        3. 执行数据库备份的时候,必须关闭数据库
        4. 执行备份的时候,必须备份所有数据文件和控制文件
    • ARCHIVELOG模式保留重做日志记录的历史,不仅能保护例程失败而且可以保护介质失败。
      • 特点:
        1. 出现数据文件丢失损坏,可以恢复,防止数据丢失。
        2. 数据库处于open状态的时候,也可以备份数据库
        3. 出现数据文件损坏的时候可以在Open状态下进行恢复
        4. 执行数据库恢复的时候,可以进行不完整恢复,基于(SCN,时间点,日志序列号)等
  • 选择:如果数据库用于生产环境并且数据变化频繁应该采用ARCHIVELOG模式

二、归档模式信息查看

日志模式查看

SQL> SELECT LOG_MODE FROM V$DATABASE;

LOG_MODE
------------
ARCHIVELOG

SQL> archive log list;
Database log mode              Archive Mode    --数据库日志模式    归档模式
Automatic archival             Enabled         --自动存档         启用
Archive destination            USE_DB_RECOVERY_FILE_DEST --存档位置
Oldest online log sequence     1125  --最早的联机日志序列   1125
Next log sequence to archive   1127  --下一个要归档的日志序列  1127
Current log sequence           1127  --当前日志序列   1127

归档日志信息

SQL> col name format a90;
SQL> set linesize 400;
SQL> select name,sequence#,first_change# from v$archived_log where name is not null;

NAME                                                                        SEQUENCE# FIRST_CHANGE#
--------------------------------------------------------------------------- --------- -------------
D:\APP\RECOVERY_AREA\ORCL\ARCHIVELOG\2022_09_29\O1_MF_1_1126_KMCBDJQX_.ARC   1126      47977541
SQL> show parameter db_recovery;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      D:\zjcOPT\app\zjc\recovery_area
db_recovery_file_dest_size           big integer 20G
--归档日志空间占用
SELECT T.NAME,
       T.SPACE_LIMIT/1024/1024/1024||'G' SPACE_LIMIT,
       ROUND(T.SPACE_USED/1024/1024,2)||'M' SPACE_USED,
       T.SPACE_RECLAIMABLE,
       T.NUMBER_OF_FILES,
       T.CON_ID
  FROM V$RECOVERY_FILE_DEST T;
NAME	                        SPACE_LIMIT	SPACE_USED	SPACE_RECLAIMABLE	NUMBER_OF_FILES	CON_ID
D:\zjcOPT\app\zjc\recovery_area	20G	        154.35M	    0	                2	            0

三、归档信息设置(参考链接)

  • 设置为归档模式(mount状态下)
    开启归档
    ALTER DATABASE ARCHIVELOG ;
    关闭归档
    alter database noarchivelog;
    手动归档
--将日志模式切换为手工归档模式
ALTER DATABASE ARCHIVELOG MANUAL;    
--打开数据库
ALTER DATABASE OPEN;
--对当前的日志进行归档(建议在mount阶段完成)
ALTER SYSTEM ARCHIVE LOG CURRENT;
--对所有的日志进行归档
ALTER SYSTEM ARCHIVE LOG ALL;
  • 更改归档日志空间大小
--更改归档日志空间大小和路径(重启生效)
alter system set db_recovery_file_dest_size = 10G;
alter system set db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' scope=spfile;
  • 设置归档日志命名格式
    设置LOG_ARCHIVE_FORMAT参数,Unix下的缺省设置为LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
alter system set log_archive_format = 'arch_%t_%s_%r.arc';

%s: 日志序列号:
%S: 日志序列号(带有前导)
%t: 重做线程编号.
%T: 重做线程编号(带有前导)
%a: 活动ID号
%d: 数据库ID号
%r: RESETLOGS的ID值.

四、归档日志删除

C:\Users\zjc>rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Fri Sep 30 15:40:45 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1632746994)

RMAN> crosscheck archivelog all;  (列出归档日志信息)

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=872 device type=DISK
validation succeeded for archived log
archived log file name=D:\ZJCOPT\APP\ZJC\RECOVERY_AREA\ORCL\ARCHIVELOG\2022_09_29\O1_MF_1_1126_KMCBDJQX_.ARC RECID=1124 STAMP=1116714005
Crosschecked 1 objects

RMAN> delete archivelog until time 'sysdate-3'; (删除3天前的日志文件)

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=872 device type=DISK
specification does not match any archived log in the repository

RMAN>

五、强制日志切换(参考链接)

为了减少故障时数据损失,我们可以设置ARCHIVE_LAG_TARGET参数,强制进行日志切换。
ARCHIVE_LAG_TARGET参数可以设置一个时间,通过时间限制,指定数据库强制进行Log Switch,进行归档。
ARCHIVE_LAG_TARGET的缺省值是0,即为不启用该参数。该参数合理的取值范围在60 ~ 7200之间。
通常大于7200和小于1800不被推荐,低于30分钟的切换时间可能导致性能问题。
设置archive_lag_target参数

SQL> show parameter archive_lag;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0

SQL> alter system set archive_lag_target=1800;

System altered.
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐