返回首页

gbase数据、南大通用产品文档:GBase8sonbar r 语法:恢复数据

更新日期:2024年09月11日

要执行完整的恢复,请使用 onbar -r 命令。
要运行 ON-Bar 命令,您必须是 root 用户或 gbasedbt 用户,或者是 UNIX™
上 bargroup 组的成员。

用途

示例:执行整个系统的恢复

示例:恢复特定存储空间

示例:分阶段执行热恢复

示例:时间点恢复

示例:法语语言环境中的时间点恢复

示例:分阶段的时间点恢复

示例:恢复已删除的存储空间和块
执行恢复

表 1. onbar -r 命令的选项。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 59 -

选项
描述
-r
指定恢复。如果数据库服务器处于脱机状态,ON-Bar 将
执行冷恢复。如果数据库服务器处于联机、停顿或快速恢
复方式,ON-Bar 将执行热恢复。
在冷恢复中,-r 选项会恢复所有存储空间,回收并恢复
逻辑日志。在热恢复中,-r 选项恢复所有脱机的存储空
间并恢复逻辑日志。
必须先指定 -r 选项。
space
指定将备份哪些存储空间,以空格分隔的一个或多个数据
库空间、Blob 空间或智能大对象空间名称的列表表示。
ON-Bar 仅恢复列出的存储空间。如果数据库服务器处于
脱机状态,必须列出所有关键数据库空间。不能指定临时
空间。
-C
从当前逻辑日志磁带中连续恢复逻辑日志,而不发送安装
磁带的提示。
服务器处于暂挂日志恢复状态,在最后一个可用日志恢复
后,该命令依然存在。如果日志存在于多个磁带中,那么
服务器将发出提示。配置参数 RESTARTABLE_RESTORE 不
会影响连续日志恢复。
-e
指定外部恢复。在外部恢复存储空间后,运行 onbar -r
-e 命令。 将存储空间标记为已物理恢复,恢复逻辑日
志并使存储空间联机。
-f filename
指定用于列出要恢复或重命名的存储空间的文本文件的路
径和文件名。
使用该选项可避免输入一长串存储空间。
有关更多信息,请参阅文件中的存储空间列表。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 60 -

选项
描述
-l
指定仅逻辑恢复。恢复并前滚逻辑日志。逻辑恢复仅应用
于已物理恢复的存储空间。
重要: 为提高性能,在热恢复期间以并行方式重放逻辑日
志事务。使用 ON_RECVRY_THREADS 配置参数来设置并行线程
数。要在冷恢复期间以并行方式重放逻辑日志事务,请使用
OFF_RECVRY_THREADS 配置参数。有关更多信息,请参阅
《GBase 8s 性能指南》。
-n log
指示冷恢复中要恢复的最后一个逻辑日志的唯一标识。数
据库服务器必须处于脱机状态。
要查找唯一标识,请使用 onstat -l 命令。
日志点恢复是特殊的时间点恢复。必须在日志点恢复中恢
复所有存储空间以保持数据的一致性。如果指定的日志后
存在任何逻辑日志,ON-Bar 不会恢复这些日志,它们的
数据将丢失。如果特定逻辑日志应用于多个时间线,那
么 ON-Bar 将使用最新的时间线。
不能与 -p 选项一起使用。
-n new_path
指定块的新路径。与 -rename 选项一起使用。
-O
覆盖内部错误检查。允许联机存储空间的恢复。强制重新
创建不再存在的块文件。
用来覆盖内部错误检查以执行以下任务:

强制联机存储空间的恢复。如果要恢复的存储空
间的列表中某个存储空间是联机的,那么 ON-
Bar 将使该存储空间脱机,然后将其恢复。如果
此操作成功,那么 ON-Bar将完成并带有退出码
177。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 61 -

选项
描述

强制创建不存在的块文件。如果所恢复的存储空
间的块文件不再存在,那么 ON-Bar将重新创建
该文件。新创建的块文件是格式化的磁盘空间,
不是原始磁盘空间。如果ON-Bar 成功地重新创
建了缺少的块文件,那么 ON-Bar 将完成并带
有退出码 179。

