返回首页

gbase数据、南大通用产品文档:GBase8cenable_incremental_catchup

更新日期:2024年09月11日

参数说明:控制主备之间数据追赶(catchup)的方式,目前默认不支持主备从部署模
式。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示备机catchup 时用增量catchup 方式,即从从备本地数据文件扫描获得主备
差异数据文件列表,进行主备之间的catchup。

off 表示备机catchup 时用全量catchup 方式,即从主机本地所有数据文件扫描获得
主备差异数据文件列表,进行主备之间的catchup。
默认值:on

使用 ENCRYPT_MACFILE 配置参数来指定一个 MAC 密钥文件的全路径名列表。此配置参数
仅用于 Enterprise Replication 和高可用性数据复制。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 82 -
onconfig.std 值
未设置。

一个或以逗号分隔的多个全路径和文件名,以及可选的 builtin 关键词。例如:
ENCRYPT_MACFILE /usr/local/bin/mac1.dat, /usr/local/bin/mac2.dat,builtin
单位
路径名长度最大为 1536 字节
生效
对于 HDR:当数据库服务器关闭并重启时。
对于 Enterprise Replication:当启动 Enterprise Replication 时。
用法
在连接时刻,ENCRYPT_MACFILE 配置参数确定每一个条目的优先级并协商。由 GenMacKey
实用程序根据其创建时间确定 MAC 密钥文件的优先级。从 builtin 关键词创建的条目有
最低优先级。因为协商 MAC 密钥文件,因此您应定期地更改密钥。

sqlbreakcallback() 函数允许您指定超时间隔,并注册 callback 函数。当数据库服务器
正在处理 SQL 请求时,该 callback 函数为应用程序提供重新获得控制的方法。

限制:
如果您的 GBase 8s ESQL/C 应用程序使用共享内存
(onipcshm)
作为 nettype
来连接到 GBase 8s 数据库服务器,则请不要使用 sqlbreakcallback() 函数。共享内不能不
是真正的网络协议,且不处理支持 callback 函数所需要的 nonblocking I/O。当您随同共享
内存使用 sqlbreakcallback() 时,该调用看来似乎成功地注册 callback 函数(它返回零);
然而,在 SQL 请求期间,该应用程序从不调用 callback 函数。

语法

mint sqlbreakcallback(timeout, callbackfunc_ptr);
int4 timeout;
void (* callbackfunc_ptr)(int status);
timeout
在应用程序进程重新获得控制之前,SQL 请求等待执行的时间间隔。
此值可为如下:
-1
清除 timeout 值。
0
立即调用 callbackfunc_ptr 指示的函数。
>0
将超时间隔设置为在该应用程序调用 callbackfunc_ptr 指示的函数之前经过的毫秒数。

timeout 参数是一 4 字节变量。
此参数依赖于操作系统:
它可为 int、
long 或 short 数
据类型的变量。
callbackfunc_ptr
执行用户定义的 callback 函数的指针。


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 936 -
用法
在您以 sqlbreakcallback() 注册 callback 函数之后,应用程序在执行 SQL 请求的三
个不同的点处调用此函数。callback 函数的 status 参数中的值指示应用程序在哪个点调用
该函数。下表总结 status 值。

调用 callback 函数的时刻
status 参数的值
当数据库服务器开始处理 SQL 请
求时
status = 1
在数据库服务器执行 SQL 请求时,
当已经过了超时间隔时
status = 2
当数据库服务器完成 SQL 请求的
处理时
status = 0

当您以 status 值 2 调用 callback 函数时,callback 函数可确定数据库服务器是否可
以下列行动之一来继续处理:
它可调用 sqlbreak() 函数来取消该 SQL 请求。
它可忽略 sqlbreak() 调用,来继续该 SQL 请求。

该 callback 函数,
以及任何它的子例程,
仅可包含下列 GBase
8s
ESQL/C
控制函数:sqldone()、sqlbreak() 和 sqlbreakcallback()。

如果您以 timeout 值零来调用 sqlbreakcallback(),
则 callback 函数立即执行。
callback
函数多次执行,直到它包含对 sqlbreakcallback() 的调用来以下列行动之一重新定义该
callback 函数为止:
它解除该 callback 函数的关联,来终止该 callback 函数的调用,如下:
sqlbreakcallback(-1L, (void *)NULL);
它定义某个其他的 callback 函数,或将 timeout 值重置为非零值,如下:
sqlbreakcallback(timeout, callbackfunc_ptr);

重要: 小 timeout 值可能反而影响您的应用程序的性能。

在您调用 sqlbreakcallback() 函数之前,您必须建立数据库服务器连接。在连接期间,
callback 函数保持有效,或直到 sqlbreakcallback() 函数重新定义该 callback 函数为止。


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 937 -
返回代码
0
sqlbreakcallback() 调用成功。
<0
sqlbreakcallback() 调用不成功。