Tibero 6 TAC Installation
사전 준비
시스템 사용자 생성 (root 권한 필요)
관리 목적으로 지정하는 것이므로 설치하는 시스템에 맞게 시스템 사용자, 그룹, 보조 그룹, 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 6 Env
export TB_HOME=/app/tibero/tibero6
export TB_SID=tibero1 ## DB Instance 별 ID. 두번째 노드는 tibero2
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$PATH
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH
#export TB_PROF_DIR=$TB_HOME/bin/prof
export TBINARY_PATH=/app/tibero/tbinary
# Tibero TBCM Env
export CM_SID=tbcm1 ## Cluster Manager ID. 두번째 노드는 tbcm2
export CM_HOME=/app/tibero/tibero6
# Tibero aliases
alias tbhome='cd $TB_HOME'
alias tbbin='cd $TB_HOME/bin'
alias tblog='cd /logs/tibero'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcli='cd ${TB_HOME}/client/config'
alias tbcliv='vi ${TB_HOME}/client/config/tbdsn.tbr'
alias tbi='cd $TBINARY_PATH'
alias tm='cd $TBINARY_PATH/monitor;monitor;cd -'
# User Env
set -o vi
stty erase ^H
profile 파일을 저장한 뒤, sh session에 다시 접속하거나 . ~/.bash_profile
명령을 수행하여 변경 사항을 적용한다.
raw device 및 디렉토리 권한 설정 (root 권한 필요)
Tibero TAC 는 공유 디스크를 기반으로 하기 때문에 데이터파일이 저장될 경로는 모든 DB 노드가 접근가능해야한다. 공유 파일시스템으로도 구성할 수 있지만 raw device 를 기반으로 설치를 진행하며 아래와 같이 raw device 들이 tibero 계정 소유이어여 한다.
ls /dev/tbdata
rlv10g00 rlv10g05 rlv1g00 rlv1g05 rlv1g10 rlv1g15 rlv1g20 rlv1g25 rlv30g00 rlv30g05 rlv5g00 rlv5g05 rlv5g10 rlv5g15
rlv10g01 rlv10g06 rlv1g01 rlv1g06 rlv1g11 rlv1g16 rlv1g21 rlv1g26 rlv30g01 rlv30g06 rlv5g01 rlv5g06 rlv5g11 rlv5g16
rlv10g02 rlv10g07 rlv1g02 rlv1g07 rlv1g12 rlv1g17 rlv1g22 rlv1g27 rlv30g02 rlv30g07 rlv5g02 rlv5g07 rlv5g12 rlv5g17
rlv10g03 rlv10g08 rlv1g03 rlv1g08 rlv1g13 rlv1g18 rlv1g23 rlv1g28 rlv30g03 rlv30g08 rlv5g03 rlv5g08 rlv5g13 rlv5g18
rlv10g04 rlv10g09 rlv1g04 rlv1g09 rlv1g14 rlv1g19 rlv1g24 rlv1g29 rlv30g04 rlv30g09 rlv5g04 rlv5g09 rlv5g14 rlv5g19
다음과 같이 엔진, 로그, 데이터파일 경로를 구분하여 설치를 진행한다.
선택사항이며, 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
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 에 접속하여 로그인한 뒤 [데모라이선스 신청] 버튼을 클릭하여 데모 라이센스를 발급받는다. TAC cluster 를 구성하기 위해서는 Enterprise 라이센스가 필요하다.
Tibero 6 엔진 설치
아래 명령을 수행하여 /app/tibero/tibero6
경로에 tibero 엔진을 설치한다.
tar -xvzf ~/tibero6-bin-FS06-linux64-xxxxxx-opt-tested.tar.gz -C /app/tibero/.
이어서 라이센스 파일을 엔진 경로 내에 위치시킨다.
mv ~/license.xml $TB_HOME/license/.
Tibero 설정
generate tip file
다음 스크립트를 실행하여 Tibero Init Parameter (tip) 파일을 생성한다.
$TB_HOME/config/gen_tip.sh
$TB_SID.tip 파일 설정
vi $TB_HOME/config/$TB_SID.tip
파일을 아래와 같이 수정하여 Tibero instance를 설정한다.
DB_NAME=tibero # TB_SID 값을 받아오는데 tibero1,2 -> tibero 로 변경
LISTENER_PORT=8629
CONTROL_FILES="/dev/tbdata/rlv1g01" # local 파일시스템이 아닌 raw device 경로로 변경
#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_CREATE_FILE_DEST="/data/tibero"
LOG_DEFAULT_DEST="/logs/tibero"
CLUSTER_DATABASE=Y
THREAD=0 ## node2 의 경우 1
UNDO_TABLESPACE=UNDO0 ## node2 의 경우 UNDO1
LOCAL_CLUSTER_ADDR=192.168.179.81 ## node2의 경우 192.168.179.82
CM_PORT=10010
CM_UI_PORT=10010
LOCAL_CLUSTER_PORT=10020
CM_NAME=tbcm1 ## node2 의 경우 tbcm2
CM_RESOURCE_FILE=/app/tibero/tbcm1_resources
CONTROL_FILES
데이터베이스의 컨트롤 파일 경로를 지정한다. gen_tip.sh
을 수행하면 로컬 파일시스템에 기본 경로로 설정해주는데 raw device 로 변경해주어야 한다.
DB_CREATE_FILE_DEST
TAC에서 raw device 를 사용하는 경우 데이터 파일이 생성되지는 않지만 .passwd
파일이 생성되므로 별도 지정을 해주는 것이 좋다.
LOG_DEFAULT_DEST
Tibero RDBMS 서버 로그가 생성되는 경로를 지정한다.
DB_NAME
데이터베이스 이름을 지정한다. gen_tip.sh
수행 시, 프로파일에 기재한 $TB_SID 명을 기본적으로 사용한다. Instance 식별자가 아닌 모든 instance가 공유하는 DB_NAME을 적어야 하므로 수정해야한다.
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가 사용할 수 있는 최대 메모리 영역의 크기를 지정한다.
CLUSTER_DATABASE
Clustering 을 하는지 여부를 지정한다. Y
로 지정하는 경우 cluster manager 프로세스의 존재를 확인하게 된다.
THREAD
instance 별로 thread id 를 지정한다.
UNDO_TABLESPACE
instance 별로 사용할 UNDO_TABLESPACE 명을 지정한다.
LOCAL_CLUSTER_ADDR
DB instance 간의 통신을 담당할 IP 주소를 기입힌다.
CM_PORT
& CM_UI_PORT
tbcm과 tibero 인스턴스 간의 통신을 위한 포트를 지정한다.
LOCAL_CLUSTER_PORT
tibero 인스턴스 간의 통신을 위한 포트를 지정한다.
CM_NAME
해당 tibero instance가 관리를 위임하는 tbcm 이름을 기입한다.
CM_RESOURCE_FILE
TAC를 구성하기 위해서는 네트워크 등 여러 리소스를 활용해야하는데 이 리소스 정보를 기록할 바이너리 파일 경로를 지정한다.
$CM_SID.tip 파일 설정
vi $TB_HOME/config/$CM_SID.tip
파일을 아래와 같이 수정하여 tbcm을 설정한다.
CM_NAME=tbcm1 ## node2의 경우 tbcm2
CM_UI_PORT=10010
CM_RESOURCE_FILE=/app/tibero/tbcm1_resources ## node2의 경우 /app/tibero/tbcm2_resources
CM_HEARTBEAT_EXPIRE=30
CM_WATCHDOG_EXPIRE=25
TAC 클러스터 생성
아래와 같이 tbcm -b
명령을 통해 tbcm을 기동한 뒤 cmrctl
명령을 이용해서 tibero 클러스터에 필요한 리소스를 추가한다.
node1
tbcm -b
cmrctl add network --nettype private --ipaddr 192.168.179.81 --portno 10030 --name prvnet
cmrctl add network --nettype public --ifname enp1s0 --name pubnet
cmrctl add cluster --incnet prvnet --pubnet pubnet --cfile "/dev/tbdata/rlv1g00" --name cls
cmrctl start cluster --name cls
cmrctl add service --name tac --cname cls
cmrctl add db --name $TB_SID --svcname tibero --dbhome $TB_HOME
node2
tbcm -b
cmrctl add network --nettype private --ipaddr 192.168.179.82 --portno 10030 --name prvnet
cmrctl add network --nettype public --ifname enp1s0 --name pubnet
cmrctl add cluster --incnet prvnet --pubnet pubnet --cfile "/dev/tbdata/rlv1g00" --name cls
cmrctl start cluster --name cls
cmrctl add db --name $TB_SID --svcname tibero --dbhome $TB_HOME
Tibero nomount 기동 및 데이터베이스 생성
다음과 같이 node1에서 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에 접속한 뒤 데이터베이스를 생성한다. TAC는 instance-level 가용성을 보장하는 것으로 DB 자체는 하나이다. CREATE DATABASE
DDL을 이용한 데이터베이스 생성은 1번 노드에서 한번만 수행한다.
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 ('/dev/tbdata/rlv1g02','/dev/tbdata/rlv1g03') size 1024M,
group 1 ('/dev/tbdata/rlv1g04','/dev/tbdata/rlv1g05') size 1024M,
group 2 ('/dev/tbdata/rlv1g06','/dev/tbdata/rlv1g07') size 1024M
maxdatafiles 1024
maxlogfiles 100
maxlogmembers 8
noarchivelog
datafile '/dev/tbdata/rlv5g00' size 5120M autoextend off
default tablespace USR
datafile '/dev/tbdata/rlv1g08' size 1024M autoextend off
default temporary tablespace TEMP
tempfile '/dev/tbdata/rlv30g00' size 30720M autoextend off
extent management local AUTOALLOCATE
undo tablespace UNDO
datafile '/dev/tbdata/rlv30g01' size 30720M autoextend off
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/tpr_create_obj.sh
, $TB_HOME/scripts/tpr_create_obj.sql
스크립트의 datafile 부분을 다음과 같이 수정한다.
vi $TB_HOME/scripts/tpr_create_obj.sh
#! /bin/sh
svr_home="$1"
svr_sid="$2"
sys_conn="$3"
svr_sql="$4"
LOG="$5"
tpr_create_ts_sql="create tablespace syssub datafile '/dev/tbdata/rlv1g09' size 1024M reuse autoextend off;" ## 원본: tpr_create_ts_sql="create tablespace syssub datafile 'tpr_ts.dtf' size 10m reuse autoextend on next 10m;"
tpr_report_dir_sql="create directory tpr_report_dir
as '@SVR_HOME@/instance/@SVR_SID@';"
tpr_tip_dir_sql="create directory tpr_tip_dir as '@SVR_HOME@/config';"
$svr_sql 2>>$LOG >> $LOG <<EOF
conn $sys_conn@$svr_sid
set comment off
$tpr_create_ts_sql
$tpr_report_dir_sql
$tpr_tip_dir_sql
quit
EOF
$TB_HOME/scripts/tpr_create_obj.sql
create tablespace syssub datafile '/dev/tbdata/rlv1g09' size 1024M reuse autoextend off; -- 원본: create tablespace syssub datafile 'tpr_ts.tdf' size 10m reuse autoextend on next 10m;
create directory tpr_report_dir as '@SVR_HOME@/instance/@SVR_SID@';
create directory tpr_tip_dir as '@SVR_HOME@/config';
수정이 완료되었으면 $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를 조회하여 데이터베이스 생성이 정상적으로 완료되었는지 확인한다.
TAC 노드 추가
아래 sql
을 node1 에서 수행하여 UNDO,REDO를 생성해주고 node 2 를 활성화 한다.
create undo tablespace UNDO1
datafile '/dev/tbdata/rlv30g02' size 30720M autoextend off
extent management local AUTOALLOCATE
-- extent management local UNIFORM SIZE 1M
;
alter database add logfile thread 1 group 3 '/dev/tbdata/rlv1g10','/dev/tbdata/rlv1g11' size 1024M;
alter database add logfile thread 1 group 4 '/dev/tbdata/rlv1g12','/dev/tbdata/rlv1g13' size 1024M;
alter database add logfile thread 1 group 5 '/dev/tbdata/rlv1g14','/dev/tbdata/rlv1g15' size 1024M;
alter database enable public thread 1;
이후 node 2 에서 tbboot
명령으로 instance를 기동해주면 끝.