[linux] Centos 8 - Tibero 설치 (feat. 에러)

dailylifecoding·2022년 1월 4일
0

🍀 시작하기 앞서

  • 테스트 OS: Centos 8
  • 설치할 tibero 버전: 6

다른 블로그에서는 tibero 를 참 쉽게 설치하는데,
나의 개발 서버 같은 경우는 전혀 그렇지 않았다.

그래서 일반적인 tibero 설치 설명 + 에러에 대한 대처 내용이 섞여 있다.

ps. 그런데 Centos 8 은 2022 년 부터는 지원이 끊긴다는데, 계속 써도 되는 건지 모르겠다.
ps. 참고로 Centos 7 과 기본적인 명령어 옵션 주는 법이 조금씩 다를 수 있다. 그럴 때는 구글링!



🍀 필요한 패키지 다운받기

혹시 아래에서 보여주는 패키지가 이미 다운받아져 있다면 이 목차는 통으로 pass하면 된다.


- 패키지 확인

Tibero에서 기본으로 필요한 패키지는 아래와 같다.
참고로 아래에 버전도 씌여있는데, 저 버전보다 상위 버전이면 괜찮다.

필요한 패키지 목록

  • gcc-3.4.6.-11
  • gcc-c++-3.4.6.-11
  • libgcc-3.4.6.-11
  • libstdc++-3.4.6-11
  • libstdc++-devel-3.4.6-11
  • compat-libstdc++-33-3.2.3-47.3
  • libaio-0.3.105-2
  • libaio-devel-0.3.105-2

없는 패키지가 정확히 뭔지 알기 위해서 아래 명령어를 수행했다.


[root@test02 Packages]# \
> yum list --installed | grep -E "gcc|gcc-c|libgcc|libstdc|libstdc++-devel|compat-libstdc++|libaio|libaio-devel"
gcc.x86_64                                  8.3.1-5.1.el8                          @AppStream
gcc-c++.x86_64                              8.3.1-5.1.el8                          @AppStream
gcc-gdb-plugin.x86_64                       8.3.1-5.1.el8                          @AppStream
libaio.x86_64                               0.3.112-1.el8                          @anaconda
libgcc.x86_64                               8.3.1-5.1.el8                          @BaseOS
libstdc++.x86_64                            8.3.1-5.1.el8                          @BaseOS
libstdc++-devel.x86_64                      8.3.1-5.1.el8                          @AppStream

보니까 compat-libstdc++ , libaio-devel 가 안 보인다.



- 패키지 다운로드 시도

그래서 간단하게 yum install 을 해서 다운로드 받으려고 했다.
그런데 이상하게 안된다.

혹시 몰라서 yum update도 시도 했다.
그리고 아래와 같은 오류 문구가 나왔다.

[root@test02 /]# yum update
마지막 메타 데이터 만료 확인 : 0:18:51 전에 20211231() 오후 123656초.
오류:
 문제 1: package cairo-1.15.12-4.el7.x86_64 requires libpng15.so.15()(64bit), but none of the providers can be installed
  - package cairo-1.15.12-4.el7.x86_64 requires libpng15.so.15(PNG15_0)(64bit), but none of the providers can be installed
  - cannot install both libpng-2:1.5.13-8.el7.x86_64 and libpng-2:1.6.34-5.el8.x86_64
  - cannot install the best update candidate for package cairo-1.15.12-3.el8.x86_64
  - problem with installed package libpng-2:1.6.34-5.el8.x86_64
........
........
........
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

참고로 yum 은 apt-get 과 달리 update를 하면 실제로 업그레이드를 수행한다.
그리고 어떤 package가 다른 pacakge에 의존하면서 해당 package가 없다면 자동으로 다운을 받아줘야 한다.
하지만 현재 package를 받아와줄만한 repository가 없어서 자동 다운로드가 안되는 것이다.
물론 다른 이유가 있을 수도 있지만 나한테는 이게 문제였다.

*.so 이란?

A .so file is a "shared object", or library file containing compiled code that can be linked to a program at run-time. It is the Linux equivalent of a Windows DLL (dynamic link library).




- yum의 repository 목록 확인

일단 yum 이 사용하는 repository 가 어디인지 확인부터 했다.
혹시나 해서 현재 yum 이 바라보는 repository 가 어디인지부터 확인하기로 했다.

[root@test02 /]# yum repolist
repo id   repo name
myrepo    CentOS-79

