Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90976499
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-04-10 21:49:03

 出处:Unix爱好者家园unix-cd.com   
自informix5.x以后,INFORMIX公司推出新一代数据库引擎
ONLINE DYNAMIC SERVER动态服务,一般我们简称ONLINE7.X,
ONLINE是一个关系数据管理(RDBMS), 它的任务是提供一个存
储、检索、修改和删除数据的环境, 它的目标就是使具有多个
物理CPU 和大容量内存的计算机创建高性能和高稳定性的操作
环境,所以ONLINE7.X广泛运用于银行、保险、电信、邮政等对
于速度和安全性较高的部门。

  INFORMIX-ONLINE 7.3在SCO OpenServer 5.0.X 系统上的
安装和配置。

    一.Informix7.30的安装

    1.建立infomix组和informix用户

    1) 以 root用户登录 

    2) 使用scoadmin系统管理程序里面的Account Manager建
立一个组名为"informix", 用户名为"infomix"的用户,其
"Home Directory"缺省为"/usr/informix",不必修改。

    2. 产品的安装

    1) 以informix用户登录系统,编辑.profile所需的环境变
量:

    INFORMIXDIR=/usr/informix

    INFORMIXSERVER=服务器名(例如post)

    LD_LIBRARY=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql

    TERMCAP=$INFORMIXDIR/etc/termcap

    CLIENT_LOCALE=zh_cn.gb

    DB_LOCALE=zh_cn.gb

    SERVER_LOCALE=zh_cn.gb

    PATH=$INFORMIX/bin:$INFORMIX/lib:$PATH

    export INFORMIXDIR INFORMIXSERVER LD_LIBRARY TERMCAP

    export CLIENT_LOCALE DB_LOCALE SERVER_LOCALE PATH 

    2) 退出informix用户重新登录,使上述设置的环境变量生效。

    3) 安装INFORMIX-SQL、INFORMIX-4GL、INFORMIX-IDS7.3,
请严格按以上步骤安装(否则ONLINE启动不了,而且报错也是莫名
其妙,"CAN'T FIND MESSAGE FILE AND DBLANG")。

    4) 以root用户登录并插入SQL光盘

       # mount -o lower /dev/cd0 /mnt

       # cd /usr/informix

       # tar xvf /mnt/sql.tar

       # ./installsql

       输入许可证提供的序列号,如:INF#Xxxxxxx

       输入许可证提供的KEY:如AAABBB

       注意必须是大写字母

       # unmount /mnt

       插入4GL光盘

       # mount -o lower /dev/cd0 /mnt

       # tar xvf /mnt/4gl.tar

       # ./install4gl

       输入许可证提供的序列号,如:INF#Xxxxxxx

       输入许可证提供的KEY:如AAABBB

       注意必须是大写字母

       # unmount /mnt

       插入IDS7.30光盘

       # mount -o lower /dev/cd0 /mnt

       # cpio -icvdumBI
       # ./installserver

       输入许可证提供的序列号,如:INF#Xxxxxxx

       输入许可证提供的KEY:如AAABBB

       注意必须是大写字母

       # unmount /mnt

       至此安装完毕。 

