DM8:达梦数据库数据文件与日志文件介绍

news2024/11/24 20:27:13

DM8:达梦数据库数据文件与日志文件介绍

  • 环境介绍
  • 1 表空间中的数据文件
    • 1.1 表空间
    • 1.2 数据文件
    • 1.3 系统自带的表空间
      • 1.3.1 SYSTEM 表空间
      • 1.3.2 ROLL 表空间
      • 1.3.3 TEMP 表空间
      • 1.3.4 MAIN 表空间
      • 1.3.5 用户自定义表空间
      • 1.3.6 DM数据库的表空间和数据文件分布
  • 2 日志文件
    • 2.1 重做日志(REDO删除后数据库无法启动)
    • 2.2 归档日志
    • 2.3 LSN 介 绍
      • 2.3.1 FILE_LSN
      • 2.3.2 APPLY_LSN
      • 2.3.3 RPKG_LSN
  • 3 包序号介绍
    • 3.1 检查点
      • 3.1.1 完全检查点
      • 3.1.2 部 分 检 查 点

环境介绍

  • 数据库软件是一套数据管理系统的集合,数据最终会存储到操作系统的物理文件中,还有相关的日志文件;

1 表空间中的数据文件

1.1 表空间

  • DM 数据库的表空间是一个逻辑概念,其目的主要是为了方便数据库的管理,数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成。

1.2 数据文件

  • 数据文件是数据库中最重要的文件类型,是真实数据存储的地方。
    DM 中数据文件的扩展名为.DBF,分为系统默认生成的数据文件和用户自己创建的数据文件两类。
  • 需要注意的是,HUGE 数据文件不同于一般数据文件,其扩展名为.DTA。DM 数据库中的表空间可以分为普通表空间和混合表空间。
    普通表空间不能存储 HUGE表,而混合表空间可以同时存储普通(非 HUGE)表和 HUGE 表,其中 HUGE 数据文件存储在混合表空间定义中指定的 HUGE 数据文件路径下。可以通过为普通表空间添加 HUGE 数据文件路径将其升级为混合表空间。

1.3 系统自带的表空间

  • 在创建 DM 数据库时,系统会自动创建 4 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN表空间和TEMP表空间。DM自动为这几个自动创建的表空间分别生成默认的数据文件:
    SYSTEM.DBF、ROLL.DBF、MAIN.DBF 和 TEMP.DBF。

  • 另外,DM 还会自动创建一个 HMAIN目录,并将其路径作为 MAIN 表空间的 HUGE 数据文件路径,因此 MAIN 表空间为混合表空间。

  • 用户也可以创建自己的表空间,由用户创建的表空间统称为用户自定义表空间,在创建自定义表空间时需要为表空间指定数据文件。
    因此,DM 中的表空间有以下几类:

1.3.1 SYSTEM 表空间

  • 存放了 DM 数据库全局字典信息和全局系统数据,是 DM 数据库能够正常运行的必要前提,默认对应数据文件 SYSTEM.DBF。
    CREATE TABLE 等 DDL 操作会修改 SYSTEM 表空间数据。

1.3.2 ROLL 表空间

  • 存放 DM 数据库运行过程中产生的所有回滚记录。DM 中几乎所有的数据库修改操作都会生成回滚记录,并保存在 ROLL 表空间的数据文件中。ROLL 表空间是数据库全局对象,不论修改哪一个表空间,生成的回滚记录都是写入 ROLL 表空间,该表空间由系统自动维护,默认数据文件为 ROLL.DBF。

1.3.3 TEMP 表空间

  • 存放临时表数据以及数据库运行过程中产生的临时数据。在数据库运行过程中,SORT、HASH JOIN 等操作都可能会生成临时结果集,它们作为临时数据存放在 TEMP 表空间中。
    TEMP 表空间是数据库全局对象,由系统自动维护。若数据库重启,保存在 TEMP 表空间中的所有数据都会丢失。TEMP 表空间的默认数据文件为 TEMP.DBF。
    DM 的物理备份还原不支持:TEMP 表空间。

1.3.4 MAIN 表空间

MAIN 表空间为混合表空间。在创建用户时,如果没有指定默认表空间,
系统自动指定MAIN 表空间为用户默认的表空间。MAIN 表空间的默认数据文件为 MAIN.DBF,默认 HUGE数据文件路径为 HMAIN 目录所在路径。

