SYBASE 에서 다음의 init 스크립트를 사용중 stop시 locale 에러가 나타나는 것을 확인했다.

jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ cat /etc/init.d/sybase
#!/bin/sh
#
# Startup script for Sybase ASE
#
# description: Sybase Adaptive Server Enterprise
# is a SQL database server.
# processname: dataserver
 

SYBASE=/opt/sybase
SERVER=JONATHANLAPTOP
LANG=ko_KR.euckr
export LANG
 

# Source environment variables.
. $SYBASE/SYBASE.sh
 

# Find the name of the script
NAME=`basename $0`
 

# For SELinux we need to use ‘runuser’ not ‘su’
if [ -x /sbin/runuser ]
then
    SU=runuser
else
    SU=su
fi
 

start() {
    SYBASE_START=$”Starting ${NAME} service: “
    $SU root -c “. $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver
-f $SYBASE/$SYBASE_ASE/install/RUN_${SERVER} > /dev/null”
    ret=$?
    if [ $ret -eq 0 ]
    then
        echo “$SYBASE_START Success.”
    else
        echo “$SYBASE_START Failed!”
              exit 1
    fi
}
 

stop() {
    echo -n $”Stopping ${NAME} service: “
    $SU root -c “. $SYBASE/SYBASE.sh; isql -S $SERVER -U sa -P ” <
$SYBASE/$SYBASE_ASE/upgrade/shutdown.sql > /dev/null”
    ret=$?
    if [ $ret -eq 0 ]
    then
        echo “Success.”
    else
        echo “Failed!”
        exit 1
    fi
}
 

restart() {
    stop
    start
}
 

case “$1” in
 

    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo $”Usage: $0 {start|stop|restart}”
        exit 1
esac
exit 0

 에러메시지의 내용은 다음과 같다.

jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ sudo /etc/init.d/sybase stop
$Stopping sybase service:

The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failure

Your sybase home directory is /opt/sybase. Check the environment variable SYBASE if it is not the one you want!
Using locale name “ko_KR.UTF-8” defined in environment variable LANG
Locale name “ko_KR.UTF-8” doesn’t exist in your /opt/sybase/locales/locales.dat file
Success.

 제일 마지막 메시지에는 Success 라고 나와있지만 ps -ef|grep sybase 명령어로 확인해본 결과 대부분의 프로세스들이 그대로 돌고있는 것을 확인할 수 있었다.

 무엇이 문제일까.

 에러 메시지에서 해답을 찾았다. 내가 사용하는 “ko_KR.UTF-8” locale을 정의(찾을 수)없다는 메시지였다.

 먼저 내가 사용하는 리눅스에서의 로케일을 변경하려고 했으나 생각되로 잘 되지 않았다. 왜냐하면 SYBASE에서 어떤 로케일들을 지원하는지 아직 몰랐기 때문이다.

 SYBASE에서 지원하는 locale 하는 로케일은 다음의 파일에서 찾을 수 있다.

/opt/sybase/locales/locales.dat

 방법은 두가지가 있다. SYBASE에서 지원하는 로케일에 맞추거나 위의 파일에 자신이 사용하는 로케일을 추가하거나.

 필자는 로케일을 추가하는 방법을 선택하였다.

/opt/sybase/locales/locales.dat

 파일을 열어 자신의 OS를 찾아 아래쪽에 양식에 맞게 추가하도록 하자.

[linux]
        locale = ko_KR.UTF-8, korean, eucksc
        locale = ko_KR.949, korean, cp949
        locale = korean.euc, korean, eucksc

위쪽 굵게 표시한 부분이 필자가 추가한 부분이다.

이후, 아무런 에러 메시지 없이 정상적으로 종료가 되는 것을 확인할 수 있었다.

jonathan@jonathan-laptop:/opt/sybase/ASE-15_0/install$ sudo /etc/init.d/sybase stop
$Stopping sybase service: Success.

테스트 OS : UbuntuLinux_Desktop-10.04

Tags: , , , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.