成为MySQL DBA后,再看ORACLE数据库(七、日志体系)

news/2025/1/22 12:16:20/文章来源:https://www.cnblogs.com/coygfly/p/18231885

说起数据库的日志,一般有redo日志、归档日志、错误日志、审计日志等,不同的数据库为了满足其特定的功能会有不同类型的日志。在ORACLE的日常运维中,可能接触得最多的就是redo日志、归档日志、告警日志、闪回日志这几种日志。在ORACLE知识体系中,一般把redo、undo、checkpoint这几个知识点放在一起,这也是更好的学习数据库的路线。但我更想从MySQL的视角,把数据库的各种日志放在一起做个总结。
一、redo日志

搞数据库的都知道,redo日志的功能主要是用来clash recovery(崩溃恢复),保证数据的一致性。在ORACLE中,Redo的功能主要通过三个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File。Oracle通过后台进程LGWR不断的把Redo Log Buffer的内容写到Redo Log File中,下图说明了三者的关系。

数据库会默认创建三个redo log日志组,在数据目录下可以看到有三个redo0x.log文件。当一个日志文件写满之后,会切换到另外一个日志文件,这个切换过程称为Log Switch,因此Log Switch会出发一个checkpoint确保该日志文件对应的变更数据落盘。通过v$log可以查看查看当前redo日志组的状态。其中STATUS列显示了日志文件的状态:当状态为CURRENT,指的是当前的日志文件是活动的,当前正在被使用的;当状态为ACTIVE,指的是活动的非当前日志,检查点尚未完成,该日志在clash recovery也会被用到;当状态为INACTIVE,指该日志非活动,对应的变更数据都已落盘,非活动日志在实例恢复时已经不再需要。

为了让用户可以快速提交,日志快速落盘,已提交的数据不丢,保证数据的一致性,LGWR进程写日志触发条件有以下几个:每3秒超时;Redo Log Buffer1/3满;Redo Log Buffer中有1M脏数据;用户提交;在DBWR进程写之前。

二、归档日志

当redo log 文件写满后,新的redo log会重用之前的redo log文件,因此原来的记录会被直接覆盖,为了保证日志的连续性,可以在ORACLE数据库中开启归档模式,就是将经写满的重做日志文件通过复制方式保存到指定的位置,也就是归档日志。开启归档后,会启动后台进程ARCN,在日志切换时,LGWR进程写之前备份历史日志。对于生产环境的数据库系统都应该开启归档模式,以便数据库能支持热备,并提供数据库完全恢复和不完全恢复。非归档只适用某种静态库、测试库、或者可以通过其他方式恢复数据的数据库,非归档模式只能冷备, 且仅能还原最后一次全备。而归档模式可以恢复到最后一次commit。

通过archive log list或v$database视图可以查看数据库是否开启了归档模式:

通过参数log_archive_dest_n可以设置ORACLE数据库的多个归档路径,n可以是1~31。如果在参数中指定了service:alter system set log_archive_dest_2='service=standby', 那么则代表把日志归档到服务名standby为远程的服务器。log_archive_format参数用来定义归档日志的命名格式,一般默认为%t_%s_%r.dbf,%t代表日志线程号、%s代表日志序列号、%r代表数据库的周期。

开启归档模式,是需要重启数据库,并在mount状态开启归档模式,以下是数据库开启归档的步骤:

#创建归档目录
mkdir -p /u01/oracle/arch
chown -R oracle:oinstall  /u01/oracle/arch
#设置归档目录参数
alter system set log_archive_dest_1='location=/u01/oracle/arch';
#正常关库,然后启动到mount状态
shutdown immediate; 
startup mount;
archive log list;
#开启归档,启动数据库
alter database archivelog; 
alter database open; 
archive log list;

 三、告警日志

告警日志是日常排查数据库问题使用最多的方式之一,记录着数据库的“编年史”,在MySQL中这个日志叫错误日志。ORACLE的告警日志位于$ORACLE_HOME/diag/rdbms/ORACLE_SID/ORACLE_SID/trace目录下,在ORACLE中可以通过v$dig_info视图查看告警日志的存放路径。

可以看到,在告警日志目录下,除了告警日志文件alert_orcl.log,还有很多trc和trm文件。trc文件即trace collection file,它是系统的跟踪文件,trc文件中包含了大量且详细的诊断和调试信息。trm文件即trace map file,称为元数据跟踪文件,记录了描述trc文件跟踪记录的元数据信息。在SQL的优化与分析中,可以通过alter session set sql_trace=true命令开启会话的跟踪,这样会话执行SQL的执行计划、执行流程中的各方面信息比如物理读,cpu消耗等将会详细记录在trc文件中,这样将可以排查出一条SQL具体慢在哪里。通过TKPROF工具可以格式化trc文件,增强可读性。此外,在$ORACLE_HOME/diag/rdbms/ORACLE_SID/ORACLE_SID/alert目录下还有一个log.xml文件,这个就是XML格式的警告日志,其实内容和alert_orcl.log是一样,XML文件主要是方便一些工具来生成报告,dba实际排查问题看alert_orcl.log文件还是更方便一些。

