南大通用 GBase 8s中DBSpace的保留页详解

原文链接:https://www.gbase.cn/community/post/4985

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在GBase 8s数据库中,保留页是系统正常运行的关键。这些保留页包含了数据库的版权信息、配置信息、检查点日志、数据库空间信息以及归档信息等。它们是数据库系统中最基础、最重要的数据结构之一。

这里的保留页特指的是root chunk的12个保留页。

这12个保留页的布局如下:

页号

0      Copyright

1      Configuration

2/3    Checkpoint logs

4/5    Dbspaces

6/7    Primary chunks

8/9    Mirror/Chunks

a/b    Archive


root chunk的前12个页面被保留用于系统信息。从第2页开始,页面成对分组并交替更新。简单介绍如下:


Page zero

Page 0包含GBase8s版权和版本信息、最小页面大小以及系统创建的日期和时间。


Configuration Page

Page 1, 包含数据库上次online时存储在系统配置文件($GBASEDBTIR/etc/$ONCONFIG)中的所有信息的副本。


Checkpoint/logical log pages

Page 2/3, 是检查点/逻辑日志页。当前检查点/逻辑日志页面提供最后一个检查点的位置、日期和时间,以及每个逻辑日志文件的位置和当前状态。


Dbspace pages

Page 4/5 是dbspace页。当前dbspace页面上的每个条目都跟踪dbspace的状态、位置、数据和创建时间。


Primary chunk pages

Page 6/7 是保留页面,其包含关于服务器上的每个chunk的信息。对于每个chunk,当前主块页面包含有关chunk的路径名、大小、偏移量和状态的信息。


Mirror chunk pages

Page 8/9是镜像chunk页面。这些页面的结构与主块页面相同。


Archive pages

Page 10/11(0xa和0xb)是存档页。这些页面包含有关在服务器上执行的最新存档的信息。


每类保留页的详细介绍参见随后章节。

page 0: The Copyright Page

这个页面的一个重要用途是识别GBase8s 的版本。

保留页都可以使用oncheck -pr 展示,这个命令用于展示保留页。

也可以用 oncheck -pP 1 0展示,这个命令展示第1个chunk的第0页。


oncheck –pr对于第0页的显示:

oncheck -pP 1 0的显示:

page 1: The Configuration Page

配置页面包含配置文件($ONCONFIG)中所有记录参数的值。换句话说,它不仅仅是配置文件中发生的任何内容的副本;向配置文件添加附加参数不会向配置页面添加任何新内容。

onstat -c 命令不使用这些页面中的信息。此命令读取配置文件,而不是保留页。

oncheck –pr对于第1页的显示:


oncheck -pP 1 1的显示:

page 2/3: The Checkpoint/Logical Log Page

这种页面两种信息:

提供最后一个检查点的位置、日期和时间;

每个逻辑日志文件的信息。

从第2页开始,将对保留的页面进行配对。然而,这对中只有一页是最新的。因此,当我们提到主块保留页、dbspace保留页或检查点/逻辑日志保留页时,我们指的是这对页的当前页。通过比较时间戳可以很容易地找到当前页面,这是oncheck -pr在决定要显示哪些页面时使用的方法。注意,在每个保留页面输出的顶部,oncheck指示它选择显示的页面对。

用oncheck –pr展示内容,我们可以看到当前使用的是PAGE_1CKPT,也就是第二页。页内的内容分为两部分:检查点信息;逻辑日志文件信息。

Hint

通过比较 oncheck -pP 1 2 和oncheck -pP 1 3的时间戳,看看哪个更新。


通过比对时间戳,可以看到page 2的时间戳更大,也就是更新。

检查点信息

通过oncheck –pr获取的检查点信息如下,下面逐项介绍这些内容。

Time stamp of checkpoint(hex)

检查点最后时刻的当前全局系统时间戳。请注意,当前检查点/逻辑日志页上的时间戳通常只比存储在检查点结构中的时间戳值高一两个刻度。

Time of checkpoint

最后一个检查点的真实日期和时间,基于UNIX主机的localtime函数。

Physical log begin address(decimal:decimal)

这是物理日志中第一个页面的位置(块号和页面偏移量)。您可以使用oncheck-pe验证此信息。

