tibero 사용은 대부분 리눅스/유닉스 환경에서 이루어진다.
redHat(리눅스)
https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/index2.html
티베로 설치 안내서 참조( 3.3.2)
30TB이상 ... 사용하는 곳도 있다.
업무적인 성격 (OLAP | OLTP) 이 먼저 정의된 뒤 성격에 따라 하드웨어 적인 ..
티베로에 필요한 설정(준비사항)이 제대로 되지 않았을 때
shell limit이나 커널 파라미터는 OS커널이 관리하는 전체 자원에 대한 과다사용을 방지한다.
이에 티베로의 프로세스가 OS 커널이 관리하는 자원에 접근을 시도할 때 제한을 받게 된다. 그럼 필요한 자원을 사용하지 못하게 된 프로세스는 에러가 발생하거나 죽어버린다.
티베로가 사용하는 포트번호를 다른 프로세스?가 사용하지 않는지 미리 확인해야한다. 티베로의 포트번호는 리스너와 ㅇㅇ가 사용한다.
유저가 사용할 환경변수 설정이 필요하다. 이 설정에 앞서 해당 경로에 자바가 설치되어있어야 한다.
티베로 환경변수
티베로 환경변수는 어디에 설치할 것이고 ... 티베로 환경 변수는 티베로 설치 시 리눅스 환경 변수 쪽에 세팅해두어야 한다.
티베로 파라미터
라이센스 파일 준비
티맥스 테크넷 - 데모라이센스 신청 -
hostname은 리눅스 환경의 hostname과 일치해야한다.
edition은 Enterprise
유효기간이 지나면 tbBoot
가 동작하지 않는다.
설치 이전
환경변수, 파라미터 파일, 데이터베이스 생성항목 미리 정의해두기
버추얼박스 실행
리눅스 환경변수 파일 변경
리눅스에서 파일 편집
:set paste
붙여넣기 모드리눅스에서 파일 조회
리눅스에서 디렉토리, 파일
/home/tibero
를 가리킴)디렉토리 생성
리눅스 파일, 디렉토리 복사
리눅스 파일 옮기기
리눅스 환경변수 출력
리눅스 환경변수 파일 적용하기
절대경로와 상대경로
가장 손쉬운 방법은 리눅스 <--> 윈도우 파일 공유 기능 사용
현재 상태 (폴더가 공유되어 있다.)
%중요포인트%
sql실행 후 DDL문을 작성해도 되지만 터미널에서 sql파일을 따로 생성한 뒤 sql실행 후 해당 파일을 읽어오는 방식이 더 깔끔하다.
1. 터미널에서 sql파일 생성 -> sys유저로 티베로 접속
2. 데이터베이스 생성스크립트.sql 읽어오기
SET ECHO ON
옵션은 sql스크립트 실행 시 sql 내용이 출력되도록 해주는 옵션이다.
주의사항
터미널을 여러 개 띄워서 tbsql에 접속 시 서버는 클라이언트를 두 명으로 인식한다.
만약 active세션이 있는 상태에서 다른 터미널에서 tbdown(티베로 인스턴스 죽이기) 명령어를 실행한다면 종료 옵션을 물어본다. 즉, 물어본다는 것은 active세션이 있는 경우이므로 잘 살펴보아야한다. (tbsql은 서버와 채팅하는 소프트웨어이다?)
active 세션이 있는 경우
1. Wait 세션이 스스로 종료된다. (고객이 -즉, sql에서 직접 q할 때까지 기다린다.)
2. shutdown 티베로 서버 접속을 끊는다. (tbsql은 독자적인 소프트웨어. sql은 서버와는 연결되지는 않지만 동작은 한다. sql문을 입력하고 전달할 수는 없고 쿼리는 에러가 발생하지만 소프트웨어는 작동한다.)
3. Quit 셧다운을 포기한다. ()
버추얼 박스
체크박스
: 현재 가상머신 상태 스냅샷 만들기tbr파일
# /tibero/tibero7/client/config/tbdsn.tbr
# Network Configuration File.
# Generated by gen_tip.sh at Wed Aug 17 16:51:30 KST 2022
tibero=(
(INSTANCE=(HOST=localhost)
(PORT=8629)
(DB_NAME=tibero)
)
)
뷰에 대해 정리
뷰는 언제 쓰이는 도구?
주의사항
모든 데이터 파일의 경로를 DB_CREATE_FILE_DEST과 다르게 설정하려면 테이블 스페이스를 생성하는 CREAT SQL문에서 DATAFILE의 경로를 모두 재설정해주어야 한다. 경로를 설정해주지 않은 DATAFILE은 파라미터 파일에서 정의한 DB_CREATE_FILE_DEST의 경로에 저장된다.
다중화의 핵심은 서로 다른 디스크에 저장하는 것이므로 컨트롤 파일과 리두 로그 파일 생성 시 한 그룹 내의 멤버(파일)의 경로가 동일하지 않도록 주의한다.
인스턴스와 데이터베이스의 이름을 다르게 사용할 때는 /$TB_HOME/client/config/tbdsn.tbr
(네트워크 설정파일)의 데이터베이스명까지 수정해줘야 한다. (기본적으로 환경변수 파일에 설정된 인스턴스 이름을 사용해서 생성되기 때문에 db이름
은 인스턴스명
과 동일하다.)
또, 포트번호도 기본적으로 8629
가 설정되기 때문에 포트번호를 조건으로 주었다면 tbr파일
의 포트넘버도 조건과 동일하게 수정해야한다.
티베로 기동을 위해서는 다음과 같은 과정을 거친다.
OS 환경변수 -> 티베로 바이너리 파일 -> 데이터베이스 파일 오픈
순서를 잘 기억해두어야 한다.
3단계는 아래 스크립트에서 일어난다.
[tibero@T1:/tibero]$ tbboot
Change core dump dir to /tibero/tibero7/bin/prof.
Listener port = 8629
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
OS환경변수
TB_HOME
티베로 바이너리가 이 디렉토리가 가리키는 곳에 저장되어있어야한다.
티베로 디렉토리
설치된 디렉토리는 다음과 같은 모양을 가진다.
(tibero7디렉토리 트리모양)
티베로 인스턴스는 이 바이너리 파일들을 기반으로 동작한다.
ps -ef | grep tbsvr
로 프로세스 조회 가능
프로세스 조회가 정상적으로 된다면 바이너리 파일이 잘 설치된 것이다.
ps : 리눅스에서 동작하고 있는 모든 프로세스 조회
grep : 텍스트 파일에서 원하는 문자열이 들어간 행을 찾아 출력하는 명령어
tbsvr
스트링 문자열 제공데이터베이스 파일
티베로 인스턴스가 데이터 베이스 파일을 찾아가서 모두 오픈한다.
데이터파일 / 리두로그 파일 / 컨트롤 파일
tibero incetanse startup normal mode
티베로 기동을 위한 3단계가 모두 정상적으로 실행 시 출력되는 메세지
만약 정상적으로 동작하지 않는다면
각 단계의 연결 부분을 체크해야한다.
1. 환경변수를 체크한다.
2. 라이센스 파일이 제대로 들어갔는지? 파라미터 파일의 파라미터 값이 잘못되지 않았는지?
3. 파라미터 파일의 파라미터 중 데이터 파일, 리두로그 파일, 컨트롤 파일의 위치를 알려주는 파라미터. CONTROL_FILES="/tibero/tbdata/tibero/c1.ctl","/tibero/tbdata/tibero/c2.ctl"
파라미터의 경로 체크. 인스턴스가 컨트롤 파일을 본 뒤 위치를 찾아서 데이터파일과 리두 로그파일을 오픈하게 된다.
노마운트 모드
는 인스턴트들만 덩그러니 있는 상태
마운트 모드
컨트롤 파일을 찾아서 오픈했다.
노말 모드
데이터파일과 리두로그 파일 오픈한 상태
tbSQL
티베로 관리를 위해 사용하는 기본도구
별도로 동작하는 툴 sql소프트웨어. 인스턴스와 별도로 접속까지 되어야 한다.
$tbsql sys/tibero
접속 시 유저명과 패스워드를 필요로 한다. (나머지 정보는 tbdsn.tbr에 들어있음. 총 다섯가지의 정보가 필요함)
티베로 인스턴스는 실체가 보이지 않는다. (고스트) 겉으로 보이지 않는다.
tbboot를 하면 시작되지만 조회를 위해서는 ps명령어로 프로세스를 확인해야한다. 그렇다면 시베로 인스턴스에게 어떻게 일을 시킬 것인가? -> tbSQL을 작성함으로써 가능
tbboot
티베로 bin 디렉토리에 있는 실행파일.
bash_profile의 설정 파일에서 bin 디렉토리를 환경변수에 패스로 잡아줬다.
그렇기 때문에 반드시 bin디렉토리에서 실행하지 않아도 어디서든 실행가능한 것.
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:~/tbinary/monitor:$PATH
프로세스들이 동작한다.
티베로 인스턴스 기동
셧다운 : 죽은 상태
노마운트 : 인스턴스 시작(인스턴스는 살아만 있음)
마운트 : 데이터베이스 구성 요소 중 컨트롤 파일 오픈
오픈(노말모드) : 컨트롤 파일 내부의 데이터 파일과 리두 로그 리스트를 보고 전부 오픈
그냥 tbboot를 하면 옵션이 생략된다. (기본옵션 : nomal)
tbboot nomount
와 같이 tbboot시 옵션을 줄 수 있다.
처음 설치 시에는 데이터베이스의 구성요소가 아무 것도 없기 때문에 당연히 nomount옵션 밖에 선택지가 없다. 이후 database를 생성한 뒤에는 nomount옵션을 주지 않고 tbboot를 사용할 수 있다.
노마운트 / 마운트 / 오픈은 모두 인스턴스가 살아있는 상태
그러나 세 상태는 ps명령어로 구분할 수 없다.
ps명령어로는 인스턴스의 생존 여부만 판별 가능하다.
인스턴스의 상태는 접속해서 확인할 수 있다.
SELECT OPEN_MODE FROM V$DATABASE;
데이터베이스를 어떤 방식으로 오픈했느냐?
노말모드 : 리드라이트 조회가 된다면
마운트 모드 : 마운티드
노마운트 모드 : 조회가 안 되고, 에러 발생
SQL> SELECT OPEN_MODE FROM V$DATABASE;
OPEN_MODE
----------
READ WRITE
내부적으로 절차를 밟아서 nomount, mount, open단계를 올라가는 것. 건너 뛰는 게 아니다.
티베로 인스턴트 종료
NORMAL : 모든 세션이 끝날 때까지 기다린 뒤 종료한다. 접속이 끊어져야만 종료한다. 끊는 주체가 티베로가 아님. 따라서 언제 끝날 지 모른다. tbSQL 외에 다른 여러 소프트웨어들이 서버에 접속해있을 수 있다. NORMAL은 그 모든 소프트웨어의 종료까지 기다린다.
POST_TX : 모든 트랜잭션 종료 시까지 기다린 후 티베로 종료. DML쿼리(데이터 변경 INSERT, DELETE) 시 시행되는 것이 트랜잭션. commit시 끝난다. 여러 tbSQL에서 여러 DML쿼리들이 시행되고 있을 때, 트랜잭션이 종료될 때까지 대기한다. 트랜잭션에 대해서는 수동적이지만 세션(클라이언트와 서버와의 관계, 연결회선)에 대해서는 능동적으로 끊어버린다.
IMMEDIATE : 현재 수행 중인 모든 작업 강제 종료. 세션과 트랜잭션에 대해서 능동적으로 중지시키고 트랜잭션은 롤백처리하고 tibero를 종료한다. 서버가 능동적.
티베로 서버와 연결된 클라이언트(Ex:tbSQL)은 접속이 끊어진다. 그러나 소프트웨어의 접속과 동작은 별개이므로
ABORT : 티베로 프로세스 강제 종료. 티베로 내부적으로 강제종료. 각각의 모니터 프로세스가 종료 시그널을 줘서 프로세스가 스스로 죽는 것
강제 종료 문제점 : 인스턴스 내부의 쉐어드 메모리가 정리되지 않고 사라진다. 쉐어드 메모리 내부에는 데이터가 들어있으므로 문제가 된다. -> 파일에 제대로 쓰지 않고 날려버린다. 메모리 내부에는 버퍼드 캐시가 존재하고 메모리에 항상 올려서 처리한다. 따라서 메모리에 있는 것이 사라진다는 것은 처리한 것이 사라진다는 것이다. 이는 데이터베이스에 문제를 발생시킬 수 있다.
정상종료 방식 :
비정상 종료 방식 :
서버 기동과 종료는 담당자 혼자 결정하는 부분이 아니다. CTO의 결재까지 받아야 하는 중요한 행위. 굉장히 큰 작업. 서버 기동 이후 종료하는 경우는 거의 없다.
TBDOWN abort(읽어보기)
tbdown clean
.proclist
파일 )을 지운다. 하지만 강제 종료 시에는 이런 파일을 지우지 못하기 떄문에 clean으로 해당파일도 지워준다.이해가 부족한 부분 : 로그 메모리와 버퍼 메모리 의 데이터가 반영되는 과정? 정확히 파악 못함
$TB_HOME
bin
실행파일 포함되어있다
client/bin
툴이 들어있다. tbSQL 포함
config
파라미터 파일(TB_SID.tip) 존재
instance/$TB_SID/log
TB_SID값을 갖는 환경변수 파일?
tail -n5 sys.log
로그의 5줄만 사용 (주로 실시간 로그를 볼 때 사용하는 방법. 찾아보고 사용법 익히길 바란다.) -f
옵션은 실시간 로그 보기 위해 사용. ctrl +c로 빠져나온다.licence
참고할 만한 글
https://cpcat.tistory.com/entry/%EA%B8%B0%EC%B4%88Tibero-%EA%B8%B0%EB%8F%99%EB%8B%A8%EA%B3%84