Tibero 6 Single Installation
사전 준비
의존 패키지 (root 권한 필요)
다음 패키지들의 해당 버전 이상이 설치되어 있어야 한다.
- 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
시스템 사용자 생성 및 디렉토리 설정
시스템 사용자 생성 및 sh 프로파일 설정
시스템 사용자 생성 (root 권한 필요)
선택사항으로 DBA 또는 DB 사용자가 원하는 시스템 계정, 그룹으로 지정할 수 있다.
관리 목적으로 지정하는 것이므로 설치하는 시스템에 맞게 시스템 사용자, 그룹, 보조 그룹, uid 등을 설정해서 사용한다.
useradd tibero -g dba -u 8629
tibero 시스템 계정 프로파일 설정
Tibero 계정으로 sh 에 접근한 뒤 vi ~/.bash_profile
파일 맨 아래에 다음 내용을 추가한다.
# Java ENV
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$PATH
# Tibero RDBMS ENV
export TB_HOME=/app/tibero/tibero6
export TB_SID=tibero # DB_NAME과 동일하게 설정하는 것이 좋으며 설정하고자 하는 DB_NAME에 따라 "tibero" 값을 지정한다.
export PATH=$TB_HOME/bin:$TB_HOME/client/bin:$JAVA_HOME:$PATH
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH
# Frequently used and useful aliases for Tibero
alias tbcfg='cd $TB_HOME/config'
alias tbcli='cd $TB_HOME/client/config'
alias tblog='cd /logs/tibero'
alias tbhome='cd $TB_HOME'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcliv='vi $TB_HOME/client/config/tbdsn.tbr'
profile 파일을 저장한 뒤, sh session에 다시 접속하거나 . ~/.bash_profile
명령을 수행하여 변경 사항을 적용한다.
디렉토리 권한 설정 (root 권한 필요)
다음과 같이 엔진, 로그, 데이터파일 경로를 구분하여 설치를 진행한다.
선택사항이며, I/O 경합을 줄이거나 각 디렉토리에 생성되는 파일의 중요도에 따라 구분하여 지정할 수 있다.
- Tibero 엔진 경로
- /app/tibero/tibero6
- Tibero 서버 로그 경로
- /logs/tibero
- Tibero 데이터파일 경로
- /data/tibero
chown tibero:dba /app/tibero
chown tibero:dba /logs/tibero
chown tibero:dba /data/tibero
JDK 설치
OpenJDK 설치
Tibero RDBMS 서버는 java 의존성이 없다. RDBMS 서비스만 제공하는 호스트에는 굳이 설치하지 않아도 된다.
tbexport, tbimport 등 java를 이용하는 client 유틸리티를 사용하기 위해서 설치하는 것으로 선택사항이다.
OpenJDK tarball 준비
아래 링크에서 설치하고자 하는 버전의 Java Development Kit 설치한다. (jdk-7u80-linux-x64.tar.gz 기준으로 설치 진행)
Java SE 7 Archive Downloads Link
JDK 설치
다음 경로에 바이너리를 압축 해제하고, symbolic link 를 생성한 뒤 사용한다.
- 설치 경로
- /app/jdk/jdk1.7.0_80
- Symbolic link 경로
- /app/jdk
JDK 바이너리 압축 해제
tar -xvzf jdk-7u80-linux-x64.tar.gz
mv jdk1.7.0_80 /app/jdk/1.7.0_80
symbolic link 생성
cd /app/jdk
ln -s ./1.7.0_80/* .
Linux 커널 설정 (root 권한 필요)
vi /etc/sysctl.conf
파일에 다음 내용을 추가한다. 시스템 메모리가 8GB이고 Tibero RDBMS가 사용할 최대 메모리가 4GB인 경우를 기준으로 설정한다.
kernel.sem = 10000 32000 10000 10000
kernel.shmmax = 4294967296 # 시스템의 물리적인 메모리 절반 (byte 단위)
kernel.shmall = 1048576 # ceil(shmmax/PAGE_SIZE)
kernel.shmmni = 4096
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 1024 65500
sysctl -p
명령으로 변경 사항 적용
Linux ulimit 설정 (root 권한 필요)
vi /etc/security/limits.conf
파일에 다음 내용을 추가한다.
tibero soft nofile 1024
tibero hard nofile 65536
tibero soft nproc 2047
tibero hard nproc 16384
tibero soft memlock unlimited
tibero hard memlock unlimited
Tibero 6 설치
설치 파일 준비
Tibero 6 binary 및 license를 준비하여 Tibero RDBMS 서버 호스트, tibero 계정 홈 경로에 업로드한다.
Tibero 6 binary
아래 URL에서 설치하고자 하는 버전 선택 후 다운로드 (Tibero 6 FixSet06 버전 기준으로 설치 진행)
Tibero Downloads Link
Tibero 6 license
정식 라이센스가 없는 경우,
Tmax TechNet 에 접속하여 로그인한 뒤 [데모라이선스 신청] 버튼을 클릭하여 데모 라이센스를 발급받는다.
Tibero 6 엔진 설치
아래 명령을 수행하면 /app/tibero/tibero6
경로에 tibero 엔진이 설치된다.
tar -xvzf ~/tibero6-bin-FS06-linux64-xxxxxx-opt-tested.tar.gz -C /app/tibero/.
technet에는 운영체제 별로 사전 빌드된 바이너리 파일을 제공하기 때문에 압축 해제만 하면 해당 경로에 pre-compiled, executable 파일이 생성된다.
이어서 라이센스 파일을 엔진 경로 내에 위치시킨다.
mv ~/license.xml $TB_HOME/license/.
Tibero 설정
generate tip file
다음 스크립트를 실행하여 Tibero Init Parameter (tip) 파일을 생성한다.
$TB_HOME/config/gen_tip.sh
위 스크립트가 정상적으로 실행된 경우
---
Using TB_SID "tibero"
/app/tibero/tibero6/config/tibero.tip generated
/app/tibero/tibero6/config/psm_commands generated
/app/tibero/tibero6/client/config/tbdsn.tbr generated.
Running client/config/gen_esql_cfg.sh
Done.
---
위와 같이 $TB_SID.tip,tbdsn.tbr,psm_commands 파일들이 생성된다.
문제가 발생하는 경우 시스템 사용자 프로파일이 적용이 되었는지 Tibero 바이너리가 호스트 서버의 운영체제에 맞는지 확인한다.
tip 파일 설정
vi $TB_HOME/config/$TB_SID.tip
파일을 수정하여 Tibero 엔진 설정을 마무리한다.
여기까지 모든 과정을 그대로 따라했다면 다음과 같이 생성되었을 것인데
DB_NAME=tibero
LISTENER_PORT=8629
CONTROL_FILES="/app/tibero/tibero6/database/tibero/c1.ctl"
#CERTIFICATE_FILE="/app/tibero/tibero6/config/svr_wallet/tibero.crt"
#PRIVKEY_FILE="/app/tibero/tibero6/config/svr_wallet/tibero.key"
#WALLET_FILE="/app/tibero/tibero6/config/svr_wallet/WALLET"
#ILOG_MAP="/app/tibero/tibero6/config/ilog.map"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=2G
MEMORY_TARGET=4G
다음과 같이 수정한다.
DB_NAME=tibero
LISTENER_PORT=8629
#CERTIFICATE_FILE="/app/tibero/tibero6/config/svr_wallet/tibero.crt"
#PRIVKEY_FILE="/app/tibero/tibero6/config/svr_wallet/tibero.key"
#WALLET_FILE="/app/tibero/tibero6/config/svr_wallet/WALLET"
#ILOG_MAP="/app/tibero/tibero6/config/ilog.map"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=2G
MEMORY_TARGET=4G
CONTROL_FILES="/data/tibero/c1.ctl","/data/tibero/c2.ctl"
DB_CREATE_FILE_DEST="/data/tibero"
LOG_DEFAULT_DEST="/logs/tibero"
CONTROL_FILES
데이터베이스의 컨트롤 파일 경로를 지정한다. comma 로 구분하여 여러 경로를 지정할 수 있다. 물리적으로 분리된 경로에 이중화하는 것을 권장.
DB_CREATE_FILE_DEST
데이터파일 생성 구문에서 절대경로를 기재하지 않고 파일 명만 기재하는 경우 해당 데이터파일이 생성되는 경로를 지정한다.
LOG_DEFAULT_DEST
Tibero RDBMS 서버 로그가 생성되는 경로를 지정한다.
DB_NAME
데이터베이스 이름을 지정한다. gen_tip.sh
수행 시, 프로파일에 기재한 $TB_SID 명을 기본적으로 사용한다.
LISTENER_PORT
클라이언트가 TCP/IP 를 이용해 데이터베이스에 접근하는 경우 접속할 수 있는 포트를 지정한다. RDBMS 서버의 ${HOSTNAME}, ${DB_NAME} 과 함께 조합되어 데이터베이스를 유일하게 식별할 수 있도록 해야한다.
MAX_SESSION_COUNT
데이터베이스에 접속할 수 있는 최대 클라이언트 세션 수를 지정한다.
TOTAL_SHM_SIZE
Tibero instance의 여러 프로세스들이 공유할 수 있는 메모리 영역(Buffer Cache, Library Cache 등)의 크기를 지정한다.
MEMORY_TARGET
SGA, PGA를 포함하여 Tibero instance가 사용할 수 있는 최대 메모리 영역의 크기를 지정한다.
Tibero nomount 기동 및 데이터베이스 생성
다음과 같이 tbboot nomount
명령을 수행하여 Tibero RDBMS instance 를 실행한다.
tbboot nomount
---
$ tbboot nomount
Listener port = 8629
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
---
정상적으로 nomount 모드로 기동이 된 경우 위와 같은 메시지가 출력된다.
이어서 tbsql 유틸리티를 이용해 Tibero instance에 접속한 뒤 데이터베이스를 생성한다.
nomount 모드에서는 마스터 계정인 ‘sys’ 로만 접근할 수 있으며, 데이터베이스가 생성되지 않은 상태에서는 초기 password ‘tibero’ 로 설정돼 있다.
tbsql sys/tibero
정상적으로 접속되면 아래와 같이 SQL 프롬프트가 출력된다.
---
$ tbsql sys/tibero
tbSQL 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Connected to Tibero.
SQL>
---
다음과 같이 CREATE DATABASE DDL 구문을 수행하여 데이터베이스를 생성한다.
create database
user sys identified by tibero
character set UTF8 -- UTF8, EUCKR, ASCII, MSWIN949
logfile group 0 ('redo01.log','redo02.log') size 32M,
group 1 ('redo11.log','redo12.log') size 32M,
group 2 ('redo21.log','redo22.log') size 32M
maxdatafiles 1024
maxlogfiles 100
maxlogmembers 8
noarchivelog
datafile 'system01.dbf' size 128M autoextend on next 32M maxsize 32G
default tablespace USR
datafile 'usr01.dbf' size 128M autoextend on next 32M maxsize 32G
default temporary tablespace TEMP
tempfile 'temp01.dbf' size 128M autoextend on next 32M maxsize 32G
extent management local AUTOALLOCATE
undo tablespace UNDO
datafile 'undo01.dbf' size 128M autoextend on next 32M maxsize 32G
extent management local AUTOALLOCATE
;
정상적으로 데이터베이스가 생성되면 다음과 같은 메시지가 출력되며 instance 가 종료된다.
---
Database created.
SQL>
---
다음과 같이 quit
또는 exit
명령을 통해 SQL 프롬프트를 빠져나온 뒤 tbboot
명령을 통해 Tibero RDBMS instance 를 NORMAL 모드로 기동한다.
tbboot
---
SQL> quit
Disconnected.
$ tbboot
Listener port = 8629
Tibero 6
TmaxData Corporation Copyright (c) 2008-. All rights reserved.
Tibero instance started up (NORMAL mode).
---
Normal 모드 기동이 정상적으로 완료되었으면 $TB_HOME/scripts/system.sh
스크립트를 실행해
default schema 및 system에 대한 table과 view 를 생성한다. ‘sys’, ‘syscat’ schema에 대한 패스워드를 입력해야만 하는데 초기 비밀번호는 다음과 같다.
- username: sys
- password: tibero
- username: syscat
- password: syscat
system user & role, system table, TPR tables 생성 및 dbms_stats job을 job Scheduler에 등록할 것인지 여부를 판단하여 ‘Y’ or ‘N’ 중에서 입력하면 되는데 모두 ‘Y’를 입력한다.
$TB_HOME/scripts/system.sh
---
$ $TB_HOME/scripts/system.sh
Enter SYS password:
tibero
Enter SYSCAT password:
syscat
.
.
Create default system users & roles?(Y/N):
y
.
.
Create system tables related to profile?(Y/N):
y
.
.
Create TPR tables?(Y/N):
y
.
.
Register dbms_stats job to Job Scheduler?(Y/N):
Y
.
.
Done.
For details, check /app/tibero/tibero6/instance/tibero/log/system_init.log.
---
위와 같이 system.sh
스크립트가 종료되면, sys.log
& system_init.log
를 확인하거나 tbsql sys/tibero
명령으로 데이터베이스에 접근하여 정상적으로 default schema 및 system table & view를 조회하여 설치가 정상적으로 완료되었는지 확인한다.