关于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里是怎么操作的?
谢谢各位了..实在是很乱,但是不懂..万望赐教 刚才我看了下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
回复 #2 du51 的帖子
先回答2楼的问题........informix数据库,你看到的空间大小的单位是pages,在9.40的数据库中,根据系统,一般为2KB,或者4KB每页. 如下: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的基础知识........虽然从另一个数据库转到新数据库很多知识可以复用,但新数据库毕竟有自己的特点.... 谢谢楼上了..关于循环日志那块我明白了.
还有一点,就是onconfig里配的那个LOGFILES 是不是要改掉.改的和上面增加的一致..包括大小(LOGSIZE).
如果不一致会出现什么后果.
还有那个物理日志的配置是不是也要一致起来..
关于显示的是页大小..我也明白了.非常感谢.这说明,我操作虽然糊涂.但大体都是成功的.呵呵.
万分感谢.麻烦您了.
回复 #5 du51 的帖子
LOGFILES 这个是初始化时数据库在rootdbs上的自动生成逻辑日志的个数......将日志移出rootdbs后.手动增加逻辑日志后,这个值不用手动修改的. liaosnet
非常感谢你.
让我明白了很多东西. liaosnet 真是热心,优秀成员呀,:)
页:
[1]