返回首页

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

更新日期:2024年09月11日

GBA-01BR-0062
错误码
错误标识
错误显示信息
GBA-01BR-0062

open DC data file Error
错误出现原因
打开数据文件错误
分析与建议
检查数据文件的权限及状态

磁盘损坏
查询报错Disk I/O Error。去磁盘目录,
无法cd 以及ls列表等。查看/va/log/messages
日志中有I/O Error 字样。
这种问题属于磁盘物理损坏,如果是RAID5,则损坏有多块。
需要维修和更换磁盘,重做raid,文件系统。磁盘故障修复后对故障服务器做节点
替换。
磁盘扇区损坏
查询报错或卡住,耗时超长。查看/var/log/messages 日志中错误举例:
Nov
1 09:03:48 statcp1 kernel: [17707947.372126] sd 6:0:0:0: Device offlined - not
ready after error recovery
Nov
1 09:03:48 statcp1 kernel: [17707947.372267] sd 6:0:0:1: [sdc] Unhandled error
code
Nov
1 09:03:48 statcp1 kernel: [17707947.372275] sd 6:0:0:1: [sdc] Result:
hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
Nov
1 09:03:48 statcp1 kernel: [17707947.372285] sd 6:0:0:1: [sdc] CDB: Write(16):
8a 00 00 00 00 03 be 77 41 fa 00 00 02 00 00 00
Nov
1 09:03:48 statcp1 kernel: [17707947.372313] end_request: I/O error, dev sdc,
sector 16080388602
Nov
1 09:03:48 statcp1 kernel: [17707947.372378] sd 6:0:0:1: [sdc] Unhandled error
code
这种情况属于磁盘物理部分扇区损坏。可以尝试reboot,看能否恢复。如果无法恢
复需要维修、更换磁盘,重做raid,文件系统。最后对故障服务器做节点替换。
磁盘只读
检查数据库的system.log 和express.log 里,有字样:Read-only file system
这种情况多数是外挂存储环境的存储或网络出问题导致无法写入。
需要排查存储和
网络。
磁盘空间满
遇到Express.log 报错write error(disk full)字样。如
load kernel: EXT4-fs warning (device sdb4):ext4_dx_add_entry:Directory index full!

GBase 8a MPP Cluster 最佳实践
6 附录
文档版本(2022-02-11)
南大通用数据技术股份有限公司
189
这种情况通常是磁盘空间满,或者inode 满或者可能是数据盘挂载错了。可以做如
下检查:
df 查看磁盘空间,包括根。
df -i 查看inode 信息
df -T 查看文件系统类型
注意ext3 默认每个目录下只能写3 万个文件,建议用ext4 或xfs 文件系统。
/etc/fstab 里检查是否没有配置挂载信息,或者挂载目录名字写错了,导致数据盘
没有正确挂载,使用的是操作系统盘,导致性能差和磁盘空间满。
I/O 阻塞
查看/var/log/messages 有大量的“echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
disables this message.” 和“blocked for more than 120 seconds” 错误,可能是
GBase8a 集群的SQL 任务阻塞。
这是由于默认情况下,Linux 会最多使用40%的可用内存作为文件系统缓存。
当超
过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘,导致后续的IO 请求
都是同步的。将缓存写入磁盘时,有一个默认120 秒的超时时间。出现上面的问
题的原因是IO 子系统的处理速度不够快,不能在120 秒将缓存中的数据全部写入
磁盘。最后IO 系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占
用,导致系统失去响应。
可以根据应用程序情况,
对vm.dirty_ratio,
vm.dirty_background_ratio 两个参数进行
调优设置。例如,推荐如下设置:
# sysctl -w vm.dirty_ratio=10
# sysctl -w vm.dirty_background_ratio=5
# sysctl -p

GBase 8a MPP Cluster 最佳实践
6 附录
文档版本(2022-02-11)
南大通用数据技术股份有限公司
190
如果系统永久生效,修改/etc/sysctl.conf 文件。加入如下两行:
#vi /etc/sysctl.conf
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
重启系统生效。

对于来自客户机的连接,请使用下列格式来指定数据库 URL:

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 22 -
jdbc:gbasedbt-sqli://[{ip-address|host-name}:{port-number|server-name}][/dbname]:
GBASEDBTSERVER=servername[{;user=user;password=password]
|CSM=(SSO=database_server@realm,ENC=true)}
[;name=value[;name=value]...]
对于数据库服务器上的连接,请使用下列格式:
jdbc:gbasedbt-direct://[/dbname:;[user=user;password=password] ]
[;name=value[;name=value]...]
在前面的语法中:

与竖线(|)在一起的大括号({ })表示变量的多个选择。

斜体字表示变量值。

方括号([ ])表示可选的值。

