du51 发表于 2008-04-22 23:46

关于informix初始化的几个问题的请教,先行谢谢了.

一直在CU看贴,但是现在好像只看搞不定.主要是些概念性的东西.望各位达人指点.
我先行谢过了.

前几天装了informix9.4UC1E1LINUX RHEL 4 UPDATE 6
装成功了.oninit -
Informix Dynamic Server Version 9.40.UC1E1   -- On-Line -- Up 00:20:08 -- 30952 Kbytes

装成功后,我想像DB2那样的建表空间.
用LVM做LV.然后建了裸设备.

用onspaces 也成功.

后来参看CU的一个原创贴子.找到一个脚本..

如下:
       onspaces -c -b blobdbs -g 32 -p /home/informix/dbs/blobdbs -o 0 -s48000
      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
以上的我都可以理解.而且和DB2的原理差不多.不过一个是CHUNK一个是所谓的容器.


      echo "\nShut Down Server to Quiescent Mode..."
      echo "====================================================="
      onmode -s -y
这个语句我不知道是干什么的.使服务器处休眠吗? 类似于操作系统的safe模式吗?
      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
以上的是干什么的???
我的理解是空间已经存在,这样是告诉数据库,在logdbs空间里分配一部分给LOGIC log 用..以后写LLOG就写到这个空间.
请问是这样吗?
为什么要运行10次??
直接
onparams -a -d logdbs -s 190000
不行吗?
还有20000这个是怎么得出来吗,一定要这么大吗?
最后一个为什么又是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
以上六个是干什么的?
我试过,没这几句,删除不了.INFORMIX说什么正在用.
我看网上说,这是向下一个LOGIC 日志转移,是这样吗?
但是,当前日志是哪个呢?从哪里看?
因为只有知道当前日志是哪个,以及它们的先后顺序,才能转到我们想让它去的地方.
      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
根据ID一一删除之.
      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
是不是每指定一次日志空间所在,就要备份一次.那这次为什么又有那个-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




以上的问题,对各位高手可能很好笑,但是我的确是不知道干什么的..


而且,装之后,我还有一些问题.

装之后,我看onconfig里面 LOGFILES 改为4了(我自己加的,每个100M)
我记得原来是6的.INFORMIX会自己改自己的配置??

这个弄的我很困惑..
这个参数和上面那些onparams -a -d logdbs -s 20000有关系吗?
是不是加几次,后面LOGFILES就变成多少了?
但是,这样也说不通呀.配置里LOGSIZE没变.还是2000
然而,我自己加的时候是onparams -a -d logdbs -s 100000

请问它们之间到底是什么关系.


另外:onstat -l里的东西是不是不准呀,或者是我没有操作成功.
$ onstat -l

Informix Dynamic Server Version 9.40.UC1E1   -- On-Line -- Up 00:36:03 -- 30952 Kbytes

Physical Logging
Buffer bufusedbufsizenumpages numwrits pages/io
P-10      16       0      0      0.00
      phybegin         physize    phypos   phyused    %used   
      2:53             100000   0          0          0.00   

Logical Logging
Buffer bufusedbufsizenumrecsnumpages numwrits recs/pages pages/io
L-20      16       1      1      1      1.0      1.0   
      Subsystem    numrecsLog Space used
      OLDRSAM      1      36            

addressnumber   flags    uniqid   begin                size   used    %used
0x10f3e8a8 7      U---C-L10       4:53                50000       12   0.02
0x10f3e8e8 8      U-B----6      4:50053             50000      1   0.00
0x10f3e928 9      U-B----7      5:3               50000      1   0.00
0x10f3e968 10       U-B----8      5:50003             50000      2   0.00
4 active, 4 total



我想问下为什么size是50000而不是我加的100000
???
对了,我加物理日志是200000上面也变成了100000
难道都是减半的?



另外,我还想问下.rootdbs大体上多少合适.
我本人认为这和DB2那些系统表差不多..SMS足够了..也不要太大.100M足够了.
是这样的吗?



