返回首页

gbase数据、南大通用产品文档:GBase8scheckpoint 参数:强制一检查点(SQL 管理

更新日期:2024年09月11日

API)
随同 admin() 或 task() 函数,使用 checkpoint 参数来强制一检查点。
语法

用法
这个函数强制一检查点,经缓冲区清空到磁盘。如果逻辑日志中最近的检查点记录阻止释
放逻辑日志文件(状态 U-B-L),则可使用这个函数来强制一检查点。
使用 block 参数来防止数据库服务器处理任何事物。在 GBase
8s 上使用这个选项执行外
部备份。在数据库服务器阻塞时,用户不可访问它,除非在只读模式中。直到解除数据库
服务器阻塞,事务才可完成。
使用 hard 参数来强制一阻塞检查点。这是缺省情况。
使用 norm 参数来强制一非阻塞检查点。
使用 unblock 参数来解除数据库服务器阻塞。当解除数据库服务器阻塞时,可恢复数据事
务和正常的数据库服务器操作。请在 GBase 8s 上完成外部备份之后使用这个选项。
这个函数等同于 onmode -c 命令。
示例
下列示例启用一阻塞检查点:
EXECUTE FUNCTION task("checkpoint","block");




dbschema -u 选项将显示数据库包含的任何用户定义数据类型和复杂数据
类型的定义。子选项 i 将类型继承添加到 dbschema -u 选项显示的信息中。
以下命令显示 stork 数据库的所有用户定义数据类型和复杂数据类型:
dbschema -d stork -u all
使用指定选项 -u all 运行的 dbschema 的输出可能如以下示例所示:
create row type 'gbasedbt'.person_t
(
name varchar(30, 10) not null,
address varchar(20, 10),
city varchar(20, 10),
state char(2),
zip integer,
bdate date
);
create row type 'gbasedbt'.employee_t
(
salary integer,
manager varchar(30, 10)
) under person_t;
以下命令显示了 stork 数据库中 person_t 表的用户定义数据类型和复杂
数据类型以及它们的类型继承:
dbschema -d stork -ui person_t
使用选项 -ui person_t 运行的 dbschema 的输出可能如以下示例所示:
create row type 'gbasedbt'.person_t
(



name varchar(30, 10) not null,
address varchar(20, 10),
city varchar(20, 10),
state char(2),
zip integer,
bdate date
);
create row type 'gbasedbt'.employee_t
(
salary integer,
manager varchar(30, 10)
) under person_t;
create row type 'gbasedbt'.sales_rep_t
(
rep_num integer,
region_num integer,
commission decimal(16),
home_office boolean
) under employee_t;

数字类型主要是指使用SQLT_NUM 类型的处理。
首先,在获取类型时,GCI 接口根据不同的参数配置,对于数字类型,返回的类型有所
不同。具体见表:











其次,在插入数据过程中,使用SQLT_NUM 类型作为绑定变量的类型时,应用程序须使
用字符串类型缓存进行绑定。字符串长度可以根据实际字段的精度(数字类型)设定,一般
设置长度为精度加1.
C 语言类型(64 位系
统)
精度
数据库类型名称
SQLT 类型
float
7
Real/SMALLFLOAT/DEC(N)
N<7
SQLT_FLT/SQLT_BFLOAT/S
QLT_IBFLOAT
short
15
FLOAT/double
precision/DEC(N) n>7
SQLT_FLT/SQLT_BDOUBLE
/SQLT_IBDOUBLE
16 位精度以上用字
符串
32
Dec(n)
SQLT_CHR




Factory
数字类型
1(缺省值)
2
3
备注
SQL_INTEGER
SQLT_INT
SQLT_NUM
SQLT_NUM
四字节整型
SQL_DECIMAL
SQLT_CHR
SQLT_NUM
SQLT_NUM
dec
SQL_SMALLINT
SQLT_INT
SQLT_NUM
SQLT_NUM
两字节整型
SQL_INFX_BIGINT
SQLT_INT
SQLT_NUM
SQLT_NUM
bigint
SQL_BIGINT
SQLT_INT
SQLT_NUM
SQLT_NUM
Int8
SQL_FLOAT
SQLT_FLT
SQLT_FLT
SQLT_FLT
float
SQL_REAL
SQLT_FLT
SQLT_FLT
SQLT_FLT
smallfloat



当操作数据库字段的数字精度大于8 字节所表示的范围,或者浮点数精度超过15 时,
GCI 接口需要使用字符串类型,进行绑定操作。如果使用的是SQLT_NUM 类型,也会转为字
符串类型进行操作。
例:
Char ch[32] = ‘1.1234567890987654321’;
rc=GCIBindByPos(stmt,&Bindp[0],errhp,1,(dvoid*)ch,(sb4)32,SQLT_NUM,NULL,NULL,NULL,0,NUL
L,GCI_DEFAULT);
上例中,类型指定SQLT_NUM,实际缓存的内容为字符串。