本文的一键简单初始化是针对bash写的,数据文件使用系统文件非裸设备,安装GBase8t后快速初始化,方便在测试中搭载环境。
由于是搭载测试环境,或者POC环境使用,脚本中将一些参数写死了,比如环境变量INFORMIXDIR=/home/informix/GBASE,
INFORMIXSERVER=gbase,
sqlhosts里端口使用的是9088,
config参数里也修改了DEF_TABLE_LOCKMODE=row,
数据空间pagesize写成16K(方便从Oracle迁移过来)
数据文件统一生成在INFORMIXDIR/CHUNK目录下。
对于逻辑日志和物理日志已经移除rootdbs,增加了临时表空间,智能大对象空间。
#!/bin/bash
#initialize database
#set evn
echo -n "The Size of plogdbs in KB "
read plogsize
echo -n "The Size of llogdbs in KB "
read llogsize
echo -n "The num of llogdbs "
read llognum
echo -n "The num of tempdbs and the size of each tempdbs in KB "
read tempnum tempsize
echo -n "The num of datadbs and the size of each datadbs in KB "
read datadbsnum datadbssize
echo -n "The size of sbdbs "
read sbdbssize
#: :||:<<\\COMMENT
if [ `grep INFORMIXDIR ~informix/.bash_profile |wc -l` -eq 0 ];then
echo "export INFORMIXDIR=/home/informix/GBASE" >> /home/informix/.bash_profile
echo "export INFORMIXSERVER=gbase" >> /home/informix/.bash_profile
echo "export INFORMIXSQLHOSTS=\\$INFORMIXDIR/etc/sqlhosts" >> /home/informix/.bash_profile
echo "export ONCONFIG=onconfig.\\$INFORMIXSERVER" >> /home/informix/.bash_profile
echo "export PATH=\\$INFORMIXDIR/bin:$PATH" >> /home/informix/.bash_profile
source /home/informix/.bash_profile
fi
#config sqlhosts
if ! [ -e $INFORMIXSQLHOSTS ] ; then
cp ${INFORMIXDIR}/etc/sqlhosts.std ${INFORMIXDIR}/etc/sqlhosts
echo " gbase onsoctcp `ifconfig|xargs|awk '{print $7}'|awk -F : '{print $2}'` 9088" >> $INFORMIXDIR/etc/sqlhosts
fi
#config onconfig文件
if ! [ -e $INFORMIXDIR/etc/$ONCONFIG ] ; then
cp $INFORMIXDIR/etc/onconfig.std $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/$INFORMIXDIR\\/tmp\\/demo_on.rootdbs/$INFORMIXDIR\\/CHUNK\\/rootdbs/g' $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/ROOTSIZE 300000/ROOTSIZE 1000000/g' $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/^DBSERVERNAME/DBSERVERNAME gbase/g' $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/ipcshm/scotcp/g' $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/\\/tapedev/\\/null/g' $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/^DEF_TABLE_LOCKMODE page/DEF_TABLE_LOCKMODE row/g' $INFORMIXDIR/etc/$ONCONFIG
fi
if ! [ -d $INFORMIXDIR/CHUNK ] ; then
mkdir $INFORMIXDIR/CHUNK
touch $INFORMIXDIR/CHUNK/rootdbs
chmod 660 $INFORMIXDIR/CHUNK/rootdbs
fi
# plog llog
if ! [ -e $INFORMIXDIR/CHUNK/plogdbs ] ;then
touch $INFORMIXDIR/CHUNK/plogdbs
chmod 660 $INFORMIXDIR/CHUNK/plogdbs
fi
if ! [ -e $INFORMIXDIR/CHUNK/llogdbs ] ;then
touch $INFORMIXDIR/CHUNK/llogdbs
chmod 660 $INFORMIXDIR/CHUNK/llogdbs
fi
#oninit rootdbs
oninit -ivy
onspaces -c -d plogdbs -p $INFORMIXDIR/CHUNK/plogdbs -o 0 -s ${plogsize}
onspaces -c -d llogdbs -p $INFORMIXDIR/CHUNK/llogdbs -o 0 -s ${llogsize}
#onparams plog
onparams -p -y -s $((plogsize*9/10)) -d plogdbs
#onparams llog
for ((j=1;j<=$llognum;j++))
do
onparams -a -d llogdbs -s $((llogsize*9/10/$llognum))
done
#drop llog
for((i=1;i<=6;i++))
do
onmode -l
done
for ((i=1;i<=6;i++))
do
onparams -d -y -l $i
done
#level 0 backup
ontape -s -L 0
#add tempdbs
if ! [ -e $INFORMIXDIR/CHUNK/tempdbs* ] ; then
for ((i=1;i<=$tempnum;i++))
do
touch $INFORMIXDIR/CHUNK/tempdbs$i
chmod 660 $INFORMIXDIR/CHUNK/tempdbs$i
onspaces -c -d tempdbs$i -t -k 16 -p /home/informix/GBASE/CHUNK/tempdbs$i -o 0 -s $tempsize
done
fi
for ((i=1;i<=$tempnum;i++))
do
tempstr=${tempstr}":""tempdbs"$i
done
sed -i "/^DBSPACETEMP/cDBSPACETEMP $tempstr" $INFORMIXDIR/etc/$ONCONFIG
sed -i 's/:tempdbs1/tempdbs1/g' $INFORMIXDIR/etc/$ONCONFIG
#datadbs
if ! [ -e $INFORMIXDIR/CHUNK/datadbs* ] ; then
for ((i=1;i<=$datadbsnum;i++))
do
touch $INFORMIXDIR/CHUNK/datadbs$i
chmod 660 $INFORMIXDIR/CHUNK/datadbs$i
onspaces -c -d datadbs$i -k 16 -p /home/informix/GBASE/CHUNK/datadbs$i -o 0 -s $datadbssize
done
fi
sbspaces
if ! [ -e $INFORMIXDIR/CHUNK/sbdbs* ] ; then
touch $INFORMIXDIR/CHUNK/sbdbs1
chmod 660 $INFORMIXDIR/CHUNK/sbdbs1
onspaces -c -S sbdbs1 -p /home/informix/GBASE/CHUNK/sbdbs1 -o 0 -s $sbdbssize
fi
sed -i "/^SBSPACENAME/cSBSPACENAME sbdbs1" $INFORMIXDIR/etc/$ONCONFIG
onmode -ky
oninit -v
这个小工具的目的是省去一点搭载环境的时间,正常的话一到两分钟可以完成初始化数据库。里面还有不足或不正确的地方,使用过程中需要按实际情况在做调整。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论1 条评论
2017-03-02 10:37