[Tibero] Tibero설치 및 구동/종료 환경

suRan·2022년 8월 17일
1

🐱‍🐉 티베로

목록 보기
2/8

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 커널이 관리하는 자원에 접근을 시도할 때 제한을 받게 된다. 그럼 필요한 자원을 사용하지 못하게 된 프로세스는 에러가 발생하거나 죽어버린다.

티베로가 사용하는 포트번호를 다른 프로세스?가 사용하지 않는지 미리 확인해야한다. 티베로의 포트번호는 리스너와 ㅇㅇ가 사용한다.

유저가 사용할 환경변수 설정이 필요하다. 이 설정에 앞서 해당 경로에 자바가 설치되어있어야 한다.

티베로 환경변수

티베로 환경변수는 어디에 설치할 것이고 ... 티베로 환경 변수는 티베로 설치 시 리눅스 환경 변수 쪽에 세팅해두어야 한다.

티베로 파라미터

티베로 설치

  1. 설치 파일 준비
  2. 바이너리 압축 해제, 라이센스 파일 복사
  3. 파라미터 파일 생성용 shel 실행 -> generate 된다.
  4. create table-> 데이터베이스(데이터를 담당하는 파일)시작
    ...

라이센스 파일 준비
티맥스 테크넷 - 데모라이센스 신청 -
hostname은 리눅스 환경의 hostname과 일치해야한다.
edition은 Enterprise
유효기간이 지나면 tbBoot가 동작하지 않는다.

설치 이전
환경변수, 파라미터 파일, 데이터베이스 생성항목 미리 정의해두기

버추얼박스 실행

  • putty 이용하여 접속

1. 설치 파일 준비

리눅스 환경변수 파일 변경

  • 환경변수 조회
    ~/.bash_profile에는 로그인시 적용되는 환경변수가 들어있다.
    • ~은 유저의 디렉토리를 의미한다.