1.3.5 用户自定义表空间

即用户通过创建表空间相关操作生成的表空间。
点击跳转,查看配置步骤

1.3.6 DM数据库的表空间和数据文件分布

在这里插入图片描述

2 日志文件

2.1 重做日志(REDO删除后数据库无法启动)

  • 重做日志,又叫 REDO 日志,忠实记录了所有物理页的修改,基本信息包括操作类型、表空间号、文件号、页号、页内偏移、实际数据等。数据库中 INSERT、DELETE、UPDATE等 DML 操作以及 CREATE TABLE 等 DDL 操作最终都会转化为对某些数据文件、某些数据页的修改。因此,在系统故障重启时,通过重做 REDO 日志,可以将数据库恢复到故障时的状态。
  • DM 数据库默认包含两个扩展名为 log 的日志文件,用来保存 REDO 日志,称为联机重做日志文件。这两个文件循环使用。任何数据页从内存缓冲区写入磁盘之前,必须保证其对应的 REDO 日志已经写入到联机日志文件。
  • REDO 日志包(RLOG_PKG)是 DM 数据库保存 REDO 日志的数据单元,一个日志包内可保存一个或多个 PTX 产生的 REDO 日志。日志包具有自描述的特性,日志包大小不固定,采用固定包头和可变包头结合的方式,包头记录日志的控制信息,包括类型、长度、包序号、LSN 信息、产生日志的节点号、加密压缩信息、日志并行数等内容。
  • 日志包生成时按照序号连续递增,相邻日志包的 LSN 顺序是总体递增的,但是在 DMDSC集群环境下不一定连续。如果未开启并行日志,RLOG_PKG 包内日志的 LSN 是递增的。如果开启并行日志,一个 RLOG_PKG 包内包含多路并行产生的日志,每一路并行日志的 LSN是递增的,但是各路之间的 LSN 并不能保证 LSN 有序,因此并行日志包内 LSN 具有局部有序,整体无序的特点。

2.2 归档日志

  • DM 数据库可以在归档和非归档两种模式下运行,归档模式的具体配置点击跳转到归档配置。DM 支持多种归档方式。系统在归档模式下运行会更安全,当出现介质故障,如磁盘损坏导致数据文件丢失、异常时,利用归档日志,系统可以恢复至故障发生的前一刻。因此,为了保证归档日志文件和数据文件不同时出现问题,建议将归档目录与数据文件配置、保存到不同的物理磁盘上。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。
  • DM 数据库定义了多种归档方式,包括本地归档、实时归档、即时归档、异步归档和远程归档,其中本地归档和远程归档与备份还原密切相关。写入本地归档日志文件,或者通过 MAL 系统发送到远程归档的目标实例,写入目标实例的远程归档日志文件中。
  • Primary/Normal 模式库归档日志文件的命名规则是:
  • ARCH_NAME_DB_MAGIC[SEQNO]_日期时间.log。
  • 其中 ARCH_NAME 是在 dmarch.ini中配置的 LOCAL/REMOTE 归档名称,DB_MAGIC 是生成日志的数据库魔数,SEQNO 代表DSC 节点号,日期时间是归档日志文件的创建时间。
  • 比如:ARCHIVE_LOCAL1_0x567891[0]_2018-05-30_10-35-34.log。
  • Standby 模式库(备库)归档日志文件的命名规则是:
  • STANDBY_ARCHIVE_DB_MAGIC[SEQNO]_日期时间.log 。
  • 其中,STANDBY_ARCHIVE表示备库生成的归档日志文件;DB_MAGIC 是生成日志的数据库(主库)魔数;SEQNO 代表主库对应的 DSC 节点号;日期时间是归档日志文件的创建时间。
  • 比如:STANDBY_ARCHIVE_0x123456[0]_2018-05-30_10-35-34.log 。由于STANDBY_ARCHIVE 用于表示备库生成的归档日志,因此,不允许将归档名称配置为STANDBY_ARCHIVE。

