SYBASE – init Script and locale error

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

VMware network service 문제

 우분투 10.04-Desktop 버전에서 VMware 7.1.1 버전을 설치하고 사용을 하던 중 한가지 문제점을 발견했다.

 가상 머신을 실행 시킬때 마다 자동으로 네트워크 설정을 잡지 못하는 문제가 발생하는 것이다.
 
 정확하게 이야기 하면 가상머신을 실행시킬때마다 VMware 내의 Virtual Network Editor 를 실행하여 다시금 가상 네트워크 환경을 설정해 주어야 가상머신에서 네트워크 설정을 알아채는 문제였다.

 해결법을 찾아보니 아래의 링크에서 그 문제점의 원인과 해결방법을 찾을 수 있었다.

 http://www.ubuntu.or.kr/viewtopic.php?p=18214

 문제점의 원인은 우분투의 네트워크 관리 도구인 Network Manager가 VMware의 가상 장치인 vmnet1과 vmnet8을 관리하려고 하는 과정에서 일어난 것이었다.

 매 부팅(우분투) 때마다 Network Manager에서 인터넷 연결 설정을 재 설정하기 때문에 VMware의 가상장치 들의 설정을 덮어버리는 문제였던 것이다.

 해결책은 아래의 링크에 나와있었다.

http://ubuntuforums.org/showthread.php?t=1041589

/etc/network/interfaces 파일의 내에 다음의 명령을 추가하면 된다.
해당 인터페이스에 대한 설정을 수동으로 관리하겠다는 내용이다.

auto lo
iface lo inet loopback

auto vmnet0
iface vmnet0 inet manual

 vmnet0 부분을 VMware 에서 설정한 인터페이스 이름으로 변경 혹은 추가를 시켜주면 된다.

ACE library 설치법..

1. 공식 다운로드 페이지에서 ACE-5.5.tar.gz파일을 다운로드 받습니다.

2. 환경 변수를 설정합니다.(~/.bash_profile)
  – ACE_ROOT=/home/k2/Apps/ACE_wrappers;export ACE_ROOT
  – LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH;
    export LD_LIBRARY_PATH

3. $ACE_ROOT/ace에서 심볼릭 링크 추가합니다.
  – ln -s config-linux.h config.h

4. $ACE_ROOT/include/makeinclude 에서 심볼릭 링크 추가합니다.
  – ln -s platform_linux.GNU platform_macros.GNU

5. $ACE_ROOT/ace에서 make

6. 컴파일 제대로 되었는지 확인합니다.
  – $ACE_ROOT/examples/Threads에서 make
  – ./task_one 실행하면은 아래 결과처럼 나오면 성공이에요
  (3076410288) in iteration 1
  (3076410288) in iteration 2
  (3076410288) in iteration 3
  (3076410288) in iteration 4
  (3076410288) in iteration 5
  (3076412064) done

7. 설치된 라이브러리 디렉토리는 $ACE_ROOT/lib입니다.

8. 그 다음 ACE 라이브러리를 확인하여 서버 프로그램 개발을 하면 됩니다.

출처 : http://sexymiru.egloos.com/1967295

——————————————————————————————

 실행환경 : ubuntu-10.04 Desktop 버전에서 에러 발생.

 컴파일 중 재정의 문제가 발생. 설치가 진행되지 않는다. configure 를 이용한 설치에도 제대로 진행이 되지 않았다.

 구글과 ACE 메일링 리스트를 살펴서 여러가지 해결법을 찾아보았지만 보이지 않았다… 어떻게 해야되는 것일까…

 Ubuntu-09.04(혹은 09.10) Server 버전에서는 아무 문제 없이 컴파일 되는 것을 확인 했다. 특별히 배포판을 가리지는 않는 것 같다. 아마도 문제점은 커널 버전 혹은 g++ 의 버전 정도가 될 것 같다.

 재정의 컴파일 오류가 났으니 특정 라이브러리가 설치되지 않아서 생기는 문제는 아닌 것 같다.

 사실, ACE-5.8.* 버전은 설치가 쉽게 되었다. 하지만 ACE-5.8.* 대의 버전을 설치할 경우, ACE-5.5.* 버전에서 지원하는 메소드 및 함수가 지원되지 않은 것들이 있다.

 즉, 내가 필요로 하는 메소드와 함수들은 ACE-5.8.* 버전에서는 지원하지 않는 것이다.

 흠.. 조금 더 낮은 버전에서 찾아볼까..