还有在DB2里 是IN DATA_DMS LONG INBLOB_DMS INDEX IN IDX_DMS

请问INFORMIX里是怎么操作的?



谢谢各位了..实在是很乱,但是不懂..万望赐教

du51 发表于 2008-04-22 23:56

刚才我看了下onstat -d
发现所有的空间大小都是减半的.
是我操作错了.还是就是这样显示的??

$ onstat -d

Informix Dynamic Server Version 9.40.UC1E1   -- On-Line -- Up 00:00:40 -- 30952 Kbytes

Dbspaces
addressnumber   flags      fchunk   nchunksflags    owner    name
0x10e317d8 1      0x20001    1      1      N      informix rootdbs
0x10f2fe50 2      0x20001    2      1      N      informix phydbs
0x116f2018 3      0x20011    3      1      N B      informix blobdbs
0x116f2168 4      0x20001    4      2      N      informix logdbs
0x116f22b8 5      0x20001    6      1      N      informix idxdbs
0x116f2408 6      0x20001    7      5      N      informix datadbs
0x116f2558 7      0x20001    12       1      N      informix tmpdbs
7 active, 2047 maximum

Note: For BLOB chunks, the number of free pages shown is out of date.
      Run 'onstat -d update' for current stats.

Chunks
addresschunk/dbsoffset   size       free       bpages   flags pathname
0x10e31928 1   1    512      100000   98042               PO--/opt/IBM/informix/dbs/rootdbs
0x10f3e9a8 2   2    512      107500   7447                  PO--/opt/IBM/informix/dbs/phydbs
0x10f3eb30 3      3   512      480000    ~15000      15000      POB-/opt/IBM/informix/dbs/blobdbs
0x10f3ecb8 4   4    512      107500   7447                  PO--/opt/IBM/informix/dbs/logdbs
0x10f3ee40 5   4    512      107500   7497                  PO--/dev/raw/raw4
0x10e31af0 6   5    512      100000   99947               PO--/opt/IBM/informix/dbs/idxdbs
0x10e31c78 7   6    512      107500   107447                PO--/opt/IBM/informix/dbs/datadbs
0x10e31e00 8   6    512      107500   107497                PO--/dev/raw/raw7
0x10f2f830 9   6    512      107500   107497                PO--/dev/raw/raw8
0x10f2f9b8 10    6    512      107500   107497                PO--/dev/raw/raw9
0x10f2fb40 11    6    512      107500   107497                PO--/dev/raw/raw10
0x10f2fcc8 12    7    512      125000   124947                PO--/opt/IBM/informix/dbs/tmpdbs
12 active, 2047 maximum

Expanded chunk capacity mode: disabled

liaosnet 发表于 2008-04-23 00:15

回复 #2 du51 的帖子

先回答2楼的问题........informix数据库,你看到的空间大小的单位是pages,在9.40的数据库中,根据系统,一般为2KB,或者4KB每页.

liaosnet 发表于 2008-04-23 00:27

如下:
       onspaces -c -b blobdbs -g 32 -p /home/informix/dbs/blobdbs -o 0 -s48000
      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
以上的我都可以理解.而且和DB2的原理差不多.不过一个是CHUNK一个是所谓的容器.


      echo "\nShut Down Server to Quiescent Mode..."
      echo "====================================================="
      onmode -s -y
这个语句我不知道是干什么的.使服务器处休眠吗? 类似于操作系统的safe模式吗?
没有使用过DB2,这里的quiescent模式,是informix的一个状态,此状态下,用户不能访问数据库..
      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
以上的是干什么的???
我的理解是空间已经存在,这样是告诉数据库,在logdbs空间里分配一部分给LOGIC log 用..以后写LLOG就写到这个空间.
请问是这样吗?
为什么要运行10次??
直接
onparams -a -d logdbs -s 190000
不行吗?
还有20000这个是怎么得出来吗,一定要这么大吗?
最后一个为什么又是10000了?

