返回首页

gbase数据、南大通用产品文档:GBase8a创建引擎实例

更新日期:2024年09月11日


创建Oracle 实例
select
create_engine_instance('oracle','inst1','param://oracle?connstr=//192.168.103.109:15
21/orcl?user=gbase?password=gbase?sharedir=/opt/shareora');

创建GBase8t 实例
select

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 97
create_engine_instance('gbase8t','inst1','param://gbase8t?dsn=Infdrv1?sharedir=/opt/
share8t');

创建无认证的hive 实例
select
create_engine_instance('hive','inst1','param://hive?hostlist=xcp230,xcp231?port=90
00?thriftversion=7?thrifttimeout=60?authmode=0?user=gbase')

创建用户名、密码认证的hive 实例
select
create_engine_instance('hive','inst2','param://hive?hostlist=xcp232,xcp233?port=90
00?thriftversion=7?thrifttimeout=60?authmode=1?authtype=PLAIN?mechanism=P
LAIN?user=gbase?password=gbase');

创建KERBEROS 认证的hive 实例
select
create_engine_instance('hive','inst3','param://hive?hostlist=xcp232,xcp233?port=90
00?thriftversion=7?thrifttimeout=60?authmode=1?authtype=KERBEROS?mechanis
m=GSSAPI?principal=gbase@GHD.GBASE?keytabfile=/home/gbase/gbase.keytab
?serverid=sys21.gbase.hd?protocol=hive?renewtime=7');
执行上述语句将创建一个新的引擎实例,函数的参数按照顺序,含义如下:
1、引擎名称:标志要创建的实例是对应于哪一个引擎的;
2、实例名称:要创建的实例名称,在对应引擎的所有实例中名称不许重复;
3、uri: 创建实例需要的连接参数信息,以param://引擎名称开始,后面是所
需参数。
表 3-9 ORACLE 实例需要配置的属性
参数名称
参数含义
备注
connstr
连接oracle 服务的连接串://192.168.103.109:1521/orcl
不可修改
user
连接时使用的用户名
不可修改
password
用户连接时的密码

表 3-10 GBase8t 实例需要配置的属性
参数名称
参数含义
备注

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 98
dsn
连接使用的dsn 名称
不可修改
表 3-11 hive 实例需要配置的通用属性:
参数名称
参数含义
备注
hostlist
服务的ip 列表,ip 之间使用逗号分隔
不可修改
port
服务的端口
不可修改
thriftversion
thrift 版本号 8(>=2.2 版本)/7(1.2~2.0 版本)/6(<1.2
版本)
不可修改
thrifttimeout
thrift 连接超时时间,默认 60, 单位分钟

authmode
认证模式,0--无认证 1--需要认证

user
连接时使用的用户名

表 3-12 无认证hive 实例需要配置的属性:
参数名称
参数含义
备注
authmode
认证模式,取值为0

表 3-13 用户名、密码认证hive 实例需要配置的属性:
参数名称
参数含义
备注
authmode
认证模式,取值为1

authtype
认证类型,取值为PLAIN-用户名密码认证,要求大写,
不能是小写字母

mechanism
认证机制名称,
取值为PLAIN-用户名密码认证,
要求大
写,不能是小写字母

user
连接时使用的用户名

password
用户连接时的密码

表 3-14 KERBEROS 认证hive 实例需要配置的属性:
参数名称
参数含义
备注
authmode
认证模式,取值为1

authtype
认证类型,取值为KERBEROS-KERBEROS 认证,要求
大写,不能是小写字母

mechanism
认证机制名称,取值为GSSAPI-KERBEROS 认证,要求
大写,不能是小写字母

principal
进行KERBEROS 认证时使用的客户端principal

keytabfile
principal 指定用户对应的keytab 文件全路径名称

serverid
KERBEROS 服务器名称

protocol
KERBEROS 服务名称

renewtime
KERBEROS 票据认证最大的有效时间,取值为1—15,单
位为天,默认为7。该参数配置的值要求不大于
KERBEROS 配置文件的renew_life 配置项的值

每种类型的引擎实例必须正确设置对应的属性,如果设置错误,创建引擎实例会失
败。设置了引擎实例不需要的属性,不影响实例的使用。如果输入属性重复,只保

GBase UP 产品手册 3 软件安装

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 99
留第一个属性值,其他的不做处理。
执行成功,可以通过显示实例信息的命令看到新的实例已经存在。
注意
新创建的引擎实例中,所有认证相关的配置项均设置为空,
auth_mode 设置为0,
默认不进行安全认证。如果引擎在连接时需要
进行额外认证,必须通过更新引擎实例的方法对实例进行认证选项
配置后,引擎实例才能正常用于连接。
认证参数说明:
authmode: 认证模式,0--无认证 1--需要认证;
authtype: 认证类型,PLAIN--用户名密码认证 KERBEROS--KERBEROS 认证;

mechanism:
认证机制名称,
PLAIN--用户名密码认证 GSSAPI--KERBEROS 认证;

principal: 进行KERBEROS 认证时使用的客户端principal;
keytabfile: principal 指定用户对应的keytab 文件全路径名称;
serverid: KERBEROS 服务器名称;
protocol: KERBEROS 服务名称。
创建引擎实例时,除了oracle 引擎和mirror8t 引擎外,需要在实例指向的服务上创
建UP 集群现存的所有用户数据库,但不需要创建用户数据表。

除了创建的表以外,数据库还包含很多系统表。这些系统表包含GBase 8c 安装信息以
及运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。
必须以初始化用户身份登录,才能查询只对初始化用户可见的表。
GBase 8c 提供了以下类型的系统表和视图:

继承自PG 的系统表和视图。这类系统表和视图具有PG 前缀。

新增的系统表和视图。这类系统表和视图具有GS 前缀。

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

数据库服务器支持整数值的以下数据类型:
SQL 整数数据类型
字节数
值的范围
SMALLINT
2
-32767 到 32767
INTEGER 、INT 、
SERIAL
4
-2,147,483,647 到 2,147,483,647
INT8 、BIGINT 、
SERIAL8 、BIGSERIAL
8
-9,223,372,036,854,775,807 到
9,223,372,036,854,775,807

C 语言支持整数值的 short int 和 long int 数据类型。

C short int 数据类型的存储大小取决于您使用的计算机的硬件和操作系统。

在 ESQL/C 中,无论平台和硬件如何,C 的 long int 数据类型总是被视为为 4 字
节。这使得 long int 对于存储 GBase 8s 的 SMALLINT 、INTEGER 、INT 和 SERIAL
数据类型十分有用。

重要:
但是,不要尝试使用 long int 数据类型存储 8 字节 GBase 8s 整数数据类型
INT8 、BIGINT 、SERIAL8 或 BIGSERIAL。例如:当您的查询尝试在 -2,147,483,647 到
+ 2,147,483,647 之间的 8 字节 BIGSERIAL 值中选择数据类型为 long int 的整数 C 变

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 105 -
量时,数据库服务器会发出此错误:

-1215 Value too large to fit in an INTEGER.

当声明整数主机变量时,必须确保该主机变量足够大,以便与该变量关联的 SQL 整
数数据类型的所有值相匹配。对于 8 字节整数,使用 C 数据类型 bigint 或 int8 的主机
变量。有关如何在系统上实现整数数据类型的更多信息,请咨询您的系统管理员或参阅 C
文档。
整数主机变量类型
提供以下数据类型用于指定特定长度的整数主机变量。

数据类型
长度
int1
1 个字节的整数
int2
2 个字节的整数
int4
4 个字节的整数
mint
机器本机的整数数据类型
mlong
机器本机的 long 整数数据类型,其大小等于机器指针的大小。mlong d数据类型
映射到 Windows(TM) 32 位和 UNIX(TM) 和 Linux(TM) 32 位和 64 位平台上的 long 数据
类型。它被映射到 Windows(TM) 64 位的 __int64 数据类型。
MSHORT
机器本机的 short 整数数据类型
MCHAR
机器本机的 char 数据类型
限制:前面的整数数据类型保留。您的程序不能使用 typedef 或 $typedef 语句定义
这些数据类型。

在 ifxtypes.h 文件中定义整数主机变量数据类型,当您使用 esql 脚本编译它时,它

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 106 -
会字段包含在您的程序中。

重要: 许多 GBase 8s ESQL/C 库函数已经更改为声明 GBase 8s 整数数据类型,
而不是特定于机器的类型,
如 int 、
short 和 long。
当您调用 GBase 8s ESQL/C 库函数时,
建议您使用 GBase 8s 整数类型。
INT8 和 SERIAL8 SQL 数据类型
GBase 8s ESQL/C 支持具有 int8 数据类型的 SQL INT8 和 SERIAL8 数据类型。
int8
数据类型是一个独立于机器的方法,表示数字范围 -(263 -1) 到 263-1。

本节描述了如何操作 GBase 8s ESQL/C 数据类型 int8。
int8 数据类型
使用 GBase 8s ESQL/Cint8 数据类型为 INT8 和 SERIAL8 类型的数据库值声明主
机变量。

下表显示结构 ifx_int8_t 的字段,表示 INT8 或 SERIAL8 值。

表 1. ifx_int8_t 结构的字段
字段名称
字段类型
意义
data
无符号 4 字节
整数[INT8SIZE]
构成 8 字节整数值的整数值数组。当 INT8SIZE 常
量定义为 2,
此数组包含两个无符号的 4 字节整数。
无符
号 4 字节整数的实际数据类型可以是机器特定的。
sign
short integer
一个短整数,用于保存 8 字节整数的符号(无 、负
或正)。2 字节整数的实际数据类型可以是机器特定的。

int8.h 头文件包含 ifx_int8 结构和名为 ifx_int8_t 的 typedef。将此文件包含在使用
任何 int8 主机变量的所有 C 源文件中,如下所示:
EXEC SQL include int8;

可以使用以其中之一的方法声明 int8 主机变量:
EXEC SQL BEGIN DECLARE SECTION;
int8 int8_var1;
ifx_int8_t int8_var2;
EXEC SQL BEGIN DECLARE SECTION;
int8 库函数

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 107 -
您必须通过用于 int8 数据类型的 GBase 8s ESQL/C 库函数对 int8 类型数字执行所
有操作。任何其它操作,修改或分析都可能产生不可预知的结果。GBase 8s ESQL/C 库函
数允许您操作 int8 数并将 int8 类型数字转换为其它数据类型的函数。下表说明了这些函
数。

表 2. 操纵函数
函数名称
描述
请参阅
ifx_getserial8()
返回插入的 SERIAL8 值
ifx_int8add() 函

ifx_int8add()
添加两个 int8 数字
ifx_int8cmp() 函

ifx_int8cmp()
比较两个 int8 数字
ifx_int8copy()
函数
ifx_int8copy()
复制一个 int8 数字
ifx_int8cvasc()
函数
ifx_int8div()
除以两个 int8 数字
ifx_int8div() 函

ifx_int8mul()
乘以两个 int8 数字
ifx_int8mul() 函

ifx_int8sub()
减去两个 int8 数字
ifx_int8sub() 函



表 3. 类型转换函数
函数名称
描述
请参阅
ifx_int8cvasc()
将 C char 类型值转换为 int8 类型值
ifx_int8cvdbl()
函数
ifx_int8cvdbl()
将 C double 类型值转换为 int8 类型值
ifx_int8cvdbl()
函数
ifx_int8cvdec()
将 C decimal 类型值转换为 int8 类型值
ifx_int8cvdec()
函数
ifx_int8cvflt()
将 C float 类型值转换为 int8 类型值
ifx_int8cvflt()
函数
ifx_int8cvint()
将 C int 类型值转换为 int8 类型值
ifx_int8cvint()
函数
ifx_int8cvlong()
将 C 4 字节整数类型值转换为 int8 类型值
ifx_int8cvlong()
函数
ifx_int8soasc()
将 int8 类型值转换为文本字符串
ifx_int8soasc()
函数
ifx_int8sodbl()
将 int8 类型值转换为 C double 类型值
ifx_int8sodbl()
函数

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 108 -
函数名称
描述
请参阅
ifx_int8sodec()
将 int8 类型值转换为 C decimal 类型值
ifx_int8sodec()
函数
ifx_int8soflt()
将 int8 类型值转换为 C float 类型值
ifx_int8soflt()
函数
ifx_int8soint()
将 int8 类型值转换为 C int 类型值
ifx_int8soint()
函数
ifx_int8solong()
将 int8 类型值转换为 C 4 字节整数类型值
ifx_int8solong()
函数