如果缺少关键存储空间,那么强制冷恢复继续进
行。在冷恢复中,ON-Bar 将检查每个关键空间
是否正在恢复。此检查偶尔会引起假警告。如果
警告有效,那么恢复失败。如果警告为 false 并
且 ON-Bar 成功恢复了服务器,那么 ON-
Bar 将完成并带有退出码 115。
对整个系统的恢复使用 -O 选项仅仅是为了重新创建丢
失的块文件。当数据库服务器处于联机状态时不能使
用 onbar -r -w -O 命令,因为在整个系统恢复期间无
法让根数据库空间脱机。
-o new_offset
指定已重命名的块的偏移量。与 -rename 选项一起使
用。
-o old_offset
指定要重命名的块的偏移量。 与 -rename 选项一起使
用。
-p
指定仅物理恢复。
除非您使用整个系统的恢复,否则在可以访问数据之前必
须在逻辑恢复后执行物理恢复。 该选项关闭冷恢复前的
自动日志回收。如果 LTAPEDEV 配置参数设置
为 /dev/null 或 NUL,那么必须在恢复期间使用 -
p 选项。
不能与 -n 选项一起使用。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 62 -

选项
描述
-p old_path
指定要重命名的块的路径。 与 -rename 选项一起使
用。
-rename
在冷恢复期间重命名一个或多个块。数据库服务器必须处
于脱机状态。
如果需要将存储空间恢复到与完成备份的磁盘不同的磁盘
上,该选项很有帮助。可以重命名任意类型的块,包括关
键块和镜像块。您可以重命名具有 0 级备份的块。
-t "time"
指定在冷恢复中要从逻辑日志恢复的最后一个事务的时
间。数据库服务器必须处于脱机状态。
指定的所有存储空间都将恢复到相同的时间点。但是,如
果先执行物理恢复,然后执行逻辑恢复,那么该逻辑恢复
可以恢复到更晚的时间点。例如,您可能检测到当前备份
损坏,且需要恢复先前备份。在这种情况下,请使用先前
备份的时间戳记启动物理恢复,然后将逻辑恢复启动到更
新的时间戳记。
时间点恢复通常用来从错误恢复。例如:如果您意外删除
了数据库,那么可以将服务器恢复到删除数据库之前的时
间点。
要确定时间点恢复的相应日期和时间,请使
用 onlog 实用程序。 onlog 实用程序输出显示了逻
辑日志中已落实事务的日期和时间。在恢复命令中指定的
时间后发生的所有数据事务将丢失。
使用引号括起日期和时间。英语语言环境的格式
是 yyyy-mm-dd hh:mm:ss。如果设置了GL_DATETIME 环
境变量,那么必须根据该变量指定日期和时间。
-w
从上次整个系统的备份对所有存储空间和逻辑日志执行整
个系统的恢复。数据库服务器必须处于脱机状态。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 63 -

选项
描述
整个系统的恢复完成后,服务器处于停顿方式。
如果指定 onbar -r -w 而不带整个系统的备份,将返
回返回码 147,因为 ON-Bar 找不到作为整个系统的备
份一部分而备份的任何存储空间。
-X
停止连续逻辑日志恢复。将服务器保留在逻辑恢复暂挂状
态中的停顿方式下,而不恢复其他日志。
用途
您可以恢复存储在原始文件和格式化文件中的存储空间。如果系统包含主存储空间和镜像
存储空间,那么恢复(外部恢复除外)期间 ON-Bar 将同时写入主块和镜像块。 不能指
定恢复临时空间。恢复关键数据库空间(例如根数据库空间)时,数据库服务器重新创建
临时数据库空间,但它们为空。
如果 BAR_MAX_BACKUP 配置参数设置为大于 1 的值,那么 ON-Bar 将并行恢复存储
空间。要加速恢复,您可以添加更多 CPU 虚拟处理器。
在以下情况下,当数据库服务器处于联机状态时,可以在热恢复中恢复非关键存储空间:

存储空间处于联机状态,但它的一个块处于脱机、正在恢复或不一致状态。

