> For the complete documentation index, see [llms.txt](https://docs.tibero.com/tibero-manuals/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tibero.com/tibero-manuals/7.2.6.manuals/installation-guide/installation-prerequisites.md).

# 설치 전 준비사항

Tibero를 설치하기에 앞서 필요한 하드디스크의 용량 확인 및 JDK 설치, 운영체제별 커널 파라미터(Kernel parameters)의 설정을 설명합니다.

## 개요

Tibero를 설치하기 전에 확인하고 설정해야 할 준비 사항은 다음과 같습니다.

* 디스크 용량 확인
* JDK 설치
* 운영체제별 패키지 설치
* 운영체제별 파라미터 설정
* NTP 서버 설정
* 호스트명과 포트 번호, 시스템 계정, localhost 확인

## 디스크 용량 확인

Tibero를 설치하기 위해서는 각 플랫폼별로 약간의 차이가 있지만 최소 2GB 이상의 하드 디스크 여유 공간이 필요합니다. 이는 Tibero를 설치하고 나서 데이터베이스를 생성할 때 최소로 필요한 하드 디스크 공간을 의미하기도 합니다.

{% hint style="info" %}
**참고**

하드웨어 요구 사항에 대한 자세한 내용은 “[시스템 요구 사항](/tibero-manuals/7.2.6.manuals/installation-guide/installation-overview.md#undefined-3)”을 참고합니다.
{% endhint %}

하드 디스크 용량을 확인하는 방법은 여러 가지가 있습니다. UNIX 계열 시스템에서는 **df** 명령어로 확인할 수 있고, Windows 계열 시스템에서는 설치할 하드 디스크의 속성 항목을 통해 확인이 가능합니다.

## **JDK** 설치

Tibero를 설치하기 전에 **JDK** 1.8 이상(최대 JDK 22)이 반드시 설치되어 있어야 합니다.

OpenJDK를 사용하는 것을 권장하며, 다음 위치에서 다운로드할 수 있습니다.

* OpenJDK 1.8: <https://openjdk.org/install/>
* OpenJDK 9 이상: <https://jdk.java.net/archive/>

시스템이 위 OpenJDK를 사용하지 않는다면 각 시스템에 적합한 JDK를 설치합니다.

각 시스템별 JDK 다운로드 위치는 다음과 같습니다.

<table><thead><tr><th width="174">Platform</th><th>다운로드 링크</th></tr></thead><tbody><tr><td>Linux (RHEL/Oracle Linux/Rocky/ProLinux/CentOS)</td><td><a href="https://developers.redhat.com/products/openjdk/download">https://developers.redhat.com/products/openjdk/download</a></td></tr><tr><td>Linux (Ubuntu)</td><td><a href="https://openjdk.org/install/">https://openjdk.org/install/</a></td></tr><tr><td>Linux (SUSE)</td><td><a href="https://software.opensuse.org/search?q=OpenJDK">https://software.opensuse.org/search?q=OpenJDK</a></td></tr><tr><td>Windows</td><td><a href="https://learn.microsoft.com/java/openjdk/download">https://learn.microsoft.com/java/openjdk/download</a></td></tr><tr><td>Solaris</td><td><a href="https://www.oracle.com/java/technologies/downloads/">https://www.oracle.com/java/technologies/downloads/</a></td></tr><tr><td>AIX</td><td><a href="https://developer.ibm.com/languages/java/semeru-runtimes/downloads/">https://developer.ibm.com/languages/java/semeru-runtimes/downloads/</a></td></tr></tbody></table>

{% hint style="info" %}
**참고**

벤더별 JDK 설치 방법은 각 벤더에서 제공하는 설치 안내서를 참고합니다.
{% endhint %}

## 운영체제별 패키지 설치

본 절에서는 운영체제별로 요구하는 패키지에 대해 설명합니다.

각 패키지는 반드시 해당 버전 이상의 패키지가 설치되어 있어야 하며, 각 운영체제 및 버전별로 패키지명이나 버전이 다를 수 있습니다.

<table><thead><tr><th width="174">Platform</th><th>Packages</th></tr></thead><tbody><tr><td>Linux</td><td>gcc<br>gcc-c++<br>libgcc<br>libstdc++<br>libstdc++-devel<br>libaio<br>libaio-devel<br>gdb<br>glibc</td></tr><tr><td>Windows</td><td>WSH 5.6</td></tr><tr><td>Solaris</td><td><p>libCrun.so.1 (SUNW_1.6)</p><p>pstack</p></td></tr><tr><td>AIX</td><td>procstack</td></tr></tbody></table>

{% hint style="info" %}
**참고**

CentOS 7 빌드 바이너리를 RHEL 8 이상 OS 환경에서 사용할 경우에 한해 아래 패키지가 설치되어 있어야 합니다.
{% endhint %}

<table><thead><tr><th width="174">Platform</th><th>Packages</th></tr></thead><tbody><tr><td>Linux</td><td>ncurses-compat-libs</td></tr></tbody></table>

Ubuntu 22.04 버전에서는 아래 패키지가 설치되어 있어야 합니다.

<table><thead><tr><th width="174">Platform</th><th>Packages</th></tr></thead><tbody><tr><td>Linux</td><td>libaio1<br>libaio-dev<br>libncurses5<br>libtinfo5<br>pstack</td></tr></tbody></table>

Ubuntu 24.04 버전에서는 아래 패키지가 설치되어 있어야 합니다.

<table><thead><tr><th width="174">Platform</th><th>Packages</th></tr></thead><tbody><tr><td>Linux</td><td>libaio1t64<br>libaio-dev<br>libncurses6<br>libtinfo6<br>pstack</td></tr></tbody></table>

SUSE 15.6 이상 버전부터는 아래 패키지가 설치되어 있어야 합니다.

<table><thead><tr><th width="174">Platform</th><th>Packages</th></tr></thead><tbody><tr><td>Linux</td><td>libgcc_s1<br>libstdc++6<br>glibc<br>libaio1<br>gdb</td></tr></tbody></table>

## 운영체제별 파라미터 설정

본 절에서는 운영체제별로 설정해야 할 커널 파라미터와 Shell Limits 파라미터를 설명합니다. 운영체제별로 커널 파라미터의 값을 변경한 경우에는 반드시 시스템을 다시 기동시켜야 합니다.

{% hint style="warning" %}
**주의**

세마포어는 Tibero만 사용하는 것이 아니기 때문에, 추가로 각 항목별로 여유분(OS의 다른 프로세스용)도 추가해 주어야 합니다. (예. 각각 +1000)
{% endhint %}

{% hint style="info" %}
**참고**

Tibero 전체 Thread 수는 대략 아래와 같습니다.

MAX\_SESSION\_COUNT + (MAX\_SESSION\_COUNT/WTHR\_PER\_PROC) + 500
{% endhint %}

### Linux

Linux 환경에서 설정할 커널 파라미터와 Shell Limits 파라미터는 다음과 같습니다.

**커널 파라미터**

* 설정 파일

```
/etc/sysctl.conf
```

* 설정값

<table><thead><tr><th width="218">커널 파라미터</th><th>값</th></tr></thead><tbody><tr><td>kernel.sem</td><td><p>최소 설정값</p><ul><li>SEMMSL : 2 / 권장값 : (Tibero 전체 Thread 수) x 2</li><li>SEMMNS : (Tibero 전체 Thread 수) x 2</li><li>SEMOPM : 2(=SEMMSL)</li><li>SEMMNI : (Tibero 전체 Thread 수)</li></ul><p>최댓값을 높게 설정해도 큰 문제가 없기에 여유롭게 설정하는 것을 권장</p></td></tr><tr><td>kernel.shmall</td><td>ceil(shmmax/PAGE_SIZE)</td></tr><tr><td>kernel.shmmax</td><td>TOTAL_SHM_SIZE 이상 (byte)</td></tr><tr><td>kernel.shmmni</td><td>4096</td></tr><tr><td>fs.nr_open</td><td>nofile 파라미터 이상으로 설정</td></tr><tr><td>fs.file-max</td><td>(nofile 파라미터) x (WTHR_PROC_CNT + PEP_PROC_CNT) 또는 67108864으로 설정</td></tr><tr><td>fs.aio-max-nr</td><td>1048576</td></tr><tr><td>net.ipv4.ip_local_port_range</td><td>1024 65000</td></tr><tr><td>net.core.rmem_default</td><td>262144, OS 기존 설정값 중 최댓값</td></tr><tr><td>net.core.wmem_default</td><td>262144, OS 기존 설정값 중 최댓값</td></tr><tr><td>net.core.rmem_max</td><td>67108864, OS 기존 설정값, TCP_RCVBUF_SIZE, _INC_TCP_RCVBUF_SIZE 중 최댓값</td></tr><tr><td>net.core.wmem_max</td><td>67108864, OS 기존 설정값, TCP_RCVBUF_SIZE, _INC_TCP_RCVBUF_SIZE 중 최댓값</td></tr></tbody></table>

**Shell Limits 파라미터**

* 설정 파일

```
/etc/security/limits.conf
```

* 설정값

<table><thead><tr><th width="140">파라미터</th><th>설명</th></tr></thead><tbody><tr><td>nofile</td><td>(WTHR_PER_PROC * ((total data files in db) + 15)) + (tbsvr process count + 5) + 100 또는 크게 3,000,000 으로 설정</td></tr><tr><td>nproc</td><td><p>MAX_SESSION_COUNT+10000 이상으로 설정</p><ul><li>Soft Limit : 65536</li><li>Hard Limit : 65536</li></ul></td></tr></tbody></table>

{% hint style="warning" %}
**주의**

**파일 디스크립터 한도 설정**

Linux 시스템에서 애플리케이션이 동시에 열 수 있는 파일 디스크립터 수는 여러 계층의 설정에 의해 제한됩니다. 일반적으로 *nofile*, *fs.nr\_open*, *fs.file-max* 세 가지 파라미터에 의해 제약을 받습니다. 계층 관계에 따라 반드시 아래 관계를 충족해야 합니다.

```
nofile <= fs.nr_open <= fs.file-max
```

{% endhint %}

Linux 환경에서는 세션 종료 시 공유 메모리가 해제되어 DB가 중단되는 것을 방지하기 위해 systemd 서비스 파라미터 `RemoveIPC`가 `no`로 설정되어 있는지 확인합니다.

* 설정 파일

```
/etc/systemd/logind.conf
```

* 설정값

| 커널 파라미터   | 값  |
| --------- | -- |
| RemoveIPC | No |

{% hint style="info" %}
**참고**

SELinux를 enforce mode로 사용할 경우 프로세스가 비정상적으로 동작할 수 있어 Tibero를 사용하는 경우 enforce mode로 설정하는 것을 권장하지 않습니다.
{% endhint %}

### Solaris

Solaris 환경에서 설정할 커널 파라미터와 Shell Limits 파라미터는 다음과 같습니다.<br>

### **커널 파라미터**

* 설정 파일

```
/etc/system
```

* 설정값

<table><thead><tr><th width="312">커널 파라미터</th><th>값</th></tr></thead><tbody><tr><td>project.max-sem-ids</td><td>(Tibero 전체 Thread 수) x 2</td></tr><tr><td>process.max-sem-nsems</td><td>10000</td></tr><tr><td>process.max-sem-ops</td><td>200</td></tr><tr><td>project.max-shm-memory</td><td>4294967295 (물리적인 메모리의 절반)</td></tr><tr><td>project.max-shm-ids</td><td>100</td></tr><tr><td>project.max-lwps</td><td>MAX_SESSION_COUNT+10000 이상</td></tr></tbody></table>

### **Shell Limits 파라미터**

* 설정 파일

```
/etc/system
```

* 설정값

<table><thead><tr><th width="196">커널 파라미터</th><th>값</th></tr></thead><tbody><tr><td>nofile</td><td>(WTHR_PER_PROC * ((total data files in db) + 15)) + (tbsvr process count + 5) + 100 또는 크게 3,000,000 으로 설정</td></tr><tr><td>nproc</td><td>– Soft Limit : 65536<br>– Hard Limit : 65536</td></tr></tbody></table>

Solaris 10부터는 프로젝트를 이용하여 각 사용자 단위로 파라미터를 관리하는 것을 권장합니다. 다음은 사용자 단위로 파라미터를 적용하는 예제입니다.

1. 프로젝트를 생성합니다.

```
# projadd -c "tibero" 'user.tibero'
```

2. 파라미터를 설정합니다.

```
# projmod -sK "project.max-shm-memory=(privileged,4294967295,deny)" user.tibero
```

3. 해당 사용자로 다시 접속합니다.

아래와 같은 방법으로 변경된 파라미터 내역에 대해 확인이 가능합니다.

```
# prctl -n project.max-shm-memory -i project user.tibero 
project: 100: user.tibero
NAME	PRIVILEGE	 VALUE	 FLAG	ACTION    RECIPIENT
project.max-shm-memory
        privileged     4.00GB       -   deny              -
        system         16.0EB     max   deny              -
```

### AIX

AIX 환경에서 설정할 커널 파라미터와 Shell Limits 파라미터는 다음과 같습니다.

* 커널 파라미터

AIX 환경에서 변경이 필요한 유일한 커널 파라미터는 maxuproc입니다. 해당 파라미터는 smitty 또는 chdev 명령어를 통해 아래와 같이 변경합니다. AIX 커널은 필요에 따라 자원을 사전 정의된 한계까지 동적으로 할당 및 재할당하기 때문에 그 외 별도의 커널 파라미터 설정은 필요하지 않습니다.

```
# 현재 설정된 값 확인
# lsattr -E -l sys0 -a maxuproc
maxuproc 1024 Maximum number of PROCESSES allowed per user True

# maxuproc 값 변경
# chdev -l sys0 -a maxuproc=16384

```

<table><thead><tr><th width="147">파라미터</th><th>설명</th></tr></thead><tbody><tr><td>maxuproc</td><td><p>Tibero를 기동할 때 시작되는 프로세스 개수와 연관</p><p>-> DB 설치 사용자에서 기동할 프로세스 개수보다 큰 값으로 설정 필요<br>(권장 설정: 16384)</p></td></tr></tbody></table>

{% hint style="info" %}
**참고**

운영 환경에 따라 적절한 값을 계산할 때는 아래 내용을 참고합니다. 사용자 설정: 워커 프로세스 개수 + 백그라운드 프로세스 개수 + 시스템 프로세스 개수 + 여유분(100)
{% endhint %}

### **Shell Limits 파라미터**

* 설정 파일

```
/etc/security/limits
```

* 설정값

<table><thead><tr><th width="321">파라미터</th><th>권장 값</th></tr></thead><tbody><tr><td>Soft FILE size</td><td>-1 (Unlimited)</td></tr><tr><td>Soft CPU time</td><td>-1 (Unlimited)</td></tr><tr><td>Soft DATA segment</td><td>-1 (Unlimited)</td></tr><tr><td>Soft STACK size</td><td>-1 (Unlimited)</td></tr><tr><td>Soft Real Memory size</td><td>-1 (Unlimited)</td></tr></tbody></table>

## **NTP** 서버 설정

데이터베이스 운영 중에 xntpd 데몬에 의해 시스템 시간이 거꾸로 가게 되어 데이터가 잘못 출력되는 현상을 방지하기 위하여 시스템 시간을 동기화한 후에 "-x" 옵션을 주어 데몬을 재시작합니다.

```
# stopsrc -s xntpd
# startsrc -s xntpd -a "-x"
```

시스템을 재시작할 때에도 해당 옵션을 적용하고자 한다면 "/etc/rc.tcpip"에서 아래의 내용에 대한 주석을 해제합니다.

```
start /usr/sbin/xntpd "$src_running" "-x"
```

RHEL 8부터 xntpd 대신 chronyd가 기본 시간 동기화 데몬으로 사용됩니다.

```
# systemctl enable chronyd
# systemctl start chronyd
```

chronyd는 systemd 서비스로 관리되므로, 시스템 재시작 시 자동으로 실행됩니다. 추가적인 옵션이 필요하다면 /etc/chrony.conf 파일을 수정하여 서버 주소, 동기화 정책 등을 설정합니다.

## 기타 확인사항

Tibero의 설치를 시작하기 전에 호스트명과 포트 번호, 시스템 계정, localhost를 확인합니다.

* 호스트명

라이선스를 요청할 때 필요한 호스트명을 확인합니다. /etc/hosts 파일을 확인하거나 콘솔 화면에서 다음 명령어를 입력하여 확인합니다.

```
uname -n
```

* 포트 번호

Tibero가 기동할 때 부여될 포트 번호를 확인합니다. (기본값: 8629)

* 시스템 계정

Tibero를 설치하고 운영할 시스템 계정을 확인합니다.

* localhost

localhost가 제대로 설정되어 있는지 ping 명령을 통해 확인합니다. 만약 제대로 설정되어 있지 않다면 /etc/hosts 파일을 수정합니다.

```
ping localhost
```
