Oracle 的归档日志文件

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle 的归档日志文件

1、概念

归档是将联机重做日志以文件的形式保存到硬盘,联机日志归档的前提条件是数据库要处于归档模式。当数据库处于 ARCHIVELOG 模式并进行日志切换时,后台进程 ARCH 会将联机重做日志的内容保存到归档日志中,当数据库出现介质故障时,使用数据文件备份、归档日志和联机重做日志可以完全恢复数据库到正常状态。


Oracle 数据库设置为归档模式之后,如果归档空间写满,数据库的 redo 文件不能归档,会出现数据库挂起的问题,导致 数据库无法使用。


2、查看数据库是否为归档模式

SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /app/archiveOldest online log sequence 30Next log sequence to archive 34Current log sequence 34SQL> select log_mode from v$database;LOG_MODE------------------------------------ARCHIVELOG


3、打开或关闭归档模式

如果需要打开或关闭归档模式,在数据库处于 mount 状态时使用如下命令:


3.1 打开归档模式

alter database archivelog;

3.2 关闭归档模式

alter database noarchivelog;


4、配置归档的位置

当数据库处于归档模式时,进行日志切换时后台进程将自动生成归档日志。


4.1 查看归档进程数

初始化参数 LOG_ARCHIVE_MAX_PROCESSES 用于指定最大归档进程个数。通过改变该初始化参数的取值,可以动态地增加或减少归档进程的个数。


SQL> show parameter LOG_ARCHIVE_MAX_PROCESSES;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_max_processes            integer     4

4.2 配置归档的位置

可以使用 LOG_ARCHIVE_DEST_n 配置多个归档位置:该参数最多可以指定 10 个归档位置。格式如下:


ALTER SYSTEM SET log_archive_dest_1 = 'location = 路径1';

ALTER SYSTEM SET log_archive_dest_2 = 'location = 路径2';

.....

4.2.1 查看归档文件

SQL> select sequence#, name from v$archived_log;

SEQUENCE#  NAME

---------- --------------------------------------------------------------------------------

34 /app/archive/orcl_62725153_0000000034_1_1125947150.dbf

可知归档的文件位置 /app/archive/

4.2.2 修改归档日志的位置为:/home/oracle/archivelog

SQL> alter system set log_archive_dest_1 = 'location=/app/archive' scope = both sid='*';

SQL> archive log list;

SQL> alter system switch logfile;

SQL> select sequence#, name from v$archived_log;

SQL> select sequence#, name from v$archived_log;

SEQUENCE#  NAME

---------- --------------------------------------------------------------------------------

34 /app/archive/orcl_62725153_0000000034_1_1125947150.dbf

35 /app/archive/orcl_62725153_0000000035_1_1125947150.dbf


5、配置归档日志文件的名称格式

初始化参数 LOG_ARCHIVE_FORMAT 用于指定归档日志文件的名称格式。设置该初始化参数时,可以指定以下匹配符:


(1)%s:日志序列号;


(2)%S:日志序列号(带有前导 0);


(3)%t:线程编号;


(4)%T:线程编号(带有前导 0);


(5)%a:活动 ID 号;


(6)%d:数据库 ID 号;


(7)%r:RESETLOGS的ID值。


归档日志的文件名称格式设置如下:


SQL> alter system set LOG_ARCHIVE_FORMAT = 'orcl_%d_%S_%t_%r.dbf' scope = spfile sid='*';

重启数据库使设置生效


SQL> shutdown immediate

SQL> startup

查看参数 LOG_ARCHIVE_FORMAT 的值:

SQL> show parameter LOG_ARCHIVE_FORMAT

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_format                   string      orcl_%d_%S_%t_%r.dbf

查看归档日志:

SQL> select sequence#, name from v$archived_log;

6、删除归档日志

6.1 手工删除归档日志文件

[oracle@node1 archive]$ cd /app/archive/

[oracle@node1 archive]$ ll -r

总用量 4516

-rw-r----- 1 oracle oinstall   10752 2月   2 10:54 orcl_62725153_0000000036_1_1125947150.dbf

-rw-r----- 1 oracle oinstall   54784 2月   2 10:51 orcl_62725153_0000000035_1_1125947150.dbf

-rw-r----- 1 oracle oinstall 4551680 2月   2 10:46 orcl_62725153_0000000034_1_1125947150.dbf

[oracle@node1 archive]$ rm -rf orcl_62725153_0000000034_1_1125947150.dbf

[oracle@node1 archive]$ ll

总用量 68

