返回首页

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

更新日期:2024年09月11日

ifx_lo_seek() 函数设置打开的智能大对象上下一次读取或写入操作的文件位置。
语法
ifx_lo_seek(lofd, offset, whence, seek_pos)
参数
该函数接受以下参数。
参数
类型
用于
描述
lofd
SQL_INTEGER
输入
智能大对象文件描述符
offset
SQL_BIGINT
输入
从起始查找位置偏移的偏移量,以字节为
单位。使用 SQL_C_LONG 或
SQL_C_SHORT,而不是使用缺省的
GBase 8s ODBC Driver C 数据类型
SQL_C_CHAR 作为 offset。
whence
SQL_INTEGER
输入
开始查找位置。可能值为:

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 166 -
参数
类型
用于
描述
LO_SEEK_CUR
当前查找位置在智能大对象中的位置
LO_SEEK_END
智能大对象的末尾位置
LO_SEEK_SET
智能大对象的起始位置
seek_pos
SQL_BIGINT
I/O
新的查找位置。使用 SQL_C_LONG,而
不是使用缺省的 GBase 8s ODBC Driver C
数据类型 SQL_C_CHAR 作为 eek_pos。
用法
ifx_lo_seek() 函数将 lofd 的查找位置设置为 offset 和 whence 参数指示的查找位置。

gs_dumpall
背景信息
gs_dumpall 是GBase 8c 用于导出所有数据库相关信息工具,它可以导出GBase 8c 数据
库的所有数据,包括默认数据库postgres 的数据、自定义数据库的数据、以及GBase 8c 所
有数据库公共的全局对象。
gs_dumpall 工具由管理员用户gbase 执行。gs_dumpall 工具在进行数据导出时,其他用
户可以访问GBase 8c 数据库(读或写)。
gs_dumpall 工具支持导出完整一致的数据。
例如,
T1 时刻启动gs_dumpall 导出GBase 8c
数据库,那么导出数据结果将会是T1 时刻该GBase 8c 数据库的数据状态,T1 时刻之后对
GBase 8c 的修改不会被导出。

GBase 8c 管理员指南
南大通用数据技术股份有限公司
92
gs_dumpall 在导出GBase 8c 所有数据库时分为两部分:
gs_dumpall 自身对所有数据库公共的全局对象进行导出,
包括有关数据库用户和组,

空间以及属性(例如,适用于数据库整体的访问权限)信息。
gs_dumpall 通过调用gs_dump 来完成GBase 8c 中各数据库的SQL 脚本文件导出,
该脚
本文件包含将数据库恢复为其保存时的状态所需要的全部SQL 语句。
以上两部分导出的结果为纯文本格式的SQL 脚本文件,使用gsql 运行该脚本文件可以
恢复GBase 8c 数据库。
注意事项
禁止修改导出的文件和内容,否则可能无法恢复成功。
为了保证数据一致性和完整性,
gs_dumpall 会对需要转储的表设置共享锁。
如果某张表
在别的事务中设置了共享锁,gs_dumpall 会等待此表的锁释放后锁定此表。如果无法
在指定时间内锁定某张表,转储会失败。用户可以通过指定--lock- wait-timeout 选项,
自定义等待锁超时时间。
由于gs_dumpall 读取所有数据库中的表,因此必须以GBase 8c 管理员身份进行连接,
才能导出完整文件。在使用gsql 执行脚本文件导入时,同样需要管理员权限,以便添
加用户和组以及创建数据库。
语法
gs_dumpall [OPTION]...
参数说明
通用参数:
-f,
--filename=FILENAME :将输出发送至指定文件。如果这里省略,则使用标准输
出。
-v, --verbose :指定verbose 模式。该选项将导致gs_dumpall 向转储文件输出详细的对
象注解和启动/停止次数,向标准错误流输出处理信息。