3.准备Informix初始化环境。

    1) 编辑/etc/hosts文件,登记网络各机器的名字及网络地址

        例如:

        IP地址 主机名

        142.73.111.1(本机) informix_server1

        142.73.111.49 informix_client1

    2) 修改 /etc/services,增加informix服务端口名

        例如:

        online_service 8000/tcp #informix

        其中,online_service是informix服务名,8000为端口号,tcp
        为传输协议,该端口号必须唯一,如果和其它端口号有冲突,
        可以修改。

    3) 编辑$INFORMIXDIR/etc/sqlhosts文件

       post onipcshm informix_server1 sqlexec

       tcp ontlitcp informix_server1 online_service

       第一行post为INFORMIX-ONLINE的server名,onlipcshm是共享
       内存方式连接(只限本地),  informix_server1是本地主机
       名(hostname),sqlexec 是服务名。

       第二行tcp是增加的一个数据库服务器别名, ontlitcp是使用
       传输层TCP/IP(本地或远程)访问数据库,online_service是
       第2)步/etc/services中的online_service。

    4.准备数据库空间

     online允许使用两种不同的磁盘空间类型:原始的(生设备)
       磁盘空间和处理过的(熟设备)文件系统,使用处理过的文件
       做dbspace,其性能不如原始空间。 使用处理过的文件不能利
       用DMA功能(既直接内存访问), 将数据从共享内存直接传递
       到磁盘,所以,为了充分发挥ONLINE的能力,建议使用原始空间。

       1)使用原始磁盘空间做dbspaces

        原始磁盘空间的分配必须在安装SCO OpenServer 5操作系统
          时完成。具体做法是:安装操作系统划分磁盘空间时,首先
          计算出UNIX系统所需要的磁盘空间,然后剩余的空间全部用
          作INFORMIX数据库原始空间,将这部分作一个或多个磁盘分
          区,如果磁盘空间有多个磁盘,建议做多个,可以单独分配
          空间给物理日志空间、 逻辑日志空间及tmp空间以提高系统
          的性能。

          具体做法如: 
          分区名为dbs(在安装系统时分的磁盘分区),将该分区设置
          为裸设备(NON FS),在/dev可以找到dbs的设备名/dev/dbs,
          将dbs的属主和属组改为“infomix”,权限改为"660", 该分
          区即为online要求的原始空间, 有关Online原始磁盘空间的
          信息可用命令# divvy /dev/dbs查看,同理, 用此方法可以
          建立dbs1、dbs2等原始磁盘空间。

       2)使用处理过的文件做dbspaces

          由于在安装系统时没有分多个磁盘分区,可以用现有的磁盘空
          间的文件系统.

          下面在/dev/root文件系统下创建3个dbspaces,分别为workdbs
          (业务数据库)、logdbs(逻辑日志、物理日志)、tmpdbs(tmp数
          据库)

          # cd 

          # >workdbs logdbs tmpdbs      #建立文件

          # chown informix:informix workdbs   #改变属主和属组

          # chown informix:informix logdbs

          # chown informix:informix tmpdbs

          # chmod 660 workdbs   #将权限改为660

          # chmod 660 logdbs

          # chmod 660 tmpdbs

    5.修改SCOUNIX5.05 内核参数

      对于SCO OpenServer 5平台,INFORMIX-ONLINE7.30需要调整下列
      核心参数值:(参照/usr/informix/release/en_us/0333下的IDS_7.3文件)

      SHMMAX:409600000

      SHMALL:512

      SHMMNI:8192

      SHMSEG:6

      SEMMNI:8192

      SEMMNS:8192

      SEMMAP:8292

      SEMMNU:100

      SEMMSL:25

    具体做法:从root注册登录,运行scoadmin在菜单中逐层选择
      Hardware/Kernel Manager,然后选择Tune Parameters,根据
      以上值设置核心参数,也可以直接修改/etc/conf/cf.d/mtune
      这个文件,注意修改前做一个拷贝,设置完重连核心,退出并重
      新启动UNIX。
 二.初始化informix

        方法一:配置ONCONFIG文件(onconfig)

        $ cd /usr/informix/etc(配置文件所在目录)

        $ cp onconfig.std onconfig(从标准配置文件中拷贝一份,
        作为配置自己系统的基础)。

        用vi 编辑器修改onconfig文件中的值,由于文件中的参数多,
        所以主要把重要的参数进行说明:

        ROOTNAME=rootdbs #这里取缺省rootdbs

        ROOTPATH=/dev/dbs # 
        rootdbs的第一个chunk所在原始设备全路径名,dbs为我们在
        前面配置的原始dbspaces。

        ROOTSIZE=1000000 (K)    # root dbspace 
        第一个Chunk的大小,这些空间初始创建逻辑日志、物理日志、
        和sysmaster数据库,当初始完毕后, 就应尽快将日志和临时
        表从rootdbs中移到其它原始的dbspaces或处理过的文件中。

        DBSERVER NAME(server name)=post 
        # Online 实例必须具有的唯一名,   这个名字也是环境变量
        $INFORMIXSERVER的值,还应当作为$INFORMIXDIR/etc/sqlhosts
        中的第一个字段。

        DBSERVERALIASES(server aliases)=tcp 
        #Online实例的别名,在网上是要唯一的,它是网络访问数据库
        必须的,在前面配置$INFORMIXDIR/etc/sqlhosts中要用到它。

        RESIDENT(Forced Residency)=1 
        #该参数决定Online实例共享内存的常驻区是否允许从操作系统
        的共享内存中交换出来,如果服务器的物理内存足够大(512MB
        以上),建议设置为1(Y),否则为0(N)。

        LOCKS(Max of Locks)=100000 
        #该参数对共享内存的大小有影响,通常对于较忙的实例我们将它
        设置为100000。

        BUFFERS(Max of buffers)=100000 
        #这些缓冲区是共享内存常驻区唯一的最大消耗者,对实例共享内
        存的影响最大。

        MULTIPROCESSOR=1 
        #该参数打开或关闭多处理器封锁机制,如果系统是三个CPU以上,
        将它设为1(Y),如果是单CPU或双CUP建议设为0(N)。

        NETTYPE=ipcshm,1,80,CUP #共享内存数据库服务器通讯方式

        NETTYPE=tlitcp,1,80,NET #tcp数据库服务器通讯方式

        配置ONLINE的参数很多,以上是只是其中最重要的一部分。

        方法二:图形界面

      以informix用户登录,运行onmonitor命令,依次选择Parameters,
        Initialize进入磁盘初始化菜单,配置的参数和方法一相同,建议第
        一次配置ONLINE的用户用此方法。

      配置完ONLINE的参数,现在可以启动并初始化磁盘空间,以informix
        用户登录,执行 $ oninit -iy 注意:执行此命令后,所有在Online磁
        盘空间上的数据将被破坏, 也可用图形界面onmonitor命令初始化,
        总之,这两种命令只能在第一次初始化ONLINE磁盘空间使用,提醒各
        位读者谨慎使用,以后在启动数据库只需用 oninit 命令即可, 执行
        $ onstat - 命令可以简单查看online是否正常启动,如果正常则显示
        如下类似的提示信息:

        Informix Dynamic Server Version 7.30.UC2 -- On-Line -- Up 2 
        days 21:14:58 -- 163840 Kbytes。

