返回首页

gbase数据、南大通用产品文档:GBase8s更改数据捕获API组件

更新日期:2024年09月11日

变更数据捕获API 由函数、系统数据库、CDC 记录和错误代码组成。

如果日志文件是新添加的(状态 A),那么可立即使用该文件,也可立即删除。
您可能希望为以下原因而释放逻辑日志文件:

使数据库服务器不停止处理

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

释放已删除的 BLOB 页所用的空间
释放日志文件的过程根据日志文件的状态而变化。每个过程均在以下主题中进行了描述。
要查明逻辑日志文件的状态,请参阅逻辑日志文件的状态标志和监视日志记录活动。
提示: 有关使用 ON-Bar 或 ontape 以备份存储空间和逻辑日志的信息,请参阅《GBase 8s 备份与复原
指南》。
删除状态为 D 的日志文件
当删除已使用的日志文件时,该文件将标记为已删除(状态为 D)且无法再次使用,同时
onparams 将打印以下消息:
Log file log_file_number has been pre-dropped. It will be deleted from the log list and its
space can be reused once you take level 0 archives of all BLOBspaces, Smart
BLOBspaces and non-temporary DBspaces.
必需具有 0 级归档,以确保日志文件本身以及不同数据库空间中的所有关联信息都已归
档。在 0 级归档的结束后会删除日志文件;但是,由于除去日志文件本身属于磁盘上根保
留页结构中的更改,因此下一次执行的归档也必须是 0 级归档。必须先执行 0 级归档,
然后才能执行 1 级或 2 级归档。

释放状态为 U 的日志文件
如果日志文件包含记录但尚未备份(状态为 U),请使用通常使用的备份工具来备份该文
件。
如果备份日志文件无法将状态更改为可用 (F),
那么其状态会更改为 U-B 或 U-B-L。
请参
阅释放状态为 U-B 或 F 的日志文件或释放状态为 U-B-L 的日志文件。

释放状态为 U-B 或 F 的日志文件
如果日志文件已备份但仍在使用中(状态为 U-B),那么说明日志文件中的某些事务仍在
进行,
或日志文件包含快速恢复所需的最旧更新。
由于过去已使用过状态为 F 的日志文件,
因此该文件将与状态为 U-B 的日志文件一样遵循相同的规则。
要释放正在使用的已备份日志文件,请执行以下操作:
1. 如果您不希望等待至事务完成,可将数据库服务器切换到静默方式。
请参阅立即从联机更改到静默方式。任何活动的事务将回滚。
2. 使用 onmode -c 命令以强制产生一个检查点。执行此操作的原因是状态为 U-B 的
日志文件可能包含最旧的更新。
已备份但不在使用中(状态为 U-B)的日志文件无需释放。在以下示例中,日志 34 无需
释放,但日志 35 和 36 需要释放。日志 35 包含上一个检查点,而日志 36 已备份但仍
在使用中。
34 U-B-- Log is used, backed up, and not in use

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 302 -
35 U-B-L Log is used, backed up, contains last checkpoint
36 U-B-- Log is used, backed up, and not in use
37 U-C-- This is the current log file, not backed up
提示: 仅当逻辑日志没有通过活动的事务跨越并且不包含最旧的更新,您才能释放带有 U-B
(而非 L)状态的逻辑日志。

释放状态为 U-C 或 U-C-L 的日志文件
请遵循以下步骤来释放当前日志文件。
要释放当前日志文件(状态为 C),请执行以下操作:
1. 运行以下命令将当前日志文件切换到下一个可用的日志文件:onmode -l
2. 用 ON-Bar 或 ontape 备份原始日志文件。
3. 在备份了所有填满的日志文件后,
会提示您切换到下一个可用的日志文件并备份新
的当前日志文件。
因为刚刚切换到此日志文件,所以无需执行备份。
在释放当前日志文件后,如果日志文件的状态为 U-B 或 U-B-L,请参阅释放状态为 U-B
或 F 的日志文件或释放状态为 U-B-L 的日志文件。

释放状态为 U-B-L 的日志文件
如果日志文件已备份,并且其中的所有事务已关闭,但该文件还未释放(状态为 U-B-L),
那么此逻辑日志文件包含最近的检查点记录。可以释放状态为 U-B-L 的日志文件。
要释放状态为 U-B-L 的日志文件,数据库服务器必须创建新的检查点。 可以运行以下命
令来强制执行检查点:onmode -c
仅限 UNIX: 要用 ON-Monitor 强制执行检查点,请选择强制执行检查点选项。

SQL 问题
如果应用像如下示例调用ODBC 接口,那么GBase ODBC 会在执行
SQLNumResultCols 时先在Server 端执行一次selectSql,然后在执行
SQLExecute 在Server 端再执行一次selectSql。
SQLPrepare(hstmt, selectSql, SQL_NTS);
SQLNumResultCols(hstmt, &tnum);
...
SQLExecute(hstmt);
第一次执行selectSql 是为了获取结果集的MetaData, 第二次执行

GBase 8a 程序员手册ODBC 篇


- 84 -

南大通用数据技术股份有限公司
selectSql 时才会真正获取数据。