콘텐츠로 이동

3. 데이터베이스 생성#

Altibase 설치 후에 데이터베이스 관리자는 사용자 데이터 발생량을 예측하여 데이터베이스를 생성하고 관리해야 한다. 이 장에서는 데이터베이스 생성시에 알고 있어야 할 주요사항들에 대해서 설명하고 있다.

Altibase의 데이터베이스는 데이터의 논리적 저장 단위인 테이블스페이스로 구성된다. Altibase는 데이터를 논리적으로는 테이블스페이스에, 물리적으로는 테이블스페이스에 대응하는 데이터파일에 저장한다. 데이터베이스 서버를 구동하기 전에, 데이터베이스를 미리 생성시켜 놓아야 한다.

여기에서는 테이블스페이스와 로깅 시스템의 종류 및 데이터베이스 생성 방법에 관하여 설명한다.

테이블스페이스의 종류#

Altibase의 데이터베이스는 여러 개의 테이블스페이스로 구성된다. 테이블스페이스는 그 사용처와 데이터를 저장하는 방법에 따라서 여러 종류로 분류된다.

CREATE DATABASE 구문을 실행하면, 체크포인트 이미지와 데이터 파일이 기본으로 $ALTIBASE_HOME/dbs/ 디렉터리에 생성된다.

Note

사용자가 테이블스페이스를 생성하거나 테이블스페이스에 파일을 추가할 때 명시하는 파일의 확장자와 파일의 경로에는 제한이 없다.

Altibase에서 제공하는 기본 테이블스페이스는 아래와 같다.

메모리 테이블스페이스#

메모리 테이블스페이스는 메모리에 존재한다. 딕셔너리 테이블들과 메모리 테이블들, 그리고 이에 관련된 다양한 데이터베이스 객체들이 저장되는 테이블스페이스이다.

디스크 테이블스페이스#

디스크 테이블들과 디스크 인덱스들이 저장되는 테이블스페이스이다. 이는 다시 시스템 데이터 테이블스페이스와 사용자 데이터 테이블스페이스로 구분된다.

언두 테이블스페이스(Undo Tablespace)#

디스크 테이블에 존재하는 레코드들의 다중버전 동시성 제어 (MVCC: Multi-Version Concurrency Control)를 위해 변경 이전 이미지를 일정 기간 동안 저장해두는 테이블스페이스 이다.

임시 테이블스페이스(Temporary Tablespace)#

질의를 처리하는 과정에서 발생되는 임시 테이블들과 인덱스들을 저장하는 테이블스페이스이다. 데이터 테이블스페이스와 마찬가지로 시스템 임시 테이블스페이스와 사용자 임시 테이블스페이스로 나뉜다.

휘발성 테이블스페이스(Volatile Tablespace)#

디스크 입출력을 하지 않고, 메모리에 객체를 저장하는 테이블스페이스이므로 보다 빠른 성능이 보장된다. 데이터베이스 서비스 종료시 모든 휘발성 데이터 객체들이 사라진다. 휘발성 테이블스페이스의 크기는 시스템의 사용 가능한 물리적 메모리 공간을 초과할 수 없다.

로깅 시스템#

데이터베이스 내의 데이터들은 어떤 상황 하에서도 영속성 (Durability)을 가져야 한다. Altibase는 다음의 두 가지 파일들로 로깅 시스템을 구성하여 데이터의 영속성을 보장한다.

로그 파일#

트랜잭션 수행 중에 발생할 수 있는 비정상 종료에 대비하여 시스템 복구 (system recovery)를 할 수 있도록 작성되는 로그 레코드들을 기록하는 파일들이다. 로그 파일의 이름은 logfile**(**은 로그 파일의 일련 번호)이다.

로그 앵커(Log Anchor) 파일#

테이블스페이스들에 대한 정보와 데이터파일들의 위치, 체크 포인트 관련 정보 등 서버 운용에 관련된 중요한 데이터가 저장된 파일이다. 서버가 정상적으로 구동 되려면 이 파일의 내용이 유효하여야 하며, 그렇지 않을 경우에는 서버를 구동 시킬 수 없다. 또한 로그 앵커 파일은 데이터베이스 복구시에도 사용된다.

최초 데이터베이스 생성시 로그 파일과 로그 앵커 파일들은 $ALTIBASE_HOME/logs/ 위치에 생성된다.

Altibase는 이 로그 앵커 파일들을 3개로 유지하며, 데이터베이스 생성 시 로그 파일들과 같은 위치에 생성되지만, 3개의 로그 앵커 파일들을 서로 다른 파일 시스템에 두기를 권장하고 있다. 로그 앵커 파일의 위치에 관련된 프로퍼티는 LOGANCHOR_DIR 이다.