存储空间处于脱机或关闭状态。
您无法同时执行多个热恢复。 如果您需要恢复多个存储空间,请对 ON-Bar 指定要恢复的
存储空间集,或通过不显式指定任何空间来允许 ON-Bar恢复所有关闭的存储空间。
提示: 要在恢复中得到更快的性能,请为备份存储空间和逻辑日志指定不同的存储设备。如
果物理备份和逻辑备份在存储介质上混合在一起,这将花费较长的时间用于在恢复期间扫描介
质。
在某些情况下,您可能想分阶段地执行恢复。如果有多个设备可用于恢复,那么可以分别
或同时恢复多个存储空间,然后再执行单一的逻辑恢复。
缺省情况下,ON-Bar 恢复最新的备份。如果不希望恢复最新的备份,可以从较旧备份中
进行恢复:例如,在备份验证失败或备份介质丢失时。 您可以执行时间点恢复或日志点
恢复。 或者,您也可以使存储管理器中的错误备份到期,运行 onsmsync 命令,然后从较
旧备份中恢复。如果意外删除了某存储空间,您可以使用时间点恢复或日志点恢复来将其
恢复。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 64 -

通过使用 -O 选项,可以强制执行联机存储空间的恢复(除了关键数据库空间以外)。数
据库服务器开始恢复每个存储空间之前会自动将其关闭。让存储空间脱机以确保在恢复进
程中用户不会试图更新该空间中的表。
可以在冷恢复期间使用 ON-Bar 指定新块路径和偏移量来重命名块。如果需要将存储空间
恢复到与完成备份的磁盘不同的磁盘上,该选项很有帮助。可以重命名任意类型的块,包
括关键块和镜像块。

示例:执行整个系统的恢复
整个系统的恢复是冷恢复,必须在服务器处于脱机状态时执行。以下命令恢复整个系统的
备份:
onbar -r -w

示例:恢复特定存储空间
以下示例恢复两个特定存储空间 fin_dbspace1 和 fin_dbspace2:
onbar -r fin_dbspace1 fin_dbspace2

示例:分阶段执行热恢复
以下命令执行物理恢复,备份逻辑日志,然后执行逻辑恢复:
onbar -r -p
onbar -b -l
onbar -r -l

示例:时间点恢复
以下命令将数据库服务器数据恢复到其在特定日期和时间的状态:
onbar -r -t “2011-05-10 11:35:57”
在此示例中,恢复将重放在指定时间或指定时间之前落实的事务,包括带有落实时间
11:35:57 的所有事务。正在处理但未在 11:35:57 之前落实的事务将回滚。

示例:法语语言环境中的时间点恢复
法语语言环境 fr_fr.8859-1 的缺省日期和时间格式使用格式
“%A %.1d %B %iY %H:%M:%S”。
以下命令将数据恢复到针对法语语言环境格式化的特定时间点:
onbar -r -t "Lundi 6 Juin 2011 11:20:14"

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 65 -

可以将 GL_DATETIME 设置为使用日期、月份、两位数表示的年份、小时、分钟和秒的
不同日期和时间格式。例如:
%.1d %B %iy %H:%M:%S
以下命令通过为法语语言环境指定两位数年份来恢复到特定时间点:
onbar -r -t "6 Juin 11 11:20:14"

示例:分阶段的时间点恢复
以下命令执行到相同时间点的物理恢复和逻辑恢复:
onbar -r -p -t "2011-05-10 11:35:57"
onbar -r -l -t "2011-05-10 11:35:57"

示例:恢复已删除的存储空间和块
假设某个事务删除了名为 dbspace1 的存储空间,并在时间 2011-05-10 12:00:00 删除了
块。以下命令在服务器处于脱机状态时恢复该存储空间并重新创建已删除的块:
onbar -r -t "2011-05-10 11:59:59" -O
避免回收逻辑日志
onbar -r 命令自动回收逻辑日志。但是,在某些情况下需要避免回收逻辑日志。
使用 onbar -r -p 和 onbar -r -l 命令跳过日志回收。
如果将 LTAPEDEV 配置参数设置为 /dev/null(UNIX™ 上),那么不会在任何 ON-Bar
恢复中回收逻辑日志(例如,onbar -r 或 onbar -r -w)。
应在以下情况下避免回收逻辑日志:

执行导入的恢复时
在源数据库服务器而不是在目标数据库服务器上回收逻辑日志。

执行冷恢复前重新初始化数据库服务器 (oninit -i)
重新初始化将创建新逻辑日志,而其中不包含您要恢复的数据。

为包含逻辑日志的数据库空间安装新磁盘
从旧磁盘而不是新磁盘回收日志。

