Informix 9.40UC9 on Redhat Linux AS 4安装手记

Informix一直以来应该算比较没落了,由于一个项目关系,不得不安装使用,以前主要做Oracle,这次安装Informix也算是头一遭了。

一、准备介质
Redhat Linux AS 4有4张碟,可以从网上下载得到,Informix 9.40UC9 就一个tar文件,没有压缩大概544M的样子。

二、安装Redhat Linux AS 4,没什么好说的,图形界面,一路很顺畅

三、安装Informix

从网上找到一份安装指引http://bbs.chinaunix.net/thread-301370-1-15.html,这篇指引中的下载地址好像还可以用,不过我的这份安装版本与这个不太一样,是一个集成的安装包。

×准备informix环境

创建用户informix,并指定用户组informix:useradd -d /home/informix -m informix

×切换到用户环境,修改环境变量
vi .bash_profile,加入下面的参数配置,为了保证对于特殊汉字的兼容,我这里采用了GB18030-2000的字符集。

INFORMIXDIR=/u1/informix;export INFORMIXDIR
INFORMIXSERVER=cs_dbs;export INFORMIXSERVER
ONCONFIG=onconfig.cs;export ONCONFIG
DBDATE=Y4MD-;export DBDATE
LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
 
DB_LOCALE=zh_CN.GB18030-2000; export DB_LOCALE
CLIENT_LOCALE=zh_CN.GB18030-2000; export CLIENT_LOCALE
SERVER_LOCALE=zh_CN.GB18030-2000; export SERVER_LOCALE
DBLANG=zh_CN.GB18030-2000; export DBLANG
 
PATH=$PATH:$HOME/bin:$INFORMIXDIR/bin:/usr/java/jdk1.5.0_16/bin
 
export PATH

×安装Informix程序

安装需要在root用户下面进行,这里安装Informix目录到/u1/informix,需要chown informix:infomix /u1/informix,安装程序用tar解开目录结构如下,
 drwxr-xr-x  5 root bin  4096 2007-01-18  DBLD
drwxr-xr-x  4 root bin  4096 2007-01-18  ICONNECT
-rwxr-xr-x  1 root bin 44265 2007-01-18  ids_install
drwxr-xr-x  3 root bin  4096 2007-01-18  JDBC
-rw-r--r--  1 root bin  7649 2007-01-18  README.html
drwxr-xr-x  3 root bin  4096 2007-01-18  SERVER
drwxr-xr-x  3 root bin  4096 2007-01-18  SVR_ADM
直接运行./ids_install,提示是否确认协议,然后出来选项
IBM Informix Unix Bundle Installer
 
Installation Requirements:
- A user "informix" and a group "informix" must be known to the system.
- This installation procedure must be run by user root.
- Approximately 770 MB disk space required initially.
- Approximately 500 MB disk space if everything is installed (50 MB
  for ISA, 25 MB for JDBC).
 
0) All Products listed below
1) IBM Informix Dynamic Server 9.40
2) IBM Informix IConnect
3) IBM Informix JDBC
4) IBM Informix Server Administrator
5) Configure a Demo IDS Server (requires IDS)
 
Enter the number(s) of the products to install, separated by spaces
(i.e. "1 2 3"):

直接安装全部组件,或者逐个安装应该都可以。安装好像就是直接解压了,很快就完了。

×配置环境,设置参数

1、修改/etc/services,文件最后加入
sqlexe            1526/tcp
sqlexec          1528/tcp
本文这里1528就是最后的监听端口

2、修改/etc/hosts,加入IP,主机名解析
192.168.1.43   mylinux

3、配置$INFORMIXDIR/etc/sqlhosts文件
        cs_dbs              onipcshm        mylinux        sqlexe
        cs_dbs_tcp        onsoctcp        mylinux        sqlexec
