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

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.4 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
    • 2.4 操作日志
      • 2.4.1 事件 日志文件
      • 2.4.2 备份还原日志文件
      • 2.4.3 SBT 接口跟踪文件
      • 2.4.4 DMRMAN 日志文件
    • 2.5 脚本 服务日志
  • 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.4 DM数据库的表空间和数据文件分布

DM8:达梦数据库数据文件与日志文件介绍_第1张图片

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。

2.4 操作日志

  • 默认情况下,这些文件都位于 DM 数据库的 log 目录中。
  • 下述文件名中的“XXX”代表生成文件的年月,如 2022 年 5 月生成日志文件,则其文件名中的“XXX”部分就是“202205”,每个月生成一个日志文件,每个月中日志内容都是不断增加的。事件日志文件支持切换,通过 INI 参数 SVR_ELOG_FREQ 指定了事件日志文件切换频度,当满足条件后,系统会自动将当前 dm_实例名_xxx.log 文件中的内容剪切并归档到新的(分月/分日/分时)ELOG 日志文件中,命名为“dm_实例名_日期_整点”,具体请参考《DM8 系统管理员手册》中事件日志文件部分。
  • 备份还原日志文件、SBT 接口跟踪文件和 DMRMAN 日志文件不支持切换。
    操作日志类型包括:
     事件日志文件 dm_实例名_xxx.log
     备份还原日志文件 dm_BAKRES_xxx.log
     SBT 接口跟踪文件 dm_SBTTRACE_xxx.log
     DMRMAN 日志文件 dm_dmrman_xxx.log

2.4.1 事件 日志文件

  • 事件日志文件(dm_实例名_xxx.log)是一种全局日志文件,全局日志文件不可配置。
  • 事件日志文件dm_实例名_xxx.log记录了DM数据库运行时的关键事件。例如:系统启动、关闭、内存申请失败、IO 错误等一些致命错误;数据库运行过程中的日志信息;备份还原过程中备份还原操作的阶段性信息等。备份还原相关信息包括日志生成时间、日志级别、日志生成进程名称、进程 ID、日志生成线程和内容等。
  • 事件日志信息格式为:
  • 时间+日志类型(INFO/WARN/ERROR/FATAL)+进程(database)+进程 ID(P 开头)+线程(dm_sql_thd/main_thread 等)+日志内容。
    如执行备份时,实例名为 DMSERVER,会生成一个名为 dm_DMSERVER_201810.log
    的日志,内容如下:
2018-10-08 16:05:06 [INFO] database P0000012596 main_thread version info:develop
2018-10-08 16:05:06 [INFO] database P0000012596 main_thread nsvr_create_lsnr_sockets success, port_num=5236, sock_v4=868, sock_v6=864
2018-10-08 16:05:06 [INFO] database P0000012596 main_thread DM Database Server x64 V8.0.0.90-Build(2018.08.20-96055)ENT startup...
2018-10-08 16:05:06 [INFO] database P0000012596 main_thread current instance new pid is 12596, check whether it is running...
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_sys_init
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_ts_create ts_id=0 ts_name=SYSTEM
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_ts_create ts_id=1 ts_name=ROLL
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_ts_create ts_id=2 ts_name=RLOG
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_ts_create ts_id=4 ts_name=MAIN
2018-10-08 16:05:13 [INFO] database P0000012596 main_thread fil_ts_create ts_id=5 ts_name=BOOKSHOP
2018-10-08 16:05:13 [WARNING] database P0000012596 main_thread License will expire on 2019-08-20
……
2018-10-08 16:05:15 [FATAL] database P0000012596 main_thread alter database open;nsvr_check_version failed
2018-10-08 16:05:15 [FATAL] database P0000012596 main_thread code = -109,dm_sys_halt now!!!
……

2.4.2 备份还原日志文件

  • 备份还原日志文件 dm_BAKRES_xxx.log 是备份还原日志文件,备份还原日志文件不可配置。
  • dm_BAKRES_xxx.log 是 DM 备份还原在执行备份与还原时生成的日志,包括任务发起进程(联机时为 dmserver 工作线程,脱机时为 dmrman)发送信息以及 AP 进程处理过程信息。每条信息包括生成时间、信息级别、生成日志的进程名称和进程 ID,对于 AP 进程还
    会生成任务发起进程 ID。另外,为了保证日志内容的完整性,还会记录由全局日志生成接口生成的日志记录,这部分日志信息格式请参考事件日志文件。
  • 备份还原日志信息格式为:
  • 时 间 + 日 志 类 型 ( INFO/WARN/ERROR/FATAL/CMD/CMD_PARSE ) + 进 程
    (dmrman/database/dmbakres)+进程 ID(P 开头)+任务发起进程 ID(PP 开头,显示dmrman 或者 database 的进程 ID,不存在任务发起进程时显示 4294967295,即0xFFFFFFFF)+日志内容。
  • 如下所示为一段 dm_BAKRES_201810.log 日志信息示例:
