在 Windows 上部署 Informix 数据库,并解决相关错误问题总结

一、翻译说明

今天在使用 JDBC 程序为测试提供 Informix 测试数据,并读取验证库中二进制数据的内容的时候,发现每次都会报 java.sql.SQLExceprion:Invalid default sbspace name (sbspace) 异常,并且插入数据失败。但是插入普通字符串数字等字段的时候不会报错。

一开始很不明白 sbspace 的意思,但是大概猜测应该是数据库的某个空间。

后来证明是跟 Informix 对插入 CLOB/BLOB 类型的数据时候的配置有很大关系,得益于原文的启发,特别翻译过来供大家参考。

二、译文

目前我们正在添加 Carbon WSO2 的 IBM Informix 支持。一个挑战就是要让Informix在Linux或Mac上运行。任何情况下都有自己的问题,所以最终把Informix部署在了微软的Windows上。在一个 Windows 7 的虚拟机上尝试,但我希望这些步骤会和其他 Windows 版本相同,包括轻微的变化。

1) 从这里下载 IBM Informix 开发版。选择 “Ultimate Edition or Developer Edition AIX, HP-UX, Linux, Mac OS, Solaris, Windows”,然后选择 Informix 开发版的Windows 64版本 11.70FC7DE。

2) 选择默认/典型选项后开始安装。

3) 当安装开始后,安装程序会创建一个叫 informix 的用户,和一个叫 Informix-Admin 的组,并且需要你为创建的用户输入一个密码。

4) 安装结束后,你将会在 Windows 的开始菜单中看到如下的菜单。

informix-win7-start-menu-1.png

5) 使用 informix 用户登录系统。

6) 你可以使用开始菜单中的 Server Instance Manager 工具创建任意数量的服务实例。默认情况下,informix创建了一个叫 ol_informix1170 的默认实例。

7) 在开始菜单中找到 ol_informix1170 项,右键并选择 以管理员身份运行,开启 ol_informix1170 实例。

8) 现在你可以在命令提示符下输入以下内容来开启服务。

:\> oninit -ivy

9) 如果想要看服务的运行状态,键入以下内容:

:\> onstat -g dis
There are 1 servers found
Server: ol_informix1170
Server Number: 0
Server Type: IDS
Server Status: Up
Server Version: IBM Informix Dynamic Server Version 11.70.FC7DE
Shared Memory: 0x80000000
INFORMIXDIR: C:\PROGRA~1\IBM\Informix\11.70
ONCONFIG : C:\PROGRA~1\IBM\Informix\11.70/etc/onconfig.ol_informix1170
SQLHOSTS : C:\PROGRA~1\IBM\Informix\11.70/etc/sqlhosts
Host: prabath-PC

10) 若要创建一个数据库,在开始菜单中找到 ol_informix1170 项,右键并选择 以管理员身份运行,并键入:

:\> dbaccess

informix-dbaccess-1.png

你可以根据顶部的菜单导航来创建一个数据库,选择 Database,按下回车,然后选择 Create

informix-create-1.png

为数据库提供一个名称,然后按下回车。

informix-create-2.png

选择 Log 来开启事务。

informix-log-tx-1.png

选择 Buffered Log 并回车,然后退出。

informix-log-buffered-1.png

选择 Create-new-database 并按下回车来完成数据库的创建。

informix-create-complete-1.png

12) 在 Informix 中运行 SQL 脚本的话使用以下命令。

:\> dbaccess DATABASE_NAME  SQL_SCRIPT

例如:

:\> dbaccess WSO2CARBON_DB c:\informix.sql

13) 要停止 Informix 的服务,你可以在开始菜单中找到 ol_informix1170 项,右键并选择 以管理员身份运行,然后输入

:\> onmode -ky

14)若需要在 Informix 中使用一个 Java 的客户端工具,你可以在这里找到驱动。另外,对于 JDBC 的连接 url,你可以使用下面的这个:

jdbc:informix-sqli://192.168.1.4:9088/WSO2CARBON_DB:INFORMIXSERVER=ol_informix1170

ol_informix1170 是数据库实例的名字。

下面是相应的驱动程序类。

com.informix.jdbc.IfxDriver

其他注意事项:

1)如果你遇到下面的这个错误,这个链接可能会有帮助。

Error Only member of IXDBSA group (Informix-Admin, by default) can start IBM Informix Dynamic Server. on Windows.

2) Error : "oninit: Fatal error in shared memory initialization"

在你停止 Informix 服务后尝试使用 :\> oninit -ivy 来启动它的时候,你可能会碰到这个错误。

要摆脱这个错误,那么在停止 Informix 服务后,避免使用 i 选项来启动它。确保 i 选项只应该在你重启机器后第一次尝试启动 Informix 服务的时候使用。

3) Error : Invalid default sbspace name (sbspace)

这个错误一般在你尝试在 Informix 中插入 CLOB/BLOB 类型的数据的时候发生。想要跳过这个错误,你需要创建一个 sbspace

:\> onspaces -c -S sbspace2 -p c:\informix_data\data.dbs -o 100 -s 20000 -Df "LOGGING=ON"

确保在执行以上这条命令的时候,c:\informix_data\data.dbs 文件是存在的。(译注:没有就自己创建一个文本文件,然后把文件名连同后缀一起改掉。文件创建的位置一般在 Informix 的数据目录。)

现在,你需要在 INFORMIX_HOME/etc 目录里找到 onconfig.ol_informix1170 文件,然后更新它的内容。

在文件中找到 SBSPACENAME sbspace,然后使用你创建的 sbspace 名称重新命名为 SBSPACENAME sbspace2

重启 Informix 服务。

完成。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 1
最新评论
#1 楼 污妖神尊 2018-08-08

做了那么多数据库的数据抽取检查,Informix真的是最难用的数据库了。IBM的东西真的是无力吐槽👿