执行冷恢复
如果关键存储空间由于磁盘故障或毁坏的数据而受损,您必须执行冷恢复。如果磁盘出故
障,那么须在可以执行冷恢复之前替换该磁盘以恢复数据。
如果在没有备份的情况下尝试执行冷恢复,那么未备份的存储空间中的数据将丢失。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 66 -

要执行冷恢复:
1.
通过运行 onmode -ky 命令来关闭服务器。
2. 如果必须更换或维修包含逻辑日志文件的磁盘,请使用 onbar -b -l -s 命令回收损
坏磁盘上的逻辑日志文件。
否则,ON-Bar 将自动回收逻辑日志。
3.
如有必要,请维修或更换损坏的磁盘。
4.
如果 GBS_HOME 中的文件已损坏,请将管理文件的备份复制到其原始位置。
否则,不需要复制管理文件。
5.
通过运行 onbar -r 命令来恢复关键和非关键存储空间。
恢复完成后,数据库服务器处于停顿方式。
6.
通过运行 onmode -m 命令来启动服务器。
7.
通过运行 onsmsync 命令来同步存储管理器。

通过使用 ON-Bar 来配置连续日志恢复
使用连续日志恢复可保持辅助系统(热备份)可用,以在主系统发生故障时替换主系统。
主系统和辅助系统上的 GBase 8s 版本必须相同。
要使用 ON-Bar 配置连续的日志恢复:
1.
在主系统上,使用 onbar -b -L 0 命令执行 0 级备份。
2.
导入已在辅助服务器存储管理器中创建的备份对象。
3.
在辅助系统上,使用 onbar -r -p 命令执行物理恢复。
在辅助系统上完成物理恢复后,数据库服务器将在快速恢复方式下等待恢复逻辑日
志。
4.
在主系统上,使用 onbar -b -l 命令备份逻辑日志。
5.
将备份的逻辑日志传输到辅助系统,然后使用 onbar -r -l -C 命令将其恢复。
6.
对可用于备份与恢复的所有逻辑日志重复步骤 4 和 5。
7.
如果您要在紧急备用的辅助系统上执行连续日志恢复,请运行以下命令来完成逻辑日
志恢复并停顿服务器:

如果逻辑日志可用于恢复,请运行 onbar -r -l 命令。

在恢复所有可用逻辑日志之后,运行 onbar -r -l -X 命令。

使用混合恢复来恢复数据
在您需要恢复服务器时,紧急数据处于联机状态并且为可用之前,您可以使用混合恢复来
减少时间。 紧急数据是您认为对于业务运营很关键的数据。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 67 -

在混合恢复中,您首先对关键数据库空间(根数据库空间以及包含物理日志和逻辑日志的
数据库空间)和包含紧急数据的数据库空间执行冷恢复。由于您并不恢复所有数据库空
间,因此可以使服务器更快联机。然后在一个或多个热恢复中恢复剩余的存储空间。
要执行混合恢复:
1.
通过运行 onmode -ky 命令来关闭数据库服务器。
2. 通过使用关键和紧急数据库空间名称列表运行 onbar -r 命令来对关键和紧急数据库
空间执行冷恢复。
可以指定从较旧备份进行恢复的时间点。
3. 通过运行 onmode -m 命令来启动服务器。
4. 通过运行 onsmsync 命令来同步存储管理器。
5. 通过运行 onbar -r 命令来对剩余存储空间执行热恢复。
您可以执行多个热恢复以对某些存储空间划分优先级。

示例
示例 1:简单混合恢复
一个数据库服务器除根数据库空间之外,还有以下五个数据库空间:logdbs、dbs_1、
dbs_2 和 dbs_3 和 dbs_4。逻辑日志存储在logdbs 中,物理日志位于根数据库空间中。必须
在初始冷恢复期间恢复的关键数据库空间为 rootdbs 和 logdbs。 包含紧急数据的数据库空
间是 dbs_1。以下命令将关闭数据库服务器,对关键和紧急数据库空间执行冷恢复,然后
重新启动数据库服务器:
onmode -ky
onbar -r rootdbs logdbs dbs_1
onmode -m
数据库服务器启动后,rootdbs、logdbs 和 dbs_1 数据库空间中存储的任何数据都可访问。
以下命令同步存储管理器,并对剩余数据库空间 dbs_2、dbs_3 和 dbs_4 执行热恢复:
onsmsync
onbar -r
示例 2:时间点混合恢复
以下命令在初始冷恢复中对存储空间的子集(包括所有关键数据库空间)执行冷恢复,
对 dbspace_2 和 dbspace_3 执行热恢复,接着对dbspace_4 和 dbspace_5 执行热恢复,最后
对所有剩余的存储空间执行热恢复:
onbar -r -t "2011-05-10 11:35:57" rootdbs logspace_1 dbspace_1
onmode -m

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 68 -

