|
chown tibero:dba /app/tibero
chown tibero:dba /logs/tibero
chown tibero:dba /data/tibero
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
명령으로 변경 사항 적용
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 binary 및 license를 준비하여 Tibero RDBMS 서버 호스트, tibero 계정 홈 경로에 업로드한다.
아래 URL에서 설치하고자 하는 버전 선택 후 다운로드 (Tibero 6 FixSet06 버전 기준으로 설치 진행)
Tibero Downloads Link
정식 라이센스가 없는 경우,
Tmax TechNet 에 접속하여 로그인한 뒤 [데모라이선스 신청] 버튼을 클릭하여 데모 라이센스를 발급받는다. TAC cluster 를 구성하기 위해서는 Enterprise 라이센스가 필요하다.
아래 명령을 수행하여 /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 Init Parameter (tip) 파일을 생성한다.
$TB_HOME/config/gen_tip.sh
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를 구성하기 위해서는 네트워크 등 여러 리소스를 활용해야하는데 이 리소스 정보를 기록할 바이너리 파일 경로를 지정한다.
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
아래와 같이 tbcm -b
명령을 통해 tbcm을 기동한 뒤 cmrctl
명령을 이용해서 tibero 클러스터에 필요한 리소스를 추가한다.
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
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
다음과 같이 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에 대한 패스워드를 입력해야만 하는데 초기 비밀번호는 다음과 같다.
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를 조회하여 데이터베이스 생성이 정상적으로 완료되었는지 확인한다.
아래 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를 기동해주면 끝.
|