返回首页

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

更新日期:2024年09月11日

参数说明:表示当前用户是否是初始用户。
该参数属于INTERNAL 类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:布尔型。

on:是初始用户。

off:不是初始用户。
默认值:off

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1422

SQLBindCol 为结果集中的列分配存储和 GBase 8s ODBC Driver C 数据类型。
SQLBindCol 按如下方式分配存储:
l
一个存储缓冲区,用于接收一列数据的内容
l
存储缓冲区的长度
l
一个存储位置,用于接收访存操作返回的数据列的实际长度

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 211 -

l
将 GBase 8s SQL 数据类型转换为 GBase 8s ODBC driver C 数据类型
下表描述了 SQLBindCol 的 SQLSTATE 和错误值。
SQLSTATE
错误值
错误消息
01000
-11001
General warning
S1000
-11060
General error
S1001
-11061
Memory-allocation failure
S1002
-11062
Invalid column number
S1003
-11063
Program type out of range
S1010
-11067
Function-sequence error
S1090
-11071
Invalid string or buffer length
S1C00
-11092
Driver not capable
重要: 应用程序可以调用 SQLBindCol 将列绑定到新的存储位置,而不管数据是否已经被存
取。新的绑定替换旧的绑定列以及其它绑定列。新的绑定不会应用到已经访存的数据;它会在
下次调用 SQLFetch 、SQLExtendedFetch 或 SQLSetPos 时发生作用。

本实例说明了手动恢复所涉及的工作。 以下 SQL 语句由用户 nhowe 执行。 返回了错误
-698。
dbaccess
CREATE DATABASE tmp WITH LOG;
CREATE TABLE t (a int);
CLOSE DATABASE;
CREATE DATABASE tmp@apex WITH LOG;
CREATE TABLE t (a int);
CLOSE DATABASE;
DATABASE tmp;
BEGIN WORK;

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 515 -
INSERT INTO t VALUES (2);
INSERT INTO tmp@apex:t VALUES (2);
COMMIT WORK;
### return code -698
以下摘要引用自当前数据库服务器上的逻辑日志:
addr len type xid id link
.....
17018 16 CKPOINT 0 0 13018 0

18018 20 BEGIN 2 1 0 08/27/91 10:56:57
3482 nhowe


1802c 32 HINSERT 2 0 18018 1000018 102
4
1804c 40 CKPOINT 0 0 17018 1

begin xid id addr user

1 2 1 1802c nhowe

19018 72 BEGPREP 2 0 1802c 6d69 1

19060 16 COMMIT 2 0 19018 08/27/91 11:01:38

1a018 16 ENDTRANS 2 0 19060 580543
以下摘要引用自数据库服务器 apex 上的逻辑日志:
addr len type xid id link
.....
16018 20 BEGIN 2 1 0 08/27/91
10:57:07 3483 pault


1602c 32 HINSERT 2 0 16018 1000018 102
4

1604c 68 PREPARE 2 0 1602c eh

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

17018 16 HEURTX 2 0 1604c 1

17028 12 CLR 2 0 1602c

17034 16 ROLLBACK 2 0 17018 08/27/91 11:01:22

17044 40 CKPOINT 0 0 15018 1

begin xid id addr user
1 2 1 17034 --------

18018 16 ENDTRANS 2 0 17034 8806c3
....
首先您要尝试将当前数据库服务器日志中的事务与 apex 数据库服务器日志中的事务相匹
配。BEGPREP 和 PREPARE 日志记录均包含 GTRID。您可以通过使用 onlog -l 以及查
看 BEGPREP 和 PREPARE 日志记录的数据部分来抽取 GTRID。GTRID 在数据部分中
偏移了 22 字节,长为 68 字节。更为简单但是准确度较低的方法是查看 COMMIT 或
ROLLBACK 记录的时间。 虽然由于将落实(或回滚)消息从协调者传输至参与者所用
时间而导致稍有延迟,但这两个时间必须很接近。(第二个方法缺乏准确度,因为虽然来
自同一协调者的并发事务很可能不在同一时间落实,但并发事务是可以在同一时间落实
的。)
更正该样本情况
1.
查找所有已更新的记录。
2.
使用 onlog 和记录类型表来识别记录类型(插入、删除、更新)。
3.
使用每个记录的 onlog -l 输出以获取本地 xid、表空间数和行标识。
4. 通过将表空间数与 systables 系统目录表的 partnum 列中的值相比较,从而将表空
间数映射到表名。
5.
运用您的应用程序知识来确定需要哪一操作来更正该情况。
在本示例中,不同日志中 COMMIT 和 ROLLBACK 记录上的时间戳记很接近。没有其
他活动事务造成另一并发的落实或回滚的可能性。在这种情况下,当前数据库服务器上落
实了已分配行标识 102(十六进制)或 258(十进制)的插入 (HINSERT)。 因此,补偿
事务如下:
DELETE FROM t WHERE rowid = 258


GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 517 -
8 自动监视和更正操作概述
可以使用 SQL 管理 API、调度程序和向下钻取查询来管理自动维护、监视和管理任务。
GBase 8s 的这些组件简化了复杂系统中的信息收集和服务器维护。
SQL 管理 API
SQL 管理 API 用于通过 SQL 函数执行远程管理。因为 SQL 管理 API 操作完全
在 SQL 中执行,所以可在客户机工具中使用这些函数来管理数据库服务器。
调度程序
调度程序是一组任务,用于在预定义时间或按照服务器内部确定的时间来执行 SQL
语句。SQL 语句可以收集信息或监视和调整服务器。
向下钻取查询
向下钻取查询提供了有关最近执行的 SQL 语句的统计信息,以便跟踪各个 SQL 语
句的性能并分析语句历史记录。
可以在服务器 HDR 对的主服务器上使用 SQL 管理 API 和调度程序。
这些工具中的每一个工具都需要额外的磁盘空间以用于存储信息。
还可以使用基于 PHP 的 Web 浏览器管理工具 OpenAdmin Tool (OAT) (OAT) 从单一位
置管理多个数据库服务器实例。可以使用 OAT 执行的一些任务包括:

通过 SQL 管理 API 和调度程序定义和管理自动执行任务

为 SQL 语句的分析和调整创建并显示性能柱状图