maozicb
作者maozicb·2017-03-02 10:28
数据库管理员·天津南大通用数据技术股份有限公司

GBase8t一键简单初始化

字数 2634阅读 1941评论 1赞 1

1 简述

本文的一键简单初始化是针对bash写的,数据文件使用系统文件非裸设备,安装GBase8t后快速初始化,方便在测试中搭载环境。

2 使用方法

由于是搭载测试环境,或者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

3 总结

这个小工具的目的是省去一点搭载环境的时间,正常的话一到两分钟可以完成初始化数据库。里面还有不足或不正确的地方,使用过程中需要按实际情况在做调整。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论1 条评论

maozicbmaozicb数据库管理员天津南大通用数据技术股份有限公司
2017-03-02 10:37
用root用户安装完GBase8t软件后(不自动创建实例),切换到informix用户下执行该脚本即可。
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广