이 프로퍼티에 대한 자세한 설명은 General Reference > 2장. Altibase 프로퍼티을 참고하기 바란다.

데이터베이스 생성 준비#

데이터베이스를 생성하려면 Altibase 패키지에 제공되는 iSQL유틸리티를 사용한다.

먼저 iSQL 유틸리티를 SYSDBA 모드로 실행한다.

$ isql –u sys –p manager –sysdba

이는 Altibase가 실행되어 있지 않은 경우에는 데이터베이스에 접속하지 않고 isql을 관리자 모드 (admin mode)로 띄우는 것이며, 실행 결과는 아래와 같다.

------------------------------------------------
     Altibase Client Query utility.
     Release Version 7.3.0.0.1
     Copyright 2000, ALTIBASE Corporation or its subsidiaries.
     All Rights Reserved.
------------------------------------------------
ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300
iSQL(sysdba)>

위의 상태가 되면 일단 CREATE DATABASE 명령을 수행하기 위해 서버 프로세스를 구동 시켜야 한다. 서버의 구동은 다음과 같은 순서로 이루어 진다.

단계 1: Pre-Process 단계#

서버를 구동하기 이전 단계로, Altibase는 데이터베이스 메모리를 초기화한다.

데이터베이스의 생성은 Process 단계에서 가능하며, 이 단계에서 Process 단계로 가려면 다음의 명령을 실행한다.

iSQL> STARTUP PROCESS
Trying Connect to Altibase.. Connected with Altibase.
TRANSITION TO PHASE: PROCESS
Command execute success.

단계 2: Process 단계#

CREATE DATABASE 구문으로 데이터베이스를 생성하거나 Altibase 프로퍼티들을 조회하고 변경할 수 있는 단계이다.

단계 3: Control 단계#

데이터베이스 파일이 모두 로드되어 있는 상태의 단계이다. 또한 재시작 복구 (restart recovery)를 위한 준비도 완료된 단계이다. 재시작 복구에 대한 설명은 10장의 "데이터베이스 복구" 절을 참고한다.

단계 4: Meta 단계#

복구가 완료된 단계이다. 이 단계에서는 메타 데이터의 업그레이드와 온라인 로그의 리셋 (reset)이 가능하다.

단계 5: Service 단계#

사용자에게 서비스를 제공할 준비가 된 최종 단계이다.

데이터베이스 생성#

Process 단계에서 데이터베이스를 생성하기 위한 CREATE DATABASE 명령은 아래와 같이 수행한다. CREATE DATABASE 구문의 자세한 사용법은 SQL Reference를 참조한다.

여기서는 기본 옵션을 사용해서 데이터베이스를 생성하는 예를 보여주고 있다.

iSQL> CREATE DATABASE mydb INITSIZE=50M NOARCHIVELOG CHARACTER SET KSC5601 NATIONAL CHARACTER SET UTF16;
DB Info (Page Size     = 32768)
        (Page Count    = 1537)
        (Total DB Size = 50364416)
        (DB File Size  = 1073741824)
        Creating MMDB FILES     [SUCCESS]
        Creating Catalog Tables [SUCCESS]
        Creating DRDB FILES     [SUCCESS]
  [SM] Rebuilding Indices [Total Count:0]  [SUCCESS]
DB Writing Completed. All Done.
Create success.

데이터베이스 서버 종료#

데이터베이스의 생성이 완료되면 이를 위해 띄웠던 서버를 종료하거나, 서비스 단계로 진행할 수 있다. 서버의 종료는 다음과 같이 수행한다.

iSQL(sysdba)> SHUTDOWN ABORT
iSQL(sysdba)>

서버를 종료하면 isql은 다시 서버에 접속하지 않은 Pre-Process 상태가 되며, 서버 프로세스도 종료된다.

shutdown 명령의 옵션으로는 abort외에 im../imgte와 normal이 더 있으나, 이들은 서버가 service 단계일 때만 수행이 가능하다.

데이터베이스 생성 관련 프로퍼티#

CREATE DATABASE 구문을 수행할 때 지정하지 않은 속성들은 Altibase 프로퍼티 파일의 설정에 의해 결정되는데, 그 파일은 $ALTIBASE_HOME/conf/altibase.properties이다. 관련있는 프로퍼티들은 아래와 같다. 표에서 물음표 ("?")는 환경변수 ALTIBASE_HOME에 설정된 경로를 가리킨다.

아래 표에 나열한 데이터베이스 초기화와 관련된 Altibase 프로퍼티에 대해 완벽히 이해하기 바란다.