三.Informix-online7.30的日常管理及维护

       1. 自动启动关闭Informix-online数据库

           启动ONLINE的命令是:oninit

         但为了便于系统管理员的管理,将启动命令建立在
           /etc/rc2.d目录下,名字为S90informix, 

           就象DOS中的批处理文件一样,当启动SCO OpenServer 5
           操作系统时,online随之启动。

           在/etc/rc2.d/创建文件S90informix,内容如下:

           INFORMIXDIR=/usr/informix

           INFORMIXSERVER=post

           export INFORMIXDIR INFORMIXSERVER 

           $INFORMIXDIR/bin/oninit

           修改文件属性使它用执行权利:
           # chmod +x /etc/rc2.d/S90informix

           自动关闭INFORMIX-ONLINE

           关闭ONLINE的命令为: onmode –ky

           将关闭命令建立在/etc/rc0.d目录下,编辑文件名为
           K01informix,内容如下:

           INFORMIXDIR=/usr/informix

           INFORMIXSERVER=post

           export INFORMIXDIR INFORMIXSERVER

           $INFORMIXDIR/bin/onmode -ky

           修改文件属性使它用执行权利: 
           #chmod +x /etc/rc2.d/K01informix

       2. INFORMIX ONLINE 的常见工作模式

          Off-line: 实例没有运行,没有分配或初始化共享内存。

          Quiescent: 实例已经完全启动,但不允许用户访问数据
          库,有些管理任务,像增加删除dbspaces、逻辑日志,
          必须在实例处于Quiescent状态时才能完成。

          On-line: 实例完全启动,并且对所有有权访问它的用户
          都是可用的。

          Shutdown: 当实例从On-line状态到Quiescent时的一种过
          渡状态,所有用户线索仍然可以继续完成他们的工作直到
          正常结束,但这时所有新的数据库连接都会被拒绝。

          下面介绍各个模式相互转换的命令:

           oninit(将一个配置好的实例从Off-line状态一直变为
           On-line状态)

           oninit -s(将一个配置好的实例从Off-line状态一直变
           为Quiescent状态,现有的用户线索可以继续直到正常结
           束,但所有新的数据库请求连接将被拒绝)

           onmode –sy(将实例从On-line状态经过shutdown)

           onmode –uy(立即终止现有的实例,使之成为Quiescent,
           所有的用户线索和数据库请求都将被中断)

           onmode –ky(实例从on-line或Quiescent变为off-line状态)

           介绍完ONLINE的几种常用工作模式后,下面就可以为online增
           加工作区、逻辑日志、物理日志、临时文件数据库空间了。
