返回首页

gbase数据、南大通用产品文档:GBase8sifx_lo_open() 函数

更新日期:2024年09月11日

ifx_lo_open() 函数打开现有的智能大对象来访问。

语法

mint ifx_lo_open(LO_ptr, flags, error)
ifx_lo_t *LO_ptr;
mint flags;
mint *error;
LO_ptr
指向标识要打开的智能大对象的 LO-pointer 结构的指针。
flags
指定 LO_ptr 标识的智能大对象以何种方式打开的 mint。
error
指向包含 ifx_lo_open() 设置的错误代码的 mint 的指针。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 782 -


用法
对于它需要访问的每一智能大对象的实例,您的 GBase 8s ESQL/C 程序必须调用
ifx_lo_open() 函数。

在 ifx_lo_open() 成功地完成之后,flags 参数的值指示智能大对象的模
式。要了解 flags 参数的有效值的描述,请参阅 表 1。

GBase 8s 使用 ifx_lo_open()(或 ifx_lo_create())建立的缺省参数,
来确定后续的操作是否导致对于智能大对象的锁定或记录日志。

每一 ifx_lo_open() 调用都隐式地与当前连接相关联。当此连接关闭时,数据库服务
器释放任何列都不引用的任何智能大对象(其引用计数为零的那些)。

如果 ifx_lo_open() 函数成功,则它返回有效的 LO 文件描述符(LO_fd)。然后,您
可使用该文件描述符来标识在后续的函数调用中访问哪个智能大对象,诸如 ifx_lo_read()
和 ifx_lo_write()。LO_fd 仅在当前数据库连接之内有效。

在 ifx_lo_open() 已打开了智能大对象之后,它将放回的 LO 文件描述符中的搜寻位
置设置为字节 0。如果为了锁定整个智能大对象而设置锁定的缺省范围,则 ifx_lo_open()
函数还可取得智能大对象上的锁,基于访问模式的下列设置:
对于 dirty-read 模式,数据库服务器不在智能大对象上放置锁。
对于 read-only 模式,数据库服务器在智能大对象上取得共享锁。
对于 write-only、write-append 或 read-write 模式,数据库服务器在智能大对象上取
得更新锁。
当发生对 ifx_lo_write() 或 ifx_lo_writewithseek() 函数的调用时,
数据库服务器
将该锁提升为排他锁。

当当前事务终止时,
ifx_lo_open() 取得的锁丢失。
然而,
当需要锁的下一函数执行时,
数据库服务器在此取得该锁。如果不需要此行为,请使用 BEGIN WORK 事务块,并在需
要使用该锁的最后一条语句之后放置 COMMIT WORK 或 ROLLBACK WORK 语句。

返回代码
-1
函数不成功;请检测该错误的详尽错误代码。
有效的 LO 文件描述符

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 783 -

函数已成功地打开了智能大对象,并返回了有效的 LO 文件描述符。

在安装并配置了数据库服务器之后,必须执行以下一个或多个任务:

准备连接到应用程序。

启动数据库服务器并初始化磁盘空间。

创建存储空间。

设置备份并复原系统。

执行管理任务。
启动数据库服务器
使用 oninit 实用程序可启动数据库服务器。可以通过不同的方式启动数据库服务器。
缺省方式是联机方式,它允许多个用户连接到数据库服务器。
先决条件:

UNIX™、Linux™ 或 Mac OS X:您必须以 root 或 gbasedbt 用户身份登录。