4、建立空间,这里就照抄了
        以informix用户操作
        在INFORMIXDIR中建立dbs目录;(便于区分拉)
        首先touch rootdbs logdbs phydbs blobdbs tmpdbs datadbs
        然后chmod 660 *
        保证所有的dbs文件都是informix用户informix组;权限都是660;

5、配置$INFORMIXDIR/etc/onconfig.cs文件,这个文件可以直接按照下面配置,或者复制onconfig.std来修改

        --rootdbs路径、空间
        ROOTNAME        rootdbs         # Root dbspace name
        ROOTPATH        /u1/informix/dbs/rootdbs  # Path for device containing root dbspace
        ROOTOFFSET      0               # Offset of root dbspace into device (Kbytes)
        ROOTSIZE        100000          # Size of root dbspace (Kbytes)

        --物理日志的dbs空间,先用rootdbs的20M;
        PHYSDBS         rootdbs         # Location (dbspace) of physical log
        PHYSFILE        20000           # Physical log file size (Kbytes)

        --逻辑日志用默认的
        # Logical Log Configuration

        LOGFILES        6               # Number of logical log files
        LOGSIZE         2000            # Logical log size (Kbytes)

        --把磁带的东西都改成/dev/null       
        TAPEDEV         /dev/null       # Tape device path
        TAPEBLK         32              # Tape block size (Kbytes)
        TAPESIZE        10240           # Maximum amount of data to put on tape (Kbytes)

        # Log Archive Tape Device

        LTAPEDEV        /dev/null       # Log tape device path
        LTAPEBLK        32              # Log tape block size (Kbytes)
        LTAPESIZE       10240           # Max amount of data to put on log tape (Kbytes)

        --配置数据库服务器参数,根据自己机器配置的实际情况分配locks和buffers;
        SERVERNUM       0               # Unique id corresponding to a OnLine instance
        DBSERVERNAME    cs_dbs          # Name of default database server
        DBSERVERALIASES cs_dbs_tcp      # List of alternate dbservernames
        NETTYPE         ipcshm,1,8,CPU  # Configure poll thread(s) for nettype
        NETTYPE         soctcp,1,8,NET  # Configure poll thread(s) for nettype

        LOCKS                5000                # Maximum number of locks
        BUFFERS                500                # Maximum number of shared buffers
        NUMAIOVPS        2                # Number of IO vps
        PHYSBUFF        32                # Physical log buffer size (Kbytes)
        LOGBUFF                32                # Logical log buffer size (Kbytes)
        CLEANERS        1                # Number of buffer cleaner processes
        SHMBASE                0x10000000        # Shared memory base address
        SHMVIRTSIZE     8000                # initial virtual shared memory segment size
        SHMADD                8192                # Size of new shared memory segments (Kbytes)

        另外就是onconfig.cs文件中所有/usr/informix都替换成/u/informix/

×启动数据库
启动数据库,并初始化系统表
oninit -ivy
查看是否运行状态
onstat -i,,显示如下信息,表明运行正常
IBM Informix Dynamic Server Version 9.40.UC9     -- On-Line -- Up 7 days 08:35:51

×优化设置,完善数据库空间

