返回首页

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

更新日期:2024年09月11日

orato8a 导出大数据量卡住
问题现象
用orato8a 导出1.2T 数据,
导出290G 左右数据就无法写入。
试过全表导出和query
方式导出,都出现了同样的现象。
orato8a 报错:
ERROR CODE = 1555
ORA-01555:snapshot too old:rollback segment number 614 with name "_SYS
SMU614_278740291$" too small
export columns:60
export rows:645661015
export time:4 hours 21 min 6 sec
process ok!
原因分析
问题是当单次查询导出数据量过大,且其它应用DML 操作提交过多时,oracle
的快照失效引起。
解决方案

orato8a:
1)使用--table_name 参数,加大--parallel 并发数,以减少查询导出时间;
2)使用--query 参数,带where 过滤,以减少查询导出时间。

oracle 配置
3)增加UNDO 表空间大小;
4)增加UNDO_RETENTION 时间,默认为15 分钟。

现场其它访问oracle 的应用
1)避免频繁的DML 操作提交。

ifx_var_setdata() 函数在 lvarchar 或 var binary 主变量中存储数据。

语法
var binary
mint ifx_var_setdata(var_bin, buffer, buf_len)
var binary **var_bin;
char *buffer;
int4 buf_len;

lvarchar
mint ifx_var_setdata(lvar, buffer, buf_len)
lvarchar **lvar;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 821 -
char *buffer;
int4 buf_len;

buffer
包含要存储在 lvar 或 var_bin 主变量中的数据的字符缓冲区。
buf_len
以字节计的缓冲区的长度。
var_bin
var binary 主变量的地址。
lvar
lvarchar pointer 主变量的地址。

用法
ifx_var_setdata() 函数将数据存储在 lvar 或 var_bin 主变量的数据缓冲区中的 buffer
中。对于 lvarcharpointer 主变量,GBase 8s ESQL/C 期望 buffer 之中的数据为以空终止
的 ASCII 数据。

返回代码
0
函数成功。
<0
函数不成功,且返回值指示错误的原因。

GetInt16 方法
获取指定列的16 位有符号整数值。

重载列表
1) 根据给定的序号,获取指定列的16 位有符号整数值。
GetInt16(Int32)
2) 根据给定的列名称,获取指定列的16 位有符号整数值。
GetInt16(String)