逻辑日志是循环使用的,如果只有一个的话,那么就不能进行循环使用....一个逻辑日志满了以后,数据库可以进行逻辑日志备份,太大的逻辑日志并不见得好..
到于为什么最后一个是10000,是因为最后一次不能分配20000的空间了.呵........(如果空间配置好的话,还是可以是20000的,比如增加逻辑日志空间时改为204000)


      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
以上六个是干什么的?
我试过,没这几句,删除不了.INFORMIX说什么正在用.
我看网上说,这是向下一个LOGIC 日志转移,是这样吗?
但是,当前日志是哪个呢?从哪里看?
因为只有知道当前日志是哪个,以及它们的先后顺序,才能转到我们想让它去的地方.
使用onstat -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
根据ID一一删除之.
      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
是不是每指定一次日志空间所在,就要备份一次.那这次为什么又有那个-L 0了呢?
这个是正常的0级备份....对于空间的操作,都要求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




以上的问题,对各位高手可能很好笑,但是我的确是不知道干什么的..


而且,装之后,我还有一些问题.

装之后,我看onconfig里面 LOGFILES 改为4了(我自己加的,每个100M)
我记得原来是6的.INFORMIX会自己改自己的配置??

这个弄的我很困惑..
这个参数和上面那些onparams -a -d logdbs -s 20000有关系吗?
是不是加几次,后面LOGFILES就变成多少了?
但是,这样也说不通呀.配置里LOGSIZE没变.还是2000
然而,我自己加的时候是onparams -a -d logdbs -s 100000

请问它们之间到底是什么关系.


另外nstat -l里的东西是不是不准呀,或者是我没有操作成功.
$ onstat -l

Informix Dynamic Server Version 9.40.UC1E1   -- On-Line -- Up 00:36:03 -- 30952 Kbytes

Physical Logging
Buffer bufusedbufsizenumpages numwrits pages/io
P-10      16       0      0      0.00
      phybegin         physize    phypos   phyused    %used   
      2:53             100000   0          0          0.00   

Logical Logging
Buffer bufusedbufsizenumrecsnumpages numwrits recs/pages pages/io
L-20      16       1      1      1      1.0      1.0   
      Subsystem    numrecsLog Space used
      OLDRSAM      1      36            

addressnumber   flags    uniqid   begin                size   used    %used
0x10f3e8a8 7      U---C-L10       4:53                50000       12   0.02
0x10f3e8e8 8      U-B----6      4:50053             50000      1   0.00
0x10f3e928 9      U-B----7      5:3               50000      1   0.00
0x10f3e968 10       U-B----8      5:50003             50000      2   0.00
4 active, 4 total



我想问下为什么size是50000而不是我加的100000
???
对了,我加物理日志是200000上面也变成了100000
难道都是减半的?



另外,我还想问下.rootdbs大体上多少合适.
我本人认为这和DB2那些系统表差不多..SMS足够了..也不要太大.100M足够了.
是这样的吗?



PS:我觉得你还是得看看INFORMIX的基础知识........虽然从另一个数据库转到新数据库很多知识可以复用,但新数据库毕竟有自己的特点....

du51 发表于 2008-04-23 00:52

谢谢楼上了..关于循环日志那块我明白了.

还有一点,就是onconfig里配的那个LOGFILES 是不是要改掉.改的和上面增加的一致..包括大小(LOGSIZE).
如果不一致会出现什么后果.
还有那个物理日志的配置是不是也要一致起来..


关于显示的是页大小..我也明白了.非常感谢.这说明,我操作虽然糊涂.但大体都是成功的.呵呵.

万分感谢.麻烦您了.

liaosnet 发表于 2008-04-23 09:12

回复 #5 du51 的帖子

LOGFILES 这个是初始化时数据库在rootdbs上的自动生成逻辑日志的个数......
将日志移出rootdbs后.手动增加逻辑日志后,这个值不用手动修改的.

du51 发表于 2008-04-25 00:14

liaosnet
非常感谢你.
让我明白了很多东西.

wuicpp 发表于 2008-04-28 08:59

liaosnet 真是热心,优秀成员呀,:)
页: [1]
查看完整版本: 关于informix初始化的几个问题的请教,先行谢谢了.