-rw-r----- 1 oracle oinstall 54784 2月   2 10:51 orcl_62725153_0000000035_1_1125947150.dbf

-rw-r----- 1 oracle oinstall 10752 2月   2 10:54 orcl_62725153_0000000036_1_1125947150.dbf

查看归档日志:


SQL> select sequence#, name from v$archived_log;

SEQUENCE#  NAME

---------- --------------------------------------------------------------------------------

34 /app/archive/orcl_62725153_0000000034_1_1125947150.dbf

35 /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

36 /app/archive/orcl_62725153_0000000036_1_1125947150.dbf

虽然物理文件已经删除,但是归档日志文件的信息还在。


6.2 用 RMAN 删除数据库记录的归档列表信息

[oracle@node1 ~]$ rman target /

RMAN> list archivelog all;

List of Archived Log Copies for database with db_unique_name ORCL

=====================================================================

Key     Thrd Seq     S Low Time

------- ---- ------- - ---------

36      1    34      X 02-FEB-23

       Name: /app/archive/orcl_62725153_0000000034_1_1125947150.dbf

37      1    35      A 02-FEB-23

       Name: /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

38      1    36      A 02-FEB-23

       Name: /app/archive/orcl_62725153_0000000036_1_1125947150.dbf

RMAN> crosscheck archivelog all;

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=1996 device type=DISK

validation failed for archived log

archived log file name=/app/archive/orcl_62725153_0000000034_1_1125947150.dbf RECID=36 STAMP=1127731566

validation succeeded for archived log

archived log file name=/app/archive/orcl_62725153_0000000035_1_1125947150.dbf RECID=37 STAMP=1127731881

validation succeeded for archived log

archived log file name=/app/archive/orcl_62725153_0000000036_1_1125947150.dbf RECID=38 STAMP=1127732067

Crosschecked 3 objects

RMAN> delete expired archivelog all;

released channel: ORA_DISK_1

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=1996 device type=DISK

List of Archived Log Copies for database with db_unique_name ORCL

=====================================================================

Key     Thrd Seq     S Low Time

------- ---- ------- - ---------

36      1    34      X 02-FEB-23

       Name: /app/archive/orcl_62725153_0000000034_1_1125947150.dbf

Do you really want to delete the above objects (enter YES or NO)? yes

deleted archived log

archived log file name=/app/archive/orcl_62725153_0000000034_1_1125947150.dbf RECID=36 STAMP=1127731566

Deleted 1 EXPIRED objects

RMAN> select sequence#, name from v$archived_log;select sequence#, name from v$archived_log;

SEQUENCE#  NAME

---------- --------------------------------------------------------------------------------

34

35 /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

36 /app/archive/orcl_62725153_0000000036_1_1125947150.dbf


6.3 清除 v$archived_log 视图中的过期信息

使用 RMAN 命令删除归档后,v$archived_log 视图中的 name 列为空,但其他列的信息仍然存在。出现这种现象的原因是因为使用 RMAN 命令在删除归档日志的时候不能够清除控制文件中的内容。


6.3.1 清除控制文件中关于 v$archived_log 的信息

SQL> execute sys.dbms_backup_restore.resetCfileSection(11);

PL/SQL procedure successfully completed.

6.3.2 查询发现 v$archived_log 视图中的信息全部被清除了

SQL> select sequence#, name from v$archived_log;

SEQUENCE# NAME

---------- --------------------------------------------------------------------------------

6.3.3 将未过期的归档文件信息重新注册到控制文件中

RMAN> catalog start with '/app/archive/';

using target database control file instead of recovery catalog

searching for all files that match the pattern /app/archive/

List of Files Unknown to the Database

=====================================

File Name: /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

File Name: /app/archive/orcl_62725153_0000000036_1_1125947150.dbf

Do you really want to catalog the above files (enter YES or NO)? yes

cataloging files...

cataloging done

List of Cataloged Files

=======================

File Name: /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

File Name: /app/archive/orcl_62725153_0000000036_1_1125947150.dbf

RMAN> select sequence#, name from v$archived_log;

SEQUENCE# NAME

---------- --------------------------------------------------------------------------------

       35 /app/archive/orcl_62725153_0000000035_1_1125947150.dbf

       36 /app/archive/orcl_62725153_0000000036_1_1125947150.dbf

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
8天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
114 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
8天前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
6天前
|
Windows Python
如何反向读取Windows系统日志EVTX文件?
以下是如何反向读取Windows系统日志EVTX文件
16 2
|
8天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
12天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
121 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
221 3
|
3月前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
131 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1630 14
|
1月前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
31 0
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
194 0

推荐镜像

更多