返回首页

gbase数据、南大通用产品文档:GBase8a权限问题

更新日期:2024年09月11日

777 权限过高
8a 配置文件,被设置成了777 属性,会导致配置文件被忽略。数据库默认是640 或
600 属性,这属于外部操作导致。System.log 日志里会有World-writable config file
‘/home/gbase/GBase/config/gbase_8a_gbase8a.cnf’ is ignored 信息
可以使用chmod 修改文件或整个目录的属性为640 或600。
数据库文件属主改变
System.log、Express.log 日志里报Permission deny 或者File not found,甚至根本无
法启动数据库。

GBase 8a MPP Cluster 最佳实践
6 附录
文档版本(2022-02-11)
南大通用数据技术股份有限公司
192
8a 数据库是运行在操作系统dbauser 下,默认是gbase,。如果gbase 用户被删除重
建,会导致原有的文件目录宿主错误,导致没有权限访问。
可以过chown 修改数据库目录和文件为正确的属主。
防火墙未关闭
一般在安装、扩容、节点替换时,如果防火墙没有关闭或者规则没有加入例外,特
别是端口,会出现:
集群的节点间会看不到对方(gcadmin 显示本机外的其他节点均OFFLINE)
或者操作脚本ssh 远程命令报错等。
这种情况需要闭防火墙,或增加例外规则。
除了新机器外,
日常使用期间如果做了安全加固或操作系统参数变动也有可能会导
致防火墙状态改变为开启,需要检查防火墙状态确认。
操作系统可打开文件数限制
如果Express.log 里查询报错报Can’t open file (errno:24) Too many open file。
有可能是安全加固等操作修改了配置参数,或者在其它地方增加了额外的限制。可
以查看当前配置的最大打开的文件数是否过小。
可以进行如下检查:
在操作系统dbaUser, 一般是gbase 下执行
su - gbase
ulimt -n
或者
cat /proc/`pidof gbased`/limits
查看当前进程配置的最大打开的文件数,默认数据库安装后是655360。查看Max
open files 行,如果不是655360,则表示数据库启动时,参数已经修改了。
ll /proc/`pidof gbased`/fd | wc -l
查看进程当前已经打开的文件数,如果已经接近或达到最大文件数,则会经常报这
个错误
这种情况可以通过提高参数值解决,包括但不限于
/etc/security/limits.conf
/etc/security/limits.d/20-nofile.conf
/etc/profil

文档版本(2022-01-18)
南大通用数据技术有限公司
-
193 -

ifx_lvar_alloc() 函数指定当访存 lvarchar 数据时,是否分配内存。

语法
mint ifx_lvar_alloc(mintalloc)
mint alloc;
alloc
分配标志的值;为 1 或 0

用法
当设置标志为 1 时,ESQL/C 自动地执行此内存分配。当您不确定 SELECT 语句返
回的数据量时,
在 SELECT 语句前,
您可使用标志值 1。
当设置标志为 0 时,
ESQL/C 不
自动地执行此内存分配。

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

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

支持动态地分配数据对象的 SQL API 进动态语句更进一步。
它们允许您动态地分配接收列
数据的主变量。
变量的动态分配使得有可能从程序输入中取到任意的 SELECT 语句,
确定它产生多少个值
及其数据类型,并分配适当类型的主变量来保存它们。
此功能的关键是 DESCRIBE 语句。
它取到准备好的 SQL 语句的名称,
并返回关于该语句
及其内容的信息。它设置 SQLCODE 来指定语句的类型;即,它开头的动词。如果准备好
的语句是 SELECT 语句,则 DESCRIBE 语句还返回关于选择了的输出数据的信息。如果
准备好的语句是 INSERT 语句,
则 DESCRIBE 语句返回关于输入参数的信息。
DESCRIBE
语句返回信息的数据结构是预定义的数据结构,为此用途分配该数据结构并称为系统描述
符区域。如果您正在使用 GBase 8s ESQL/C,则可使用系统描述符区域,或作为 sqlda 结构
的替代方案。
DESCRIBE 语句返回的或为 SELECT 语句引用的数据结构包括结构的一个数组。每一结
构描述为选择类表中一个项目的数据。程序可检测该数组并发现包括十进制值、某长度的
字符值以及整数的一行数据。
利用此信息,程序可分配保存接收了的数据的内存,并为要使用的数据库服务器将必要的
指针放置在该数据结构中。