oracle归档日志
oracle归档日志
·
一、概述
- 归档日志:非活动的重做日志,用来保存所有的重做历史记录。
- 什么时候写归档日志:当数据库处于archivelog模式并重做日志切换的时候,后台进程ARCH会启动将重做日志的内容完整的保存到归档日志中。
- 日志操作模式:NOARCHIVELOG和ARCHIVELOG模式
- NOARCHIVELOG模式不保留重做日志记录的历史,只能保护例程失败不能保护介质失败。
- 特点:
- LGWR进程写日志的时候覆盖原先的重做日志内容
- 如果日志内容被覆盖,只能恢复到过去完整备份的点
- 执行数据库备份的时候,必须关闭数据库
- 执行备份的时候,必须备份所有数据文件和控制文件
- 特点:
- ARCHIVELOG模式保留重做日志记录的历史,不仅能保护例程失败而且可以保护介质失败。
- 特点:
- 出现数据文件丢失损坏,可以恢复,防止数据丢失。
- 数据库处于open状态的时候,也可以备份数据库
- 出现数据文件损坏的时候可以在Open状态下进行恢复
- 执行数据库恢复的时候,可以进行不完整恢复,基于(SCN,时间点,日志序列号)等
- 特点:
- NOARCHIVELOG模式不保留重做日志记录的历史,只能保护例程失败不能保护介质失败。
- 选择:如果数据库用于生产环境并且数据变化频繁应该采用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.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)