뭔가 사용하는 리포지토리가 있긴 한 모양이다.
일단 repo id 에 해당하는 {repo id}.repo 파일을 읽어 봤다.
repo 파일의 경로는 /etc/yum.repos.d/ 이다.

[root@test02 /]# cd /etc/yum.repos.d/
[root@test02 yum.repos.d]# ls -al
합계 20
drwxrwxrwx.  3 root root   36  529  2021 .
drwxr-xr-x. 98 root root 8192 1231 11:12 ..
drwxr-xr-x.  2 root root 4096  529  2021 bak
-rw-r--r--.  1 root root   73  529  2021 myrepo.repo


[root@test02 yum.repos.d]# cat myrepo.repo
[myrepo]
name=CentOS-79
baseurl=file:///var/myrepo/
gpgcheck=0
enabled=1

baseurl 은 우리 현재 서버의 파일시스템만 뒤져본다.
그래서 외부의 미러 서버에 있는 repository 에 접근하지 못했던 것이다.

사실 이 디렉토리에는 기본으로 Centos 가 제공하는 *.repo 파일이 있는데 보이지가 않는다.
그런데 /etc/yum.repos.d 내부에 bak 이라는 백업 디렉토리를 발견했다.
bak 디렉토리의 파일 목록을 보니 아래와 같다.

앞서 내가 말한 기본제공 *.repo 파일들이 보였다.
내가 그렇게 찾던 기본 Centos repository 파일들이 다 있었다.

이유는 모르겠지만, 일단 bak 에 있는 *.repo 파일들을 모두 /etc/yum.repos.d/에 꺼내고 repolist를 다시 쳐보자.

이제야 평소에 혼자 개발할 때 많이 쓰던 repository 들이 보인다.
이 상태에서 테스트로 wget package 를 yum install 하니 잘되는 것을 확인했다.




- 부재중인 패키지 다운로드 재시도

1. libaio-devel 는 그냥 install로 된다. yum install libaio-devel -y 입력.

2. compat-libstdc++ 는 이상하게 yum으로 다운이 안되서 아래와 같은 방법 사용

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

yum install compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm -y

참고: 자신이 다운받으려는 패키지의 명을 정확히 모르겠다면 yum search {패키지명 일부}

이후에 다시 패키지를 확인해보면 tibero 에 필요한 모든 패키지들이 있는 걸 확인할 수 있다.




🍀 Tibero 설치 및 설정

참고로 아래부터는 TechNet 계정이 필요하다.
회원가입을 먼저하도록 한다.


- Tibero 설치 파일 다운로드

tibero 다운로드 페이지의 화면 하단에 있는 리눅스용 설치 파일인 tar.gz 를 다운 받자.

설치 파일을 linux 에 옮기는 것은 라이센스까지 같이 받고 한번에 진행할 것이니 일단 pass



- Tibero 라이센스 요청

티베로 메인 페이지에서 아래 그림처럼 라이센스 요청을 하면 된다.

Host Name 은 반드시 자기 리눅스 서버의 hostname 으로 작성해야 한다.
참고로 hostname 확인 커맨드는 hostname 이다.

최종적으로 제출하기 버튼을 클릭하면 로딩바가 돌아가면서 작업을 진행하고,
꽤 시간이 걸린 후에, 작업이 완료됐다는 문구가 나온다.

그 이후에 위 그림의 팝업에 기재되어 있는 E-mail로 license.xml 파일이 전송된다.



- 설치파일 및 라이센스 파일 linux에 넣기

나는 티베로 설치 안내서이 블로그의 설치 과정을 많이 참고했다.

설치 안내서 다운로드 : 위 링크에 가서 아래로 스크롤 내리면 아래처럼 나옴


안내서도 좋지만 실제 사람이 해서 성공한 사례가 더 신뢰되서 블로그 글의 방식을 많이 참조했다.
블로그 게시글에서는 설치 경로를 /etc/tibero 디렉토리해서 나도 그렇게 했다.
tar.gz을 복붙하고 나서 해당 경로에서 아래 명령어를 실행한다.

tar -zxvf tibero6-bin-FS07_CS_1912-linux64-174424-opt.tar.gz

이후에 tar.gz 가 압축해제 되면서 디렉토리 구조를 잡게 된다.
해당 디렉토리 구조에서 /etc/tibero/tibero6/license/ 경로에 license.xml(=라이센스 파일)을 넣는다.


- 리눅스 설정 파일 작업하기

1. /etc/sysctl.conf 파일에 아래처럼 추가(혹은 수정)

kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.sem = 10000 32000 10000 10000
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65500

