当前位置: 首页 > news >正文

DM LSN 与 Oracle SCN 对比

1 DM LSN 和 Oracle SCN 概念


DM LSN(Log Sequence Number)是由系统自动维护的 Bigint 类型数值,具有自动递增、 全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个物理事务。LSN 取值范围 0~正无穷大,新建的库 LSN 为 0,以后日志每被写入 一次,LSN 值增加 1。

物理事务(Physical Transaction,简称 ptx)是数据库内部一系列修改物理数据页操作的集合,与数据库管理 系统中事务(Transaction)概念相对应,具有原子性、有序性、无法撤销等特性。

DM 数据库中与 LSN 相关的信息 ,可以通过查询 V\$RLOG 和 V\$RAPPLY_PARALLEL_INFO 表来获取。

Oracle SCN(System Change Number,系统改变号)是一个由系统内部进行维护的序列号。当系统需要更新时自动增加,它是系统中维持数据的一致性和顺序恢复的重要标志,是数据库中非常重要的数据结构。注意SCN是有上限的,最大值参考官方文档或者在数据库中进行查询。

在数据库中SCN是作为一种类时钟机制来标记数据库动作。比如每当有一个事务发生,数据库会用一个SCN对它进行标记。SCN全局唯一,随时间的增长而增长,除非重建数据库这个值才会被重置。在数据库中,SCN就像血液一样无处不在,比如数据文件头,控制文件,数据块头,日志文件等都标记着SCN。也正因此数据库的一致性维护和SCN密切相关。不管是数据库备份还是恢复都是离不开SCN的。

2 DM LSN分类及与Oracle SCN对比

DM 主要包括以下几种类型的 LSN:

  • CUR_LSN 是系统已经分配的最大 LSN 值。物理事务提交时,系统会为其分配一个唯一的 LSN 值,大小等于 CUR_LSN + 1,然后再修改 CUR_LSN=CUR_LSN+1。
    Oracle:Current SCN,Oracle 中表示当前数据库已分配的最大 SCN 值,随事务提交递增。CUR_LSN 更强调物理事务,Current SCN 同时支持逻辑事务和 MVCC。
  • FILE_LSN 是已经写入联机 Redo 日志文件的日志包的最大 LSN 值。每次将 Redo 日志包 RLOG_PKG 写入联机 Redo 日志文件后,都要修改 FILE_LSN 值。
    Oracle:Redo Log SCN,表示已写入 Redo 日志的 SCN 值,FILE_LSN 明确与日志包。RLOG_PKG绑定,Redo Log SCN 与日志组管理相关。
  • FLUSH_LSN 是已经发起日志刷盘请求,但还没有真正写入联机 Redo 日志文件的最大 LSN 值。
    无对标,FLUSH_LSN 是 DM 特有的概念,Oracle 没有明确区分“已发起刷盘但未写入”的 SCN,日志刷盘由 LGWR 异步处理。
  • CKPT_LSN 是检查点 LSN,所有 LSN ≤ CKPT_LSN 的物理事务修改的数据页, 都已经从 Buffer 缓冲区写入磁盘,CKPT_LSN 由检查点线程负责调整。
    Oracle:Checkpoint SCN database,表示检查点完成时,所有 SCN ≤ Checkpoint SCN 的数据修改已写入数据文件[V$DATAFILE]。
  • APPLY_LSN 是备库已写入联机 Redo 日志文件的日志包的原始最大 LSN 值,此 LSN 取自主库对应的原始日志包中的最大 LSN 值。如果主库是 DMDSC 集群,备库分别为主库每一个节点维护一个 APPLY_LSN。
    Oracle:Applied SCN,DG中表示备库已应用的主库 Redo 日志的 SCN 值。APPLY_LSN 在 DMDSC 集群中为主库每个节点单独维护,Applied SCN 在 Oracle Data Guard 中是全局的。
  • RPKG_LSN 是备库重演 LSN,表示备库已经重演完成的最大 LSN。如果主库是 DMDSC 集群,备库分别为主库每一个节点维护一个 RPKG_LSN
    Oracle:Replayed SCN,DG中表示备库已重演(应用到数据库)的 SCN 值。RPKG_LSN 在 DMDSC 集群中为主库每个节点单独维护,Replayed SCN 是统一的。

与上述 LSN 对应,DM 数据守护(Datawatch)也定义了一批 LSN:

  1. CLSN 与 CUR_LSN 保持一致,数据库已经分配的最大 LSN 值。
  2. FLSN 与 FILE_LSN 保持一致,已写入联机日志文件的 LSN 值。
  3. ALSN 与 APPLY_LSN 保持一致,备库已写入联机日志文件的原始 LSN 值。
  4. RLSN 与 RPKG_LSN 保持一致,备库已经重演完成的最大 LSN 值。
  5. SLSN 是 Standby LSN 的缩写,表示备库明确可重演的最大 LSN 值。
  6. KLSN 是 Keep LSN 的缩写,表示备库已经收到、但未明确是否可以重演的 RLOG_PKG 的最大 LSN 值。
  7. 在读写分离集群中 KLSN == SLSN。

3 DM LSN 查询方式

LSN 相关信息通过查询 V$RLOG 和 V$RAPPLY_PARALLEL_INFO 表获取。

SELECT CUR_LSN, FILE_LSN, CKPT_LSN FROM V$RLOG;

对于 DMDSC 集群中的 APPLY_LSN 和 RPKG_LSN,可通过 V$RAPPLY_PARALLEL_INFO 查看每个主库节点的对应值。

http://www.dtcms.com/a/354683.html

相关文章:

  • UNIX网络编程笔记:共享内存区和远程过程调用
  • 机器学习基本概述
  • 小白入门:支持深度学习的视觉数据库管理系统
  • 神经网络为何能 “学习”?从神经元到深度学习模型的层级结构解析
  • 【OS】IO
  • 不同业务怎么选服务器?CPU / 内存 / 带宽配置表
  • [肥用云计算] Serverless 多环境配置
  • 【SpringBoot 版本升级整合Redis异常解决】Unable to connect to 127.0.0.1:6379
  • 云计算学习100天-第32天
  • InnoDB存储引擎底层拆解:从页、事务到锁,如何撑起MySQL数据库高效运转(上)
  • 音频转PCM
  • PCM转音频
  • 底层音频编程的基本术语 PCM 和 Mixer
  • docker 1分钟 快速搭建 redis 哨兵集群
  • GD32VW553-IOT OLED移植
  • JavaWeb 30 天入门:第二十一天 ——AJAX 异步交互技术
  • React Hook+Ts+Antd+SpringBoot实现分片上传(前端)
  • openEuler常用操作指令
  • Java开发 - 缓存
  • 我店生活平台是不是 “圈钱平台”?揭开消费补贴新模式的面纱
  • 从零开始的云计算生活——第五十三天,发愤图强,kubernetes模块之Prometheus和发布
  • DistributedLock 实现.Net分布式锁
  • Kafka02-集群选主
  • BeyondMimic——通过引导式扩散实现动作捕捉:基于Diffuse-CLoC构建扩散框架,可模仿动作、导航避障(含UniTracker的详解)
  • InstructGPT:使用人类反馈训练语言模型以遵循指令
  • ARM相关的基础概念和寄存器
  • Shell编程知识整理
  • 从 WPF 到 Avalonia 的迁移系列实战篇2:路由事件的异同点与迁移技巧
  • Linux下OpenRadioss源码编译安装及使用
  • Shell 字符串操作与运算符