2.3 LSN 介 绍

  • LSN(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。物理事务(Physical Transaction,简称 PTX)是数据库内部一系列修改物理数据页操作的集合,与数据库管理系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。
DM 数 据 库 中 与 LSN 相 关 的 信 息 , 可 以 通 过 查 询
 V$RLOG 和V$RAPPLY_PARALLEL_INFO 表来获取。
 DM 主要包括以下几种类型的
 LSN:CUR_LSN  是系统已经分配的最大 LSN 值。
 物理事务提交时,系统会为其分配一个唯一的 LSN 值,
 大小等于 CUR_LSN + 1,然后再修改 CUR_LSN=CUR_LSN+1。
 FLUSH_LSN 是已经发起日志刷盘请求,
 但还没有真正写入联机 REDO 日志文件的最大 LSN 值。

2.3.1 FILE_LSN

  • FILE_LSN 是已经写入联机 REDO 日志文件的最大 LSN 值。每次将 REDO 日志包 RLOG_PKG 写入联机 REDO 日志文件后,都要修改 FILE_LSN 值。 CKPT_LSN 是检查点 LSN,所有 LSN <= CKPT_LSN 的物理事务修改的数据页,都已经从 Buffer 缓冲区写入磁盘,CKPT_LSN 由检查点线程负责调整。
  • 数据库故障重启时,CKPT_LSN 之前的 REDO 日志不需要重做,只需要从 CKPT_LSN+1开始重做 REDO 日志,就可以将系统恢复到故障前状态。并且,在联机重做日志文件中,LSN值<=CKPT_LSN 的 REDO 日志都可以被覆盖。

2.3.2 APPLY_LSN

  • APPLY_LSN是数据库还原恢复后已经写入联机 REDO 日志文件的日志包的原始最大 LSN 值,APPLY_LSN 取自源库的原始日志包中的最大 LSN 值。DSC 集群的每一个节点独立维护 APPLY_LSN。

2.3.3 RPKG_LSN

  • RPKG_LSN是数据库还原恢复后已经重演日志的最大 LSN。DSC 集群的每一个节点独立维护 RPKG_LSN。

3 包序号介绍

  • 每个 RLOG_PKG 都有对应的序号属性,称之为包序号(PKG SEQNO),日志包生成时按照序号连续递增。包序号包括本地包序号(LSEQ)和全局包序号(GSEQ),本地包序号是节点内唯一、连续递增的值,用于校验联机日志连续性;全局包序号由数据守护集群的主备库共同维护,具有全局唯一、连续、递增的特性,用于校验归档日志的连续性。
DM 数 据 库 中 与 全 局 包 序 号 相 关 的 信 息 ,
可 以 通 过 查 询 V$RLOG 和V$RAPPLY_PARALLEL_INFO 表来获取。
数据库端主要包括以下几种类型的全局包序号:
CUR_SEQ 是系统已经分配的最大全局包序号。RLOG_PKG 写入联机日志文件前,系统会为其分配一个唯一的全局包序号。
FILE_SEQ 是已经写入联机 REDO 日志文件的最大全局包序号。每次将 REDO 日志包 RLOG_PKG 写入联机 REDO 日志文件后,都要修改 FILE_SEQ 值。
APPLY_SEQ 是数据库还原恢复后已经写入联机 REDO 日志文件的原始最大全局包序号,APPLY_SEQ 取自源库的原始日志包的包序号。DSC 集群的每一个节点独立维护APPLY_SEQ。
RPKG_SEQ 是数据库还原恢复后已经重演日志的最大全局包序号。DSC 集群的每一个节点独立维护 RPKG_SEQ。

3.1 检查点

  • DM 数据库运行过程中,用户的所有操作都在内存中进行。每修改一条记录都必须先把记录所在的数据页加载到 BUFFER 缓冲区中,然后进行修改。事务运行时,会把生成的 REDO日志保留在 REDO 日志包 RLOG_PKG 中,每条日志记录对应一个 LSN,当事务提交或 REDO日志包满或执行检查点时会进行日志刷盘。
  • 检查点(checkpoint)是一个数据库事件,它的功能是按照数据页的修改顺序,依次将 BUFFER 缓冲区中的脏页写入磁盘,并在这个过程中动态调整 CKPT_LSN 值,释放日志空间。
  • DM 的检查点分为两种:完全检查点和部分检查点:

3.1.1 完全检查点

  • 会将内存缓冲区中的所有脏页写入磁盘,并调整 CKPT_LSN,在数据库正常关闭时会产生一个完全检查点。

3.1.2 部 分 检 查 点

  • 根 据 dm.ini 配 置 文 件 中 的 参 数 CKPT_FLUSH_RATE 和CKPT_FLUSH_PAGES,确定每次检查点刷脏页的数量。执行部分检查点的过程中,DDL/DML操作都可以正常执行,DM 系统中绝大多数情况下触发的都是部分检查点。

  • 数据库运行过程中产生的待写入日志首先写入 REDO 日志包 RLOG_PKG,当日志刷盘时一起写入联机日志文件中。在联机日志文件中,可以覆盖写入 REDO 日志的文件长度为可用日志空间;不能被覆盖的 REDO 日志,系统故障重启需要重做的 REDO 日志为有效日志,有效日志的 LSN 取值范围是(CKPT_LSN,FILE_LSN]。

  • 下图说明了联机日志文件、REDO 日志包 RLOG_PKG 以及相关各 LSN 之间的关系。
    在这里插入图片描述

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

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

相关文章

Redis 数据库的概念、常用命令

Redis数据库 一、关系数据库与非关系型数据库概述1、关系型数据库2、非关系型数据库3、关系数据库与非关系型数据库区别&#xff08;1&#xff09;数据存储方式不同&#xff08;2&#xff09;扩展方式不同&#xff08;3&#xff09;对事务性的支持不同 4、非关系型数据库产生背…

【数据结构课程设计系列】完全二叉树操作演示

完全二叉数操作演示 1.完全二叉树操作演示要求&#xff1a; &#xff08;1&#xff09;创建完全二叉树(用顺序方式存储) &#xff08;2&#xff09;求二叉树的深度和叶子结点数 &#xff08;3&#xff09;实现二叉树的前序、中序、后序和层次遍历。 &#xff08;4&#xff09;…

基于ubuntu的驱动开发

一般的linux驱动开发都是基于交叉编译来进行的&#xff0c;本文尝试着从另一个角度&#xff1a;基于ubuntu的本地驱动开发来学习一下驱动的开发 一、驱动的开发与编译 1.1、编写驱动文件 #include <linux/init.h> #include <linux/module.h> static int hello_i…

FL Studio中文版21最新免费音乐编曲软件制作工具

FL Studio较为适合专业的音乐制作者&#xff0c;操作难度较大&#xff0c;学习门槛也较高&#xff1b;Studio One则主打一站式的音乐制作&#xff0c;从编曲到录音到后期的专辑制作都可以在其中实现&#xff0c;同时操作难度不大&#xff0c;对初学者和业余爱好者都较为友好。 …

【NX】NX二次开发中自动选择当前实体和方向

在NX的二次开发中&#xff0c;我们经常需要选择实体和方向&#xff0c;如果每次手动选择&#xff0c;势必会影响调试的效率&#xff0c;那么有没有办法&#xff0c;让程序一启动就自动选择当前实体和方向呢&#xff0c;自然是有的。 经过我一番研究&#xff0c;因为可能有多个实…

Apikit 自学日记:团队管理

团队管理 一、工作空间管理 工作空间类似于部门或公司的概念&#xff0c;能帮助您更好地管理团队。 1.1 创建空间 点击页面左上角功能菜单&#xff0c;在下拉菜单中选择要切换的工作空间。 点击创建/加入&#xff0c;在引导页面中选择创建工作空间&#xff0c;填写工作空间…

JavaWeb HttpServletRequest

1.HttpServletRequest HttpServletRequest是Java Servlet API中的一个接口&#xff0c;用于表示HTTP请求的对象。 它提供了访问HTTP请求的各种信息和功能&#xff0c;包括请求方法、请求URL、请求头、请求参数、请求体等。 HttpServletRequest是由Servlet容器&#xff08;如…

利用PPT制作简单的矢量图

1.用PPT画一个图形&#xff08;可以多个图&#xff09; 2.鼠标圈住图形 3.利用 Ctrl G 组合图形&#xff0c;再用 Ctrl C 复制 4.打开word—粘贴—选择性粘贴—图片&#xff08;增强性图元文件&#xff09; 确认即可。

【制品】通用制品参库

制品仓库 制品库顾名思义是制品的仓库&#xff0c;制品是软件交付的成果性产物&#xff0c;通常是可运行的二进制形式&#xff0c;因此制品库通常也被称之为二进制制品仓库。制品库在开发阶段为使用各种开发语言的微服务开发者提供依赖解析的唯一入口。在构建阶段为各种语言的…

MongoDB远程复制集集群((两台服务器,8个实例))

第三阶段基础 时 间&#xff1a;2023年7月4日 参加人&#xff1a;全班人员 内 容&#xff1a; MongoDB远程复制集集群 目录 MongoDB远程复制集集群 实验环境&#xff1a;&#xff08;两台服务器&#xff0c;8个实例&#xff09; 环境部署&#xff1a; 安装部署 实 …

零基础自学网络安全,就是这样简单!

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

Diffusers学习总结

Diffusers代码&#xff1a;https://github.com/huggingface/diffusers Diffusers使用指南&#xff1a;https://huggingface.co/docs/diffusers/index Diffusers前向加速技巧&#xff1a; float16前向推理

微信小程序申请 wx.getLocation 接口 审核一直不通过

项目需要通过微信的 getLocation 获取本地的位置信息&#xff08;经纬度&#xff09;&#xff0c;但是提交很多次审核都不通过&#xff0c;最后通过写了个项目里用不到的 导航功能 截图录屏才通过了审核。 以下申请文案及配图仅供参考&#xff1a; 因当前业务涉及就近医院挂号…

JointVAE用于单细胞多模态插补和embedding

单细胞多模态数据能够测量细胞的各种特征&#xff0c;从而深入了解细胞和分子机制。然而&#xff0c;多模态数据的生成仍然昂贵且具有挑战性&#xff0c;同时缺失模态也经常发生。最近&#xff0c;机器学习方法已经被开发用于数据补全&#xff0c;但通常需要完全匹配的多模态数…

【剑指 Offer】52. 两个链表的第一个公共节点。 难度等级:简答 -- 中等。双指针法太秀了

文章目录 1. 题目2. 我的解法&#xff1a;哈希表&#xff0c;空间复杂度 0(n)&#xff0c;不符合要求2.1 算法思路2.2 code 3. 双指针法&#xff1a;浪漫相遇太秀了3.1 算法思路3.2 code 1. 题目 题目链接&#xff1a;剑指 Offer 52. 两个链表的第一个公共节点 输入两个链表&…

丢失msvcr120.dll的解决方法

1、什么是MSVCR120.dll&#xff1f; MSVCR120.dll是微软公司开发的Visual 2013程序的一部分。某些应用程序或游戏可能需要此文件才能正常工作。如果msvcr120.dll缺失&#xff0c;无论何时启动应用程序/游戏&#xff0c;都可能会遇到各种错误。 2、 msvcr120.dll软件特色 1、该…

九.图像处理与光学之图像几何变换算法(双线性插值)

九.图像处理与光学之图像几何变换算法(双线性插值) 9.0 前言 ​ 图像几何变换是图像处理中非常基础实用的技能,主要包括图片位移、缩放、镜像、剪切、放射变换等,在对图像进行空间变换的过程中,典型的情况是在对图像进行放大,旋转处理的时候,图像会出现失真的现象。这是…

【半监督医学图像分割 2023 MICCAI】SCP-Net

文章目录 【半监督医学图像分割 2023 MICCAI】SCP-Net摘要1. 简介2. 方法2.1 自交原型预测2.2 典型预测不确定性2.3 无监督原型一致性约束SPCCCPCC 3 实验与结果3.1 数据集和评价指标3.2 实施细节3.3 与其他方法的比较3.4 消融研究 4. 总结 【半监督医学图像分割 2023 MICCAI】…

Word表格设置边框不生效的解决方法

1、这是新建并随意设置的表格&#xff0c;可以看出来上边框、内边框和下边框都是不同的粗细&#xff0c;很不协调。 2、选中表格&#xff0c;然后右击——>表格属性——>边框和底纹。 3、三线表&#xff0c;一般上边框和下边框都是1磅&#xff0c;内边框是0.5磅&#xff…

别再瞎忙活,掌握营销策划的核心机密

很多时候看多了那些广告门上的案例&#xff0c;就感觉出一个策略就一定要引爆市场才行&#xff0c;如果不能引爆&#xff0c;那营销策划就没用&#xff0c;这个非黑即白的思维要改改。 事实上&#xff0c;我们大部分的营销人&#xff0c;做的营销策划方案都是处于灰色地带&…