返回首页

gbase数据、南大通用产品文档:GBase8a:9092, 1921687126:

更新日期:2024年09月11日

send.data.max.size
每次发送到kafka 的数据事务最大值,单位M
kafka.producer.para
mers
fetch.message.max.b
ytes
每次fetch 请求中,针对每次fetch 消息的最大字节
数。
此设置将会控制consumer 所使用的memory 大小。
这个fetch 请求尺寸必须至少和server 允许的最大消
息尺寸相等,否则,producer 可能发送的消息尺寸大
于consumer 所能消耗的尺寸。
kafka.consumer.para
mers
zookeeper.connect
Zookeeper 连接的ip、端口,例如:

本节描述如何以控制台或 GUI 方式安装 Client SDK 和 GBase 8s Connect。
控制台安装是缺省方式。
安装语法
以下语法图说明了 GBase 8s 客户机产品的安装选项。

表 1. 语法元素
元素
用途
限制
Java™ dir
指定安装期间要使用的主机上的 JRE,以代替
安装程序提供的 JRE
该 JRE 必须是
V1.4.2 或更高版
本。
logfilename
指定非缺省日志文件名

temp path
指定临时目录的路径。如果文件解压期间收到
错误消息,表示 /tmp 目录中没有足够空间,
那么请将 -tempdir 选项设为其他临时目录。

下表描述了安装应用程序选项。
表 2. 安装选项

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 20 -

选项
含义
installconn
仅安装 GBase 8s Connect
installclientsdk
仅安装 GBase 8s
-gui
以 GUI 方式启动安装程序
-log
记录安装程序的进度
-javahome
使用指定的 JRE。
要强制安装程序使用捆绑的 JRE 并忽略任何本地
JRE,请使用 -javahome none 参数。
-tempdir
使用指定的临时目录。
-is:freediskblocks 开始安装之前用来确定是否有足够的空间可用于产品安装文件。
-is:nospacecheck
用来阻止安装程序检查是否有足够的空间可用于产品安装文件。请
谨慎使用:如果没有足够空间来解压临时文件,那么安装程序将会
失败。
-help
显示所支持选项以及它们的功能的列表
客户机产品安装应用程序命令(UNIX™ 和 Linux™)
有关 Client SDK 和 GBase 8s Connect 安装命令的信息。
用途
以下语法图显示了 Client SDK 和 GBase 8s Connect 的 GUI 方式、控制台方式和静默方式安
装命令。
如果不指定安装方式
(GUI、
控制台或静默)

那么安装应用程序将以控制台方式启动。
另外,还会显示用于为以后的静默安装创建响应文件的 -r 选项的用法。
以 root 用户身份运行以下命令。
语法

参数

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 21 -

表 1. 语法元素
元素
用途
限制
path_name
指定响应文件的绝对路径和文件名。该响应
文件是定制的安装属性文件,可用来在别处
进行静默安装。

下表描述了安装应用程序选项。
表 2. 安装选项
选项
含义
installclientsdk
仅安装 Client SDK。
installconnect
仅安装 GBase 8s Connect。
-i gui
以 GUI 方式启动安装程序。
-i console
以控制台方式启动安装。
如果未提供选项,
缺省情况下将以控制台方
式启动安装。
-i silent -f
path_name
使用 path_name 中指定的响应文件启动静默安装。
-r path_name
从指定的 path_name 位置中的安装创建响应文件。该响应文件包含
要部署在多个位置中的安装配置。
或者,
也可以编辑安装介质随附的
模板响应文件而不记录安装。
-help
显示所支持选项以及它们的功能。
1 不要在同一命令中将 -r 选项与 silent -f 选项一起使用。-r 选项记录 GUI 或控制台安装
的配置。silent -f 选项启动静默安装。
以控制台方式安装
以下步骤概述了如何在 UNIX™ 和 Linux™ 上以 GUI 或控制台方式安装客户机
产品。
注: 以控制台方式安装时,尤其是通过网络安装时,可能需要等待一段时间的文件解压。

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 22 -