———————————————————————————-

 설치의 실마리를 찾았다.

  • windows
    • ACE_wrapper/ace 에서
    • config.h 파일 생성
      #define ACE_HAS_STANDARD_CPP_LIBRARY 1
      #include “config-win32.h”
  • linux
    • ACE_wrapper/ace 에서
      ln –s config-linux.h config.h
    • ACE_wrapper/include/makeinclude 에서
      ln –s platform_aix_ibm.GNU platform_macros.GNU
    • .bash_profile
      export ACE_ROOT=~/Library/ACE-5.7.9
      export LD_LIBRARY_PATH=$ACE_ROOT/ace
    • ACE_wrapper/ace 에서
      ../configure –enable-stdcpplib
      gmake buildbits=64
  • AIX
    • ACE_wrapper/ace 에서
      ln –s config-aix-5.x.h config.h
    • ACE_wrapper/include/makeinclude 에서
      ln –s platform_aix_ibm.GNU platform_macros.GNU
    • .profile
      export ACE_ROOT=$HOME/lib/ACE-5.5/ACE_wrappers
      export LIBPATH=.:$ACE_ROOT/ace
    • ACE_wrapper/ace 에서
      ../configure –enable-stdcpplib
      gmake buildbits=64 static_libs=1

 출처 : http://anyons.net/tc/entry/ACE-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95

우분투(10.04)에 오라클 11g 설치하기.

 이 글은 다음의 사이트를 베이스로 우분투(10.04)를 기반으로 오라클 11g(linux_11gR1_database_1013.zip) 버전을 설치하여 proc 를 이용한 프로그램의 컴파일까지의 내용을 편집한 것이다.

 원글님: 허니몬의 자바Guru
http://java.ihoney.pe.kr/39

 #1. 먼저 오라클 11g를 설치하기에 앞서 필요한 패키지를 설치하는 작업이 필요하다.

 다음의 패키지를 설치하도록 하자.

 # sudo apt-get install gcc make binutils lesstif2 rpm libmotif3 libaio gawk alien ksh

필요한 패키지 버전(당연히 그 이상 버전도 가능) -> 대부분 설치되어 있음.
binutils-2.15.92.0.2-10
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9
gcc-c++-3.4.3-9
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9
libstdc++-devel-3.4.3-9
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5

 아래의 패키지를 더 설치하도록 하자.

 # apt-get install gcc
binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5
build-essential


** 다음의 위치에서 oracle을 다운받도록 하자. 필자는 11.1.0.6.0 버전으로 설치를 진행하였다.
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 #2. 패키지의 설치가 끝났으면 설치를 위한 사용자 그룹과 유저를 만들도록 한다.

# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -m oracle -g oinstall -G dba -s /bin/bash
# usermod -g nobody nobody
# passwd oracle  (oracle 계정의 비밀번호 설정)

#3. 리눅스 커널의 소스도 필요하다.

 # sudo apt-get install linux-headers

 #4. Oracle 에서 필요한 메모리와 CPU 리소스를 위해 커널 파라미터를 수정한다.
 파일을 열고 가장 아래쪽에 다음의 내용을 삽입한다.

 # sudo vi /etc/sysctl.conf

fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

 #5.  /etc/sysctl.conf 파일은 우분투 시스템이 부팅시 처음 읽어오는 정보이다. 이것을 적용시키기 위해서 재부팅을 한다.
 
 혹은 재부팅이 귀찮으면 다음을 입력한다. sysctl.conf 설정을 다시 읽어들이는 명령어이다.

 # sudo sysctl -p

 #6. 다음으로 limit.conf 파일을 수정한다.

 다음의 내용을 /etc/security/limits.conf 파일에 삽입한다.

# sudo vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16383

oracle soft nofile 1023

oracle hard nofile 65535

 /etc/security/limits.conf 파일의 수정이 완료되었으면 다음으로

 /etc/pam.d/login 파일을 열어서 다음 라인을 추가한다.

 # sudo vi /etc/pam.d/login

 session required /lib/security/pam_limits.so
 session required pam_limits.so

 #7. 환경변수 설정.
 다음으로 오라클 기동에 관련한 환경변수를 설정한다.

$ln -s /usr/bin/awk /bin/awk

$ln -s /usr/bin/rpm /bin/rpm

$ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so

$ln -s /usr/bin/basename /bin/basename
/bin/basename

Oracle 11g가 설치될 폴더 생성하기(본인은 11g를 설치하여 11g로 변경함)

