返回首页

gbase数据、南大通用产品文档:GBase8s分配日志文件

更新日期:2024年09月11日

当您初始化或重新启动数据库服务器时,该服务器将创建您在 LOGFILES 配置参数中所指
定数量的逻辑日志文件。这些日志文件是您在 LOGSIZE 参数中指定的大小。
动态添加逻辑日志文件
DYNAMIC_LOGS 配置参数确定数据库服务器何时将动态添加逻辑日志文件。当您使用
DYNAMIC_LOGS 的缺省值 2 时,如果下一个活动日志文件包含最旧打开事务的开头,那
么数据库服务器将动态添加新的日志文件并将警报设置为关闭。
数据库服务器将在以下时刻检查逻辑日志空间:

在切换到新日志文件后

在逻辑恢复的事务清除阶段开始时

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 305 -
如果 DYNAMIC_LOGS 参数设置为 1 并且下一个活动日志文件包含来自打开事务的记
录,那么数据库服务器将提示您手动添加日志文件并将警报设置为关闭。在您添加日志文
件后,数据库服务器将重新开始处理事务。
如果 DYNAMIC_LOGS 参数设置为 0 并且在长事务回滚过程中逻辑日志文件耗尽了空
间,那么该数据库服务器可能挂起。(长事务将防止第一个逻辑日志文件变为空闲并防止
其可用于重新使用。)要修复该问题并完成长事务,请将 DYNAMIC_LOGS 设置为 2 并
且重新启动数据库服务器。
有关更多信息,请参阅监视动态添加的日志的事件和设置用于回滚长事务的高水位标志
动态添加的日志文件的大小和数量
动态日志的用途是添加足够的日志空间,以允许回滚事务。在动态添加日志文件时,数据
库服务器使用以下因素来计算日志文件的大小:

平均日志大小

可用的连续空间量
如果逻辑日志空间过小,那么数据库服务器将按需添加尽可能多的日志文件,以回滚事务。
日志文件的数目由以下条件限制:

支持的最大数目的日志文件

日志文件的磁盘空间量

Root 块中可用的连续空间量
如果数据库服务器因为耗尽磁盘空间而停止添加新日志文件,它会写入错误消息并发出警
报。向现有数据库空间添加数据库空间或块。然后数据库服务器会自动重新开始处理事务。

Root 块中的保留页存储有关每个日志文件的信息。在添加更多日志文件时,包含该信息的
扩展数据块会扩展。Root 块需要两个 1.4 兆字节的扩展数据块,各用于跟踪 32,767 个
日志文件(支持的最大数目)。
如果在还原期间要从非 Root 块分配块保留页扩展数据块,那么服务器会尝试将其放回
Root 块中。如果在 Root 块中没有足够空间可用,还原将失败。包含所需空间的消息会显
示在联机日志中。所需空间必须在再次尝试还原之前从 Root 块中释放。
动态添加的日志文件的位置
数据库服务器按以下搜索顺序在数据库空间中分配日志文件。一个数据库空间如果包含逻
辑日志文件或物理日志,就可成为关键的数据库空间。
途径 分配日志文件的位置
1 包含最新日志文件的数据库空间
(如果该数据库空间已满,数据库服务器会搜索其他数据库空间。)
2 包含日志文件的镜像数据库空间(但根数据库空间除外)

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 306 -
3 所有已经包含日志文件的数据库空间(根数据库空间除外)
4 包含物理日志的数据库空间
5 根数据库空间
6 任何镜像数据库空间
7 任何数据库空间
如果不想使用此搜索顺序来分配新的日志文件,那么必须将 DYNAMIC_LOGS 参数设置
为 1 并在要用于新日志的位置运行 onparams -a -i。有关详细信息,请参阅监视动态添加的
日志的事件。
手动添加逻辑日志文件
可以使用 onparams 命令或 ON-Monitor 来添加逻辑日志文件。
您可以为以下原因而手动添加逻辑日志文件:

增加分配给逻辑日志的磁盘空间

更改逻辑日志文件的大小

允许打开的事务回滚

作为将逻辑日志文件移至不同数据库空间的操作的一部分
限制: 您不能执行以下操作:

向 BLOB 空间或智能大对象空间添加日志文件。

向具有非缺省页大小的数据库空间添加逻辑或物理日志。
一次添加一个,
最多向任一数据库空间添加 32,767 个逻辑日志文件。
一旦您向数据库空间
添加了日志文件,该空间就成为关键数据库空间。您可以在存储空间备份期间添加逻辑日
志文件。
您可以在以下任一位置添加逻辑日志文件:

文件列表的末尾(使用 onparams -a 命令)