以下步骤概述了如何在 UNIX 和 Linux 上以 GUI 或控制台方式安装客户机产
品。要以控制台方式安装:
1.
以 root 用户身份对要安装的产品运行命令,如安装语法所示:
./installclientsdk

./installconn
安装应用程序以控制台方式启动。
2.
阅读许可协议并接受条款;然后输入 1 继续安装过程。
3.
接受缺省目录,或选择其他目录并输入 1 继续。
4.
选择“典型”获得推荐安装,或者选择“定制”获得更多配置选项。
5.
输入 1 可继续安装过程。
屏幕将显示摘要信息,包括目录、已安装的组件和总的大小。
Linux
zSeries
® 上的 Client
SDK 安装:当接收到消息 -
For
input
string:
"" 时,
如果摘要信息屏幕正确,请忽略此消息并输入 3 以完成安装。
6.
安装完成后,输入 3 完成并退出向导。
以控制台方式安装客户机产品
以下步骤概述了如何在 UNIX™ 和 Linux™ 上以控制台方式(缺省方式)安装客
户机产品。
您必须是 root 用户才能执行此任务。
或者,
如果客户机产品与数据库服务器的非 root
用户安装一起使用,请不要使用 root 级别特权登录。
以控制台方式安装时,尤其是通过网络安装时,可能需要等待一段时间的文件解压。
1.
对您要安装的产品运行以下命令:
./installclientsdk

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 23 -


./installconnect
2.
阅读软件许可协议。
必须接受许可条款才能安装产品。
3.
继续进行不同的设置,直至收到说明安装已完成的消息。
4.
在安装完成后,退出安装应用程序。
使用日志文件
您可以在两种不同类型的日志文件中找到有助于确定和解决安装错误的信息。
在以下位置找到日志文件:
l
安装相关的日志文件:
o
对于成功的安装:
l
Client SDK:$GBASEDBTDIR/tmp/csdk-version-install.log
l
GBase 8s Connect:$GBASEDBTDIR/tmp/iconnect-version-install.log
o
对于失败的安装:
l
Client SDK:tempdir/gbasedbt/csdk-version-install.log
l
GBase 8s Connect:tempdir/gbasedbt/iconnect-version-install.log
l
产品日志文件:
o
Client SDK:$GBASEDBTDIR/tmp/csdklog.txt
o
GBase 8s Connect:$GBASEDBTDIR/tmp/connlog.txt
客户机安装日志文件(UNIX™ 和 Linux™)
您可以在安装日志文件中找到有助于确定和解决安装错误的信息。
安装 GBase
8s 产品时,安装应用程序将在 $GBASEDBTDIR 中生成日志文件。如果尝试
安装任何产品,但安装应用程序未成功完成,也将创建日志文件。
运行客户机安装应用程序时,一般生成以下日志文件:

GBase 8s 客户机产品安装指南
南大通用数据技术股份有限公司 - 24 -

l $GBASEDBTDIR/GBASE_Gbasedbt_Client-SDK_InstallLog.log(对于 Client
SDK 安装)
l $GBASEDBTDIR/GBASE_Gbasedbt_Connect_InstallLog.log(对于 GBase 8s
Connect 安装)
l $GBASEDBTDIR/GBASE_Gbasedbt_GLS_InstallLog.log (对于包含 Global
Language Support (GLS) 的客户机安装)

在数据库服务器中,在有下列数据类型之一的列中,可直接存储智能大对象:

CLOB 数据类型保存文本数据。

BLOB 数据类型可在不可分的字节流中存储任何类别的二进制数据。
CLOB 或 BLOB 列为智能大对象保存 LO 句柄。因此,当选择 CLOB 或 BLOB 列时,
不取得智能大对象的实际数据,而是标识此数据的 LO 句柄。智能大对象的列有理论上的
4 TB 限制,并由磁盘容量确定实际的限制。
可使用下列方式之一来在列中存储智能大对象:

对于智能大对象的直接访问,创建 CLOB 或 BLOB 数据类型的列。

要在原子数据类型内隐藏智能大对象,创建保存智能大对象的 opaque 类型。
在客户机应用程序中,IfxBblob 和 IfxCblob 类是在 JDBC 3.0 规范中描述的处理智能大对
象数据方式与 GBase 8s 扩展之间的桥梁。IfxBblob 类实现 java.sql.Blob 接口,IfxCblob 类
实现 java.sql.Clob 接口。 GBase 8s 扩展需要一个 IfxLocator 对象,来标识数据库服务器中
的智能大对象。
当查询包含 BLOB 或 CLOB 类型列的表时,返回一个 Blob 或 Clob 类型的对象,这依
赖于列类型。然后,可使用 Blob 或 Clob 类型对象的 JDBC 3.0 支持函数,来访问智能
大对象。
构造函数从 IfxLocator 对象 loPtr 创建一个 IfxBblob 或 IfxCblob 对象:
public IfxBblob(IfxLocator loPtr)
public IfxCblob(IfxLocator loPtr)
下列定位器方法从 IfxBblob 或 IfxCblob 对象返回一个 IfxLocator 对象。然后,您可使
用 IfxSmartBlob.IfxLoOpen()、IfxLoRead() 和IfxLoWrite() 方法,来打开、读和写智能大对
象:
public IfxLocator getLocator() throws SQLException
打开智能大对象
IfxSmartBlob 类中的下列方法打开数据库服务器中现有的智能大对象:
public int IfxLoOpen(IfxLocator loPtr, int flag) throws
SQLException
public int IfxLoOpen(IfxBblob blob, int flag) throws SQLException
public int IfxLoOpen(IfxCblob clob, int flag) throws SQLException
第一个版本打开由定位器指针 loPtr 引用的智能大对象。
第二个和第三个版本分别打开由指
定的 IfxBblob 和 IfxCblob 对象引用的智能大对象。flag参数是来自 创建 IfxSmartBlob 对
象 中表的一个值。
智能大对象内的位置

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 146
-
IfxSmartBlob 类中的 IfxLoTell() 方法返回当前的查找位置,其为智能大对象下一读或写操
作的偏移量。IfxSmartBlob 类中的 IfxLoSeek() 方法设置已打开的大对象内的读或写位置。
public long IfxLoTell(int lofd)
public long IfxLoSeek(int lofd, long offset, int whence) throws
SQLException
绝对位置依赖于第二个参数 offset 的值和第三个参数 whence 的值。
lofd 参数是由 IfxLoCreate() 或 IfxLoOpen() 方法返回的定位符文件描述符。offset 参数是从
开始的查找位置的偏移量。
whence 参数标识开始查找位置。请使用下表中的 whence 值来定义智能大对象内的位置,
来启动查找操作。
开始的查找位置
whence 值
智能大对象的开头
IfxSmartBlob.LO_SEEK_SET
智能大对象中的当前位置 IfxSmartBlob.LO_SEEK_CUR
智能大对象的结束
IfxSmartBlob.LO_SEEK_END
返回值是表示智能大对象内绝对位置的长整数。
下列示例展示如何使用 LO_SEEK_SET whence 值:
IfxLobDescriptor loDesc = new IfxLobDescriptor(myConn);
IfxLocator loPtr = new IfxLocator();
IfxSmartBlob smb = new IfxSmartBlob(myConn);
int loFd = smb.IfxLoCreate(loDesc, smb.LO_RDWR, loPtr);
int n = smb.IfxLoWrite(loFd, fin, fileLength);
smb.IfxLoClose(loFd);
loFd = smb.IfxLoOpen(loPtr, smb.LO_RDWR);
long m = smb.IfxLoSeek(loFd, 200, smb.LO_SEEK_SET);
将写位置设置在从智能大对象开头的 200 字节偏移量处。
从智能大对象读取数据
可以下列方式从智能大对象读取数据:

将数据从对象读取至 byte[ ] 缓冲区内。

将数据从对象读取至文件输出流内。

将数据从对象读取至文件内。
请使用 IfxSmartBlob 类中的 IfxLoRead() 方法来从智能大对象读取至缓冲区内或文件输出
流内,其有下列签名:
public byte[] IfxLoRead(int lofd, int nbytes) throws SQLException

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 147
-
public int IfxLoRead(int lofd, byte[] buffer, int nbytes) throws
SQLException
public int IfxLoRead(int lofd, FileOutputStream fout, int nbytes
throws SQLException
public int IfxLoRead(int lofd, byte[] buffer, int nbytes, int
offset throws SQLException
lofd 参数是由 IfxLoRead() 或 IfxLoOpen() 方法返回的定位器文件描述符。
第一个版本将 nbytes 字节数据返回至字节缓冲区内。此版本的方法为缓冲区分配内存。第
二个版本将 nbytes 字节数据读至已分配了的缓冲区内。第三个版本将 nbytes 字节数据读至
文件输出流内。第四个版本将 nbytes 字节数据读至在当前查找位置加上智能大对象内偏移
量处开始的字节缓冲区内。最后三个版本的返回值指示读取的字节数。
使用 IfxSmartBlob 类中的 IfxLoToFile() 方法,来从智能大对象读取至文件内,其有下列签
名:
public int IfxLoToFile(IfxLocator loPtr, String filename, int flag
, int whence) throws SQLException
public int IfxLoToFile(IfxBblob blob, String filename, int flag ,
int whence) throws SQLException
public int IfxLoToFile(IfxCblob clob, String filename, int flag ,
int whence) throws SQLException
第一个版本读取由定位器指针 loPtr 引用的智能大对象。
第二个和第三个版本分别读取由指
定的 IfxBblob 和 IfxCblob 对象引用的智能大对象。
flag 参数指示该文件是在客户机上,还是在服务器上。该值
为 IfxSmartBlob.LO_CLIENT_FILE 或 IfxSmartBlob.LO_SERVER_FILE。whence 参数指示
开始的查找位置。要了解这些值,请参阅 智能大对象内的位置。
提示: 在下列函数的签名中,已有一更改:
IfxSmartBlob.IfxLoToFile().
此函数用于接受四个参数,但现在仅接受三个参数。IfxLoToFile() 的所有三个重载的函数
都接受三个参数。
将数据写至智能大对象
可以下列方式将数据写至智能大对象:

将数据从 byte[ ] 缓冲区写至该对象。

将数据从文件输入流写至该对象。

将数据从文件写至该对象。
使用 IfxSmartBlob 类中的 IfxLoWrite() 方法,从 byte[ ] 缓冲区或文件输入流写至智能大对
象:

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 148
-
public int IfxLoWrite(int lofd, byte[] buffer) throws SQLException
public int IfxLoWrite(int lofd, InputStream fin, int length)
throws SQLException
该方法的第一个版本将 buffer.length 字节数据从缓冲区写至智能大对象内。第二个版本
将 length 字节数据从 InputStream 对象写至智能大对象内。
lofd 参数是由 IfxLoCreate() 或 IfxLoOpen() 方法返回的定位器文件描述符。buffer 参数是读
数据处的 byte[] 缓冲区。fin 是 InputStream 对象,将数据从其写至智能大对象内。length 参
数是写至智能大对象内的字节数。驱动程序返回写入的字节数。
请使用 IfxSmartBlob 类中的 IfxLoFromFile() 方法,来将数据从文件写至智能大对象:
public int IfxLoFromFile (int lofd, String filename, int flag, int
offset, int amount) throws SQLException
lofd 参数是由 IfxLoCreate() 或 IfxLoOpen() 方法返回的定位器文件描述符。flag 参数指示该
文件是在客户机上,还是在服务器上。该值为
IfxSmartBlob.LO_CLIENT_FILE 或 IfxSmartBlob.LO_SERVER_FILE。
驱动程序返回写入的字节数。
截断智能大对象
请使用 IfxSmartBlob 类中的 IfxLoTruncate() 方法,来在指定的偏移量处截断大对象。该方
法签名如下:
public void IfxLoTruncate(int lofd, long offset) throws
SQLException
offset 参数是截断智能大对象处的绝对位置。
度量智能大对象
请使用 IfxSmartBlob 类中的 IfxLoSize() 方法,来返回智能大对象的大小。此方法返回表示
大对象大小的一个长整数。
该方法签名如下:
public long IfxLoSize(int lofd) throws SQLException
关闭和释放智能大对象
在执行了应用程序需要的所有操作之后,
您必须关闭该对象,
然后,
释放服务器中的资源。
执行这些任务的 IfxSmartBlob 类中的方法如下:
public void IfxLoClose(int lofd) throws SQLException
public void IfxLoRelease(IfxLocator loPtr) throws SQLException
public void IfxLoRelease(IfxBblob blob) throws SQLException
public void IfxLoRelease(IfxCblob clob) throws SQLException
要对同一大对象进行任何进一步访问,必须以 IfxLoOpen() 方法来重新打开它。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 149
-
将 IfxLocator 转换为十六进制字符串
有些应用程序只能处理 ASCII 数据,例如,web 浏览器;它们需要将 IfxLocator 转换为
十六进制字符串格式。在典型的基于 web 的应用程序中,web 服务器查询数据库表,并
将结果发送至浏览器。不是发送整个智能大对象,web 服务器将定位器转换为十六进制字
符串格式,并将它发送至浏览器。如果用户请求浏览器显示智能大对象,则浏览器将十六
进制格式的定位器发回 web 服务器。然后,web 服务器从该十六进制字符串重构二进制
定位器,并将对应的智能大对象数据发送至浏览器。
要在 IfxLocator 字节数组与十六进制数值之间转换,请使用罗列在下表中的方法。
执行的任务
方法签名
附加的信息
将字节数组转换
为十六进制字符

public static String
toHexString( byte[] byteBuf);
对数据有效,而不是对在
com.gbasedbt.util.stringUtil
类中提供的 IfxLocator
将十六进制字符
串转换为字节数

public static byte[]
fromHexString( String str)
throws NumberFormatException;
对数据有效,而不是对
com.gbasedbt.util.stringUtil
类中提供的 IfxLocator
使用字节数组构
造一个
IfxLocator 对象
public
IfxLocator(byte[] byteBuf)
throws SQLException;
在 IfxLocator 类中提供
将 IfxLocator
字节数组转换为
十六进制字符串
public String toString();
在 IfxLocator 类中提供
将十六进制字符
串转换为
IfxLocator 字节
数组
public byte[] toBytes();
在 IfxLocator 类中提供
下列示例使用 toString() 和 toBytes() 方法,来从智能大对象访存定位器,然后,将它转换为
十六进制字符串:
...

String hexLoc = "";
byte[] blobBytes;
byte[] rawLocA = null;

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 150
-
IfxLocator loc;
try
{
ResultSet rs = stmt.executeQuery("select b1 from btab");
while(rs.next())
{
IfxBblob b=(IfxBblob)rs.getBlob(1);
loc =b.getLocator();
hexLoc = loc.toString();
rawLocA = loc.toBytes();
}
}
catch(SQLException e)
{}
下列示例使用 IfxLocator() 方法来构建 IfxLocator,然后使用其来读取智能大对象:
...

try
{
IfxLocator loc2 = new IfxLocator(rawLoc);
IfxSmartBlob b2 = new IfxSmartBlob((IfxConnection)myConn);
int lofd = b2.IfxLoOpen(loc2, b2.LO_RDWR);
blobBytes = b2.IfxLoRead(lofd, fileLength);
}
catch(SQLException e)
{}