프로퍼티 이름 설명 기본값
DB_NAME 생성할 데이터베이스의 이름 mydb
MEM_DB_DIR 데이터베이스 파일들이 위치할 디렉터리. ?/dbs
SERVER_MSGLOG_DIR Altibase 운용 중 발생되는 서버의 메시지를 기록하는 파일(altibase_boot.log)이 위치하는 디렉터리 ?/trc
MEM_MAX_DB_SIZE 전체 메모리 테이블스페이스들의 최대 크기 4G
LOGANCHOR_DIR 로그 앵커 파일들이 위치할 디렉터리. 최대 3개까지 지정할 수 있다 ?/logs
LOG_DIR 로그 파일들이 위치할 디렉터리 ?/logs
LOG_FILE_SIZE 로그 파일 하나의 크기 100M
EXPAND_CHUNK_PAGE_COUNT 한 번에 할당하는 메모리 테이블스페이스 페이지의 개수 3200
TEMP_PAGE_CHUNK_COUNT 한 번에 할당하는 메모리 테이블스페이스 임시 페이지의 개수 128
SYS_DATA_TBS_EXTENT_SIZE 시스템 데이터 테이블스페이스의 익스텐트 한 개의 크기 256K
SYS_DATA_FILE_INIT_SIZE CREATE DATABASE 구문 실행 시 생성되는 시스템 테이블스페이스를 위한 데이터 파일의 최초 크기 100M
SYS_DATA_FILE_MAX_SIZE 시스템 테이블스페이스의 데이터 파일의 최대 크기 2G
SYS_DATA_FILE_NEXT_SIZE 시스템 테이블스페이스의 데이터 파일이 자동 확장될 때의 확장 크기 1M
SYS_TEMP_TBS_EXTENT_SIZE 임시 테이블스페이스의 익스텐트 한 개의 크기 256K
SYS_TEMP_FILE_INIT_SIZE CREATE DATABASE 실행 시 생성되는 임시 테이블스페이스를 위한 데이터 파일의 최초 크기 100M
SYS_TEMP_FILE_MAX_SIZE 임시 테이블스페이스의 데이터 파일의 최대 크기 2G
SYS_TEMP_FILE_NEXT_SIZE 임시 테이블스페이스의 데이터 파일이 자동 확장될 때의 확장 크기 1M
SYS_UNDO_TBS_EXTENT_SIZE 언두 테이블스페이스의 익스텐트 한 개의 크기 128K
SYS_UNDO_FILE_INIT_SIZE CREATE DATABASE 실행 시 생성되는 언두 테이블스페이스를 위한 데이터 파일의 최초 크기 100M
SYS_UNDO_FILE_MAX_SIZE 언두 테이블스페이스의 데이터 파일의 최대 크기 2G
SYS_UNDO_FILE_NEXT_SIZE 언두 테이블스페이스의 데이터 파일이 자동 확장될 때의 확장 크기 1M
USER_DATA_TBS_EXTENT_SIZE 사용자 데이터 테이블스페이스의 익스텐트 한 개의 크기 256K
USER _DATA_FILE_INIT_SIZE CREATE DATABASE 실행 시 생성되는 사용자 테이블스페이스를 위한 데이터 파일의 최초 크기 100M
USER_DATA_FILE_MAX_SIZE 사용자 데이터 테이블스페이스의 데이터 파일의 최대 크기 2G
USER _DATA_FILE_NEXT_SIZE 사용자 데이터 테이블스페이스의 데이터 파일이 자동 확장될 때의 확장 크기 1M
USER_TEMP_TBS_EXTENT_SIZE 사용자 임시 테이블스페이스의 익스텐트 한 개의 크기 256K
USER_TEMP_FILE_INIT_SIZE CREATE DATABASE 실행 시 생성되는 사용자 임시 테이블스페이스의 데이터 파일의 최초 크기 100M
USER_TEMP_FILE_MAX_SIZE 사용자 임시 테이블스페이스의 데이터 파일의 최대 크기 2G
USER_TEMP_FILE_NEXT_SIZE 사용자 임시 테이블스페이스의 데이터 파일이 자동 확장될 때의 확장 크기 1M
ADD_EXTENT_NUM_FROM_TBS_TO_SEG 세그먼트가 확장될 때 새로 할당되는 익스텐트의 개수 1
ADD_EXTENT_NUM_FROM_SYSTEM_TO_TBS 테이블스페이스가 확장될 때 새로 할당되는 익스텐트의 개수 4

프로퍼티에 대한 보다 자세한 내용은 General Reference > 2장. Altibase 프로퍼티를 참조하기 바란다.