括在方括号中的词或符号是必需的(例如,GBASEDBTSERVER=)。
在数据库 URL 中不允许空格。
例如,在客户机上,您可能使用:
jdbc:gbasedbt-sqli://123.45.67.89:1533/testDB:
GBASEDBTSERVER=myserver;user=rdtest;password=test
在服务器上,您可能使用:
jdbc:gbasedbt-direct://testDB;user=rdtest;password=test
重要: 使用服务器侧 JDBC 的连接有不同的语法。要了解详细信息,请参阅 J/Foundation 开发
者指南 或您的数据库服务器版本的发布说明。
下表描述数据库 URL 的变量部分,以及对等的 GBase 8s 连接属性。
GBase 8s 连
接属性
数据库 URL 变量
是否必需?
描述
IFXHOST
ip-address
host-name
对于客户机侧 JDBC,必需,
除非定义 SQLH_TYPE属性
或使用 IFXHOST 属性;
对于
服务器侧 JDBC,
不是必需的
正在运行 GBase
8s 数据库服务器的计
算机的 IP 地址或主机
名称。
PORTNO
port-number
对于客户机侧 JDBC,必需,
必须指
定 port-number 或 ser
ver-name,除非定义
GBase 8s 数据库服务
器的端口号
在 /etc/services

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 23 -
GBase 8s 连
接属性
数据库 URL 变量
是否必需?
描述
SQLH_TYPE 属性,或使用
PORTNO 属性;对于服务器
侧 JDBC,不是必需的
文件中罗列该端口号。

server-name
对于客户机侧 JDBC,必需,
必须指
定 port-number 或 ser
ver-name,除非定义
SQLH_TYPE 属性,或使用
PORTNO 属性;对于服务器
侧 JDBC,不是必需的
罗列
在 /etc/services
文件中的 GBase
8s 数据库服务器的
server-name。
DATABASE
dbname
不是必需的,除非是来自运
行在数据库服务器中的 web
应用程序的连接
您想要连接至其
的 GBase 8s 数据库
的名称
如果未指定数据库的名
称,则制作至 GBase
8s 数据库服务器的连
接。
GBASEDBTSERV
ER
server-name
必需
您想要连接至其
的 GBase 8s 数据库
服务器的名称
USER
user
必需。
必须指定用户和口令,
或 SSO 的 SCM 设置。 必
须指定用户和口令。
想要连接至 GBase
8s 数据库或数据库服
务器的用户名称。
必须同时指定用户和口
令,或都不指定。如果
都不指定,则驱动程序


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 24 -
GBase 8s 连
接属性
数据库 URL 变量
是否必需?
描述
用 System.getProper
ty() 来获取当前正在
运行应用程序的用户的
名称,以及假定信任的
客户机。
PASSWORD
password
必需。
必须指定用户和口令,
或 SSO 的 CSM 设置。 必
须指定用户和口令。
用户的口令
必须同时指定用户和口
令,或都不指定。如果
都不指定,则驱动程序

用 System.getProper
ty() 来取得当前正在
运行应用程序的用户的
名称,以及假定信任的
客户机。

database_server@
realm
必需,
必须指定用户和口令,
或 SSO 的 CSM 设置。
(SSO)
访问控制的服务
原则。要获取信息,请
参阅 随同 GBase 8s
JDBC 驱动程序来使用
单点登录访问控制。

name=value
不是必需的
为包含在 name 变量
中的 GBase 8s 环境
变量指定值的名-值对,
GBase 8s JDBC
Driver 或 GBase
8s 数据库服务器识别


GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 25 -
GBase 8s 连
接属性
数据库 URL 变量
是否必需?
描述
name 变量不区分大小
写。
要获取更多信息,请参
阅 指定属性 和 随
同 GBase 8s JDBC 驱动
程序的 GBase 8s 环境
变量。
如果 LDAP 服务器或 sqlhosts 文件通过 SQLH_TYPE 属性来提供 IP 地址、主机名称或端
口号,则不必在数据库 URL 中指定它们。要获取更多信息,请参阅 动态地读取 GBase 8s
sqlhosts 文件。

连接 URL 中的 IP 地址
GBase 8s JDBC Driver Version 3.0 及后来的版本支持 JDK 1.4 是 IPv6 感知的。
也就是说,
解析连接 URL 的代码可处理更长的(128 位模式)IPv6 地址(以及 IPv4 格式)。此 IP
地址可为 IPv6 文字,例如:
3ffe:ffff:ffff:ffff:0:0:0:12
要以 GBase 8s 来连接至 IPv6 端口,请使用系统属性,例如:
java -Djava.net.preferIPv6Addresses=true ...
以 GBase 8s JDBC Driver Version 3.0 或后来版本处理不带有 IPv6 文字的 URL 是不变的,
且遗留行为是不变的。
冒号(:)是连接 URL 中的关键定界符,特别是在 IPv6 文字地址中。
必须为驱动程序创建格式良好的 URL,来识别 IPv6 文字地址。请注意,在下列示例中:


jdbc:gbasedbt-sqli:// 是需要的。

环绕 8088 的冒号(:8088:)是需要的。

驱动程序不验证 3ffe:ffff:ffff:ffff:0::12。

8088 必须是 < 32k 的有效数值。
jdbc:gbasedbt-sqli://3ffe:ffff:ffff:ffff:0::12:8088:gbasedbtserver=X...


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