这里本人初学,完全照搬作者了
        echo "Add blobdbs, tmpdbs0, phydbs, logdbs..."
        echo "====================================================="

        onspaces -c -b blobdbs -g 32 -p /home/informix/dbs/blobdbs -o 0 -s  48000
        onspaces -c -d tmpdbs -t -p /home/informix/dbs/tmpdbs -o 0 -s 100000

        onspaces -c -d phydbs -p /home/informix/dbs/phydbs -o 0 -s 50200
        onspaces -c -d logdbs -p /home/informix/dbs/logdbs -o 0 -s 200000

        echo "\nShut Down Server to Quiescent Mode..."
        echo "====================================================="
        onmode -s -y
        sleep 5

        echo "Adding Logical Log\n"
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 20000
        onparams -a -d logdbs -s 10000

        echo "\nArchiving Database Server Please Wait 20 seconds.\n"
        echo "====================================================="
        ontape -s
        sleep 5

        onmode -l
        onmode -l
        onmode -l
        onmode -l
        onmode -l
        onmode -l
        onmode -c
        sleep 10

        echo "\nDrop the old Logical Log Files... \n"
        echo "====================================================="
        onparams -d -l 1 -y
        onparams -d -l 2 -y
        onparams -d -l 3 -y
        onparams -d -l 4 -y
        onparams -d -l 5 -y
        onparams -d -l 6 -y

        echo "\nChange Physical Log Files, please wait about 1 minutes...\n"
        echo "====================================================="
        onparams -p -s 50000 -d phydbs -y
        sleep 100

        echo "\nNow add more dbspaces/chunks...\n"
        echo "====================================================="


        onspaces -c -d datadbs   -p /home/informix/dbs/datadbs -o 0 -s 500000

        echo "\nTake a level 0 archive.\n"
        echo "====================================================="

        ontape -s  -L 0

        echo "\nReboot IDS...\n\n"
        echo "====================================================="

        onmode -ky
        oninit

        sleep 10

        echo "\n====================================================="
        echo "Well done! \n"
        echo "====================================================="

  最后修改onconfig.cs文件
        DBSPACETEMP     tmpdbs         # Default temp dbspaces
  停止数据库
onmode -ky
  重新启动  oninit

如果需要,运行dbaccess可以创建一个新的数据库,数据库的LOCALE就会是配置的GB18030-2000,不过由于Redhat AS 4内部内置的字符集为zh_CN.UTF-8,所以term中通过dbaccess插入
或者输入的中文都会是UTF-8编码的,只能在服务器上正常看,客户端看到的就会乱码了,相反,通过客户端插入的中文为GB18030-2000编码,dbaccess访问查询就是乱码。
如果运行dbexport导出数据库,通过ftp下载到windows上就是正常的,在redhat上面如果需要正常查看,需要通过iconv把编码从GBK转为UTF-8就可以用more正常查看了。

对于这个dbaccess的乱码问题,我还没有找到一个好的办法,修改term中的LC_ALL等参数都没有效果。

×修改redhat防火墙

最后需要将端口1528加入到防火墙的允许中,可以vi /etc/sysconfig/iptables,加在这个位置

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -p tcp -m tcp --dport 1528 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

...

然后service iptables restart重启启动防火墙,应该在客户端就可以连接了。

四、客户端配置

1、安装windows版本的CSDK,运行setnet32:
Envirement中设置CLIENT_LOCALE=zh_cn.GB18030-2000,DB_LOCALE=zh_cn.GB18030-2000
Server Information中设置:
IBM Informix Server:cs_dbs
HostName:192.168.1.43
protcolname:onsoctcp
Service Name:1528,这个参数很恶心,其实就是端口号,如果你安装windows版本的,可以使用turbo这类这样的服务名,类似本文的sqlexec
2、连接测试
×DBRichTool 该程序通过setnet32的配置访问数据库,连接测试成功,对中文的支持也很好
×JDBC程序连接测试,好像URL如下配置就正常访问没有问题:
jdbc:informix-sqli://192.168.1.43:1528/newdb:informixserver=cs_dbs;DB_LOCALE=zh_CN.gb18030-2000;CLIENT_LOCALE=zh_CN.gb18030-2000;NEWCODESET=GBK,gb18030-2000,5488,utf-8
分析原因是与SUN JDK在windows下面文件中编码是GBK有关,而且必须使用NEWCODESET参数配置。
×AGS Service Studio测试
这个程序有点奇怪,参照网上的一篇文章,改造一下jdbc驱动之后连接很正常。
连接编辑窗口中Advanced..设置CLIENT_LOCALE=zh_cn.GB18030-2000,DB_LOCALE=zh_cn.GB18030-2000

posted @ 2008-10-31 10:41  在路上...  阅读(3034)  评论(2编辑  收藏  举报