[Docker] Docker에 Tibero 설치하기

본 글은 Windows10 WSL2 - Docker 시스템에 Tibero를 설치하여 테스트하는 내용을 소개한다.

고지1 : 기술 내용 변경이 될 가능성

본 글은 2021년 5월에 퇴고를 완료하였다. 그 시점을 기준으로 Windows10에서 제공하는 WSL2, 그리고 Docker를 이용하여 Ubuntu image에서 Tibero를 설치하는 방법을 담고 있다. 시간이 자나 본 글의 내용 중 Windows10, WSL 등의 변경 혹은 TMax 공식 홈페이지 변경 등이 발생하면 본 포스팅과 내용이 맞지 않을 수 있다.

고지2 : 라이선스 저작권자의 요청에 의한 변경

TMaxSoft社가 사업상의 이유로 본 포스팅의 내용 중 특정 내용 변경/삭제 요청 시 일부 내용이 변경될 수 있음을 미리 감안하시고, 필요한 내용은 바로 저장하시기를 추천드린다.

고지3 : Docker와 WSL 사용법 숙지

WSL의 사용 방법, Docker 사용 방법은 해당 내용이 설명된 페이지를 확인 부탁드린다. 해당 내용들에 대해서는 이미 어느 정도 숙지하고 있다고 가정하고 글을 작성하였다.



Tibero DB란?

이번 포스팅에서 Tibero DB란 무엇인가에 대해서는 다루지 않는다. 관련 내용은 Tibero 제품 공식 사이트를 참고하시기 바란다.


설치 환경

이번 포스팅은 Windows10의 WSL2 + Docker를 이용한 설치 환경에 대해 설명하였다. Mac이나 기타 OS에서 설치하는 방법은 요청이 있을 시 매뉴얼을 만들어 보는 걸로!


Tibero DB의 공식 이미지는 없음

2021년 4월 현재, Tibero DB의 공식 이미지는 없다. 일반적으로 Docker에 이미지를 찾을 때는 Docker Hub로 이동하여 검색하여 내려 받게 되는데, Tibero는 공식 이미지랄게 없다. Docker Hub에서 Tibero를 검색하면 아래와 같이 그래도 몇 천 번 정도 데려간 흔적이 있는데 막상 실행해 보면 잘 안된다.

TiberoDB는 공식 이미지가 없다

이런 저런 Tibero DB 설치 관련 글들을 찾아 보고 이유를 알게 되었는데, 뒤에서 다시 설명하겠으나 Tibero는 라이선스(License) 발급 시 해당 컴퓨터의 정보를 가지고 활성화(Activation)하는 구조를 가지고 있기 때문이었다. 또, Demo 버전은 최대 6개월까지 발급받아 사용할 수 있으나 이를 고정된 Docker image로 만드는 건 어려웠다.

그래서 필자가 한 번 정리해 보았다.


일단 Docker에서 Ubuntu 이미지를 데려오기

필자가 다른 블로그들의 Tibero 관련 내용들을 살펴보고 설치하려 여러가지 삽질(?)을 해 보니, 결론적으로 Tibero의 경우는 각 개인이 따로 Docker Image를 보유하는 쪽이 더 나은 선택인거 같았다.

  1. 먼저 Docker에서 Ubuntu 공식 이미지를 이용하여 Image를 생성해 보자.
1
docker pull ubuntu
  1. 생성된 이미지를 확인하자.
1
docker images

필자의 경우는 아래와 같다. 아래와 같이 Ubuntu 이미지가 생성되어 있으면 정상이다.

Docker 내에 생성된 Ubuntu Image


Ubuntu 이미지를 이용하여 TiberoDB를 설치할 Container를 생성

아래의 Docker 컨테이너 생성 명령을 이용하여 TiberoDB를 설치할 컨테이너를 생성한다.

