最近因为一些业务,接触到了国产操作系统和国产数据库。
真是让人.......无语!
所谓国产,拿别人东西过来改改便是国产了。
比如 南大通用数据库,GBASE8S,就是用 informix 改了改..........
使用GBASE8S,记录下 各种配置。
假设 GBASE8S 安装在 /opt/gbase8s目录下
1、新建用户组和用户 gbasedbt
2、设置环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | GBASEDBTDIR= /opt/gbase8s GBASEDBTSERVER=ol_gbasedbt12 ONCONFIG=onconfig.ol_gbasedbt12 GBASEDBTSQLHOSTS= /opt/gbase8s/etc/sqlhosts .ol_gbasedbt12 GL_USEGLU=1 DB_LOCALE=zh_CN.utf8 CLIENT_LOCALE=zh_CN.utf8 <strong>ODBCINI< /strong >= /opt/gbase8s/etc/odbc .ini <strong>LD_LIBRARY_PATH< /strong >=$GBASEDBTDIR /lib :$GBASEDBTDIR /lib/cli :$GBASEDBTDIR /lib/esql PATH=$GBASEDBTDIR:$LD_LIBRARY_PATH:$GBASEDBTDIR /bin :$GBASEDBTDIR /extend/krakatoa/jre/bin :$PATH #dbtpy需要该参数 <strong>CSDK_HOME< /strong >=$GBASEDBTDIR export GBASEDBTDIR GBASEDBTSERVER ONCONFIG GBASEDBTSQLHOSTS GL_USEGLU ODBCINI LD_LIBRARY_PATH CSDK_HOME PATH |
3、sqlhosts.ol_gbasedbt12 的配置
1 | <strong>ol_gbasedbt12< /strong > onsoctcp 172.14.23.12 9899 |
4、/opt/gbase8s/etc/odbc.ini 配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [ODBC Data Sources] testdb=GBase ODBC DRIVER ; ; Define ODBC Database Driver's Below - Driver Configuration Section ; <strong>[testdb]< /strong > Driver= /opt/gbase8s/lib/cli/iclis09b .so Description=GBase ODBC DRIVER <strong>Database< /strong >=d5000 <strong>LogonID< /strong >=gbasedbt <strong> pwd < /strong >=123456 <strong>Servername< /strong >=ol_gbasedbt12 CursorBehavior=0 <strong>CLIENT_LOCALE< /strong >=en_us.8859-1 <strong>DB_LOCALE< /strong >=en_us.8859-1 GL_USEGLU=1 TRANSLATIONDLL= /opt/gbase8s/lib/esql/igo4a304 .so [ODBC] Trace=1 TraceFile= /tmp/odbctrace1 .out InstallDir= /opt/gbase8s TRACEDLL= /opt/gbase8s/lib/cli/idmrs09a .so |
以上配置,注意几个地方
a)LogonID 就是为 gbase8s 分配的用户
b)Servername 即是 第三条 配置的名称
c)CLIENT_LOCALE 和 DB_LOCALE 默认是 en_us.8859-1
5、如果 使用 DbtPy (python3)远程链接 gbase8s ,
需要 安装 python3 python3-devel
python版本不高于3.7
pip install DbtPy
1 2 3 4 5 6 7 8 9 10 | import sys import DbtPy print ( "Python DbtPy测试程序开始运行.\n" ) connectStr = "PROTOCOL=onsoctcp;HOST=172.14.23.12;SERVICE=9899;SERVER=ol_gbasedbt12;DATABASE=testdb;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1" conn = DbtPy.connect(connectStr, "gbasedbt" , "123456" ) stmt = DbtPy.exec_immediate(conn, "select * from YK_YX_RELY_AVC limit 3" ) data = DbtPy.fetch_assoc(stmt) print (data) |
6、也可以使用 jaydebeapi 链接 gbase8s .
不过,这里需要下载 gbasedbtjdbc_3.3.0_2.jar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import sys import jaydebeapi print ( "\nPython JayDeBeApi JDBC 测试程序开始运行.\n" ) conn = jaydebeapi.connect( "com.gbasedbt.jdbc.Driver" , "jdbc:gbasedbt-sqli://172.16.97.98:8900/testdb:GBASEDBTSERVER=ol_gbasedbt12;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1;IFX_LOCK_MODE_WAIT=60" , [ "gbasedbt" , "123456" ], "/home/gbasedbt/gbasedbtjdbc_3.3.0_2.jar" ) mycursor = conn.cursor() mycursor.execute( "select * from YK_YX_RELY_AVC limit 3" ) rows = mycursor.fetchall() print (rows) mycursor.close() conn.close() |
7、说明:
A服务器是Gbase8s 服务器,B服务器是应用服务器,上述5和6 即 run在 B服务器上 。
B服务器不需要安装Gbase8s,但是需要安装 Gbase8s 的 CSDK 。 配置信息 只需要配置 上述2 和 3
CSDK 从官网下载的有问题。 可以直接从 A服务器 copy /opt/gbase8s 目录 到 B 服务器上即可。 但是 /opt/gbase8s 太大。可以不用 copy storage 目录即可。
8、查看 CSDK 是否成功?
esql -V 返回如下信息 则 成功。
1 2 | GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_2.0.1A2_2 Software Serial Number AAA #B000000 |