다른 블로그에서는 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 전에 2021년 12월 31일 (금) 오후 12시 36분 56초.
오류:
문제 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 가 어디인지부터 확인하기로 했다.
[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 5월 29 2021 .
drwxr-xr-x. 98 root root 8192 12월 31 11:12 ..
drwxr-xr-x. 2 root root 4096 5월 29 2021 bak
-rw-r--r--. 1 root root 73 5월 29 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 에 필요한 모든 패키지들이 있는 걸 확인할 수 있다.
참고로 아래부터는 TechNet 계정이 필요하다.
회원가입을 먼저하도록 한다.
tibero 다운로드 페이지의 화면 하단에 있는 리눅스용 설치 파일인 tar.gz 를 다운 받자.
설치 파일을 linux 에 옮기는 것은 라이센스까지 같이 받고 한번에 진행할 것이니 일단 pass
티베로 메인 페이지에서 아래 그림처럼 라이센스 요청을 하면 된다.
Host Name 은 반드시 자기 리눅스 서버의 hostname 으로 작성해야 한다.
참고로 hostname 확인 커맨드는 hostname
이다.
최종적으로 제출하기
버튼을 클릭하면 로딩바가 돌아가면서 작업을 진행하고,
꽤 시간이 걸린 후에, 작업이 완료됐다는 문구가 나온다.
그 이후에 위 그림의 팝업에 기재되어 있는 E-mail로 license.xml 파일이 전송된다.
나는 티베로 설치 안내서와 이 블로그의 설치 과정을 많이 참고했다.
설치 안내서 다운로드 : 위 링크에 가서 아래로 스크롤 내리면 아래처럼 나옴
안내서도 좋지만 실제 사람이 해서 성공한 사례가 더 신뢰되서 블로그 글의 방식을 많이 참조했다.
블로그 게시글에서는 설치 경로를 /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.
위처럼 설정파일 작업을 모두 끝내고 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
를 입력한다.
이제 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에 접속이 된다.
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 접속을 끊자.
아래처럼 순서대로 입력한다.
1. tbboot
2. $TB_HOME/scripts/system.sh
실행과정 중 sys
와 syscat
의 암호를 입력해야 하는데, 각각 tibero
와 syscat
이다
이후에 계속 [Y/N]
으로 물어보는데, 모르겠으면 다 Y
를 누르고 엔터 쳐주자.
ps -ef | grep tbsvr
를 실행해서 아래처럼 나오면 정상적으로 동작하는 것이다.
netstat -nap | grep tblistener
를 실행해보면 아래 처럼 나온다.
좌측에 tcp 라고 씌여있는 라인을 잘보면 :8629
라는 포트 번호가 보인다.
서버 외부에서 접근시 서버 아이피와 포트 번호를 알아야 되니 잘 기억해두자.
안녕하세요 혹시 티베로 데이터베이스 생성을 하면 처음에는
TBR-2131: Generic I/O error.
가 발생해서 sql 종료 후 tbdown clean -> tbboot nomount 로 재실행해줬습니다. 그리고나서 다시 데이터베이스 생성 sql을 작성하면
TBR-1001: Unable to create file /home/tibero6/database/tibero/c1.ctl.
에러가 발생하는데, 파일 권한 관련해서 애초에 chmod -R 777 /home 으로 줬는데도 계속 에러가 나는데 이부분에 대해서 아시는게 있을까요...??
감사합니다.