1
docker run -i -t -p 8629:8629 --name tiberodb01 --hostname localhost ubuntu /bin/bash
  • 8629는 TiberoDB의 공식 Port이므로 Forwarding 설정을 한다.
  • Tibero는 라이선스 활성화 시 해당 컴퓨터의 Host Name과 Host ID 정보를 Mapping한다. 그러므로 hostname을 지정한다.

위 명령어 실행 시 생성한 tiberodb01 컨테이너의 bash shell이 나타날 것이다. Docker에서 Ubuntu Image를 처음 컨테이너로 생성하신 분들은 바로 Docker System Update하기 페이지를 참고하셔야 한다.


참고 : 컨테이너에서 나왔다가 다시 진입 할 때

컨테이너에서 작업 후 나왔다가 다시 진입할 때는 아래와 같이 확인하여 진행하면 된다.

  1. Docker의 해당 컨테이너 상황을 확인한다.
1
docker ps -a
  1. 해당 컨테이너가 stop/exit된 상태라면 컨테이너를 실행시켜준다.
1
docker start tiberodb01
  1. 해당 컨테이너가 start/up된 상태라면 해당 컨테이너의 쉘로 진입한다.
1
sudo docker exec --user="root" -it tiberodb01 /bin/bash

현재 컨테이너 시스템의 bit를 확인

Tibero는 x86 - 32 bit 버전과 64 bit 버전을 모두 지원한다. 그러므로, Ubuntu의 시스템 bit를 확인해야 한다. 아래의 명령을 사용하면 해당 컨테이너의 bit를 확인할 수 있다.

1
dpkg -s libc6 | grep Arch

필자가 생성한 컨테이너의 경우는 아래와 같이 출력되었기 때문에 64 bit Tibero DB를 설치하기로 한다.

컨테이너 시스템의 bit 확인


현재 컨테이너 시스템의 host name을 확인

계속 강조하지만 Tibero는 라이선스 활성화 시 컴퓨터의 이름 정보를 가지고 활성화하며, 컴퓨터의 여러 정보들을 가지고 라이선스 정보를 완성하는 걸로 보인다. 그래서 필자는 컨테이너 생성 시 –hostname localhost 라고 명시하여, 컨테이너의 host name을 localhost로 명명하였다. (컨테이너 생성 시 사용자 지정하지 않으면 Ubuntu 마음 대로 명명한다.)

1
hostname

위 명령어로 생성한 컨테이너의 host name을 다시 한 번 확인한다.

컨테이너 시스템의 host name 확인


Tibero DB를 위한 시스템 환경 변수를 추가

이제 본격적으로 Tibero DB를 설치하기 전 시스템에서 사용할 환경 변수를 설정해야 한다. /etc/profile 파일을 열어서 맨 아랫부분에 아래 내용을 추가한다.

1
vi /etc/profile

profile 파일이 열리면 가장 아래 쪽에 아래의 내용들을 추가한다.

1
2
3
4
export TB_HOME=/usr/local/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

필자의 설정은 대략 아래와 같다.

Tibero DB 환경 변수 설정

환경 변수 설정을 시스템에 적용하기 위해서는 아래와 같이 수행하면 된다.

1
2
3
echo $TB_HOME
. /etc/profile
echo $TB_HOME

위를 1 ~ 3까지 한 줄씩 실행하면, 1번에서는 아무 것도 출력되지 않다가 3번에는 /usr/local/tibero6 라고 나타날 것이다.

2번째 줄에서 수행한 바와 같이 . /etc/profile 을 이용하여 변경 내역을 시스템 등록하면 환경 변수들이 정상적으로 적용된다.


Tibero DB를 다운로드하기

