설치 및 설정
본 장에서는 SSVR 인스턴스를 설치하고 디스크와 플래시 디바이스 등을 등록하는 방법을 설명합니다. 그리고 TAS 인스턴스와 TAC 인스턴스에서 SSVR 인스턴스를 사용하여 디스크 스페이스, 테이블 스페이스를 만들고 DB를 설치하는 방법을 설명합니다.
노드 사양
본 장에서 다루는 모든 설치 및 설정 예는 아래 표에 제시된 DB 노드와 Storage 노드의 사양을 기준으로 진행됩니다. 각 노드의 사양은 ZetaData 구성 및 시스템 성능에 영향을 미치는 주요 요소이므로, 설정 작업 을 시작하기 전에 이를 확인하는 것이 중요합니다.
메모리
256GB
96GB
디스크 구성
2TB NVMe x 4
4TB HDD x 12, 2TB NVMe x 4
메모리와 디스크 용량을 확인하는 방법은 여러 가지가 있습니다. 아래는 노드의 물리 메모리 용량을 확인하는 예입니다.
$ grep MemTotal /proc/meminfo
MemTotal: 98707668 kB
아래는 노드의 디스크 용량을 확인하는 예입니다.
// Some code$ fdisk -l
Disk /dev/sdd: 4000.8 GB, 4000753475584 bytes, 7813971632 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disk label type: dos
Disk identifier: 0x00000000
...
RAID 설치
RAID 기능을 사용하지 않고 OS를 설치하는 경우
Storage 노드의 디스크가 용량 4TB인 12개로 가정하면, 일반적으로 임의의 디스크 1개에 400GB로 OS, SSVR 바이너리 및 컨트롤 파일을 저장합니다.
RAID를 사용하지 않은 경우에는 OS가 설치된 400GB를 제외한 3.6TB 공간이 하나의 파티션으로 구성 됩니다. 따라서 OS가 설치된 디스크의 3.6TB짜리 파티션, 나머지 4TB 디스크 11개를 이용하여 Storage 노드를 구성할 수 있습니다.
RAID 기능을 사용하여 OS를 설치하는 경우
Storage 노드의 디스크가 용량 4TB인 12개로 가정하고, 2개의 4TB 디스크를 RAID1 미러링으로 구성 합니다. RAID1로 구성된 디스크에서 400GB를 할당하여 OS, SSVR 바이너리 및 컨트롤 파일을 저장합니다.
OS 설치 후 남은 7.2TB를 각각 3.6TB로 나누고 각각 RAID 0으로 구성합니다. 따라서 RAID 1 미러링을 이용하여OS를 설치한 공간을 제외하고, 3.6TB 디스크 2개, 나머지 4TB 디스크 10개를 이용하여 Storage 노드를 구성할 수 있습니다.
Storage 노드 디스크 설정
다음은 설치 대상 공유 디스크를 준비하는 과정으로, 모든 Storage 노드에서 동일하게 수행합니다.
Storage 노드의 각 디스크의 권한 또는 소유권을 변경해 직접 사용해도 되지만 재기동할 때 디스크 이름이 변경되는 문제가 발생할 수 있으므로 이러한 문제를 예방하기 위해 udev를 사용하여 Storage 노드의 디스크를 구성하는 방법을 권고합니다.
아래는 udev에 대한 간단한 설명입니다.
udev는 시스템 소프트웨어와 연동하여 디바이스 이벤트 처리 및 디바이스 노드의 권한 관리, 네트워크 인터페이스의 이름 설정 또는 /dev 디렉터리에 심볼릭 링크를 추가할 수 있습니다.
디바이스가 커널에 의해 감지되면, udev는 sysfs 디렉터리에서 시리얼 번호나 버스 디바이스 번호 등의 속성을 수집해 디바이스의 고유한 이름을 결정합니다. udev는 메이저와 마이너 번호를 기반으로 디바이 스를 /sys 파일 시스템에서 추적하고, 시스템 메모리와 sysfs를 활용해 디바이스 정보를 관리합니다.
모듈이 적재되거나 디바이스가 추가·제거될 때 커널이 이벤트를 발생시키면, udev는 규칙에 따라 디바이스 파일명 설정, 심볼릭 링크 생성, 파일 권한 설정 등을 수행합니다.
아래는 udev를 사용하여 구성된 Storage 노드 디스크의 예입니다.
$ ls -al /dev
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk0 -> sda
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk1 -> sdb
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk2 -> sdc
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk3 -> sdd
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk4 -> sde
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk5 -> sdf
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk6 -> sdg
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk7 -> sdh
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk8 -> sdi
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk9 -> sdj
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk10 -> sdk
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/disk11 -> sdl
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/flash0 -> nvme0n1
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/flash1 -> nvme1n1
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/flash2 -> nvme2n1
lrwxrwxrwx. 1 root root 3 Aug 13 19:50 /dev/flash3 -> nvme3n1
위의 예에서 /dev/*로 나타나는 링크들은 udev rules에 따라 생성된 심볼릭 링크입니다.
아래는 디스크를 구성하기 위한 udev rules 파일의 예입니다.
$ cat /etc/udev/rules.d/zetadisk.rules
KERNEL=="sdb", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32750", \
SYMLINK+="disk0", OWNER="zeta", MODE="0600"
KERNEL=="sdc", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32751", \
SYMLINK+="disk1", OWNER="zeta", MODE="0600"
KERNEL=="sdd", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32752", \
SYMLINK+="disk2", OWNER="zeta", MODE="0600"
KERNEL=="sde", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32753", \
SYMLINK+="disk3", OWNER="zeta", MODE="0600"
KERNEL=="sdf", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32754", \
SYMLINK+="disk4", OWNER="zeta", MODE="0600"
KERNEL=="sdg", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32755", \
SYMLINK+="disk5", OWNER="zeta", MODE="0600"
KERNEL=="sdh", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32756", \
SYMLINK+="disk6", OWNER="zeta", MODE="0600"
KERNEL=="sdi", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32757", \
SYMLINK+="disk7", OWNER="zeta", MODE="0600"
KERNEL=="sdj", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32758", \
SYMLINK+="disk8", OWNER="zeta", MODE="0600"
KERNEL=="sdk", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32759", \
SYMLINK+="disk9", OWNER="zeta", MODE="0600"
KERNEL=="sdl", SUBSYSTEM=="block", \
ENV{ID_SERIAL}=="3600508b1001cdc32710", \
SYMLINK+="disk10", OWNER="zeta", MODE="0600"
KERNEL=="nvme0n1", SYMLINK+="flash0", OWNER="zeta", MODE="0600"
KERNEL=="nvme1n1", SYMLINK+="flash1", OWNER="zeta", MODE="0600"
KERNEL=="nvme2n1", SYMLINK+="flash2", OWNER="zeta", MODE="0600"
KERNEL=="nvme3n1", SYMLINK+="flash3", OWNER="zeta", MODE="0600"
udev rules 파일은 /etc/udev/rules.d 폴더 안에 .rules라는 확장자로 저장되어야 합니다.
위 예시의 rule은, sda로 표현되는 커널 이름(KERNEL=="sda")을 가진 블록 디바이스(SUBSYS TEM=="block") 노드 중에서 명시된 SCSI_ID(ENV{ID_SERIAL}=="SCSI_ID")와 일치하는 디바이스를 찾 아 소유자, 사용자 권한을 설정하고 주어진 심볼릭 링크를 생성하는 명령입니다.
디바이스의 SCSI_ID는 /usr/lib/udev/scsi_id(RHEL9 기준)를 실행하면 확인할 수 있습니다. 시스템에 따라/lib/udev/scsi_id를 대신하여 실행합니다. 이 프로그램은 관리자 권한으로 실행되어야 하며 아래는 scsi_id를 확인하는 예입니다.
$ /usr/lib/udev/scsi_id --whitelisted --device=/dev/sda
3600508b1001cdc32750
커널 파라미터 설정
ZetaData의 정상적 구동을 위해 커널 파라미터를 설정합니다.
커널 파라미터 설정 파일의 위치는 다음과 같습니다.
/etc/sysctl.conf
아래는 커널 파라미터를 설정하는 예입니다.
kernel.sem = 100000 100000 100000 100000
kernel.shmmax = 17179869184
kernel.shmall = 24718805
fs.aio-max-nr = 4194304
fs.file-max = 8388608
vm.max_map_count = 262144
kernel.shmmax 파라미터
정의: 단일 공유 메모리 세그먼트에 할당할 수 있는 바이트 단위의 최값
값 설정: SSVR 인스턴스에 할당할 전체 공유 메모리의 크기보다 여유롭게 설정
kernel.shmall 파라미터
정의: 시스템 전체에서 사용할 수 있는 공유 메모리의 총 페이지 수
값 설정: SSVR 인스턴스를 기준으로 설정한 kernel.shmmax 값을 페이지 크기로 나눈 값 (사유: 일반 적으로 시스템의 공유 메모리 자원을 SSVR 인스턴스가 대부분 사용)
시스템의 페이지 크기는 아래 명령어를 사용해 확인합니다.
$ getconf PAGE_SIZE
4096
fs.aio-max-nr 파라미터
정의: 시스템에서 동시에 처리할 수 있는 최대 비동기 I/O 요청 수
값 설정: 실제 사용량을 모니터링한 적절한 값
fs.file-max 파라미터
정의: 시스템에서 동시에 열 수 있는 최대 파일 디스크립터 수
값 설정: 시스템의 규모에 따라 값을 조정
vm.max_map_count 파라미터
정의: 프로세스당 가질 수 있는 메모리 매핑 개수의 최댓값
값 설정: InfiniBand를 통한 RDMA를 사용할 때, 라이브러리 내부 자원 및 RDMA용 region 등록 과정에서 map이 빈번하게 일어나기 때문에 여유롭게 설정
DB 노드와 Storage 노드 간 통신에 TCP 소켓을 사용할 경우에는 소켓 버퍼의 기본값과 최대 크기를 아래 과 같이 설정합니다.
net.core.rmem_default = 4194304
net.core.wmem_default = 4194304
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
주의
Storage 노드의 경우, HugePages 사용은 메모리를 사용하지 못하는 역효과를 초래하므로 설정하지 않도록 주의합니다.
환경변수
아래는 SSVR 인스턴스를 사용하기 위한 환경변수입니다.
$TB_HOME
SSVR 인스턴스가 설치된 홈 디렉터리입니다.
$TB_SID
SSVR 인스턴스를 구분하는 서비스 ID입니다.
초기화 파라미터
ZetaData를 설치하기 위해 설정해야 하는 초기화 파라미터는 기본적으로 Tibero와 동일하며, 아래와 같은 파라미터의 추가 설정이 필요합니다.
SSVR_RECV_PORT_START
SSVR 인스턴스가 사용할 포트들의 시작 번호를 설정합니다.
(범위: 1024 - 65535)
SSVR_USE_TCP
RDMA 프로토콜 대신 TCP 프로토콜을 사용하고자 하는 경우에 "Y"로 설정합니다. TAS 인스턴스와 TAC 인스턴스의 초기화 파라미 터에도 동일하게 설정합니다. (기본값: N)
SSVR_USE_IB
RDMA 프로토콜을 사용하고자 하는 경우에 "Y"로 설정합니다. "Y"로 설정한 경우 USE_ZETA 파라미터 값이 "Y"이어야 합니다. 별도로 설정하지 않은 경우 SSVR_USE_TCP 파라미터의 반대값으로 설정 됩니다.
SSVR_USE_FC
플래시 캐시를 사용할지 여부를 나타내는 파라미터다. (기본값: Y)
SSVR_USE_SDM
스토리지 데이터 맵을 사용할지 여부를 나타내는 파라미터다. (기 본값: Y)
SSVR_USE_AGNT
에이전트 프로세스를 활성화할지 여부를 나타내는 파라미터다. 에이전트 프로세스는 내부 작업 등을 관리하거나 보조하는 역할을 합니다. TPM(Tibero Performance Monitor) 관련 성능 지표를 수집하 고 전송하는 역할도 합니다. (기본값: N)
SSVR_USE_TPM
TPM을 활성화할지 여부를 나타내는 파라미터다. (기본값: N)
SSVR_TPM_SENDER_INTERVAL
TPM을 활성화한 경우 송신자 연결 상태 확인 간격을 설정합니다. (기본값: 50)
SSVR_WTHR_CNT
SSVR 인스턴스에서 I/O를 수행하는데 사용할 Working Thread의 개수를 나타낸다. 별도로 설정하지 않은 경우 CPU 개수에 비례해 자동으로 지정되므로 설정하지 않아도 됩니다.
(범위: SSVR_WTHR_CNT > 0)
INSTANCE_TYPE
인스턴스의 종류를 나타내며 각각 인스턴스에 맞게 설정합니다.
TAS 인스턴스 : AS
SSVR 인스턴스 : SSVR
USE_ZETA
ZetaData를 위한 구성을 합니다. 별도로 설정하지 않은 경우 IN STANCE_TYPE 파라미터 값이 "SSVR"일 때만 "Y"로 설정됩니다.
아래는 Storage 노드 0번의 SSVR 인스턴스 초기화 파라미터 설정 예입니다.
# ssvr0.tip
INSTANCE_TYPE=SSVR
LISTENER_PORT=9100
CONTROL_FILES="/home/tibero/zetadata/database/ssvr0/c1.ctl"
TOTAL_SHM_SIZE=15G
MEMORY_TARGET=70G
SSVR_RECV_PORT_START=9110
MEMORY_TARGET 파라미터는 SSVR 인스턴스에서 사용할 메모리의 총량을 의미합니다.
InfiniBand 라이 브러리에서 connection에 사용되는 외부 메모리 사용량이 많으므로(connection 당 4MB) 사이트 담당 사 업부나 기술지원에 문의 후 세팅을 권장합니다. 계산식은 아래와 같습니다.
SSVR 인스턴스 기준
MEMORY_TARGET = (전체 메모리양)
- [(DB 노드 개수)
* {(TAC 인스턴스의 Max Session Count)
+ (TAC 인스턴스의 PEP thread 전체 개수)}] * 4MB
- 10GB(=OS 및 타 thread의 connection 여유분)
** (TAC 인스턴스의 PEP thread 전체 개수) = (TAC 인스턴스의 PEP Process 개수)
* (PEP process 당 thread 개수)
** TAC 인스턴스의 PEP thread 전체 개수 계산은 하나의 TAC 인스턴스를 기준으로 함.
TOTAL_SHM_SIZE 파라미터는 SSVR 인스턴스에서 사용할 공유 메모리의 총량을 의미합니다.
SSVR 인 스턴스를 기동하는데 기본적으로 필요한 3GB와 디스크 1TB 당 150MB를 우선 합하고, 그 결과에 10GB 당 1GB에서 2GB의 기타 여유분을 더해 최솟값을 계산할 수 있습니다.
주의
“커널 파라미터 설정”에서 설정한 kernel.shmmax 값(단위: bytes)이 TOTAL_SHM_SIZE 값보다 커야 합니다.
tbSQL 사용을 위한 접속 정보
tbSQL을 이용해 Tibero 인스턴스에 접속하기 위해서는 $TB_HOME/client/config/tbdsn.tbr 파일에 접속 정보를 설정해야 합니다. SSVR 인스턴스 설정 방법은 기본적으로 다른 Tibero 인스턴스와 같지만 DB_NAME 은 필요하지 않습니다.
아래는 $TB_HOME/client/config/tbdsn.tbr 파일 설정의 예입니다.
ssvr0=((INSTANCE=(HOST=10.10.10.13)(PORT=9100)))
ssvr1=((INSTANCE=(HOST=10.10.10.14)(PORT=9100)))
ssvr2=((INSTANCE=(HOST=10.10.10.15)(PORT=9100)))
tas0=((INSTANCE=(HOST=10.10.10.11)(PORT=9120)))
tas1=((INSTANCE=(HOST=10.10.10.12)(PORT=9120)))
tac0=((INSTANCE=(HOST=10.10.10.11)(PORT=9150)(DB_NAME=TAC)))
tac1=((INSTANCE=(HOST=10.10.10.12)(PORT=9150)(DB_NAME=TAC)))
SSVR 인스턴스 구성
아래 과정으로 SSVR 인스턴스를 구성합니다. (본 예에서는 Storage 노드 3대, DB 노드 2대로 구성합니다.)
SSVR 인스턴스 생성과 기동
스토리지 디스크 생성
그리드 디스크 생성
플래시 캐시 생성
1. SSVR 인스턴스 생성과 기동
아래는 $TB_HOME/config/$TB_SID.tip에 설정된 내용에 따라서 SSVR 인스턴스를 생성하는 과정입니다.
초기화 파라미터의 내용을 확인하고, 그에 따른 control file을 생성합니다. SSVR 인스턴스를 nomount 모드 로 기동하고 SSVR 인스턴스를 생성합니다. 생성 후에는 SSVR 인스턴스는 자동으로 종료(Shutdown)됩니다.
$ export TB_SID=ssvr0
$ tbboot -t nomount
Listener port = 9100
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create storage server;
created.
SSVR 인스턴스를 다시 기동할 때에는 mount 모드로 기동합니다.
$ tbboot -t mount
Listener port = 9100
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (MOUNT mode).
주의
SSVR 인스턴스는 nomount 모드 기동과 mount 모드 기동만 허용합니다.
2. 스토리지 디스크 생성
스토리지 디스크(Storage Disk)는 SSVR 인스턴스에서 사용할 물리적 디스크입니다. Storage 노드의 디스크를 사용하기 위해 각각의 디스크를 SSVR 인스턴스의 스토리지 디스크로 등록합니다.
아래의 명령어로 스토리지 디스크를 등록할 수 있습니다.
create storage disk {storage-disk-name} path {path} size {storage-disk-size}
storage disk
{storage-disk-name}
SSVR 인스턴스에 등록할 스토리지 디스크 이름입니다. 각 SSVR 인스턴스 내 에서만 고유한 이름을 가지면 됩니다.
path {path}
Storage 노드의 디스크 경로입니다.
size {storage-disk-size}
SSVR에 등록할 스토리지 디스크의 크기입니다. 기본 단위는 바이트이며 K(KiB), M(MiB), G(GiB), T(TiB), P(PiB), E(EiB)로 단위를 붙여 사용할 수 있습니다.
스토리지 디스크의 용량 단위는1T(TiB)=1024G(GiB)입니다. fdisk 명령어로 확인하는 디스크의 용량은 1TB=1000GB로 계산되므로 용량을 1T=1024G단위 로 계산하여 스토리지 디스크들의 크기를 설정해야 합니다.
옵션 파라미터이며 명시하지 않은 경우 디바이스의 총 용량이 들어갑니다.
OS와 SSVR 바이너리 파일 및 컨트롤 파일이 설치된 디스크는 4TB에서 400GB를 뺀 만큼을 스토리지 디스크 용량으로 설정합니다. 아래 예는 첫 번째 디스크에 설치된 것으로 가정하고 설명합니다.
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create storage disk SD00 path '/dev/disk0' size 3350G;
created.
SQL> create storage disk SD01 path '/dev/disk1' size 3725G;
created.
SQL> create storage disk SD02 path '/dev/disk2' size 3725G;
created.
SQL> create storage disk SD03 path '/dev/disk3' size 3725G;
created.
SQL> create storage disk SD04 path '/dev/disk4' size 3725G;
created.
SQL> create storage disk SD05 path '/dev/disk5' size 3725G;
created.
SQL> create storage disk SD06 path '/dev/disk6' size 3725G;
created.
SQL> create storage disk SD07 path '/dev/disk7' size 3725G;
created.
SQL> create storage disk SD08 path '/dev/disk8' size 3725G;
created.
SQL> create storage disk SD09 path '/dev/disk9' size 3725G;
created.
SQL> create storage disk SD10 path '/dev/disk10' size 3725G;
created.
SQL> create storage disk SD11 path '/dev/disk11' size 3725G;
created.
스토리지 디스크 정보는 V$SSVR_STORAGE_DISK 뷰를 통해서 조회할 수 있습니다.
SQL> select * from v$ssvr_storage_disk;
STORAGE_DISK_NUMBER NAME PATH OS_BYTES
------------------- ------ ----------- ---------
0 SD00 /dev/disk0 4.000E+12
1 SD01 /dev/disk1 4.000E+12
2 SD02 /dev/disk2 4.000E+12
3 SD03 /dev/disk3 4.000E+12
4 SD04 /dev/disk4 4.000E+12
5 SD05 /dev/disk5 4.000E+12
6 SD06 /dev/disk6 4.000E+12
7 SD07 /dev/disk7 4.000E+12
8 SD08 /dev/disk8 4.000E+12
9 SD09 /dev/disk9 4.000E+12
10 SD10 /dev/disk10 4.000E+12
11 SD11 /dev/disk11 4.000E+12
3. 그리드 디스크 생성
그리드 디스크(Grid Disk)는 SSVR 인스턴스의 외부에서 보이는 디스크이며, 반드시 하나의 스토리지 디스크에 포함되도록 구성합니다.
아래의 명령어로 그리드 디스크를 등록할 수 있습니다.
create grid disk {grid-disk-name} storage disk {storage-disk-name} \
offset {offset} size {grid-disk-size}
grid disk {grid-disk-name}
SSVR 인스턴스에 등록할 그리드 디스크 이름입니다. 각 SSVR 인스턴스 내에 서만 고유한 이름을 가지면 됩니다.
storage disk
{storage-disk-name}
SSVR 인스턴스에 등록된 스토리지 디스크 이름입니다. V$SSVR_STOR AGE_DISK 뷰를 통해서 이름을 조회할 수 있습니다.
offset {offset}
스토리지 디스크의 오프셋을 입력할 수 있습니다. 옵션 파라미터이며 사용하지 않는 것을 권장합니다. 사용하려면 32KB의 배수로 설정해야 합니다.
size {grid-disk-size}
SSVR 인스턴스에 등록할 그리드 디스크의 크기입니다. 기본 단위는 바이트이 며 K(KiB), M(MiB), G(GiB), T(TiB), P(PiB), E(EiB)로 단위를 붙여 사용할 수 있습니다. 스토리지 디스크의 가용량보다 크지 않아야 합니다. 옵션 파라미터이며 명시하지 않는 경우 명시한 스토리지 디스크의 총 용량 이하 32KB의 최대 배수값이 들어갑니다.
아래는 size 옵션을 생략하여 등록된 스토리지 디스크의 최대 가용량을 사용하여 그리드 디스크 생성하는 예입니다.
SQL> create grid disk GD00 storage disk SD00;
created.
SQL> create grid disk GD01 storage disk SD01;
created.
SQL> create grid disk GD02 storage disk SD02;
created.
SQL> create grid disk GD03 storage disk SD03;
created.
SQL> create grid disk GD04 storage disk SD04;
created.
SQL> create grid disk GD05 storage disk SD05;
created.
SQL> create grid disk GD06 storage disk SD06;
created.
SQL> create grid disk GD07 storage disk SD07;
created.
SQL> create grid disk GD08 storage disk SD08;
created.
SQL> create grid disk GD09 storage disk SD09;
created.
SQL> create grid disk GD10 storage disk SD10;
created.
SQL> create grid disk GD11 storage disk SD11;
created.
그리드 디스크 정보는 V$SSVR_GRID_DISK 뷰를 통해서 조회할 수 있습니다.
SQL> select * from v$ssvr_grid_disk;
GRID_DISK_NUMBER NAME STORAGE_DISK_NUMBER STORAGE_DISK_OFFSET TOTAL_BYTES
---------------- ------ ------------------- ------------------- -----------
0 GD00 0 0 4.000E+12
1 GD01 1 0 4.000E+12
2 GD02 2 0 4.000E+12
3 GD03 3 0 4.000E+12
4 GD04 4 0 4.000E+12
5 GD05 5 0 4.000E+12
6 GD06 6 0 4.000E+12
7 GD07 7 0 4.000E+12
8 GD08 8 0 4.000E+12
9 GD09 9 0 4.000E+12
10 GD10 10 0 4.000E+12
11 GD11 11 0 4.000E+12
4. 플래시 캐시 생성
아래의 명령어로 플래시 디바이스를 캐시로 등록해 I/O 속도를 향상시킬 수 있습니다.
create flashcache {name} path {path} size {flashcache-size}
path {path}
플래시 장치명의 prefix입니다.
예를 들어 /dev/flash0, /dev/flash1, /dev/flash2, /dev/flash4 4개의 플래시 장 치가 있으면 '/dev/flash'에 해당됩니다.
size {flashcache-size}
플래시 장치들의 크기입니다. 기본 단위는 바이트이며 K(KiB), M(MiB), G(GiB), T(TiB), P(PiB), E(EiB)로 단위를 붙여 사용할 수 있습니다.
플래시 장치의 용량 단위는 1T(TiB)=1024G(GiB)입니다. fdisk 명령어로 확인하 는 플래시 장치의 용량은 1TB=1000GB로 계산되므로 용량을 1TiB=1024GiB 단위로 계산하여 플래시 장치들의 크기를 설정해야 합니다.
옵션 파라미터이며 명시하지 않는 경우 디바이스의 총 용량이 들어간다.
현재 동일한 크기의 플래시 장치들을 지원하게 되어 있습니다. 모든 플래시 장치들의 크기의 합이 아니라 각각의 플래시 장치들의 크기를 설정해야 한다는 점을 주의합니다.
아래는 경로가 '/dev/flash'이고 플래시 장치의 시작번호는 0, 장치개수는 4, 플래시 장치의 크기는 1490GiB 인 플래시 캐시를 생성하는 예입니다. 플래시 캐시 생성 후 SSVR 인스턴스를 재기동하기 전까지는 플래시 캐시가 사용되지 않습니다. 플래시 캐시 사용을 위해서 SSVR 인스턴스를 재기동합니다.
SQL> create flashcache flash0 path '/dev/flash0' size 1490G;
created.
SQL> create flashcache flash1 path '/dev/flash1' size 1490G;
created.
SQL> create flashcache flash2 path '/dev/flash2' size 1490G;
created.
SQL> create flashcache flash3 path '/dev/flash3' size 1490G;
created.
SQL> quit
Disconnected.
$ tbdown
Tibero instance terminated (NORMAL mode).
$ tbboot -t mount
Listener port = 9100
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (MOUNT mode).
플래시 캐시 정보는 V$SSVR_FLASHCACHE 뷰를 통해서 조회할 수 있습니다.
SQL> select * from v$ssvr_flashcache;
FLASHCACHE_NUMBER NAME PATH OS_BYTES
----------------- ------ ----------- ---------
0 FC0 /dev/flash0 1.600E+12
1 FC1 /dev/flash1 1.600E+12
2 FC2 /dev/flash2 1.600E+12
3 FC3 /dev/flash3 1.600E+12
TAS/TAC 인스턴스 구성
본 절에서는 TAS와 TAC에서 SSVR 인스턴스를 사용하여 디스크 스페이스, 테이블 스페이스를 생성하고 DB를 설치하는 방법을 기술합니다.
SSVR 인스턴스 접속 정보
TAS 인스턴스와 TAC 인스턴스에서 SSVR 인스턴스를 사용하기 위해 SSVR 인스턴스 접속 정보를 설정합니다. $TB_HOME/client/config/ssdsn.tbr 파일에 통신에 사용할 Storage 노드의 네트워크 IP 주소와 SSVR 인스턴스의 포트 정보를 기록합니다. 이 SSVR 인스턴스 접속 정보는 TAS와 TAC 인스턴스가 설치된 모든 노드에 설정이 필요합니다.
아래는 $TB_HOME/client/config/ssdsn.tbr 파일의 예입니다.
# Example
# {storage node #0 IP}/{port}
# {storage node #1 IP}/{port}
# {storage node #2 IP}/{port}
10.10.10.13/9110
10.10.10.14/9110
10.10.10.15/9110
설정 항목
{storage node IP}
사용할 Storage 노드의 IP 주소입니다.
{port}
사용할 SSVR 인스턴스의 포트 번호를 나타내며, SSVR 인스턴스 초기화 파 라미터 중SSVR_RECV_PORT_START에 해당합니다. Storage 노드 IP 뒤에 "/"로 구분한 뒤 설정합니다.
2. TAS/TAC 설정
아래의 과정을 통해 먼저 TAS 인스턴스를 설정하고, SSVR의 그리드 디스크를 활용하여 디스크 스페이스(DiskSpace)를 생성합니다.
이후 CM 인스턴스를 구축한 뒤, 이를 TAS 인스턴스와 연동해 TAC 인스턴스를 클러스터로 운영할 수 있습니다.
tbSQL 사용을 위한 접속 정보 설정
DB 노드 0번 TAS 인스턴스 구성 및 디스크 스페이스 생성
DB 노드 0번 CM 인스턴스 구성
DB 노드 0번 CM, TAS 인스턴스 기동
DB 노드 0번 TAS 인스턴스에서 DB 노드 1번 TAS 추가
DB 노드 1번 TAS, CM 인스턴스 구성 및 기동
DB 노드 0번 TAC 인스턴스 구성 및 기동
DB 노드 0번 TAC 인스턴스에서 DB 노드 1번 TAC 추가
DB 노드 1번 TAC 인스턴스 기동
1. tbSQL 사용을 위한 접속 정보 설정
아래는 tbSQL을 이용해 SSVR 인스턴스와 TAS, TAC 인스턴스에 접속하기 위한 $TB_HOME/client/con fig/tbdsn.tbr 파일의 예입니다.
ssvr0=((INSTANCE=(HOST=10.10.10.13)(PORT=9100)))
ssvr1=((INSTANCE=(HOST=10.10.10.14)(PORT=9100)))
ssvr2=((INSTANCE=(HOST=10.10.10.15)(PORT=9100)))
tas0=((INSTANCE=(HOST=10.10.10.11)(PORT=9120)))
tas1=((INSTANCE=(HOST=10.10.10.12)(PORT=9120)))
tac0=((INSTANCE=(HOST=10.10.10.11)(PORT=9150)(DB_NAME=TAC)))
tac1=((INSTANCE=(HOST=10.10.10.12)(PORT=9150)(DB_NAME=TAC)))
2. DB 노드 0번 TAS 인스턴스 구성 및 디스크 스페이스 생성
TAS 인스턴스는 $TB_HOME/client/config/ssdsn.tbr 파일에 기록된 SSVR 인스턴스의 접속 정보를 통해 SSVR 인스턴스에 접속하며, SSVR에 생성되어 있는 그리드 디스크 이름을 통해 각각의 디스크를 구분합니다.
TAS 인스턴스는 "-"로 시작하는 파일 경로를 SSVR의 그리드 디스크로 인식하며 디스크 스페이스 생성, 디스크 추가/삭제 등 모든 경우에 해당 경로를 사용할 수 있습니다.
아래는 TAS 인스턴스의 초기화 파라미터와 설정 예입니다.
AS_SCAN_SSVR_DISK
TAS tip에 기재하는 초기화 파라미터로 SSVR 인스턴스의 디스크 사용 여부를 나타냅니다. 별도 변경 없을 시 "N"으로 설정되므로 Zeta Data를 사용하는 경우에는 TAS tip에 반드시 "Y"로 명시합니다.
# tas0.tip
INSTANCE_TYPE=AS
LISTENER_PORT=9120
TOTAL_SHM_SIZE=4G
MEMORY_TARGET=5G
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.11
LOCAL_CLUSTER_PORT=9130
CM_PORT=9140
THREAD=0
DB_BLOCK_SIZE=4K
AS_SCAN_SSVR_DISK=Y
USE_ZETA=Y
아래는 SSVR 인스턴스의 그리드 디스크를 이용해 디스크 스페이스를 생성하는 과정의 예입니다.
AU(Allocation Unit)는 할당 단위를 나타내는 값으로 설정 가능한 할당 단위의 크기는 4MB입니다. 디스크의 striping 단위와 TAS의 striping 단위가 배수 관계여야 배열이 맞아 성능 향상이 있습니다.
$ export TB_SID=tas0
$ tbboot -t nomount
Listener port = 9120
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create diskspace DS0 normal redundancy
failgroup FG1 disk
'-10.10.10.13/GD00' name DISK00 size 3350G,
'-10.10.10.13/GD01' name DISK01 size 3725G,
'-10.10.10.13/GD02' name DISK02 size 3725G,
'-10.10.10.13/GD03' name DISK03 size 3725G,
'-10.10.10.13/GD04' name DISK04 size 3725G,
'-10.10.10.13/GD05' name DISK05 size 3725G,
'-10.10.10.13/GD06' name DISK06 size 3725G,
'-10.10.10.13/GD07' name DISK07 size 3725G,
'-10.10.10.13/GD08' name DISK08 size 3725G,
'-10.10.10.13/GD09' name DISK09 size 3725G,
'-10.10.10.13/GD10' name DISK10 size 3725G,
'-10.10.10.13/GD11' name DISK11 size 3725G
failgroup FG2 disk
'-10.10.10.14/GD00' name DISK20 size 3350G,
'-10.10.10.14/GD01' name DISK21 size 3725G,
'-10.10.10.14/GD02' name DISK22 size 3725G,
'-10.10.10.14/GD03' name DISK23 size 3725G,
'-10.10.10.14/GD04' name DISK24 size 3725G,
'-10.10.10.14/GD05' name DISK25 size 3725G,
'-10.10.10.14/GD06' name DISK26 size 3725G,
'-10.10.10.14/GD07' name DISK27 size 3725G,
'-10.10.10.14/GD08' name DISK28 size 3725G,
'-10.10.10.14/GD09' name DISK29 size 3725G,
'-10.10.10.14/GD10' name DISK30 size 3725G,
'-10.10.10.14/GD11' name DISK31 size 3725G
failgroup FG3 disk
'-10.10.10.15/GD00' name DISK40 size 3350G,
'-10.10.10.15/GD01' name DISK41 size 3725G,
'-10.10.10.15/GD02' name DISK42 size 3725G,
'-10.10.10.15/GD03' name DISK43 size 3725G,
'-10.10.10.15/GD04' name DISK44 size 3725G,
'-10.10.10.15/GD05' name DISK45 size 3725G,
'-10.10.10.15/GD06' name DISK46 size 3725G,
'-10.10.10.15/GD07' name DISK47 size 3725G,
'-10.10.10.15/GD08' name DISK48 size 3725G,
'-10.10.10.15/GD09' name DISK49 size 3725G,
'-10.10.10.15/GD10' name DISK50 size 3725G,
'-10.10.10.15/GD11' name DISK51 size 3725G
attribute 'AU_SIZE'= '4M';
created.
주의
AU_SIZE가 '4M'가 아닐 경우 플래시 캐시의 효과를 제대로 볼 수 없으므로 반드시 '4M'로 설정합니다.
디스크 스페이스 정보는 V$AS_DISKSPACE 뷰를 통해서 조회할 수 있습니다.
SQL> select * from v$as_diskspace;
DISKSPACE_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE
----------------- ------ ------------ ----------- ---------------------
0 DS0 512 4096 4194304
STATE TYPE TOTAL_MB FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------- ------- --------- --------- ----------------------- --------------
MOUNT NORMAL 33666928 30482600 106152 14710574
3. DB 노드 0번 CM 인스턴스 구성
CM 인스턴스는 네트워크와 클러스터를 등록하고 TAS와 TAC를 서비스로 등록하여 안정적인 클러스터 운영을 돕습니다.
아래는 CM의 초기화 파라미터 설정 예시로, 자세한 내용은 "Tibero 관리자 안내서"를 참고합니다.
# cm0.tip
CM_NAME=cm0
CM_UI_PORT=9140
CM_RESOURCE_FILE="/home/tibero/zetadata/cm0_res.crf"
4. DB 노드 0번 CM, TAS 인스턴스 기동
아래는 CM 인스턴스를 기동하고 나서 CM에 네트워크 등록, 클러스터 등록, 클러스터 기동, TAS 서비스 등록, TAS 인스턴스 등록, TAS 인스턴스 기동 과정의 예입니다.
주의
반드시 이전 단계 "DB 노드 0번 TAS 인스턴스 구성 및 디스크 스페이스 생성"을 진행하고 아래 과정을 실행합니다.
$ export CM_HOME=$TB_HOME
$ export CM_SID=cm0
$ tbcm -b
CM Guard demon started up.
TBCM 7.1.1 (Build -)
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero cluster manager started up.
Local node name is (cm0:9140).
$ cmrctl add network --name net0 --ipaddr 10.10.10.11 --portno 1000
Resource add success! (network, net0)
$ cmrctl add cluster --name cls --incnet net0 --cfile "-"
Resource add success! (cluster, cls)
$ cmrctl start cluster --name cls
MSG SENDING SUCCESS!
$ cmrctl add service --name TAS --type as --cname cls
Resource add success! (service, TAS)
$ cmrctl add as --name tas0 --svcname TAS --dbhome "$TB_HOME"
Resource add success! (as, tas0)
$ cmrctl start as --name tas0
Listener port = 9120
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
BOOT SUCCESS! (MODE : NORMAL)
5. DB 노드 0번 TAS 인스턴스에서 DB 노드 1번 TAS 추가
아래는 DB 노드 0번 TAS 인스턴스에서 DB 노드 1번 TAS를 추가하는 과정의 예입니다.
$ export TB_SID=tas0
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> alter diskspace DS0 add thread 1;
SQL> Disconnected.
6. DB 노드 1번 TAS, CM 인스턴스 구성 및 기동
아래는 DB 노드 1번 TAS 인스턴스 초기화 파라미터 설정 예입니다.
# tas1.tip
INSTANCE_TYPE=AS
LISTENER_PORT=9120
TOTAL_SHM_SIZE=4G
MEMORY_TARGET=5G
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.12
LOCAL_CLUSTER_PORT=9130
CM_PORT=9140
THREAD=1
DB_BLOCK_SIZE=4K
AS_SCAN_SSVR_DISK=Y
USE_ZETA=Y
아래는 DB 노드 1번 CM 인스턴스의 초기화 파라미터 설정의 예입니다.
# cm1.tip
CM_NAME=1
CM_UI_PORT=9140
CM_RESOURCE_FILE="/home/tibero/zetadata/cm1_res.crf"
아래는 DB 노드 1번 CM 인스턴스를 기동하고 네트워크 등록, 클러스터 등록, 클러스터 기동, TAS 서비스 등록, TAS 인스턴스 등록, TAS 인스턴스 기동 과정의 예입니다.
$ export TB_SID=tas1
$ export CM_HOME=$TB_HOME
$ export CM_SID=cm1
$ tbcm -b
CM Guard demon started up.
TBCM 7.1.1 (Build -)
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero cluster manager CM started up.
Local node name is (cm1:9140).
$ cmrctl add network --name net1 --ipaddr 10.10.10.12 --portno 1000
Resource add success! (network, net1)
$ cmrctl add cluster --name cls --incnet net1 --cfile "-"
Resource add success! (cluster, cls)
$ cmrctl start cluster --name cls
MSG SENDING SUCCESS!
$ cmrctl add as --name tas1 --svcname TAS --dbhome "$TB_HOME"
Resource add success! (as, tas1)
$ cmrctl start as --name tas1
Listener port = 9120
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
BOOT SUCCESS! (MODE : NORMAL)
7. DB 노드 0번 TAC 인스턴스 구성 및 기동
TAC 인스턴스는 $TB_HOME/client/config/ssdsn.tbr 파일에 기록된 SSVR 인스턴스 접속 정보를 통해SSVR 인스턴스에 접속합니다. TAC 인스턴스는 "+"로 시작하는 파일 경로를 TAS 인스턴스에 의해 관리되는 가상 파일로 인식합니다. 해당 경로는 컨트롤 파일, CM 파일을 포함한 모든 파일의 경로에 사용할 수 있습니다.
아래는 TAS를 이용해 DB 노드 0번 TAC 인스턴스를 클러스터로 구성하는 경우에 대한 초기화 파라미터의 예입니다. 'DB_BLOCK_SIZE=32K' 파라미터는 수정하지 않습니다.
주의
플래시 캐시에는 32K 블록만 적재되므로 이를 수정하면 플래시 캐시 사용이 불가능합니다.
따라서, TAC 인스턴스들의 DB_BLOCK_SIZE는 반드시 32K로 설정해야 합니다.
# tac0.tip
DB_NAME=TAC LISTENER_PORT=9150
CONTROL_FILES="+DS0/c1.ctl"
LOG_ARCHIVE_DEST="+DS0/ARCH"
MAX_SESSION_COUNT=300
TOTAL_SHM_SIZE=60G
MEMORY_TARGET=270G
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.11
LOCAL_CLUSTER_PORT=9160
CM_PORT=9140
THREAD=0
UNDO_TABLESPACE=UNDO0
DB_BLOCK_SIZE=32K
AS_PORT=9120
USE_ACTIVE_STORAGE=Y
_USE_O_DIRECT=Y
USE_ZETA=Y
MEMORY_TARGET 파라미터는 TAC 인스턴스에서 사용할 메모리의 총량을 의미합니다.
InfiniBand 라이브러리에서 connection에 사용되는 외부 메모리 사용량이 많으므로(connection 당 4MB) 사이트 담당 사업부나 기술지원에 문의 후 세팅을 권장합니다.
계산식은 아래와 같습니다.
TAC 인스턴스 기준
MEMORY_TARGET = (전체 메모리양)
- (Storage 노드 개수) * (SSVR 인스턴스 당 그리드 디스크 개수)
* {(TAC 인스턴스의 Max Session Count)
+ (TAC 인스턴스의 PEP thread 전체 개수)} * 4MB
- (노드 내 TAS 인스턴스의 Memory Target)
- 10GB(=OS 및 타 thread의 connection 여유분)
** (TAC 인스턴스의 PEP thread 전체 개수) = (TAC 인스턴스의 PEP Process 개수)
* (PEP process 당 thread 개수)
** TAC 인스턴스의 PEP thread 전체 개수 계산은 현재 TAC 인스턴스를 기준으로 함.
아래는 이전 단계에서 기동했던 DB 노드 0번 CM 인스턴스에 TAC 서비스를 등록하고 TAC 인스턴스를 등록하는 과정의 예입니다.
$ export CM_HOME=$TB_HOME
$ export CM_SID=cm0
$ cmrctl add service --name TAC --type db --cname cls
Resource add success! (service, TAC)
$ cmrctl add db --name tac0 --svcname TAC --dbhome "$TB_HOME"
Resource add success! (db, tac0)
아래는 DB 노드 0번 TAC 인스턴스를 nomount 모드로 기동하여 TAS 인스턴스의 디스크 스페이스를 이용해 데이터베이스를 생성하는 과정의 예입니다. 생성 후에는 자동으로 종료되므로 재기동합니다.
$ export TB_SID=tac0
$ tbboot -t nomount
Listener port = 9150
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NOMOUNT mode).
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create database "TAC"
user sys identified by tibero
maxinstances 32
maxdatafiles 2048
character set MSWIN949
logfile group 1 '+DS0/log0001.log' size 2G,
group 2 '+DS0/log0002.log' size 2G,
group 3 '+DS0/log0003.log' size 2G
maxloggroups 255
maxlogmembers 8
datafile '+DS0/system.dtf' size 4G
autoextend on next 64M maxsize 128G
syssub datafile '+DS0/syssub.dtf' size 4G
autoextend on next 64M maxsize 128G
default temporary tablespace TEMP
tempfile '+DS0/temp000.dtf' size 128G autoextend off,
tempfile '+DS0/temp001.dtf' size 128G autoextend off,
tempfile '+DS0/temp002.dtf' size 128G autoextend off,
tempfile '+DS0/temp003.dtf' size 128G autoextend off,
.
.
.
tempfile '+DS0/temp098.dtf' size 128G autoextend off,
tempfile '+DS0/temp099.dtf' size 128G autoextend off
undo tablespace UNDO0 datafile
'+DS0/undo00.dtf' size 128G autoextend off,
'+DS0/undo01.dtf' size 128G autoextend off,
'+DS0/undo02.dtf' size 128G autoextend off
default tablespace USR
datafile '+DS0/usr.dtf' size 32G
autoextend on next 64M maxsize unlimited;
Database created.
SQL> Disconnected.
$ tbboot
Listener port = 9150
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
8. DB 노드 0번 TAC 인스턴스에서 DB 노드 1번 TAC 추가
아래는 DB Node 1번 TAC 인스턴스를 기동하기 위해 DB 노드 0번 TAC 인스턴스에서 추가 구성하는 예 입니다.
$ export TB_SID=tac0
$ tbsql sys/tibero
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> create undo tablespace UNDO1 datafile
'+DS0/undo03.dtf' size 128G autoextend off,
'+DS0/undo04.dtf' size 128G autoextend off,
'+DS0/undo05.dtf' size 128G autoextend off;
SQL> alter database add logfile thread 1 group 4 '+DS0/log004.log' size 2G;
SQL> alter database add logfile thread 1 group 5 '+DS0/log005.log' size 2G;
SQL> alter database add logfile thread 1 group 6 '+DS0/log006.log' size 2G;
SQL> alter database enable public thread 1;
SQL> Disconnected.
9. DB 노드 1번 TAC 인스턴스 기동
다음은 DB 노드 1번 TAC 인스턴스 초기화 파라미터 설정 예입니다. 'DB_BLOCK_SIZE=32K'는 수정하지 않습니다.
# tac1.tip
DB_NAME=TAC
LISTENER_PORT=9150
CONTROL_FILES="+DS0/c1.ctl"
LOG_ARCHIVE_DEST="+DS0/ARCH"
MAX_SESSION_COUNT=300
TOTAL_SHM_SIZE=60G
MEMORY_TARGET=270G
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.12
LOCAL_CLUSTER_PORT=9160
CM_PORT=9140
THREAD=1
UNDO_TABLESPACE=UNDO1
DB_BLOCK_SIZE=32K
AS_PORT=9120
USE_ACTIVE_STORAGE=Y
_USE_O_DIRECT=Y
USE_ZETA=Y
MEMORY_TARGET 파라미터는 TAC 인스턴스에서 사용할 메모리의 총량을 의미합니다. InfiniBand 라이브러리에서 connection에 사용되는 외부 메모리 사용량이 많으므로(connection 당 4MB) 사이트 담당사업부나 기술지원에 문의 후 세팅을 권장합니다.
계산식은 아래와 같습니다.
TAC 인스턴스 기준
MEMORY_TARGET = (전체 메모리양)
- (Storage 노드 개수) * (SSVR 인스턴스 당 그리드 디스크 개수)
* {(TAC 인스턴스의 Max Session Count)
+ (TAC 인스턴스의 PEP thread 전체 개수)} * 4MB
- (노드 내 TAS 인스턴스의 Memory Target)
- 10GB(=OS 및 타 thread의 connection 여유분)
** (TAC 인스턴스의 PEP thread 전체 개수) = (TAC 인스턴스의 PEP Process 개수)
* (PEP process 당 thread 개수)
** TAC 인스턴스의 PEP thread 전체 개수 계산은 현재 TAC 인스턴스를 기준으로 함.
아래는 이전 단계에서 기동했던 DB 노드 1번 CM 인스턴스에 TAC 인스턴스를 등록하고 기동하는 과정의 예입니다.
$ export TB_SID=tac1
$ export CM_HOME=$TB_HOME
$ export CM_SID=cm1
$ cmrctl add db --name tac1 --svcname TAC --dbhome "$TB_HOME
Resource add success! (db, tac1)
$ cmrctl start db --name tac1
Listener port = 9150
Tibero 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Tibero instance started up (NORMAL mode).
BOOT SUCCESS! (MODE : NORMAL)
위의 과정들을 통해 3대의 SSVR 노드, 2대의 DB 노드에 각각 SSVR 인스턴스, TAS 인스턴스, TAC 인스턴스를 구성합니다.
SSVR 인스턴스 정보 조회
SSVR 인스턴스 정보를 조회하기 위해 다음의 뷰들을 사용할 수 있습니다. 해당 뷰들은 SSVR 인스턴스에서 만 조회할 수 있습니다.
V$SSVR_CLIENT
SSVR 인스턴스가 커넥션을 맺고 있는 클라이언트를 조회합니다.
V$SSVR_FLASHCACHE
SSVR 인스턴스에 연결된 플래시 캐시(Flash Cache) 정보를 조회합니다.
V$SSVR_GRID_DISK
SSVR 인스턴스에 연결된 그리드 디스크(Grid Disk) 정보를 조회합니다.
V$SSVR_STORAGE_DISK
SSVR 인스턴스에 연결된 스토리지 디스크(Storage Disk) 정보를 조회합니다.
V$SSVR_SLAB_STAT
SSVR 인스턴스에서 사용 중인 SLAB 정보를 조회합니다.
V$SSVR_MEMSTAT
SSVR 인스턴스에서 사용 중인 메모리 정보를 조회합니다.
V$SSVR_CLIENT
V$SSVR_CLIENT 뷰는 SSVR 인스턴스가 커넥션을 맺고 있는 모든 클라이언트 정보를 보여줍니다.
ADDRESS
VARCHAR(20)
클라이언트의 주소입니다.
PORT
NUMBER
클라이언트와 커넥션이 되어있는 포트 번호입니다.
NAME
VARCHAR(128)
클라이언트의 이름입니다.
THREAD_NUMBER
NUMBER
클라이언트와의 커넥션을 담당하는 Thread number입니다.
아래는 V$SSVR_CLIENT 조회 예입니다.
SQL> select * from v$ssvr_client;
ADDRESS PORT NAME TRHEAD_NUMBER
--------- ------ ---------- ----------------
127.0.0.1 36088 TAS 0
127.0.0.1 36070 CLIENT_LIB 0
V$SSVR_FLASHCACHE
V$SSVR_FLASHCACHE 뷰는 SSVR 인스턴스에 연결된 모든 플래시 캐시 정보를 보여줍니다.
FLASHCACHE_NUMBER
NUMBER
플래시 캐시의 번호입니다.
NAME
VARCHAR(32)
플래시 캐시의 이름입니다.
PATH
VARCHAR(256)
플래시 캐시의 경로입니다.
OS_BYTES
NUMBER
OS가 인식하는 플래시 캐시의 크기입니다.
V$SSVR_GRID_DISK
V$SSVR_GRID_DISK 뷰는 SSVR 인스턴스에 연결된 모든 그리드 디스크 정보를 보여줍니다.
GRID_DISK_NUMBER
NUMBER
그리드 디스크의 번호입니다.
NAME
VARCHAR(128)
그리드 디스크의 이름입니다.
STORAGE_DISK_NUMBER
NUMBER
그리드 디스크와 매핑되어 있는 스토리지 디스크 의 번호입니다.
STORAGE_DISK_OFFSET
NUMBER
그리드 디스크와 매핑되어 있는 스토리지 디스크의 offset입니다.
TOTAL_BYTES
NUMBER
그리드 디스크의 크기입니다.
V$SSVR_STORAGE_DISK
V$SSVR_STORAGE_DISK 뷰는 SSVR 인스턴스에 연결된 모든 스토리지 디스크 정보를 보여줍니다.
STORAGE_DISK_NUMBER
NUMBER
스토리지 디스크의 번호입니다.
NAME
VARCHAR(128)
스토리지 디스크의 이름입니다.
PATH
VARCHAR(256)
스토리지 디스크의 경로입니다.
OS_BYTES
NUMBER
OS가 인식하는 스토리지 디스크의 크기입니다.
V$SSVR_SLAB_STAT
V$SSVR_SLAB_STAT 뷰는 SSVR 인스턴스가 현재 사용하고 있는 SLAB 정보를 보여줍니다.
SLAB_SIZE
NUMBER
SLAB의 크기입니다.
SLAB_GET_CNT
NUMBER
SLAB의 개수입니다.
TOTAL_CHUNK_CNT_NUMBER
NUMBER
청크(Chunk)의 총량입니다.
MAX_CHUNK_CNT
NUMBER
청크의 가능한 최대 개수입니다.
아래는 V$SSVR_SLAB_STAT 조회 예입니다.
SQL> select * from v$ssvr_slab_stat;
SLAB_SIZE SLAB_GET_CNT TOTAL_CHUNK_CNT MAX_CHUNK_CNT
---------- ------------ --------------- -------------
32768 99838 48 48
1048576 354 48 48
4194304 72 48 48
32768 112967 64 64
4194304 25 16 16
5 rows selected.
V$SSVR_MEMSTAT
V$SSVR_MEMSTAT 뷰는 SSVR 인스턴스의 메모리 사용 정보를 보여줍니다. (단위는 MB)
TOTAL_PGA_MEMORY_MB
NUMBER
프로세스 메모리 총 크기입니다.
FIXED_PGA_MEMORY_MB
NUMBER
고정 프로세스 메모리 크기입니다.
USED_PGA_MEMORY_MB
VARCHAR(128)
사용한 프로세스 메모리 크기입니다.
TOTAL_SHARED_MEMORY_MB
NUMBER
공유 메모리 총 크기입니다.
FIXED_SHARED_MEMORY_MB
NUMBER
고정 공유 메모리 크기입니다.
USED_SHARED_MEMORY_MB
NUMBER
사용한 공유 메모리 크기입니다.
아래는 V$SSVR_MEMSTAT 조회 예입니다.
SQL> select * from v$ssvr_memstat;
TOTAL_PGA_MEMORY_MB FIXED_PGA_MEMORY_MB USED_PGA_MEMORY_MB
------------------- ------------------- ------------------
TOTAL_SHARED_MEMORY_MB FIXED_SHARED_MEMORY_MB USED_SHARED_MEMORY_MB
---------------------- ---------------------- ---------------------
4092 31 3466
2048 714 1.7592E+13
1 row selected.
Last updated