$mkdir /oracle

$mkdir /oracle/11g

$chown -R oracle:oinstall /oracle

$chmod -R 775 /oracle

그다음 환경변수 설정을 위해 etc밑에 profile을
gedit로 연다(vi로열어도 상관없음)

$sudo vi /etc/profile

파일을 열었으면.. 파일 가장 아랫부분테 밑에 정보를
복사해서 넣는다.. 파일의 가장 마지막!

export ORACLE_BASE=/oracle

export ORACLE_HOME=/oracle/11g

export ORACLE_SID=oracle

export PATH=$PATH:$ORACLE_HOME/bin

여기까지 했으면.. 환경변수가 제대로 등록되었나.. 터미널을 열어서 확인을 해본다..

$ su – oracle

password:

$ echo $ORACLE_BASE

/oracle

$ echo $ORACLE_HOME

/oracle/11g

$ echo $ORACLE_SID

oracle

 제대로 나오면 이상없음..

 #8. 오라클 압축 풀기.

# cd /path/to/zipfile (Oracle 압축 파일을 받은 폴더로 이동한다).
# sudo chown oracle:oinstall Oracle11*.zip
# sudo Oracle11*.zip /home/oracle
# su – oracle
# unzip linux_11gR1b5_database.zip – 파일명은 버전에 따라 달라질 수 있습니다.

# chown -R oracle:oinstall database

 #9.Turn on the display – runInstaller를 실행하기 전에 xdisplay를 일치시켜줘야
한다는
군요…

 root 계정이나 oracle 에서 xdisplay를 사용하려고 하면 실행되지 않는 부분을 해결하기 위해서는 아래의
명령어를 본인의 사용계정에서 설정해줘야 합니다.

 꼭!! 안그러면 실행 중 오류가 뜹니다.

 # sudo -i
 #
xhost +
 # su – oracle
 # DISPLAY=:0.0; export DISPLAY

 
 #10. 오라클 설치 시작.

# su – oracle
# export LANC=C  // 그냥 실행하면 한글이 깨진 설치화면으로 나옵니다. 속편하게 영어로~!!
$ cd /path_to_extracted_files
$ ./runInstaller

#11. 오라클 설치.

아래 그림에서 보시는 것처럼


Oracle Base Location : /oracle


Oracle Home Location : /oracle/11g


Global DataBase Name : oracle

(주의: 다른 값을 넣고 싶은 경우, 위의 export ORACLE_SID=oracle” 설정과 똑같은 값을 넣어주어야 합니다.)

Inventory directory 는 /oracle/oraInventory로 설정

System group name 은 dba로 설정


나머지 과정은 Next~ Next~~를 눌러주면 된다.

 !! 주의 !!

 필자의 환경 – 우분투 10.04 – Desktop 에서 오라클 설치를 진행할 경우, 왜인지 중간에 Assistant 프로세스를 진행할 때 hang이 걸리는 문제가 있었다.
왼쪽의 화면처럼 창이 하나 뜨고 창의 안쪽에는 아무런 화면이나 메시지가 나타나지 않는 문제였다.

 분명 저번에 어떻게 해결한 것 같았는데, 도저히 기억이 나질 않았다. 한참을 고민하다가 답을 찾았다. 아마도 데스크탑 환경에서 실행중인 한 패키지(혹은 라이브러리) 중에서 화면을 띄우는 라이브러리와 뭔가 상성(?)이 맞지 않아서 생기는 문제인 듯 했다.

 그래서 우분투 처음 시작시, 로그인을 할때 시작을 Xterm 모드로 로그인을 하여 데스크탑 설정과 관련된 대부분의 라이브러리/프로세스 실행을 멈추게 하였다.

 그리고 설치를 진행하니 정상적으로 설치가 되는 것을 확인하였다…

 

 쭈욱 넥스트가 나오고 다음 창이 나오면, Script to be executed : 경로에 있는 곳으로 가서 sh(스크립트
파일)을 실행시키자.

 위쪽에 써 있듯이, root 계정으로 실행시켜야 한다.

 #12. Complete Install And System Reboot.

본인 계정으로 로그인 후 터미널을 실행하여 /etc/oratab파일 부분을 수정


보이는 것처럼 oracle:/oracle/11g:N 을 oracle:/oracle/11g:Y 로 변경하면 된다.

#13. 오라클 리스너의 절대 패스 수정

# gedit /oracle/11g/bin/dbstart


 ORACLE_HOME_LISTNER= 부분을

 ORACLE_HOME_LISTNER=/oracle/11g 로 설정해 주면 되겠다.