Physical log size(decimal)

物理日志的大小(以页为单位)。

Physical log position at Ckpt(decimal)

这是上一个检查点时物理日志中当前的页面偏移量,表示为从物理日志开始地址偏移的页面数。快速恢复的第一阶段,即物理恢复,从此处指示的页面后面的页面开始。

Logical log unique identifier(decimal)

这是包含最近写入的检查点记录的逻辑日志的唯一ID。

Logical log position at Ckpt(hex)

这是由检查点结构中的前一个元素(逻辑日志唯一标识符)指示的逻辑日志中的位置,在该位置可以实际找到最近写入的检查点记录。这也被称为logpos。

Dbspace descriptor page(decimal:decimal)

这是检查点时当前的dbspace保留页的位置(chunk号和偏移量)。当然,还可以比较两个dbspace页面上的时间戳,以确定哪一个更为最新。

Chunk descriptor page(decimal:decimal)

这是上一个检查点时当前的主区块保留页的位置(chunk编号和offest)。

Mirror chunk descriptor page(decimal:decimal)

这是在最后一个检查点时当前的镜像区块保留页的位置(chunk编号和偏移量)。

逻辑日志文件信息

oncheck –pr获取的逻辑日志文件信息如下,下面逐个介绍这些信息的含义:

对于系统中定义的每个逻辑日志文件,checkpin/逻辑日志保留页面中都有一个日志文件结构。

Log file number(decimal)

GBase 8s 中日志文件的编号。逻辑日志文件通常按照其日志文件编号的顺序使用。

每个逻辑日志文件都有一个编号,这个编号不变。

Unique identifier(decimal)

此整数始终与当前存储在此日志文件中的特定逻辑日志记录集相关联。零值表示日志文件是空闲的。

对于每个逻辑日志文件,这个编号是变的。逻辑日志是循环使用的,假设有6个逻辑日志文件,他们的Log File Number永远是1~6。循环写入的第一次,这6个文件的Unique identifier是1~6,第二次是7~12,以此类推。

Log file flags(hex)

借助逻辑OR,可以将五个不同的逻辑日志标志(如前一章所述的页面标志)打包成一个短整数。各个标志值为:

0x01日志文件正在使用中

0x02当前日志文件

0x04已备份

0x08新增(需要存档)

0x10日志已写入存档磁带

0x20日志是一个临时日志文件

请注意,oncheck-pr 会打印所示值中存在的所有标志值的含义。

Physical location(decimal:decimal)

这是此日志文件第一页的物理位置(chunk号和偏移量)。

Log size(decimal)

这将展示此日志文件的大小(以页为单位)。

Number pages used (decimal)

日志文件结构的这个元素是相当不言自明的,尽管并不总是非常准确,只在检查点期间与保留的其余页面信息一起更新(错误时,它很低)。GBase8s的恢复机制根本不依赖于此值。

Date/time file filled

这是填写此日志文件的日期和时间,基于UNIX主机的localtime函数。12/31/69 16:00表示此元素的值为0,这意味着日志文件是空闲的或仍在使用中。

Time stamp (decimal)

这是此日志文件完成时的全局系统时间戳的值(日志文件不必填充到容量即可获得时间戳)。这里的0表示日志文件是空闲的或仍在使用中。

page 4/5: The dbspace page

使用oncheck –pr 展示的dbspace page的内容如下:

dbspace结构比检查点或日志文件结构更容易直观地理解。这里每一项的含义介绍如下:

Dbspace number (decimal)

数据库空间编号从1开始索引。

Dbspace name

这是创建dbspace时给定的名称,也是所有引用此dbspace的SQL语法中使用的名称。

Flags (hex)

标志(十六进制)–dbspace标志的可能值有:

0x0001 DBspace没有镜像块

0x0002 DBspace使用镜像块

0x0004 DBspace已禁用镜像块

0x0008  新镜像


blobspaces特有的标志:

0x0010 DBspace是一个BLOBspace

0x0020 BLOBspace位于可移动媒体上

0x0040 BLOBspace驻留在光学介质上

0x0080 BLOBspace已删除

0x0100 BLOB空间是光学STAGEBLOB


其他标志:

0x0200 正在物理恢复空间

0x0400 空间已物理恢复