onsmsync
onbar -r dbspace_2 dbspace_3
onbar -r dbspace_4 dbspace_5
onbar -r
针对使用混合恢复的策略
要实现混合恢复策略,请仔细选择在创建数据库和数据库对象时要将其放置到的数据库空
间集。
ON-Bar 会备份与恢复物理实体而非逻辑实体。因此,ON-Bar 无法恢复特定数据库或一组
特定的表。相反,ON-Bar 将恢复一组特定的存储空间。跟踪这些存储空间中存储的内容
将取决于您。
例如:考虑数据库空间 cat_dbs 中的带有目录的数据库:
create database mydb in cat_dbs with log;
在数据库空间 tab_dbs_1 和 tab_dbs_2 之间将对该数据库中的某个表进行分段:
create table mytab (i integer, c char(20))
fragment by round robin in tab_dbs_1, tab_dbs_2;
表的索引存储在数据库空间 idx_dbs 中:
create index myidx on mytab(i) in idx_dbs;
如果您需要恢复服务器,那么只有在恢复包含数据库目录、表数据和索引的数据库空间之
后,您才能访问示例数据库中的所有数据:在本例中,为数据库空间 cat_dbs、
tab_dbs_1、tab_dbs_2 和 idx_dbs。
要简化数据的管理和跟踪,请将数据库空间集划分为用于存储特定紧急程度的数据的子
集。当您创建数据库对象时,请将这些数据库对象放置在适合其紧急程度的数据库空间
中。例如,如果您有三个紧急程度级别的数据,可能希望将与最紧急数据相关联的所有对
象(数据库目录、表和索引)放置在特定的数据库空间集内:例如,urgent_dbs_1、
urgent_dbs_2、...urgent_dbs_n。您会将与紧急程度较低的数据相关联的所有对象放置在不
同的数据库空间集内:例如,less_urgent_dbs_1、
less_urgent_dbs_2、... less_urgent_dbs_k。最后,您会将其余数据放置在不同的数据库空间
集内:例如,non_urgent_dbs_1、non_urgent_dbs_2、.... non_urgent_dbs_r。
如果您需要恢复服务器,那么您应首先对所有关键数据库空间和包含紧急数据的数据库空
间(从 urgent_dbs_1 到 urgent_dbs_n)执行冷恢复。例如,假设
在 logdbsp_1 和 logdbsp_2 这两个数据库空间之间分发逻辑日志,并且物理日志
在 rootdbs 中。因此,关键的数据库空间就是rootdbs、logdbsp_1 和 logdbsp_2。
通过发出以下 ON-Bar 命令来执行初始冷恢复:
onbar -r rootdbs logdbsp_1 logdbsp_2 urgent_dbs_1 ... urgent_dbs_2
您可以使服务器联机,并且所有业务紧急数据都可用。

GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 69 -

接下来,对不怎么紧急的数据执行热恢复:
onsmsync
onbar -r less_urgent_dbs_1 less_urgent_dbs_2 ..... less_urgent_dbs_k
最后,您可以通过发出以下命令来对服务器的剩余部分执行热恢复。
onbar -r
在具有几十个数据库空间的更大型系统中,可以将混合恢复的热恢复部分划分为几个热恢
复,每个热恢复只恢复系统中剩余要恢复的数据库空间的其中一小部分。

恢复期间重新创建块文件
如果磁盘或文件系统发生故障,数据库空间中可能会缺少一个或多个块文件。使用 -O 选
项可在恢复期间重新创建缺少的块文件以及任何必要的目录。
如果文件系统上存在的空间不足,恢复会失败。新创建的块文件是经过格式化的文件,并
为 UNIX™ 上的组 gbasedbt 所有。
在使用熟块时恢复
可以在恢复期间重新创建缺少的熟块文件。
限制: 如果逻辑日志中包含块创建记录,那么 ON-Bar 不会在逻辑恢复期间重新创建块文
件。
要在使用熟块时恢复:
1.
安装新磁盘。
2.
基于您的系统,执行以下某个任务:

在 UNIX™ 上将设备作为文件系统安装。
3.
为块文件分配磁盘空间。
4.
运行 onbar -r -O space 命令来重新创建块文件并恢复数据库空间。
在使用原始块时恢复
可以在恢复期间重新创建缺少的原始块文件。
要在使用原始块时恢复:
1.
安装新磁盘。
2. 对于 UNIX™,如果使用原始设备的符号链接,那么为脱机块创建指向新安装的
磁盘的新链接。
ON-Bar 恢复符号链接指向的块文件。
3. 发出 onbar -r space 命令来恢复数据库空间。


GBase 8s 备份与恢复指南
南大通用数据技术股份有限公司 - 70 -

重新初始化数据库服务器并恢复数据
重新初始化磁盘空间将毁坏数据库服务器管理的所有现有数据。但是,您可以根据重新初
始化之前执行的备份来恢复数据。
您必须拥有所有存储空间的当前 0 级备份。
初始化期间,ON-Bar 将紧急引导文件保存到其他地方,并启动一个全新的空紧急引导文
件。因此,重新初始化数据库服务器之前执行的任何备份都无法识别。必须使用在初始化
之前保存的紧急引导文件的副本来恢复先前的数据库服务器实例。
要重新初始化数据库服务器并恢复旧数据:
1. 将紧急引导文件、oncfg 文件和 onconfig 文件复制到不同的目录。
2. 在 onconfig 文件中将 FULL_DISK_INIT 配置参数设置为 1。
3. 关闭数据库服务器。
4. 通过运行 oninit -i 命令来重新初始化数据库服务器。
5. 将管理文件移至数据库服务器目录。
如果管理文件不可用,将它们从最近一次备份复制到数据库服务器目录中。
6. 通过运行 onbar -r -p -w 命令来执行恢复。
不要回收逻辑日志。
7. 验证是否恢复了关键和非关键存储空间的正确实例。

#ifdef WIN32
# include
#else
# include
#endif
#include
#include
#include
#include

#define isSuc(result) ((result) == SQL_SUCCESS || (result) ==
SQL_SUCCESS_WITH_INFO)
char* conn_str = "DRIVER=GBase 8a ODBC 8.3
Driver;UID=gbase;PWD=gbase20110531;"





"SERVER={192.168.7.172;192.168.7.173;192.168.7.174};"

GBase 8a 程序员手册ODBC 篇


- 58 -

南大通用数据技术股份有限公司





"CONNECTION_BALANCE=1;GCLUSTER_ID=gcluster;"





"CHECK_INTERVAL=90;";
int main(void)
{
short sret;
void* henv;
void* hdbc;
char message[512];
char hostinfo[100];
int i = 0;

sret = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret =
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}

GBase 8a 程序员手册ODBC 篇
南大通用数据技术股份有限公司

- 59 -

for (i=0; i<6; i++)
{
sret = SQLDriverConnect(hdbc, NULL,(SQLCHAR*)conn_str,
SQL_NTS,NULL, 0, NULL, 0);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}

SQLGetInfo(hdbc, SQL_SERVER_NAME, hostinfo, 200, NULL);

printf("使用GBase 8a ODBC 高可用负载均衡连接GBase 集群节
点:%s.\n", hostinfo);

sret = SQLDisconnect(hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
}
sret = SQLFreeConnect(hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret = SQLFreeEnv(henv);
if(!isSuc(sret))

GBase 8a 程序员手册ODBC 篇


- 60 -

南大通用数据技术股份有限公司
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
return 0;
}

本部分描述 GBase 8s BYTE 和 TEXT 数据类型,以及如何以 JDBC API 来操纵这些数据
类型的列。
BYTE 数据类型是在不可分的字节流中存储任何数据的简单大对象数据类型。此二进制数
据的示例包括电子表格、数字化的语音模式以及视频片段。TEXT 数据类型是存储任何文
本数据的简单大对象数据类型。它可同时包含单个的和多字节的字符。
任一数据类型的列都有 231 字节的理论限制,实际限制取决于磁盘容量。
要获取关于 GBase 8s BYTE 和 TEXT 数据类型的更详尽信息,请参阅《GBase 8s SQL 指
南:参考》 和《GBase 8s SQL 指南:语法》。