제……………….. 오라클 실행해보자…

oracle 계정에서

$ lsnrctl start

리스너 시작 후에

SQL> conn oracle as sysdba
Enter password:
Connected to an idle instance.
SQL> startup
ORACLE instance started.

 
 #.14 여기까지가 oracle 의 설치부분이다. 이제 proc를 이용한 프로그램의 컴파일을 위한 부분을 알아보도록 하자.

 예제 proc 프로그램을 이용하여 컴파일을 시도해보자.

 나는 사내에서 사용하는 Pro 프로그램을 사용했다.

 다른 분들은 이곳
 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Database/dbms_programing/OracleProcPrograming_Start

 을 참고하여 알맞은 예제 소스를 구하도록 바란다.(사실 저곳에 나머지 내용이 다 나와있다.)

 필자의 경우 proc 프로그램 컴파일을 실행하면 아래의 오류 메시지가 나왔다.

 /oracle/11g/bin/proc: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory

 libclntsh.so.11.1 파일을 찾을 수가 없다는 내용인데 이는 라이브러리 패스와 심볼릭 링크 설정으로 해결 할 수 있다.
 

먼저 .bash_profile 에 다음을 추가한다. (필자의 경우 ~/.bashrc) 였다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

그래도 안되면 $ORACLE_HOME/lib 에 파일 이 있는지 확인후 없으면 링크한다.

[oracle@localhost lib]$ ln -s
libclntsh.so.10.1  libclntsh.so

 

 그리고 추가로 다음의 문제도 발생했었는데…

Error at line 34, column 11 in file /usr/include/stdio.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 15, column 10 in file /usr/include/_G_config.h
#include <stddef.h>
………1
–More–make: *** [oraquery.o] Error 1
PCC-S-02015, unable to open include file
Error at line 52, column 11 in file /usr/include/wchar.h
# include <stddef.h>
……….1
PCC-S-02015, unable to open include file
Error at line 53, column 11 in file /usr/include/libio.h
# include <stdarg.h>
……….1
PCC-S-02015, unable to open include file
Syntax error at line 332, column 3, file /usr/include/libio.h:
Error at line 332, column 3 in file /usr/include/libio.h
  size_t __pad5;
..1
PCC-S-02201, Encountered the symbol “size_t” when expecting one of the following
:

 이는 /oracle/11g/precomp/admin/pcscfg.cfg 설정을 바꿔줌으로써 해결 할 수 있었다.

 /oracle/11g/precomp/admin/pcscfg.cfg 파일안에  /usr/lib/gcc/i486-linux-gnu/4.4/include 설정을 추가하도록 한다.

 단, 이 설정은 배포판, gcc 버전 등에 따라 바꿔질 수 있으므로 경로를 확인해서 입력하여만 한다.
 
 여기까지 설정이 끝났다면 이제 Proc 를 사용하면 된다. 🙂

installing ubuntu-9.10-netbook_remix on the webmachines v10HC

 이번에 새로 산 웹 머신즈 V10HC 모델에 우분투를 설치하여 사용하더 중 한가지 문제점을 발견하였다.

 바로 무선랜이 안된다는 것.

 구글링을 해보니 다음의 주소에서 해결의 실마리를 얻을 수 있었다.

 http://spac.tistory.com/66?srchid=BR1http%3A%2F%2Fspac.tistory.com%2F66

 하지만 내가 설치한 넷북 전용 버전에서는 약간의 수고를 더 해야만 활용할 수 있었다.

 즉, 다음의 작업들이 실행되어야 한다.

 먼저 아래의 주소에서 리눅스용 무선랜 드라이버를 다운 받는다.

 http://122.146.118.42/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8192SE

 그리고 콘솔창을 열어 다음을 입력한다.

 # sudo su –

 # apt-get install build-essential linux-source-2.6.31
 # cd /usr/src
 # tar xvfz linux-source-2.6.31.tar.bz2

 다운 받은 파일이 있는 디렉토리로 이동한다. 필자의 경우 /home/pchero/다운로드

 # cd /home/pchero/다운로드
 # tar xvfz rtl8192se_linux_2.6.0013.1204.2009.tar.gz
 # cd rtl8192se_linux_2.6.0013.1204.2009
 # make
 # make install

 이로써 설치는 끝이다. 우분투를 재부팅한 후, 무선랜이 활성화가 되는것을 확인할 수 있다.