数据库服务器的磁盘空间已初始化。
要启动数据库服务器:
UNIX、Linux 或 Mac OS X:运行 oninit 命令。可以在 oninit 命令中包含选项来
定制启动。
准备自动启动

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 15 -
准备操作系统注册表或脚本以自动启动和停止数据库服务器。
准备 UNIX 启动和关闭脚本
可以修改 UNIX™ 启动脚本以便在计算机进入多用户方式时自动初始化数据库服务器。也
可以修改 UNIX 关闭脚本,以便无论 UNIX 何时关机数据库服务器都以受控方式关闭。
ISA 提供了用于启动和关闭的 UNIX 脚本,您可以在 $GBASEDBTDIR/etc/ids-
example.rc 中定制该脚本。
准备 UNIX 启动脚本
可以准备 UNIX™ 启动脚本来启动数据库服务器。
要准备 UNIX 启动脚本,请将 UNIX 和数据库服务器实用程序命令添加到 UNIX 启动脚
本,以便该脚本执行以下步骤。
要准备 UNIX 启动脚本,请执行以下操作:
1. 将 GBASEDBTDIR 环境变量设置为数据库服务器安装目录的完整路径名。
2. 将 PATH 环境变量设置为包含 $GBASEDBTDIR/bin 目录。
3. 将 ONCONFIG 环境变量设置为适当的配置文件。
4. 设置 GBASEDBTSERVER 环境变量,使 sysmaster 数据库可以更新(或在需要
时创建)。
5. 运行 oninit,启动数据库服务器,并使该服务器保持联机方式。
oninit 实用程序具有 -w 选项,在返回至 shell 提示符并返回代码 0 之
前,该选项迫使服务器等待,直到成功初始化为止。有关 oninit 实用程序的
信息,请参阅《GBase 8s 管理员参考》中 oninit 实用程序的内容。
如果您计划初始化数据库服务器的多个版本(多处驻留),那么必须重置
ONCONFIG 和 GBASEDBTSERVER,并为数据库服务器的每个实例重新运
行 oninit。
如果数据库服务器的不同版本安装在不同的目录中,您必须复位 GBASEDBTDIR 并为每
个不同版本重复前面的步骤。
准备 UNIX 关闭脚本
可以准备在 UNIX™ 每次关闭时都以受控方式关闭数据库服务器。
要在无论 UNIX 何时关闭时都以受控方式关闭数据库服务器,请将 UNIX 和数据库服务器
实用程序命令添加到 UNIX 关闭脚本,以便该脚本执行以下步骤。
要准备 UNIX 关闭脚本,请执行以下操作:
1. 将 GBASEDBTDIR 环境变量设置为数据库服务器安装目录的完整路径名。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 16 -
2. 将 PATH 环境变量设置为包含 $GBASEDBTDIR/bin 目录。
3. 将 ONCONFIG 环境变量设置为适当的配置文件。
4. 运行 onmode -ky,启动立即关闭并使数据库服务器脱机。
如果正在运行数据库服务器的多个版本(多处驻留),那么必须重置
ONCONFIG 并为每个实例重新运行 onmode -ky。
如果数据库服务器的不同版本安装在不同的目录中,您必须复位 GBASEDBTDIR 并为每
个版本重复前面的步骤。
在 UNIX 关闭脚本中,当所有客户机应用程序已经完成它们的事务并退出之后,数据库服
务器关闭命令就会运行。
准备连接到应用程序
当数据库服务器联机时,您可以连接客户机应用程序并开始创建数据库。在您可以访问数
据库中的信息之前,客户机应用程序必须连接到数据库服务器环境。要连接到数据库服务
器或断开连接,您可以从以下客户机程序发出 SQL 语句

DB-Access

SQL 编辑器

GBase 8s ESQL/C

GBase 8s ODBC Driver

GBase 8s JDBC Driver
有关创建数据库的信息,请参阅《GBase 8s SQL 指南:教程》。有关如何使用客户机应
用程序的信息,请参阅《GBase 8s DB-Access 用户指南》、《GBase 8s ESQL/C 程序员
手册》、《GBase 8s ODBC Driver 程序员手册》或《GBase 8s JDBC Driver 程序员手
册》。
创建存储空间和块
您负责规划和实现存储空间和块的配置。如何在磁盘上分布数据将影响数据库服务器的性
能。
块与已经指定给数据库服务器的逻辑卷、逻辑单元或常规文件相同。 单个块的最大大小
是 4 TB。
一个实例中最多可以有 32766 个块。可以将这些块全部放入一个存储空间中,也可以将
其分散放入多个存储空间中。
逻辑存储空间由一个或多个块组成。
提示: 要利用每块 4 TB 的上限,应为每个磁盘驱动器指定一个块。这种分布数据的方
法将提高性能。
初始化数据库服务器之后,可以创建存储空间(如数据库空间、BLOB 空间或智能大对象
空间)。使用 onspaces 实用程序可创建存储空间和块。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 17 -
初始化数据库服务器之后,可以创建存储空间(如数据库空间、BLOB 空间或智能大对象
空间)。使用 onspaces 实用程序或 ISA 创建存储空间和块。
如果您要使用以下功能,必须创建智能大对象空间:

J/Foundation(保存 Java™ JAR 文件)

Enterprise Replication(容纳假脱机行数据)

智能大对象(BLOB 和 CLOB 数据类型)
有关存储空间和其他物理单元(如表空间和扩展数据块)的描述,请参阅数据存储。有关
存储空间的分配和管理的说明,请参阅管理磁盘空间。
支持大块
要支持最大为 4 TB 以及大于 2047 块的大块和大偏移量,请运行 onmode -BC 1。
您可以在 onmode -BC 1 方式下测试数据。 如果您确信已正确转换了数据,那么可以
运行 onmode -BC 2,从而使服务器以“仅大块”方式运行。
在运行 onmode -BC 2 后,将不再支持还原。在启用了对大块的支持后,它就不能禁用
了。
设置备份系统和存储
可以使用 ON-Bar 实用程序或 ontape 实用程序来备份和复原数据。
确定要使用哪个实用程序,然后准备备份数据:

如果您将 ontape 用作备份工具,您必须在可以备份与复原数据前设置存储设备
(磁带机)。Ontape 实用程序不需要存储管理器。