3.管理Informix Online磁盘空间

        Online初始化时,自动建立了一个名为rootdbs的dbspace。
          该rootdbs存储Online的管理信息,包括物理日志、逻辑日
          志等。当你建立一个数据库时,如果不指定dbspace,作为
          缺省,该库建立在rootdbs中。所以,如果你想将库建立在
          某个dbspace中,则必须指定dbspace,例如:
          dbimport 数据库名 -d dbspace名

        注意:在建dbspace时,要指定原始磁盘设备名路径,所需
          磁盘空间大小, 以及该块磁盘空间在原始磁盘设备中的偏
          移量,偏移量非常关键,要小心设置,否则容易造成chunk
          块之间空间上的重叠与覆盖。

          1) 用onspaces 命令建立dbspace

          onspaces -c -d dbspaces名 -p 磁盘设备 -o 偏移量 -s 空间大小

          其中: -c 表示建立新的dbspace

          -d dbspace 名字

          -p 原始磁盘设备全路径名,如/dev/dbs

          -o 偏移量,以K字节为单位

          -s dbspace中第一个chunk的尺寸,以K字节为单位

          例如: 假设原始磁盘设备/dev/dbs有1000M空间,其中rootdbs占100M,
          tmpdbs 占100M,workdbs占800M。

          $ onspaces -c -d tmpdbs -p /dev/dbs -o 100000 -s 100000

          $ onspaces -c -d workdbs -p /dev/dbs -o 200000 -s 8000000


          2)用onspaces 命令建立物理日志、逻辑日志空间

          物理日志保存数据被修改前的映象,物理日志的位置和大小可以改变,
          使用 onparams 命令可以改变日志的位置和大小, 必须在ONLINDE的
          Quiescent(静态方式)后执行。

          $ onparams -p -s 大小 -d dbspace名

          大小是以K为单位,建议物理日志大小为100M。

        逻辑日志是保存数据在修改后的映象,ONLINE初始化时,逻辑日志个数
          最少为3个,所以在初始化前可以给逻辑日志个数为3,大小可以少一点
          例如1000K,等初始化完后,在添加新的逻辑日志,最后再将前面的3个
          逻辑日志删除,总逻辑日志最好在500M左右。具体做法如下:

          以informix用户登录,

          $ onmode -uy (由Online切换到Quiescent状态)

          $ onparams -a -d logdbs -s 100000

          其中logdbs为dbspaces 名 ,-s 100000 表示增加了100M空间。

        再连续执行4遍上述命令,这样新的逻辑日志空间总共为500M,可以用
          onstat -l 查看逻辑日志情况,接下来就要删除前面3个旧逻辑日志,
          删除前做一个0级备份

          # ontape -s -L 0

          $ onparams -d -l logid

          logid 为逻辑日志id号,可以用onstat -l 查看,然后就可根据id号删
          除3个旧逻辑日志。 

     四.Informix Online数据库备份及恢复。

         1. 使用ontape 工具备份

            1.)ontape 有三个备份级别

            0级 实例中所用的页都被写到磁带上

            1级 备份从0级备份以后发生变化的数据

            2级 备份从1级备份以后发生变化的数据

            $ ontape -s -L 0

            执行该命令做0级备份,建议: 如果允许可以每天在业务系统结束工作
            后做一次0级备份,做完备份后管理好备份磁带,做好标记。

 2.) 逻辑日志的备份

            仅仅做0级备份还不够,还要做逻辑日志备份才能完整的恢复数据,
            建议每天业务开始时,执行连续备份逻辑日志(ontape -c),业务结
            束前停止ontape -c ,换磁带,做一次0级备份(ontape -s -L 0),换
            磁带再执行ontape -c

            3)系统恢复

            当系统出现错误,或你想把系统恢复到某一时间点的数据时,必须利
            用0(1,2)备份带和逻辑日志备份来恢复系统,命令如下:

            # ontape -r 

         2. 使用dbexport 命令备份数据

            尽管ontape是一个安全性很高的备份工具,但操作比较烦琐,必须每天
            要手动备份及换磁带,所以编写一个自动备份程序,这样大大解放了系
            统管理员的工作。

            具体实现方法如下:

            在/usr/backup目录下用vi编写backup.sh文件,将文件的权限改为"664",
            内容如下:

            INFORMIXDIR=/usr/informix (设置online路径)

            PATH=$PATH:/usr/informix/bin

            INFORMIXSERVER=post

            export INFORMIXDIR INFORMIXSERVER PATH

            wk=`date +20%y%m%d` #设置变量wk代表当天日期例如 20010101

            dir=/usr/backup/$wk #设置数据存放目录

            if test ! -d $dir #检验目录是否存在

            then

            mkdir $dir

            else

            rm -r $dir/*

            fi

            #由于使用dbexport命令时,所有正在使用数据库操作的用户必须退出,
            所以用fuser -k 命令先将所有用户的进程杀掉,然后再重新启动Online.

            fuser -k 用户注册目录(例如/u/motor) 

            sleep 10

            onmode –uy #关闭online

            sleep 10

            onmode –m #启动online

            sleep 10

            cd /usr/backup

            dbexport 数据库名1 -o $dir #将数据库卸到当天目录中

            dbexport 数据库名2 -o $dir

            …

            rm sjbf*

            tar cvf sjbf.tar $dir #将目录打包

            compress -H sjbf.tar #压缩打包文件

            #为了保证数据的安全性,将数据传送到另一台主机

            da=`date +%m%d` #创建传送文件名

            da1=`date +%H`

            da=$da.$da1.Z

            ftp -nv 142.73.111.10< 
            user backup backup #10主机上建立用户backup口令是backup

            put sjbf.tar.Z $da

            quit

            !

            rm -r $dir/* 

            cd /usr/backup

            mv sjbf.tar.Z $dir #将压缩文件移到目录中

            编辑backup.cron文件,内容如下

            30 1 * * 1-6 /usr/backup/backup.sh

          在root用户下执行 crontab backup.cron ,就可以让系统自动, 
            由于白天业务比较忙,所以将备份时间定在每星期一到六凌晨1:30,
            具体crontab命令的用法请参考SCO OpenServer用户手册。
阅读(929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~