2018-10-10 16:06:04 [CMD] database P0000004764 PPID4294967295 BACKUP DATABASE BACKUPSET 'd:\dmdbms\data\bak' TRACE LEVEL 2;
2018-10-10 16:06:04 [CMD] database P0000004764 PPID4294967295 BACKUP DATABASE [DAMENG]
2018-10-10 16:06:04 [INFO] database P0000004764 PPID4294967295 CMD START....
2018-10-10 16:06:04 [INFO] database P0000004764 PPID4294967295 BACKUP DATABASE [DAMENG], execute......
2018-10-10 16:06:04 [ERROR] database P0000004764 PPID4294967295 CMD END.CODE:[-8055],DESC:[备份目录冲突]
……
2018-10-10 16:06:23 [INFO] dmap P0000012356 PPID0000004764 CMD [BACKUP_INIT] is ready
2018-10-10 16:06:23 [INFO] dmap P0000012356 PPID4294967295 bakres send EXECUTE OVER status by named pipe [\\.\pipe\DM_PIPE_1384342949-4764_1], CODE [0]
2018-10-10 16:06:23 [INFO] database P0000004764 PPID4294967295 send CMD [BACKUP_DBF] by channel [\\.\pipe\DM_PIPE_1384342949-4764_1] for DBF [d:\dmdbms\data\DAMENG\SYSTEM.DBF].
2018-10-10 16:06:23 [INFO] dmap P0000012356 PPID4294967295 bakres receive from named pipe [\\.\pipe\DM_PIPE_1384342949-4764_1] success, CMD [BACKUP_DBF].
2018-10-10 16:06:23 [INFO] dmap P0000012356 PPID0000004764 CMD [BACKUP_DBF] for DBF [d:\dmdbms\data\DAMENG\SYSTEM.DBF] end, code:[0]......
……

2.4.3 SBT 接口跟踪文件

  • SBT 接口跟踪文件dm_SBTTRACE_xxx.log 是 SBT 接口跟踪文件,SBT 接口跟踪文件可配置,相关TRACE 文件介绍详见数据备份高级主题。SBT 接口在打开 TRACE 跟踪(TRACELEVEL>1)的情况下生成执行日志,默认文件名为 dm_SBTTRACE_xxx.log,用户可根据需要自行设置文件名。
  • SBT 接口跟踪文件中日志信息格式为:
  • 时间+SBT 接口的调用过程。
  • 如下所示为一段 dm_SBTTRACE_201810.log 日志信息示例:
2018-10-10 16:06:23 sbtrestore(filepath=d:\dmdbms\data\bak\bak.meta)
2018-10-10 16:06:23 sbtread(buf != NULL, buf_len = 4096)
2018-10-10 16:06:23 sbtread(buf != NULL, buf_len = 49152)
2018-10-10 16:06:23 sbtread(buf != NULL, buf_len = 25088)
2018-10-10 16:06:23 sbtclose()
2018-10-10 16:06:23 sbtend(del_flag=FALSE)
2018-10-10 16:06:23 sbtbackup(type=1, name=trace.bak)
2018-10-10 16:06:23 sbtwrite(buf != NULL, buf_len = 4096)
2018-10-10 16:06:23 sbtwrite(buf != NULL, buf_len = 5169664)
2018-10-10 16:06:24 sbtwrite(buf != NULL, buf_len = 33554944)
2018-10-10 16:06:24 sbtwrite(buf != NULL, buf_len = 2753024)
2018-10-10 16:06:24 sbtwrite(buf != NULL, buf_len = 33280)
2018-10-10 16:06:24 sbtclose()
2018-10-10 16:06:24 sbtinfo(!NULL) file [trace.bak] finished, name:[trace.bak],created time:[2018-10-10 16:06:23],expirated time:[2105-12-31 23:59:59],label:[],comment:[]
2018-10-10 16:06:24 sbtbackup(type=3, name=trace.meta)
2018-10-10 16:06:24 sbtwrite(buf != NULL, buf_len = 53248)
2018-10-10 16:06:24 sbtwrite(buf != NULL, buf_len = 4096)
2018-10-10 16:06:25 sbtwrite(buf != NULL, buf_len = 4096)
2018-10-10 16:06:25 sbtwrite(buf != NULL, buf_len = 4096)
2018-10-10 16:06:25 sbtwrite(buf != NULL, buf_len = 4096)
2018-10-10 16:06:25 sbtwrite(buf != NULL, buf_len = 512)
2018-10-10 16:06:25 sbtclose()