2. /etc/security/limits.conf 파일에 아래처럼 추가(혹은 수정)

tibero           soft    nproc           2047
tibero           hard    nproc           16384
tibero           soft    nofile          1024
tibero           hard    nofile          65536

3. /etc/systemd/logind.conf 파일에서 RemoveIPC=no 주석 해제


4. 환경변수 설정을 위해서 /root/.bashrc 파일 맨 아래에 내용 추가
root 사용자로 모든 작업해서 root 의 home directory 에 설정했다.

export TB_HOME=/etc/tibero/tibero6 
export TB_SID=tibero 
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib 
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin

5. $TB_HOME/config/gen_tip.sh 커맨드 실행후 아래처럼 비슷한 문구가 나오면 성공

Using TB_SID "tibero"
/etc/tibero/tibero6/config/tibero.tip generated
/etc/tibero/tibero6/config/psm_commands generated
/etc/tibero/tibero6/client/config/tbdsn.tbr generated.
Running client/config/gen_esql_cfg.sh
Done.




🍀 Tibero 실행

- tbboot nomount 실행 및 에러

위처럼 설정파일 작업을 모두 끝내고 tbboot nomount 를 하면 뭔가 실행돼야 하는데,
아래와 같은 에러 문구를 보인다.

tbsvr: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

이거 때문에 거의 2시간을 날려먹었는데, 생각보다 해결법은 쉽다.

yum install -y libnsl

아무튼 이러고 나서 다시 tbboot nomount 를 실행하면 잘된다.

참고
혹시 실수로 tbboot만 입력했다면 tbdown을 해서 server 를 끄고 다시 tbboot nomount를 입력한다.



- Tibero client 접속하기

이제 DB에 접속을 할 차례다.
bash에 아래와 같이 입력해서 client에 접속한다.

tbsql sys/tibero

그런데 여기서도 에러가 났다.
위에서 tbboot nomount 와 비슷하게 *.so 파일을 못찾는 에러였다.

error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

아래 커맨드를 치면 해결 된다.

yum install -y ncurses*

다시 tbsql sys/tibero 치면 db에 접속이 된다.



- Tibero 데이터베이스 생성

SQL> create database "tibero"
user sys identified by tibero
maxinstances 8
maxdatafiles 100
character set MSWIN949
national character set UTF16
logfile
  group 1 'log001.log' size 100M,
  group 2 'log002.log' size 100M,
  group 3 'log003.log' size 100M
maxloggroups 255
maxlogmembers 8
noarchivelog
  datafile 'system001.dtf' size 100M autoextend on next 100M maxsize unlimited
  default temporary tablespace TEMP
    tempfile 'temp001.dtf' size 100M autoextend on next 100M maxsize unlimited
    extent management local autoallocate
  undo tablespace UNDO
    datafile 'undo001.dtf' size 100M autoextend on next 100M maxsize unlimited
    extent management local autoallocate;

위처럼 쳤을 때 Database created 문구가 나오면 성공이다.

이후에 quit을 입력해서 DB 접속을 끊자.



- tbboot 실행 및 기본 제공 shell 실행

아래처럼 순서대로 입력한다.

1. tbboot

2. $TB_HOME/scripts/system.sh
실행과정 중 syssyscat의 암호를 입력해야 하는데, 각각 tiberosyscat이다
이후에 계속 [Y/N]으로 물어보는데, 모르겠으면 다 Y 를 누르고 엔터 쳐주자.



- 정상 실행 확인

ps -ef | grep tbsvr 를 실행해서 아래처럼 나오면 정상적으로 동작하는 것이다.



- 참고) tibero 포트 확인

netstat -nap | grep tblistener 를 실행해보면 아래 처럼 나온다.


좌측에 tcp 라고 씌여있는 라인을 잘보면 :8629 라는 포트 번호가 보인다.
서버 외부에서 접근시 서버 아이피와 포트 번호를 알아야 되니 잘 기억해두자.



🍀 참고

  1. centos의 repository 조회, 추가, 삭제
  2. ubuntu의 repositroy 조회, 추가, 삭제
  3. yum, apt의 update, upgrade 명령어 차이점
  4. tibero 설치법 참고 블로그
  5. compat-libstdc++-33 설치법
  6. libnsl.so.1 에러
  7. libncurses.so.5 에러
  8. RPM (Red Hat Package Manager)
  9. centos 7 repository 우회(?)
  10. tibero 종료 명령어는 tbdown 이다.
profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글