**摘要:**本文详细记录了在统信系统(UOS)虚拟机中安装配置南大通用 GBase 8s 数据库的全过程,涵盖虚拟机网络配置、文件传输、数据库安装、端口配置、防火墙设置、编码调整及 DBeaver 连接等关键步骤。重点解决了网络自动获取 IP、数据库编码从 en_us 改为 zh_CN.utf8、事务开启等常见问题,为开发者在国产化环境中部署和使用 GBase 8s 提供了完整的实践指南。
目录
- 一、背景
- 二、统信系统安装与配置
- [三、GBase 8s 安装与配置](#三、GBase 8s 安装与配置)
- 四、数据库连接与调试
- 五、总结
一、背景
最近有个项目用到了国产系统与国产数据库,我们选择了统信系统与南大通用 GBase 8s 的数据库,在安装调试以及后期实现代码访问的过程中有一些"坑",查阅了一些资料,想和大家分享一下,希望对开发有帮助。
二、统信系统安装与配置
1. 虚拟机安装
GBase 现在不支持在 Windows 上安装,我本机拿 Oracle 公司的 VirtualBox 装了一个统信系统的虚拟机。
2. 操作系统选择
我选择的是统信系统的 server 版本 uos-server-20-1070e-amd64-20260320-1055.iso,1070e 这个版本,在虚拟机选择操作系统发行版本与操作系统版本,选择 Other Linux。

3. 网络配置
网络我选择的 host-only,开发机器也不需要虚拟机联网,我的开发机器可以访问到虚拟机就可以了。注意,开发机器是 Wi-Fi 的情况下,选择桥接方式很有可能获取不到 IP,不建议选择。需要连外网的话可以选择 NAT 方式。注意!虚拟有线连接一定要勾选上!

设置完了后,进去虚拟机,桌面右键打开终端,命令 ip a 看看有个 enp0s3 下面有个 inet,有个 192.168.56.102 之类的就说明获取到了。
4. 网络配置常见问题
坑点 1: 有时候不能自动获取 IP,命令 sudo dhclient enp0s3 能重新获取一下 IP,事后要检查虚拟机网络设置里面的虚拟有线连接是不是勾选上了。
坑点 2: 输入命令 nmcli connection show "enp0s3" 查看里面有个 connection.autoconnect: 是/否。如果是否的话,说明开机不会去自动获取 IP 的,需要使用命令 sudo nmcli connection modify enp0s3 connection.autoconnect yes 设置它为自动获取。
5. 文件传输
开发机器与虚拟机的文件传输,我没有用扩展包,感觉比较费劲(我虚拟机没连外网),我用的是 WinSCP,新建一个站点,联通后就可以直接拖拽的方式实现虚拟机与外机的文件传输(先确保虚拟机能正确获取到 IP)。

三、GBase 8s 安装与配置
1. 下载与准备
我是用的典型安装 GBASE 南大通用 官方文档还是比较详细的,按照这个来装就好了。GBase 8s 的下载地址为 GBase 8s V8.8 |下载中心|天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商。
要根据自己虚拟机的 CPU 内核选择对应的版本,我选择的是 GBase8sV8.8_3.6.5_开发版(beta)_x86_64.zip,通过 WinSCP 放入到虚拟机里面后,解压。解压后安装 GBase 8s 那个(需要再次解压运行 ids_install,安装官方文档来)。有个 client 是 Linux 的 client 客户端,没必要装;有个 gbaseodbc 的是 Java 用的 jar 包,C# 没有必要。
2. 安装过程
安装过程是靠命令安装的,有个注意点是安装目录,系统自带的是要安装到 /opt/gbase 下,但是如果根目录没有 opt 文件夹,你需要新建一个或者装在别的目录下。
注意:安装完了后会给 Linux 生成一个 gbasedbt 的用户,也是数据库的管理员;会生成相应的实例,不需要你再去创建实例以及 oninit 之类的,都已经通了,包括环境变量之类的都已经给你创建好了,不用自己再去弄了。
四、数据库连接与调试
1. 数据库配置
调试 GBase 数据库,有两个比较重要的文件,在安装目录 gbase/etc 下有个 sqlhost.ol_gbasedbt**** 文件,里面配置 GBase 的访问 IP 与端口,这个 ol_gbasedbt**** 就是你的数据库的实例名,比如我的是 lo_gbasedbt1210 onsoctcp 192.168.56.102 lo_gbasedbt1210_1,注意 IP 如果是 localhost 是只能本机访问的,要改成 IP。
**坑点:**lo_gbasedbt1210_1 这个东西,它是在系统根目录 /etc/service 这个文件里面配置的端口号!打开 C 盘根目录找到 etc 文件夹下的 service 文件,搜索 lo_gbasedbt1210_1,后面的端口号才是你数据库的对外开放的端口号。
2. 防火墙设置
需要对这个端口进行放行。
命令:
firewall-cmd --permanent --add-port=22031/tcp
firewall-cmd --reload
3. 外部连接测试
外部机器测试 telnet 192.168.56.102 22031 通了就可以了,或者用 PowerShell 的 Test-NetConnection 192.168.56.102 -Port 22031。
4. 外部机器连接数据库
**a. 驱动问题:**官方只给了 Linux 下的 client,并没有 Windows 的,需要找他们客服或者售前要一个 clientsdk_3.6.5_2ZJGS_14_7b08a5_WIN2003_x86_64 文件,装这个客户端自带了 ODBC 的驱动。
b. 编码问题: 我的数据库编码默认的是 en_us,导致我 C# 代码可以连上数据库,但是当插入或建表有中文的时候,就会报错,我们需要把编码改成 zh_CN.utf8 才可以:首先通过在 DBeaver 中执行 SQL:SELECT * FROM sysmaster.sysdbslocale 查询数据库的编码是什么;其次进入虚拟机,切换到 gbasedbt 用户执行:
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
这两个命令,修改环境变量的编码,然后执行 dbaccess -- 命令,进入数据库,创建个新的数据库。注意是创建个新的数据库,新数据库就会是 zh_CN 的一个编码了。
c. 事务问题: 建库的时候一定要加上 with log,比如 dbaccess-- 进入 gbasedbt 数据库后,选择 query 语句,new 一个新的,输入命令 create database testdb in datadb1(表空间) with log 然后 run,没有 with log 表示不开启事务,使用 ORM 去操作数据库经常完蛋。
5. DBeaver 连接配置
我初始化了表,插入了数据,得有个工具去看到底成功过了没有,数据库工具 DBeaver 数据库要选择刚才中文新建的那个库,也就是程序连的那个库。

有时会连不上,需要在第二个 tab 页驱动属性里面增加两个配置项 DB_LOCALE 与 CLIENT_LOCALE。

五、总结
经过这些调整,程序应该就可以正常连上 GBase 并可以正常执行增删改查了。这样一套全流程,包括虚拟机、数据库、C# 代码连接、DBeaver 一套都齐全了。