当前逻辑日志文件之后(使用 onparams -a -i 命令)
要使用 onparams 添加逻辑日志文件,请执行以下操作:
1. 以用户 gbasedbt 或 root 的身份(在 UNIX™ 上)。
2. 请确保数据库服务器处于联机、管理、静默或快速恢复方式的清除阶段。
数据库服务器在清除阶段将以下消息写入日志:
Logical recovery has reached the transaction cleanup phase.
3. 决定要将日志文件添加到日志文件列表的末尾还是添加到当前日志文件之后。
无论 DYNAMIC_LOGS 参数值为多少,
您都可以在当前日志文件后插入日志文件。
添加新大小的日志文件不会更改 LOGSIZE 的值。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 307 -

以下命令使用 LOGSIZE 配置参数指定的日志文件大小将逻辑日志文件添加
到 logspace 数据库空间中逻辑日志文件列表的末尾:
onparams -a -d logspace

以下命令将 1000 KB 的逻辑日志文件插入 logspace 数据库空间中的当前日志
文件之后:
onparams -a -d logspace -s 1000 -i

要添加具有新大小(此例中为 250 KB)的逻辑日志文件,请运行以下命令:
onparams -a -d logspace -s 250
4. 使用 onstat -l 检查日志文件状态。
新日志文件的状态为 A,且立即可用。
5. 下次必须备份数据时,请对根数据库空间和包含新日志文件的数据库空间执行 0
级备份。
虽然在添加日志文件后不再需要立即备份,但因为数据结构已更改,所以下一次备
份必须为 0 级备份。有关备份数据的信息,请参阅《GBase 8s 备份与复原指南》。

有关使用 onparams 来添加逻辑日志文件的更多信息,请参阅 《GBase 8s 管理员参考》。
使用 ON-Monitor 添加逻辑日志文件 (UNIX)
1. 请遵循手动添加逻辑日志文件中有关添加日志文件的指示信息,只是使
用 ON-Monitor 来代替 onparams。
2. 请选择参数 > 添加日志来添加逻辑日志文件。
3. 在标为数据库空间名称的字段中,输入新逻辑日志文件将位于的数据库空间的名
称。
逻辑日志大小字段中将自动包含日志文件的大小。新的日志文件始终是由
LOGSIZE 指定的值。

使用 PHYSBUFF 配置参数来指定以 KB 为单位的共享内存中两个物理日志缓冲区的大小。
onconfig.std 值
PHYSBUFF 128
单位

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 119 -
KB

范围从 4 -(32767 * pagesize / 1024)的整数,此处 pagesize 是缺省系统页大小。该
值必须能被缺省系统页大小均分。如果该值不被页大小均分,则数据库服务器向下取整这
个大小为最接近可被页大小均分的值。
生效
编辑 onconfig 文件并重启数据库服务器之后。
用法
当其他缓冲区正被清空到磁盘上的物理日志时,加倍缓冲准许用户线程写到活动的物理日
志缓冲区。向物理日志缓冲区的写长度恰好为一页。PHYSBUFF 参数的值确定数据库服务器
需要将物理日志缓冲区清空到物理日志文件的频繁程度。
如果启用 RTO_SERVER_RESTART 配置参数,则使用 512 KB 为 PHYSBUFF 的缺省值。当启
用 RTO_SERVER_RESTART 配置参数时,如果 PHYSBUFF 配置参数的值小于 512
KB,则在重
启服务器时显示警告消息。
智能大对象的用户数据部分不通过物理日志缓冲区。

即使所有软件都没有错误且所有硬件都完全可靠,计算机外部的世界也可干扰它。闪电可
能击中建筑物,中断供电并在您的 UPDATE 语句运行期间停止计算机。当磁盘已满或用
户提供不正确的数据时,更可能发生的情景是,导致您的多行插入过早停止并产生错误。
在任何情况下,每当您修改数据,您必须假设某种不可预测的事件可中断该修改。
当外部原因导致修改中断时,您不可确定该操作完成了多少。即使在单行操作中,您也不
可知道是否正确地更新了到达了磁盘的数据或索引。
如果多行修改是一个问题,则多语句修改就更糟。通常在程序中嵌入它们,因此您看不到
正在执行的个别 SQL 语句。例如,要在演示数据库中输入新的订单,请执行下列步骤:
1.
在 orders 表中插入一行。(此插入生成一个订单编号。)
2.
对于订购的每一商品,在 items 表中插入一行。
存在两种编制订单输入应用程序的方法。一种方法是使它完全是交互的,以便程序立即插
入第一行,然后在用户输入时插入每一商品。但这种方法使得操作可能遭遇许多更不可预
测的事件:客户的电话电线,用户按错键,用户的终端或计算机断电,等等。
下列列表描述构建订单输入应用程序的正确方法:

以交互方式接受所有数据。

验证数据并展开它(例如,在 stock 和 manufact 中查找代码)。

在屏幕上显示信息以进行检查。

等待操作人员进行最终的提交。

快速地执行插入。
即使使用这些步骤,不可预测的情况还可在它插入该订单之后,但在它完成插入商品之前
停止该程序。如果发生那种情况,则数据库处于不可预测的状态:它的数据完整性受到损
害。