0x0800 正在逻辑上恢复空间

0x1000 dbspace中的表已删除

0x2000 临时数据库空间

0x4000 空间正在存档

0x8000 空间是sbspace

0x10000 物理或逻辑日志已更改


Number of chunks (decimal)

这表示此dbspace中的chunk总数(不包括镜像chunk)。

First chunk (decimal)

dbspace中的第一个chunk的概念在内部很重要,因为dbspace结构及其所有相关的主块结构形成了一个链表。GBase8s可以从dbspace结构中的第一个chunk元素中快速找到与此dbspace关联的第一个chunk结构。然后,基于每个chunk结构中的Next chunk,GBase8s可以快速遍历列表的其余部分。

Date/time created

这是创建dbspace的日期和时间,基于UNIX localtime函数。

Partition table page number

这表示partition partition 的第一页的位置,作为dbspace第一块的页面偏移。

Pagesize (k)

这是为此数据库空间定义的页面大小。

Logical Log Unique ID and Logical Log Position

这些字段指示此数据库空间的ADD DBS事务记录的位置。

Oldest Logical Log Unique ID and Last Logical Log Unique ID

这些指示最旧和最新逻辑日志的唯一ID号。

Dbspace archive status

这显示了有关上次执行的包括此dbspace的备份的信息。信息包括备份级别、备份的开始和结束时间以及备份检查点记录的位置。

page 6/7: The primary chunk page

oncheck –pr展示如下:

Chunk number (decimal)

chunk从1开始索引,而页面偏移量从0开始。因此,页面地址的最低可能值是1:0。

Flags (hex)

单个chunk标志,或组合成一个元素,具有以下值:

0x0010 镜像块

0x0020 chunk已离线

0x0040 chunk已联机

0x0080 正在恢复chunk

0x0100 chunk被新镜像

0x0200 chunk属于chunk空间

0x0400 chunk正在被丢弃

0x0800 chunk是blob的一部分

0x1000 chunk与系统其余部分不一致

0x2000 chunk已被链接

0x4000 chunk属于sbspace

Chunk path

这是chunk设备或文件的完整路径名。

Chunk offset (decimal)

chunk的偏移量,针对chunk path的偏移量。

一个设备或文件可以创建多个chunk。

比如:100GB的文件可以创建两个chunk,

第一个从偏移量0开始,大小是50GB;

第二个从偏移量50GB开始,大小是50GB。

Chunk size (decimal)

这表示页面中块的大小。

Number of free pages (decimal)

表示当前块空闲列表中的总页数。

Dbspace number (decimal)

这是唯一的Dbspace编号。

page 8/9: The mirror chunk

在内部,镜像chunk 结构与主chunk 结构相同。当然,对于某些元素,每个结构都包含不同的值。

page a/b: The Archive Page

存档保留页是根保留页集中的最后一个。页面上最多可以显示三个archive 结构,具体取决于系统上的存档级别。一旦第二个或第三个存档结构出现在页面上,它就永远不会被删除,因为新的0级存档不会否定以前的1级或2级存档的潜在重要性。

只有当存档成功完成时,新信息才会记录在存档保留页中。

存档级别(十进制)–可以是级别0、1或2。

Real Time Archive Began–这表示UNIX主机上的localtime函数所看到的存档检查点的日期和时间。

时间戳存档开始(十进制)–这是与存档开始时发生的检查点相关联的时间戳。

逻辑日志唯一Id(十进制)–这是包含存档检查点记录的逻辑日志的唯一Id。

逻辑日志位置(十六进制)–这是由逻辑日志唯一ID指定的日志(logpos)中可以找到存档检查点的位置。

对于备份过的hdr, 执行oncheck –pr显示如下:

通过对GBase 8s数据库保留页的深入了解,我们可以更好地理解数据库的内部结构和运行机制。这些保留页是数据库系统中最基础、最重要的数据结构之一,它们对于确保数据的完整性和系统的稳定性起着至关重要的作用。作为数据库管理员,了解和掌握这些知识对于维护和优化数据库至关重要。希望这篇文章能够帮助您更深入地了解GBase 8s数据库的保留页,提高您的数据库管理技能。

原文链接:https://www.gbase.cn/community/post/4985

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容