返回首页

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 文件描述符。

功能说明
将备份目录中指定库的备份数据,恢复至GBase8a MPP Cluster 数据库中。
注意

恢复数据库前需要先删除数据库。

数据库恢复成功后,需要手动执行如下操作才可正常使用恢复的库表:
refresh 库内所有的table:refresh table 表名;
或者
重启集群服务
语法格式
recover database [vcname.] [ [point_id]]
表4- 58 options 可选项说明
参数名称


vc_name
要恢复的数据库所属的虚拟集群名
database_name
待恢复的数据库名
cycle_id
备份周期的ID
point_id
备份点的ID
recover 命令有以下三种形式:

recover database vcname.dbname:将数据库恢复到最新周期的最新备份点。

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
405

recover database vcname.dbname cycle_id:将数据库恢复到指定周期cycle_id 内
的最新备份点。

recover database vcname.dbname cycle_id point_id:将数据库恢复到指定周期
cycle_id 内的指定备份点point_id。
示例
示例1:对数据库中库级备份数据进行恢复。
删除待恢复的数据库:
$ gccli -uroot -e"drop database vc1.demo"
gccli -uroot -e"select * from vc1.demo.t"
ERROR 1146 (42S02) at line 1: Table 'vc1.demo.t' doesn't exist
备份完成后设置集群状态为normal:
$ python $GCLUSTER_BASE/server/bin/gcrcman.py -d
/home/gbase/backupD -P gbasedba -e "recover database vc1.demo"

要完成同步工具的安装,除了需要安装上述的基本组件外,本系统还需要
依赖第三方的组件。包括Apache Kafka、jre、Apache Zookeeper、RabbitMQ,
其Kafka 和RabbitMQ 选择其一即可。
2 同步工具部署环境