문서유형ㅣ기술정보
분야ㅣ유틸리티
적용제품버전ㅣ Tibero5/Tibero6/Tibero7
문서번호ㅣTUTTI030
개요
본 문서는 Tibero 내부 테스트 또는 다수의 바이너리를 운영해야 하는 경우 멀티인스턴스 사용을 간편화 하기 위한 Shell 환경설정 유틸리티의 사용 방법입니다.
방법
1. Shell 생성
#!/bin/sh
#########################################
# @File name : tbenv #
# @Created by : Bach #
# @Created date : 2013.08.19 #
# @Team : 001 team #
# @EX : $ . tbenv #
# @Modifed History #
# version : name / team : date #
# ------------------------------------- #
# ver1.00 : Bach / 001 : 20130819 #
# ver1.10 : Bach / 001 : 20131213 #
# ver1.11 : Bach / 001 : 20140109 #
# ver1.12 : Bach / 001 : 20140219 #
# ver1.13 : Bach / 001 : 20140325 #
# ver1.20 : Bach / 002 : 20151228 #
# ver1.21 : Bach / 002 : 20181204 #
#########################################
####################
# Variable Setting #
####################
unset OLDSID OLDHOME NEWSID NEWHOME TBHOME TBSID sid sidmax tbhome chk check i j k l m n o yn
### UNIX별 echo 옵션 설정 환경변수
N=
C=
if echo "\c" | grep c >/dev/null 2>&1; then
N='-n'
else
C='\c'
fi
OS=`uname`
### 기존 TB_SID 저장 환경변수
case "${TB_SID}" in
"") OLDSID=$LOGNAME ;;
*) OLDSID=$TB_SID ;;
esac
### 기존 TB_HOME 저장 변수
#if [ -z "${TB_HOME}" ]; then
# OLDHOME=$PWD
#else
# OLDHOME=$TB_HOME
#fi
#2018.12.04 수정
#OLDHOME=$TB_HOME
OLDHOME=${TB_HOME:-$HOME}
##########################
# Definition of Function #
##########################
function FUNC_no_tbtab
{
echo $N "TB_SID = [$OLDSID] ? $C"
read NEWSID
case "${NEWSID}" in
"") TB_SID="$OLDSID" ;;
*) TB_SID="$NEWSID" ;;
esac
export TB_SID
#2018.12.04 수정
#if [ -z "${OLDHOME}" ]; then
# echo $N "TB_HOME = [$HOME] ? $C"
#else
# echo $N "TB_HOME = [$OLDHOME] ? $C"
#fi
echo $N "TB_HOME = [$OLDHOME] ? $C"
read NEWHOME
case "$NEWHOME" in
"") TB_HOME=$OLDHOME ;;
*) TB_HOME=$NEWHOME ;;
esac
export TB_HOME
}
function FUNC_sid_home_list ### "$HOME/.tbtab"상의 SID별 HOME Path 목록 출력
{
clear
printf "%-20s %s \n" "Tibero SID" "Tibero Home Path"
echo "---------------------------------------------------------------------------------"
### 배열에 사용할 변수 선언
i=0
j=0
for sid in `cut -d":" -f1 $HOME/.tbtab | sort -u`
do
k=0
let i=i+1
let j=i*100
TBSID[$i]=$sid
printf "%-20s " "[$i] ${TBSID[$i]}"
for tbhome in `grep -w "^${TBSID[$i]}:" $HOME/.tbtab 2>/dev/null | cut -d":" -f2`
do
let j=j+1
let k=k+1
TBHOME[$j]=$tbhome
printf "%s \n %-20s " "[$k] ${TBHOME[$j]}"
done
printf "\n"
done
echo "---------------------------------------------------------------------------------"
sidmax=${i}
}
function FUNC_sid_home ### SID 및 HOME 설정 함수
{
while true ### SID 입력
do
if [ ${sidmax} -le 1 ] ### 기존 SID가 하나이하인 경우
then
echo $N "Insert TB_SID = [$OLDSID] ? $C"
else
echo $N "Select [1 ~ $sidmax] or Insert TB_SID = [$OLDSID] ? $C"
fi
read NEWSID
case "${NEWSID}" in
[1-9]|[1-9][0-9]) if [ -z "${TBSID[$NEWSID]}" ] ### 목록에서 번호에 매칭되는 SID 선택
then
printf "\n %s\n \n" "**** Out of range ****"
continue
else
export TB_SID=${TBSID[$NEWSID]}
FUNC_num_home
break
fi ;;
"") TB_SID=$OLDSID ### 미입력시 기존의 SID 사용
FUNC_nm_home
break ;;
*) TB_SID=$NEWSID ### 새로운 값을 SID로 사용
FUNC_nm_home
break ;;
esac
done
export TB_SID TB_HOME
}
function FUNC_num_home ### NEWSID 값이 숫자인 경우의 홈경로 설정
{
### 변수 선언(l: 홈 경로의 갯수 확인, m: TBHOME변수의 배열 값)
l=0
m=0
let m=NEWSID*100
while true ### SID별 HOME 경로의 갯수 확인
do
let m=m+1
if [ -z "${TBHOME[$m]}" ]
then
break
fi
let l=l+1
done
while true
do
if [ ${l} -le 1 ]
then
let n=NEWSID*100+1
DFTHOME=${TBHOME[$n]:-$PWD}
echo $N "TB_HOME = [$DFTHOME] ? $C"
else
echo $N "Select [1 ~ $l] or Insert TB_HOME = ? $C"
fi
read NEWHOME
case "${NEWHOME}" in
[1-9]|1[0-9]) let n=NEWSID*100+NEWHOME
if [ -z "${TBHOME[$n]}" ]
then
printf "\n %s\n \n" "**** Out of range ****"
continue
else
TB_HOME=${TBHOME[$n]}
break
fi ;;
"") if [ ${l} -le 1 ]
then
TB_HOME=$DFTHOME
break
fi
continue ;;
*) TB_HOME=$NEWHOME
break ;;
esac
done
}
function FUNC_nm_home ### NEWSID 값이 문자인 경우의 홈경로 설정
{
o=0
while [ ${o} -le ${sidmax} ] ### 기존 SID와의 일치 여부 판단
do
let o=o+1
if [ "${TB_SID}" == "${TBSID[$o]}" ] ### 기존 SID와 일치 할 경우 배열번호 반환 후 FUNC_num_home 실행
then
unset NEWSID
NEWSID=$o
FUNC_num_home
break
fi
done
if [ ${o} -gt ${sidmax} ] ### 새로운 SID일 경우 새로운 홈 경로 설정
then
echo $N "TB_HOME = [$OLDHOME] ? $C"
read NEWHOME
while true
do
case "$NEWHOME" in
"") if [ -z "${OLDHOME}" ]
then
continue
else
TB_HOME=$OLDHOME
break
fi ;;
*) TB_HOME=$NEWHOME
break ;;
esac
done
fi
}
function FUNC_tbtab ### "$HOME/.tbtab" 파일에 SID 및 HOME 정보 입력 여부
{
for chk in `grep -w "^$TB_SID:$TB_HOME:N" $HOME/.tbtab 2>/dev/null`
do
check=${chk}
done
if [ -z "${check}" ]
then
echo $N "Insert \"$TB_SID:$TB_HOME\" $HOME/.tbtab ?(Y/N): $C"
read yn
case $yn in
Y|y) echo "$TB_SID:$TB_HOME:N" >> $HOME/.tbtab ;;
N|n) ;;
*) FUNC_tbtab ;;
esac
fi
}
function FUNC_lib ### Library 경로 수정
{
if [ "$OS" == "Linux" ] || [ "$OS" == "SunOS" ]
then
case ${LD_LIBRARY_PATH:-""} in
*$OLDHOME/lib*$OLDHOME/client/lib*)
LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$OLDHOME/client/lib*$OLDHOME/lib*)
LD_LIBRARY_PATH=`echo $LD_LIBRARY_PATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$TB_HOME/lib*) ;;
"") LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH ;;
*) LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH ;;
esac
export LD_LIBRARY_PATH
elif [ "$OS" == "HP-UX" ]
then
case ${SHLIB_PATH:-""} in
*$OLDHOME/lib*$OLDHOME/client/lib*)
SHLIB_PATH=`echo $SHLIB_PATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$OLDHOME/client/lib*$OLDHOME/lib*)
SHLIB_PATH=`echo $SHLIB_PATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$TB_HOME/lib*) ;;
"") SHLIB_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$SHLIB_PATH ;;
*) SHLIB_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$SHLIB_PATH ;;
esac
export SHLIB_PATH
elif [ "$OS" == "AIX" ]
then
case ${LIBPATH:-""} in
*$OLDHOME/lib*$OLDHOME/client/lib*)
LIBPATH=`echo $LIBPATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$OLDHOME/client/lib*$OLDHOME/lib*)
LIBPATH=`echo $LIBPATH | \
sed "s;$OLDHOME/lib;$TB_HOME/lib;g" | \
sed "s;$OLDHOME/client/lib;$TB_HOME/client/lib;g"` ;;
*$TB_HOME/lib*) ;;
"") LIBPATH=$TB_HOME/lib:$TB_HOME/client/lib:$LIBPATH ;;
*) LIBPATH=$TB_HOME/lib:$TB_HOME/client/lib:$LIBPATH ;;
esac
export LIBPATH
fi
if [ -z "${LD_LIBRARY_PATH}" -a -z "${LIBPATH}" ]
then
LIBPATH=$TB_HOME/lib:$TB_HOME/client/lib
LD_LIBRARY_PATH=${LIBPATH}
export LD_LIBRARY_PATH LIBPATH
fi
}
function FUNC_path ### PATH 경로 수정
{
case "${PATH}" in
*$OLDHOME/bin*$OLDHOME/client/bin*) PATH=`echo $PATH | \
sed "s;$OLDHOME/bin;$TB_HOME/bin;g" | \
sed "s;$OLDHOME/client/bin;$TB_HOME/client/bin;g"` ;;
*$OLDHOME/client/bin*$OLDHOME/bin*) PATH=`echo $PATH | \
sed "s;$OLDHOME/bin;$TB_HOME/bin;g" | \
sed "s;$OLDHOME/client/bin;$TB_HOME/client/bin;g"` ;;
*$TB_HOME/bin*) ;;
*:) PATH=${PATH}:$TB_HOME/bin:$TB_HOME/client/bin: ;;
"") PATH=$TB_HOME/bin:$TB_HOME/client/bin ;;
*) PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin ;;
esac
export PATH
}
function FUNC_prof ### TB_PROF_DIR 경로 수정 TB_PROF_DIR=$TB_HOME/bin/prof
{
case "${TB_PROF_DIR}" in
*$OLDHOME/bin/prof*) TB_PROF_DIR=`echo $TB_PROF_DIR | \
sed "s;$OLDHOME/bin/prof;$TB_HOME/bin/prof;g"` ;;
*$TB_HOME/bin/prof*) ;;
*) TB_PROF_DIR=$TB_HOME/bin/prof ;;
esac
export PATH
}
################
# Excute Shell #
################
if [ -f $HOME/.tbtab ]
then
FUNC_sid_home_list
FUNC_sid_home
else
FUNC_no_tbtab
fi
FUNC_tbtab
FUNC_lib
FUNC_path
FUNC_prof
printf "%s\n%s\n" "TB_SID = $TB_SID" "TB_HOME = $TB_HOME"
unset FUNC_lib FUNC_nm_home FUNC_no_tbtab FUNC_num_home FUNC_path FUNC_prof FUNC_sid_home FUNC_sid_home_list FUNC_tbtab
unset OLDSID OLDHOME NEWSID NEWHOME TBHOME TBSID sid sidmax tbhome chk check i j k l m n o yn OS
#################
# Alias Setting #
#################
alias tbhome='cd $TB_HOME'
alias tbbin='cd $TB_HOME/bin'
alias tblog='cd $TB_HOME/instance/$TB_SID/log'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
#alias tbdata='cd $TB_HOME/tbdata'
alias tbi='cd $HOME/tbinary'
#alias clean='tbdown clean'
alias dba='tbsql sys/tibero'
alias tm='$HOME/tbinary/monitor/monitor'
alias tbcli='cd ${TB_HOME}/client/config'
alias tbcliv='vi ${TB_HOME}/client/config/tbdsn.tbr'
#alias tbcliv='vi ${TB_HOME}/client/config/tbnet_alias.tbr'
2. 최초 사용 시
$ source ./tbenv
TB_SID = [tb7] ? #### []의 값은 OS 계정으로 default값, 원하는 TB_SID 입력
TB_HOME = [/tibero7/tibero7] ? #### 사용할 바이너리 경로 입력
Insert "tb7:/tibero7/tibero7" /tibero7/.tbtab ?(Y/N): Y #### 해당 정보를 영구 저장 시키려면 Y 아니면 N
TB_SID = tb7 #### 설정된 TB_SID 정보
TB_HOME = /tibero7/tibero7 #### 설정된 TB_HOME 정보
$ echo $TB_SID
tb7
$ echo $TB_HOME
/tibero7/tibero7
3. 재 사용 시
$ source ./tbenv
Tibero SID Tibero Home Path
---------------------------------------------------------------------------------
[1] tb7 [1] /tibero7/tibero7
---------------------------------------------------------------------------------
Insert TB_SID = [tb7] ? 1 #### 사용할 TB_SID 입력, 숫자 가능, 추가 가능
TB_HOME = [/tibero7/tibero7] ? 1 #### 사용할 TB_HOME 입력, 숫자 가능, 추가 가능
TB_SID = tb7
TB_HOME = /tibero7/tibero74. Instance 추가
$ source ./tbenv
Tibero SID Tibero Home Path
---------------------------------------------------------------------------------
[1] tb7 [1] /tibero7/tibero7
---------------------------------------------------------------------------------
Insert TB_SID = [tb7] ? test
TB_HOME = [/tibero7/tibero7] ? /tibero7/tibero7
Insert "test:/tibero7/tibero7" /tibero7/.tbtab ?(Y/N): Y
TB_SID = test
TB_HOME = /tibero7/tibero7
5. 엔진 추가
$ source ./tbenv
Tibero SID Tibero Home Path
---------------------------------------------------------------------------------
[1] tb7 [1] /tibero7/tibero7
[2] test [1] /tibero7/tibero7
---------------------------------------------------------------------------------
Select [1 ~ 2] or Insert TB_SID = [test] ? 2
TB_HOME = [/tibero7/tibero7] ? /home/tibero/tibero7
Insert "test:/home/tibero/tibero7" /tibero7/.tbtab ?(Y/N): Y
TB_SID = test
TB_HOME = /home/tibero/tibero7
$ source ./tbenv
Tibero SID Tibero Home Path
---------------------------------------------------------------------------------
[1] tb7 [1] /tibero7/tibero7
[2] test [1] /tibero7/tibero7
[2] /home/tibero/tibero7
---------------------------------------------------------------------------------
Select [1 ~ 2] or Insert TB_SID = [test] ?