자, 이제 잠시 WSL을 내버려두고 웹브라우저에서 TMaxSoft의 공식 웹사이트(https://technet.tmaxsoft.com)로 이동한다.

  1. 회원 가입을 진행하고, 완료되면 로그인한다.

  2. 다운로드 > 데이터베이스 > Tibero > Tibero6 다운로드로 이동한다.
    Tibero6 DB 다운로드

  3. 페이지 하단에 나타나는 OS 중 Linux 선택 > 64 bit > tar.gz를 클릭하여 다운로드한다.
    Tibero6 DB Linux 다운로드


데모용 라이선스를 확보하기

TMaxSoft의 공식 웹사이트(https://technet.tmaxsoft.com)에 아래와 같이 “데모라이선스 신청”이라는 배너가 보이면 클릭한다.

  1. 아래와 같은 배너가 나오면 클릭한다. 2021년 5월 기준, 공식 홈페이지의 첫 페이지에서도 볼 수 있고 다운로드 페이지에서도 볼 수 있다.
    Tibero6 데모 라이선스 신청

  2. 팝업 창이 나타나면 화면의 입력 항목들을 모두 기재한다. Host Name은 아까 컨테이너를 설정했단 localhost로 하고, 사용 용도를 반드시 기재해야 한다.
    데모 라이선스 세부 정보 입력

주의 : 데모 라이선스는 절대 상용 서비스에 사용하지 말라는 경고 문구를 꼭 숙지하시기 바란다. ‘실제 운영시스템’이라 함은 인터넷 상의 불특정 일반 사용자들에게 오픈하여 사용하는 유/무료 서비스를 의미한다. 라이선스 고지 정책을 잘 지켜 국산 DB를 제작하는 회사에 피해 주는 일이 없도록 하자.

  1. 생성이 완료되면 본인의 이메일로 라이선스 파일이 도착한다. 첨부 파일을 다운로드 한다.
    (필자가 국산이니 소중히 아끼자고 설레발 쳐 놨는데 쌩뚱 맞게 메일은 영어로 올 거다. 쌩큐~ 라니!)
    데모 라이선스 첨부파일

다운로드 한 파일 2개를 확인 후 복사하기

  1. Tibero DB의 Linux 버전 tar.gz 파일과 License.xml 파일이 정상적으로 다운로드 되었는 지 확인한다.
    다운로드 한 파일 2개를 확인

  2. 이 두 파일을 사용자의 Window 폴더로 이동한다. 예를 들어, 사용자의 Windows Login 아이디가 “JamesBond”라면 C:\Users\JamesBond 라는 폴더가 있을 것이다. 그 위치에 파일들을 복사한다.

  3. WSL로 돌아가 list 명령을 실행해 보면 해당 파일 2개가 보여야 한다.

  4. 이 파일 2개를 생성한 tiberodb01 컨테이너 내로 복사해야 한다. 아래의 명령을 실행한다.

1
2
docker cp ./license.xml tiberodb01:/usr/local/
docker cp ./tibero6-bin-FS07_CS_2005-linux64-186930-opt-tested.tar.gz tiberodb01:/usr/local/
  1. 다시 tiberodb01 컨테이너로 진입하여 /usr/local/ 디렉토리를 살펴보면 아래와 같이 파일 2개가 복사되어 있어야 한다.
    /usr/local/에 복사된 2개의 파일

자, 이제 설치 준비가 끝났다.


본격적으로 Tibero DB를 설치하기

  1. Tibero DB 설치 및 실행 작업은 모두 root 계정으로 실행해야 한다. 먼저 root 권한을 획득한다.
1
su -
  1. 다운로드한 tar.gz 파일의 압축을 해제한다. /usr/local/ 디렉토리에서 아래의 명령을 실행하여 압축을 해제한다.
1
2
cd /usr/local/ 
tar -xzvf tibero6-bin-FS07_CS_2005-linux64-186930-opt-tested.tar.gz
  1. 압축 해제 후 가장 먼저 할 일은 License.xml 파일을 라이선스 폴더에 이동하는 것이다. /usr/local/ 디렉토리에서 License.xml 파일을 이동한다.
1
2
cd /usr/local/ 
mv ./License.xml ./tibero6/license/
  1. 다음은 실행 시 사용할 환경 파일을 설정해야 한다. /usr/local/tibero6/config로 이동하여 gen_tip.sh 를 실행한다. 이 명령을 실행하면 tibero.tip, psm_commands, tbdsn.tbr 등의 환경 설정 파일들을 자동으로 생성한다.
1
2
cd /usr/local/tibero6/config
./gen_tip.sh
  1. 다음은 필자가 삽질(?)하여 찾은 의존성 패키지 모듈을 설치한다. 필자가 왜 이 패키지들을 설치했는지 궁금하신 분들은 아래를 건너 뛰고 진행하면 아시게 될 거다. 일단 모두의 안녕과 평화를 위해 설치하고 진행하기로 한다.
1
2
cd /usr/local/tibero6/bin
apt install libaio1 libncurses5

이제 Tibero6 DB의 기본 설치가 완료되었다.


Tibero DB를 실행하기

  1. 다음은 /usr/local/tibero6/bin 디렉토리로 이동하여 실제 실행 및 기본 Schema 설정을 해주어야 한다. 아래의 명령을 실행하여 Tibero DB를 실행시킨다. (이 경우에도 su -로 root 권한을 획득하여 진행해야 한다.)
1
2
cd /usr/local/tibero6/bin
tbboot nomount

여기에서 다양한 종류의 오류가 발생할 수 있다. 필자의 Step을 그대로 따라왔다면 오류가 발생하지 않아야 한다. (필자는 이미 5번 넘게 컨테이너 통째로 설치/삭제를 한 후 본 글을 정리하기 때문이다.)

오류가 발생하는 경우 굉장히 난감할 것이다. TMaxSoft의 문서나 게시판에서 오류를 해결할 마땅한 방안들 혹은 정보들을 찾을 수 없기 때문이다. TMaxSoft의 사업 모델이 그러하니, 이해해야 한다. 그러므로, 일단 필자가 쓴 본 포스팅 대로 진행하는게 좋다. 이후 회사에서 Tibero DB 구입 결정이 나면 이후에 기술지원을 마음껏 이용할 수 있으니 그런 부분들(오류 메시지 해결이 어려운 부분)은 미리 양지하시기 바란다.

여러 종류의 에러가 발생할 수 있지만, 필자가 모두 경험해 보지는 못했을 테니 필자가 경험한 내용 중 하나를 공유한다.

tbboot 이미 실행 중인 경우

※참고 : Mismatch host id 오류가 발생하는 경우 License 파일의 정보가 뭔가 문제가 있다는 소리다. 라이선스 파일을 다시 신청하여 다운로드해야 한다. 이때 꼭 host name을 확인하여 정확히 입력해야 한다.

  1. tbboot를 nomount 모드로 실행에 성공했다면, 다음은 Database를 구동해야 한다. 아래의 명령을 수행한다.
1
2
cd /usr/local/tibero6/bin
tbsql sys/tibero
  1. tbsql이 성공적으로 실행되면 다음은 기본 Schema를 설정해줘야 한다. Tibero는 왜 이 작업을 사용자들이 수동으로 하도록 했는 지 잘 모르겠지만, 아무튼… 해야 한다. 필자가 웹을 뒤져 얻은 정보는 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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를 생성할 수 있다. 아래는 실제로 필자가 진행한 create database 및 schema 설정이다. Database created가 출력되면 성공이다.

tibero라는 이름의 database 생성

※참고 : Tiebro DB의 Demo 라이선스에서는 Database 이름을 tibero만 허용하는 듯하다. 다른 이름으로 생성 시도 시 에러가 발생한다.

  1. Schema 설정을 하고 나면 quit 명령으로 Database에서 일단 나와야 한다.
1
SQL > quit;
  1. 다음은 Tibero에 기본 탑재된 SQL을 실행하여 Role, User, View 등을 생성해야 한다.
1
2
3
su -
/usr/local/tibero6/scripts
./system.sh

system.sh를 실행하면 두 번의 암호를 입력하라는 프롬프트가 나타난다. 아래를 참고하여 진행한다.

  • sys의 기본 암호 : tibero
  • syscat의 기본 암호 : syscat

위 패스워드들을 입력하고 나면, 3 ~ 4 차례 선택이 나타나는데 모두 Y를 입력하고 실행을 완료하면 된다.


Tibero Database에 테이블을 생성하고, 데이터를 입력/조회하기

  1. Tibero DB에서 tbboot의 nomount 모드는 database를 설정할 때 사용하는 듯 하다. 테이블을 생성하고, 데이터를 다룰 때는 nomount 모드가 아니라 normal 모드를 사용해야 한다.

필자도 자세한 세부 내용은 숙지하지 못하였으므로, 자세한 내용은 Tibero DB 사용자 매뉴얼을 참고한다.

  1. 이제 tbboot의 normal mode로 Tibero DB에 진입해야 한다. 위에서 진행했던 내용이므로 이번엔 한 번에 진행한다. 일단 tbboot시 nomount를 사용하지 않고 실행한다. 이후 tbsql을 실행한다.
1
2
3
cd /usr/local/tibero6/bin
tbboot
tbsql sys/tibero
  1. 먼저 CREATE TABLE로 데이터테이블을 생성한다.
1
2
SQL > CREATE TABLE TiberoTableTest
2 (ID NUMBER, NAME VARCHAR(20));
  1. TiberoTableTest 데이터테이블에 테스트 데이터를 추가한다.
1
2
SQL > INSERT INTO TiberoTableTest(ID, NAME) VALUES(1, 'name1');
SQL > INSERT INTO TiberoTableTest(ID, NAME) VALUES(2, 'name2');
  1. 데이터 테이블을 조회한다.
1
SQL > select * from TiberoTableTest;

필자가 입력한 결과는 아래와 같다.

테이블을 생성하고, 데이터 입력 및 조회

데이터테이블 조회가 잘 된다면 Tibero DB가 정상작동하고 있음을 알 수 있다.


Tibero Studio로 GUI를 만끽해보기

다른 Database들과 마찬가지로 Tibero 역시 GUI 관리 도구를 지원한다. GUI 관리도구를 이용해서 시스템의 세부 내용을 잘 모르는 사람이라도 Data Query를 할 줄 알면 내용을 볼 수 있다.

  1. 먼저 TMaxSoft의 공식 웹사이트(https://technet.tmaxsoft.com)로 이동하여, 다운로드 > 데이터베이스 > Tibero 페이지로 이동한다.

  2. 아래와 같이 페이지 하단에 Tibero Studio가 표시된다. 티베로 스튜디오는 Windows용 Application이다.

티베로 스튜디오 다운로드

  1. WSL과 Docker, 그리고 tiberodb01 컨테이너가 실행되고 있는 상태에서, 아래와 같이 해당 컨테이너에 접속하는 정보들을 입력한다.

티베로 스튜디오 연결 정보 입력

  1. 정상적으로 접속되면 아래와 같이 DB의 세부 내용이 표시된다.

티베로 스튜디오 연결 성공

  1. SQL 구문들도 잘 작동한다.

SQL 구문도 잘 작동한다


이후 필자도 해봐야 아는 것들

  1. Tibero의 기본 구문들은 Oracle과 같다는데… 음… 필자 입장에선 낯설었다. 조금 익숙해질 시간이 필요하다. 어쨌든 이제 아무때나 Docker를 켜서 Tibero를 구동시킬 수 있게 되었으니 일단 만족한다.
  2. TiberoDB 사용자 매뉴얼의 양이 너무 방대해서 찾아 보기가 어려웠다. Web App 개발을 위해 Data Connection을 사용하여 연동하는 방법, ODBC 연결하는 방법 등은 필자도 조금 더 멘땅에 헤딩을 해보고 확인하겠다.

참고자료