GBase 8c 管理员指南
南大通用数据技术股份有限公司
93
-V
, --version :打印gs_dumpall 版本,然后退出。
--lock-wait-timeout=TIMEOUT :请勿在转储刚开始时一直等待以获取共享表锁。如果
无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement_timeout
的格式指定超时时间。
-?, --help :显示gs_dumpall 命令行参数帮助,然后退出。
转储参数:
-a, --data-only :只转储数据,不转储模式(数据定义)。
-c, --clean :在重新创建数据库之前,执行SQL 语句清理(删除)这些数据库。针对角
色和表空间的转储命令已添加。
-g, --globals-only :只转储全局对象(角色和表空间),无数据库。
-o, --oids :转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应
用以某种方式参照了OID 列的情况。如果不是以上这种情况,请勿使用该选项。
-O, --no-owner :
不输出设置对象的归属这样的命令,
以匹配原始数据库。
默认情况下,
gs_dumpall 会发出ALTER OWNER 或SET SESSION
AUTHORIZATION 语句设置所
创建的模式元素的所属。如果脚本正在运行,该语句不会执行成功,除非是由系统管
理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用
户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。
-r, --roles-only :只转储角色,不转储数据库或表空间。
-s, --schema-only :只转储对象定义(模式),而非数据。
-S, --sysadmin=NAME :在转储过程中使用的系统管理员名称。
-t, --tablespaces-only :只转储表空间,不转储数据库或角色。
-x, --no-privileges :防止转储访问权限(授权/撤销命令)。
--column-inserts|--attribute-inserts :以INSERT 命令带列名(INSERT INTO 表(列、…)
值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立

GBase 8c 管理员指南
南大通用数据技术股份有限公司
94
分开的命令,所以在重新加载某行时出现的错误只会导致那行丢失,而非整个表内容。
--disable-dollar-quoting :
该选项将禁止在函数体前使用美元符号$,
并强制使用SQL 标
准字符串语法对其进行引用。
--disable-triggers :该参数为扩展预留接口,不建议使用。
--inserts :
发出INSERT 命令
(而非COPY 命令)
转储数据。
这会导致恢复缓慢。
注意:
如果重排列顺序,可能会导致恢复整个失败。--column-inserts 选项更加安全,虽然可
能更慢些。
--no-publications :不转储发布。
--no-security-labels :该参数为扩展预留接口,不建议使用。
--no-subscriptions :不转储订阅。
--no-tablespaces :
请勿输出创建表空间的命令,
也请勿针对对象选择表空间。
使用该选
项,无论默认表空间是哪个,在恢复过程中所有对象都会被创建。
--no-unlogged-table-data :该参数为扩展预留接口,不建议使用。
--include-alter-table :导出表中已删除的列信息。
--quote-all-identifiers :强制对所有标识符加引号。为了向后续版本迁移,且其中可能
涉及引入额外关键词,在转储相应数据库时该选项会有帮助。
--dont-overwrite-file :不重写当前文件。
--use-set-session-authorization :
输出符合SQL 标准的SET SESSION AUTHORIZATION
命令而不是ALTER OWNER 命令来确定对象所有权。这样令转储更加符合标准,但是
如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET
SESSION AUTHORIZATION 的转储需要数据库系统管理员的权限才能转储成功,而
ALTER OWNER 需要的权限则低得多。
--with-encryption=AES128 :指定转储数据需用AES128 进行加密。
--with-key=KEY
AES128 密钥规则如下:

GBase 8c 管理员指南
南大通用数据技术股份有限公司
95

密钥长度为8~16 个字符。

至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限
定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
--include-extensions :如果include-extensions 参数被设置,将备份所有的CREATE
EXTENSION 语句。
--include-templatedb :转储过程中包含模板库。
--binary-upgrade :该参数为扩展预留接口,不建议使用。
--binary-upgrade-usermap="USER1=USER2" :该参数为扩展预留接口,不建议使用。
--non-lock-table :该参数仅供OM 工具使用。
--tablespaces-postfix :该参数为扩展预留接口,不建议使用。
--parallel-jobs :指定备份进程并发数,取值范围为1~1000。
--pipeline :使用管道传输密码,禁止在终端使用。

-g/--globals-only 和-r/--roles-only 不能同时使用。

-g/--globals-only 和-t/--tablespaces-only 不能同时使用。

-r/--roles-only 和-t/--tablespaces-only 不能同时使用。

-s/--schema-only 和-a/--data-only 不能同时使用。

-r/--roles-only 和-a/--data-only 不能同时使用。

-t/--tablespaces-only 和-a/--data-only 不能同时使用。

-g/--globals-only 和-a/--data-only 不能同时使用。

--tablespaces-postfix 和--binary-upgrade 必须一起使用。

--binary-upgrade-usermap 和--binary-upgrade 必须一起使用。

--parallel-jobs 和-f/--file 必须一起使用。

GBase 8c 管理员指南
南大通用数据技术股份有限公司
96
连接参数:
-h, --host :
指定主机的名称。
如果取值是以斜线开头,
它将用作Unix 域套接字的目录。
默认值取自PGHOST 环境变量;如果没有设置,将启动某个Unix 域套接字建立连接。
该参数只针对GBase 8c 外,对GBase 8c 内本机只能用127.0.0.1。环境变量:PGHOST
-l, --database :指定所连接的转储全局对象的数据库名称,并去寻找还有其他哪些数据
库需要被转储。如果没有指定,会使用postgres 数据库,如果postgres 数据库不存在,
会使用template1。
-p, --port :指定服务器所侦听的TCP 端口或本地Unix 域套接字后缀,以确保连接。默
认值设置为PGPORT 环境变量。在开启线程池情况下,建议使用pooler port,即侦听
端口+1。环境变量:PGPORT
-U, --username :所连接的用户名。环境变量:PGUSER
-w, --no-password :不出现输入密码提示。如果服务器要求密码认证并且密码没有通过
其它形式给出,则连接尝试将会失败。该选项在批量工作和不存在用户输入密码的脚
本中很有帮助。
-W, --password :指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管
理员进行密码验证,即无需输入-W 选项;如果没有-W 选项,并且不是系统管理员,
“Dump Restore 工具”会提示用户输入密码。
--role :指定创建转储使用的角色名。选择该选项,会使gs_dumpall 连接数据库后,发
起一个SET ROLE 角色名命令。当所授权用户(由-U 指定)没有gs_dumpall 要求的权
限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许
直接以系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。
--rolepassword :指定具体角色用户的角色密码。

由于gs_dumpall 内部调用gs_dump,所以一些诊断信息参见gs_dump。一旦恢复,
最好在每个数据库上运行ANALYZE,优化程序提供有用的统计数据。

GBase 8c 管理员指南
南大通用数据技术股份有限公司
97

gs_dumpall 恢复前需要所有必要的表空间目录才能退出;
否则,
对于处在非默认位
置的数据库,数据库创建会失败。
示例
使用gs_dumpall 一次导出GBase 8c 的所有数据库。
gs_dumpall 仅支持纯文本格式导出。只能使用gsql 恢复gs_dumpall 导出的转储内容。
gs_dumpall -f backup/bkp2.sql -p 5432
gs_dump[port='5432'][dbname='postgres'][2018-06-27 09:55:09]: The total
objects number is 2371. gs_dump[port='5432'][dbname='postgres'][2018-06-27
09:55:35]: [100.00%] 2371 objects have been dumped.
gs_dump[port='5432'][dbname='postgres'][2018-06-27 09:55:46]: dump database
dbname='postgres' successfully
gs_dump[port='5432'][dbname='postgres'][2018-06-27 09:55:46]: total time:
55567 ms gs_dumpall[port='5432'][2018-06-27 09:55:46]: dumpall operation
successful gs_dumpall[port='5432'][2018-06-27 09:55:46]: total time: 56088 ms

参数global gbase_loader_logs_collect 用于控制加载过程中gnode 将错误数据和溯
源信息日志直接上传至ftp/sftp,加载完成后,gcluster 将加载结果信息直接上传
至ftp/sftp。
参数global gbase_loader_logs_collect 用来控制日志汇总功能是否开启,默认值为
1,代表开启。

默认控制日志汇总功能开启时,加载日志文件上传路径走global
gbase_loader_logs_dir 参数指定的路径。
set global gbase_loader_logs_dir='ftp://gbase:gbase@192.168.6.15/loadlogs '
//错误数据与溯源日志文件汇总目录
load data infile 'ftp://gbase:gbase@127.0.0.1/data/a.tbl' into table customer;

控制日志汇总功能关闭时,上传路径走trace_path 指定的路径。
set global gbase_loader_logs_collect=0;
//控制日志汇总功能关闭
load
data
infile
'ftp://gbase:gbase@127.0.0.1/data/a.tbl'
into
table
customer
trace_path
'ftp://gbase:gbase@192.168.6.15/loadlogs';
注意
设置gbase_loader_logs_dir 变量为FTP/SFTP 目录URL 后,
错误
数据与溯源信息日志将直接上传至FTP/SFTP,
由于不在发起节
点GCLUSTER 上保存,所以使用show load logs 将无法检索到
结果,同样也不能使用export load logs 导出日志文件。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1190