如果您将 ON-Bar 用作备份工具,您必须先设置存储管理器和存储设备才能备份与
复原数据。
存储管理器是管理包含备份的存储设备和介质的应用程序。存储管理器将处理所
有的介质标号、安装请求以及存储卷。ISM 可以一次将数据备份到多达四个的存
储设备中。ISM 将数据存储在简单磁带机、光盘设备以及文件系统上。如果要使
用更先进的存储设备,一次备份到四个以上的存储设备或通过网络进行备份,那
么可以从其他供应商处购买存储管理器。
有关设置和使用 ON-Bar 或 ontape 的信息,请参阅《GBase 8s 备份与复原指南》。

HTTP 代理需要支持 servlet 的 web 服务器,如果其 servlet 引擎使用 2.1 或更高 servlet
API 的 web 服务器,则更好。代理与 2.0 和较早的 servlet API 相兼容,但仅 2.1 或更
高的 API 启用 PROXYTIMEOUT 特性。
要为代理服务器配置环境,请:
1.
在 web 服务器配置中为代理 servlet 定义 servlet 别名或上下文。
JDBC 驱动程序将所有客户机 HTTP 请求指向:
http://your-web-server:port/pathname/IfxJDBCProxy
在此,IfxJDBCProxy 是代理 servlet,pathname 是至代理 servlet 的路径。要了解配置
servlet 的方式,请参考 web 服务器资料。
2.
将三个类文件—IfxJDBCProxy.class、SessionMgr.class 和 TimeoutMgr.class—复制至您
在前面步骤中指定的 servlet 目录。
这些类文件驻留在目录 proxy 中,
其位于安装产品包之后的 GBase 8s JDBC Driver 安装
目录之下。
3.
将 GBase 8s JDBC Driver 文件 ifxjdbc.jar 添加至 web 服务器上的 CLASSPATH 设置。

某些 web 服务器使用在其下启动服务器的环境的 CLASSPATH,
而其他 web 服务器
从特定于 web 服务器的属性文件取得它们的 CLASSPATH。要了解更新
CLASSPATH 设置的正确位置,请查阅 web 服务器资料。
4.
启动 web 服务器,并通过输入下列 URL 来核实是否正确地安装代理:
http://server-host-name:port-number/servlet/

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

代理以下列标题来回复:
-- GBase 8s Proxy Servlet v220 Servlet API 2.1 --
v220 表示 GBase 8s 代理版本。Servlet API 2.1 表示 web 服务器 servlet API 的版本。
如果 servlet API 是 2.0 或更早版本,则标题显示 Servlet API 0.0。
5.
在配置代理之后,请将下列内容附加至 applet 或应用程序 URL:
PROXY=server-host-name:port-number
例如:
jdbc:gbasedbt-sqli://123.45.67.89:1533:GBASEDBTSERVER=
myserver;user=rdtest;password=test;
PROXY=webserver:1462;

依赖于 web 服务器,
当启动 web 服务器时,
或在 applet 的 URL 中或在应用程序连接对
象中首次引用它时,可能加载该代理 servlet。
下列网站提供关于代理 servlet 的更多信息:

www.oracle.com

java.apache.org
指定超时
通过使用 PROXYTIMEOUT 关键字,可为代理指定超时值。PROXYTIMEOUT 值指定客
户机侧 JDBC 驱动程序将 keepalive 请求发送至代理的频度。以秒表示 A
PROXYTIMEOUT 值;该值可为 60 或更大。
当客户机指定 PROXYTIMEOUT 时,
代理设置客户机会话到期等于 2 x PROXYTIMEOUT。
例如,如果设置 PROXYTIMEOUT 为 60 秒,则代理将客户机到期时间设置为 120 秒。
当达到到期时间时,代理移除客户机会话资源,并关闭它的数据库连接。
每次收到来自客户机的通讯时,代理重置超时间隔。这里是 PROXYTIMEOUT 的一些有
效值:
PROXYTIMEOUT=-1
禁用客户机超时特性。
PROXYTIMEOUT=nnn
每 nnn 秒,客户机发送一 keepalive 请求至代理。nnn 值必须为 60 或更大。
PROXYTIMEOUT=60
如果未指定 PROXYTIMEOUT,则缺省值为 60

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 53 -
如果未首先通过关闭 JDBC 连接来发送关闭请求给代理,则在确定客户机是否已终止时,
代理超时特性是有帮助的。代理代表客户机维护一打开的数据库连接,直到客户机:

或者显式地关闭数据库连接为止

或者超过它的超时间隔为止
onstat 数据库实用程序展示任何意外终止了且将 PROXYTIMEOUT 设置为 -1 的客户机会
话的打开的会话。
此处为指定 PROXYTIMEOUT 的示例:
jdbc:gbasedbt-sqli://123.45.67.89:1533:gbasedbtserver=myserver;
user=rdtest;password=test;
PROXY=webserver:1462?PROXYTIMEOUT=180;
要了解使用代理的示例 applet 和应用程序,请参阅安装驱动程序的那个目录之下
的 demo/proxy 目录。