2.4.4 DMRMAN 日志文件

  • DMRMAN 日志文件dm_dmrman_xxx.log是DMRMAN日志文件。使用DMRMAN工具进行脱机备份还原时,产生的相关日志信息均记录在 DMRMAN 日志文件中。DMRMAN 日志文件格式和事件日志信息
    格式一样。
  • 如使用 DMRMAN 工具进行脱机备份还原时,可能会生成 dm_dmrman_202211.log 日志文件,日志内容如下:
2022-11-28 21:41:18.629 [WARNING] dmrman P0000064373 T0000000000000064373 file dm.key not found, use default license!
2022-11-28 21:41:18.657 [INFO] dmrman P0000064373 T0000000000000064373 os_sema2_create_low, create and inc sema success, key:210917848, sem_id:80183408, sem_value:1!
2022-11-28 21:41:18.682 [INFO] dmrman P0000064373 T0000000000000064373 fil_sys_init
2022-11-28 21:41:18.842 [INFO] dmrman P0000064373 T0000000000000064373 Database mode = 0, oguid = 0
2022-11-28 21:41:18.843 [INFO] dmrman P0000064373 T0000000000000064373 INI parameter BUFFER_POOLS changed, the original value 19, new value 1
2022-11-28 21:41:18.845 [INFO] dmrman P0000064373 T0000000000000064373 INI parameter RECYCLE_POOLS changed, the original value 19, new value 12
2022-11-28 21:41:18.845 [INFO] dmrman P0000064373 T0000000000000064373 INI parameter ROLLSEG_POOLS changed, the original value 19, new value 1
2022-11-28 21:41:18.885 [INFO] dmrman P0000064373 T0000000000000064373 INI parameter ENABLE_MONITOR changed, the original value 1, new value 0
2022-11-28 21:41:18.886 [INFO] dmrman P0000064373 T0000000000000064373 rfil[/home/ATS/cts_16302/script/bakres/bakrestest/OUTPUT/DAMENG/DAMENG01.log] ver: 7007, sta: 1, arch_lsn = 0, arch_seq = 0, clsn = 67477, clsn_fil = 0, clsn_off = 13732352, l_next_seq = 5248, g_next_seq = 5248, free = 13732352
……

2.5 脚本 服务日志

  • 以脚本启动的服务日志记录在/log 目录下的日志文件中。
    根据不同的阶段,产生的日志分为两种情况:
  • 一 各服务在启动和停止过程中产生的日志,均存储在/log 目录下的 dmsvc.log(Windows)或 dmsvc_sh.log(Linux)中。
  • 二 各服务在运行过程中产生的日志,分别存储在/log 目录下各自对应的日志文件中。
  • 各脚本服务命名规则为:服务名 .log 。
  • 例 如 : DmAPService.log 、DmServiceDMSERVER.log 等。为了防止日志过大,可通过 SAVE_PROC_OUT 脚本参数设置脚本服务运行过程中产生的日志是否记录在日志文件中。

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 日志文件的区间为(FILE_LSN,FLUSH_LSN],称为待写入日志空间。
  • 数据库运行过程中产生的待写入日志首先写入 REDO 日志包 RLOG_PKG,当日志刷盘时一起写入联机日志文件中。
  • 在联机日志文件中,可以覆盖写入 REDO 日志的文件长度为可用日志空间;不能被覆盖的 REDO 日志,系统故障重启需要重做的 REDO 日志为有效日志,有效 Redo 日志的 LSN 取值范围是(CKPT_LSN,FILE_LSN]。
  • 下图说明了联机日志文件、REDO 日志包 RLOG_PKG 以及相关各 LSN 之间的关系。
    DM8:达梦数据库数据文件与日志文件介绍_第2张图片

你可能感兴趣的:(数据库,数据库)