四、闪回日志

闪回日志是为了支持flash database而引入的,闪回日志中包含数据块被修改之前的映像,可以用于将数据库恢复到某个时间点之前的状态。这里就不过多赘述了,后面准备专门写一篇总结ORACLE的闪回技术。

五、总结

从数据库几种常用的日志来看,ORACLE和MySQL差别还是很大。MySQL记录数据变化的日志除了redo还有binlog,而MySQL的redo无法归档,只能用来crash recovery。在MySQL中,通过binlog完成主从复制和保证日志连续性,这种记录数据逻辑变化的日志也特别方便异构数据的复制,衍生了canel等开源数据同步工具。ORACLE告警日志目录中跟踪文件也提供了更详细的数据库诊断信息,相比而言MySQL的errorlog就显得太简单了,MySQL中遇到异常崩溃通常需要收集coredump信息跟踪源码才能更好的定位问题。

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

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

相关文章

bitbucket无法使用ssh连接

原因 如图所示,需要开启pipelines而开启pipelines需要通过Twilio Authy Authenticator这个软件。然而国内手机号收不到这玩意的验证码。未解决 放弃了,直接用http

x86_64系统调用过程

x86_64系统调用过程本文所述Linux内核版本为v6.4.0一、概述 在x86_64架构下,系统调用会经历以下过程:将系统调用号存入rax寄存器,参数依次存入rdi、rsi、rdx、r10、r8、r9寄存器,第7个及之后的参数会通过栈传递。 执行syscall指令,该指令会保存syscall指令下一条指令的地址…

第二章 InnoDB存储引擎

2.1 InnoDB存储引擎概述 InnoDB从MySQL5.5版本开始是默认的表存储引擎,是第一个完整支持ACID事务的MySQL存储引擎 特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效利用以及使用内存的CPU2.2 InnoDB存储引擎的版本 InnoDB存储引擎包含于所有MyS…

DVWA靶场学习(一)—— Brute Force

Brute Force 暴力破解其实就是利用不同的账户和密码进行多次尝试。 因为用户在设置密码时可能会选用比较容易记忆的口令,因此,可以使用一些保存常用密码的字典或者结合用户的个人信息进行爆破。 DVWA安全等级有Low,Medium,High和Impossible四种,随着安全等级的提高,网站的…

m基于PSO粒子群优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下:2.算法涉及理论知识概要低密度奇偶校验码(Low-Density Parity-Check Code, LDPC码)因其优越的纠错性能和近似香农极限的潜力,在现代通信系统中扮演着重要角色。归一化最小和(Normalized Min-Sum, NMS)译码算法作为LDPC码的一种高效软…

RAVEN2

RAVEN2主机发现和nmap扫描 nmap -sT --min-rate 10000 -p- 192.168.56.108PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 54037/tcp open unknown MAC Address: 00:0C:29:60:6F:30 (VMware)nmap -sT -sV -sC -O -p22,80,111,540…

mos管为什么会有寄生二极管 寄生二极管的示意图/作用参数/方向判定

mos管为什么会有寄生二极管 mos管会有寄生二极管是因为mos管的源极和漏极之间的电阻会发生变化,这种变化会导致mos管内部的电压发生变化,从而产生一个寄生二极管。寄生二极管可以抑制mos管的漏电,从而提高mos管的效率。 寄生二极管 漏极和源极之间有一个寄生二极管,即“体二…

scrapy-分布式爬虫

一 介绍 原来scrapy的Scheduler维护的是本机的任务队列(存放Request对象及其回调函数等信息)+本机的去重队列(存放访问过的url地址)所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis,然后重写Scrapy的Scheduler,让新的Scheduler到共享队列存…

使用itextPDF实现PDF电子公章工具类

使用itextPDF实现PDF电子公章工具类 一、制作公章 在线网站:印章生成器 - Kalvin在线工具 (kalvinbg.cn) 然后对公章进行下载保存盖章图片:二、生成数字签名 2.1: java工具keytool生成p12数字证书文件 Keytool是用于管理和证书的工具,位于%JAVA_HOME%/bin目录。 使用JDK的…

前后端分离的四种开发模式

前后端分离已经成为了开发的主流模式,很多老铁认为前后端分离就是各干各的,其实不然。 前后端分离有多种模式,我们一一详解。1. 前后端完全分离 在这种模式下,前端和后端是完全独立的两个系统。前端使用一种框架(如React、Angular、Vue.js等)来实现用户界面,通过API调用…

2024/6/7

今天进行了数据库相关实验。 (1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。(2)查询所有零件情况,先按零件名称升序排列,零件名称相同按重量降序排列。(3)查询项目名中含有“厂”的项目情况。(4)查询供应商名称中第二个字为“方”的供应商…