리눅스에서 파일 편집

  • vi 명령 사용
    [vi 명령어] vi 명령어 정리

  • 지울 때: 명령 모드로 빠져나옴
    혹은 dd로 줄 단위 삭제
    붙여넣기 시 샵(#)이 붙는 경우 해결법
  • 붙여넣기 이전에 :set paste 붙여넣기 모드

리눅스에서 파일 조회

  • cat
    • 내용을 텍스트로 출력
  • ls
    • ls의 다양한 옵션들

리눅스에서 디렉토리, 파일

  • /
    • 루트 디렉토리
  • ~
    • 유저의 홈디렉토리(Ex: 티베로 유저로 로그인했다면 ? /home/tibero를 가리킴)
  • .
    • 현재 디렉토리
  • ..
    • 현재 디렉토리의 상위 디렉토리

디렉토리 생성

  • mkdir 명령어 사용

리눅스 파일, 디렉토리 복사

  • cp
    • cp -r 디렉토리 전체 복사 옵션

리눅스 파일 옮기기

  • mv

리눅스 환경변수 출력

  • echo

리눅스 환경변수 파일 적용하기

  • source

절대경로와 상대경로

3.

가장 손쉬운 방법은 리눅스 <--> 윈도우 파일 공유 기능 사용

현재 상태 (폴더가 공유되어 있다.)

  • 리눅스 /tibero/s <--> 윈도우 C:\tibero\s
  • 가져오기
    • C:\tibero\SW1\TiberoServer\Tibero7`파일이름`.tar.gz
    • C:C:\tibero\s\ 로 붙여넣기
    • 리눅스에서 조회 및 복사
      -ls -l /tibero/s/tibero7* 으로 조회 (별이 왜ㅐ 붙음?)
    • 라이센스도 똑같이 가져오기
  • 압축 풀기
    • tar -xvzf tibero7-bin*
    • tibero7 디렉토리 생성
  • 라이센스 적용
    • $TB_HOME(디렉토리를 가리키는 환경변수)/license 디렉토리 생성후
      • ls -l /tibero/tibero7/license (동일함)
    • 환경변수를 사용해도 되고, 환경변수가 가리키는 실제 값을 사용해도 된다.

6. Database 생성

%중요포인트%

  • 각 의미를 알고있어야 한다.
  • 설치 조건에 맞춰 값 설정이 가능해야 한다.

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 셧다운을 포기한다. ()

7. Tibero 인스턴스 기동

초기화

버추얼 박스

  • 버추얼 박스 오른쪽 마우스 - 닫기 - 전원 끄기 - 스냅샷1 현재상태 (변경됨: 초기 스냅샷 상태가 아니다)
  • 스냅샷 오른쪽 마우스 - 복원
    • 체크박스: 현재 가상머신 상태 스냅샷 만들기

티베로 설치 시 고려사항

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 : 텍스트 파일에서 원하는 문자열이 들어간 행을 찾아 출력하는 명령어

  • grep 조건으로 tbsvr 스트링 문자열 제공

데이터베이스 파일
티베로 인스턴스가 데이터 베이스 파일을 찾아가서 모두 오픈한다.
데이터파일 / 리두로그 파일 / 컨트롤 파일

tibero incetanse startup normal mode
티베로 기동을 위한 3단계가 모두 정상적으로 실행 시 출력되는 메세지

만약 정상적으로 동작하지 않는다면
각 단계의 연결 부분을 체크해야한다.
1. 환경변수를 체크한다.
2. 라이센스 파일이 제대로 들어갔는지? 파라미터 파일의 파라미터 값이 잘못되지 않았는지?
3. 파라미터 파일의 파라미터 중 데이터 파일, 리두로그 파일, 컨트롤 파일의 위치를 알려주는 파라미터. CONTROL_FILES="/tibero/tbdata/tibero/c1.ctl","/tibero/tbdata/tibero/c2.ctl"
파라미터의 경로 체크. 인스턴스가 컨트롤 파일을 본 뒤 위치를 찾아서 데이터파일과 리두 로그파일을 오픈하게 된다.

노마운트 모드는 인스턴트들만 덩그러니 있는 상태
마운트 모드 컨트롤 파일을 찾아서 오픈했다.
노말 모드 데이터파일과 리두로그 파일 오픈한 상태

tb유틸리티

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단계를 올라가는 것. 건너 뛰는 게 아니다.

티베로 인스턴트 종료

  • tbboot와 마찬가지로 tbdown 사용 시 옵션 사용가능
    -t : 서버 종료 옵션. 생략가능
    • NORMAL : 모든 세션이 끝날 때까지 기다린 뒤 종료한다. 접속이 끊어져야만 종료한다. 끊는 주체가 티베로가 아님. 따라서 언제 끝날 지 모른다. tbSQL 외에 다른 여러 소프트웨어들이 서버에 접속해있을 수 있다. NORMAL은 그 모든 소프트웨어의 종료까지 기다린다.

    • POST_TX : 모든 트랜잭션 종료 시까지 기다린 후 티베로 종료. DML쿼리(데이터 변경 INSERT, DELETE) 시 시행되는 것이 트랜잭션. commit시 끝난다. 여러 tbSQL에서 여러 DML쿼리들이 시행되고 있을 때, 트랜잭션이 종료될 때까지 대기한다. 트랜잭션에 대해서는 수동적이지만 세션(클라이언트와 서버와의 관계, 연결회선)에 대해서는 능동적으로 끊어버린다.

    • IMMEDIATE : 현재 수행 중인 모든 작업 강제 종료. 세션과 트랜잭션에 대해서 능동적으로 중지시키고 트랜잭션은 롤백처리하고 tibero를 종료한다. 서버가 능동적.
      티베로 서버와 연결된 클라이언트(Ex:tbSQL)은 접속이 끊어진다. 그러나 소프트웨어의 접속과 동작은 별개이므로

    • ABORT : 티베로 프로세스 강제 종료. 티베로 내부적으로 강제종료. 각각의 모니터 프로세스가 종료 시그널을 줘서 프로세스가 스스로 죽는 것

      • ABNORMAL과의 차이점 : ABNORMAL는 티베로 외부적으로 강제종료.
        외부의 시그널로 강제로 외부가 프로세스를 죽인다. 프로세스 스스로는 죽는 것을 알지 못한다. OS의 프로세스 kill명령. 프로세스가 내부 정리를 하지 않고 죽는다.

      강제 종료 문제점 : 인스턴스 내부의 쉐어드 메모리가 정리되지 않고 사라진다. 쉐어드 메모리 내부에는 데이터가 들어있으므로 문제가 된다. -> 파일에 제대로 쓰지 않고 날려버린다. 메모리 내부에는 버퍼드 캐시가 존재하고 메모리에 항상 올려서 처리한다. 따라서 메모리에 있는 것이 사라진다는 것은 처리한 것이 사라진다는 것이다. 이는 데이터베이스에 문제를 발생시킬 수 있다.

정상종료 방식 :

  • 메모리에 있던 데이터를 데이터베이스에 반영한 뒤 종료

비정상 종료 방식 :

  • ABORT, ABNORMAL

서버 기동과 종료는 담당자 혼자 결정하는 부분이 아니다. CTO의 결재까지 받아야 하는 중요한 행위. 굉장히 큰 작업. 서버 기동 이후 종료하는 경우는 거의 없다.

  • 내부적인 종료 과정
    • Database close : 한계단 내려오는 것. 데이터파일과 리두 로그 파일 닫기. 데이터블록을 메모리에 올려놓고 TSM(티베로 공유 메모리)에 반영한다. 로그 버퍼와 데이터페이스 버퍼 메모리? 그걸 반영한다.?
    • Dismounting : 컨트롤 파일의 내용을 쓰고 닫는다.
    • instance Shutdown : 인스턴스를 닫는다. TSM에 있는 메모리(메모리 안의 데이터가 아니다. 메모리 자체를 말하는 것이다.) OS 커널이 ㅇ..하는 작업. 할당 해제하는 것.

TBDOWN abort(읽어보기)

tbdown clean

  • 핵심 : clean. 지워야할 가비지들을 지우는 것이다.
    언제 실행하는가? : 티베로 인스턴스가 내려간 상태에서 사용.
    왜 사용하는가? : 티베로 서버가 비정상 종료된 상태에 공유메모리나 세마포어 자원들을 할당해제하는 옵션이다. 원래 티베로 인스턴스가 내려갈 때에 사용하던 것들을 다 지워야하지만 지우지않고 내려가면서 가비지가 남게 된다. 그런 경우 clean을 사용해서 수동적으로 지운다. 티베로가 정상종료될 경우에는 티베로가 시작할 때 만든 파일(인스턴스를 구성하는 프로세스 리스트 .proclist파일 )을 지운다. 하지만 강제 종료 시에는 이런 파일을 지우지 못하기 떄문에 clean으로 해당파일도 지워준다.
    만약 수동으로 지우지 않는다면 어떤 일이 발생하는가? 티베로 서버재시작 시 .proclist를 생성하고 세마포어와 공유메모리를 할당받을 것이다. 그러나 기존의 파일이 남아있기 때문에 충돌이 발생하면서 tbboot가 실패할 수 있다.
    • bBOOT WITH AUTO DOWN CLEAN파라미터
      파라미터 파일에 넣어 설정한다면 티베로 인스턴스가 clean명령어를 자동으로 실행한 뒤 실행된다.

이해가 부족한 부분 : 로그 메모리와 버퍼 메모리 의 데이터가 반영되는 과정? 정확히 파악 못함

티베로 디렉토리 구조

$TB_HOME

  • bin
    실행파일 포함되어있다

  • client/bin
    툴이 들어있다. tbSQL 포함

  • config
    파라미터 파일(TB_SID.tip) 존재

  • instance/$TB_SID/log
    TB_SID값을 갖는 환경변수 파일?

    • slog (구버전에서 트레이스 로그파일) : 여러 중요한 동작을 한다. 에러가 발생했을 때 기록으로 남긴다. 티베로의 동작 모니터링. 에러가 발생했을 때 사용하는 것이 slog
      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

https://alljbut.tistory.com/63

profile
개발 공부를 해라

0개의 댓글