Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

IBM DB2 데이터베이스 관리 완벽 가이드: 라이선스 확인부터 로그 아카이빙까지

IBM DB2는 IBM이 개발하고 소유한 관계형 데이터베이스(RDBMS)입니다. DB2는 Linux, UNIX, Windows(LUW)를 포함한 다양한 플랫폼에서 사용할 수 있으며, 여러 에디션 형태로 제공됩니다.

그중 커뮤니티 에디션(Community Edition)은 개발자에게 평생 무료로 제공되며, 그 외의 에디션인 스탠다드(Standard)와 엔터프라이즈(Enterprise) 에디션은 라이선스 구매가 필요합니다. 이 글에서는 IBM DB2 데이터베이스 관리자(DBA)가 실무에서 자주 수행하는 핵심 작업들을 정리했습니다. 일상적인 데이터베이스 유지관리 업무에 유용하게 활용하시기 바랍니다.

목차

  1. 라이선스 정보 확인
  2. DB2 서버·인스턴스·데이터베이스의 관계
  3. DB2 운영체제 그룹(OS Groups)
  4. 데이터베이스 파라미터 설정 (글로벌 / 인스턴스 / 데이터베이스 레벨)
  5. DB2 설치본, 클라이언트, 인스턴스, 데이터베이스 생성 및 변경/삭제
  6. 기본 테이블스페이스, 테이블스페이스 생성 및 목록 조회
  7. 리스너(Listener) 설정
  8. 로그 아카이브(Archive) 설정

1) 라이선스 정보 확인

제품 라이선스 세부 정보를 확인하려면 아래 명령어를 사용합니다.

$>db2licm -l

출력 예시:

Product name: "DB2 Community Edition"
License type: "Community"
Expiry date: "Permanent"
Product identifier: "db2dec"
Version information: "11.5"
Max amount of memory (GB): "16"
Max number of cores: "4"
Features:
IBM DB2 Performance Management Offering: "Not licensed"

커뮤니티 에디션은 최대 메모리 16GB, 최대 4코어까지 사용할 수 있으며, 성능 관리 오퍼링(Performance Management Offering) 기능은 라이선스가 부여되지 않습니다.

2) DB2 서버, 인스턴스, 데이터베이스의 관계 (비파티션 환경)

DB2 서버(Db2 Server)는 데이터베이스 바이너리가 설치된 디렉터리를 의미하며, DB2COPYn과 같은 이름으로 정의할 수 있습니다. 하나의 서버에 여러 개의 DB2 서버 설치본을 만들 수 있고, 각 설치본은 서로 다른 버전으로 업그레이드·마이그레이션을 수행하거나 여러 데이터베이스와 인스턴스를 독립적으로 분리하는 데 활용됩니다. 또한 DB2 서버는 클러스터의 여러 노드에 동일한 경로로 파티션 형태로 설치할 수도 있습니다.

DB2 서버는 구성 파일(Global CFG)의 파라미터를 통해 유지관리되며, DBA는 시스템 리소스와 데이터베이스를 관리하는 환경을 구성하여 모든 인스턴스와 데이터베이스에 동일한 파라미터 세트를 적용하는 정책을 만들 수 있습니다.

DB2 인스턴스(Db2 Instance)는 프로세스, 스레드, 메모리 영역의 집합으로 구성되며, 내부의 여러 데이터베이스를 유지관리하고 연결을 처리합니다. 인스턴스는 DBM CFG라고 불리는 구성 파일로 설정하며, 리소스 할당 정책을 수립할 수 있고 애플리케이션 요구 사항에 따라 연결 포트를 지정할 수 있습니다.

DB2 데이터베이스(Db2 Database)는 여러 논리적 스토리지 그룹, 테이블스페이스, 테이블스페이스 내 오브젝트, 트랜잭션 로그(TX LOGS), 버퍼풀의 집합입니다.

요약하면 다음과 같은 계층 구조를 가집니다:

  • 서버(Server): 바이너리 설치 디렉터리 — 글로벌 레벨 설정 포함
  • 인스턴스(Instance): 프로세스·메모리 집합 — DBM CFG로 관리
  • 데이터베이스(Database): 테이블스페이스·로그·버퍼풀 집합 — DB CFG로 관리

3) DB2 운영체제 그룹(OS Groups)

Windows에서 기본 인스턴스 이름은 DB2이며, Linux에서는 DB2INST1입니다. 각 인스턴스는 고유한 포트로 구성할 수 있으며, 하나의 서버에 여러 인스턴스가 공존할 수 있습니다.

DB2 설치 시 데이터 보호와 역할 기반 보안을 위해 최대 4가지 유형의 OS 그룹을 구성할 수 있습니다.

  • SYSADM: 모든 권한을 가진 데이터베이스 관리자 그룹 (최상위 권한)
  • SYSCTRL: 인스턴스 수준의 관리 제어 권한 그룹
  • SYSMAINT: 백업, 복원 등 유지보수 작업 권한 그룹
  • SYSMON: 데이터베이스 매니저 인스턴스의 여러 데이터베이스를 모니터링하는 그룹
  • DBADM: 특정 데이터베이스에 한해 부여되는 최상위 권한

4) 데이터베이스 파라미터 설정

IBM DB2는 위 계층 구조에 따라 3개 레벨에서 설정할 수 있습니다. 최상위 레벨은 DB2 서버(글로벌) 구성, 두 번째는 데이터베이스 매니저(인스턴스) 구성, 세 번째는 데이터베이스 레벨 구성입니다.

i) 글로벌 파라미터 (Global Level)

현재 설정 조회:

db2set -all

변경 가능한 전체 파라미터 목록 조회:

db2set -lr

설정 변경:

db2set parameter=newvalue

예시:

db2set db2comm=tcpip

주의: 변경 후에는 db2stop과 db2start로 모든 인스턴스를 재시작해야 적용됩니다.

ii) 인스턴스 레벨 (Instance Level)

현재 설정 조회:

db2 get dbm cfg

설정 변경:

db2 update dbm cfg using parameter_name new-value

예시:

db2 update dbm cfg using NUM_DB 5

iii) 데이터베이스 레벨 (Database Level)

현재 설정 조회:

db2 get db cfg for database-name

설정 변경:

db2 update db cfg for database-name using parameter new-value

예시:

db2 update db cfg for sample using AUTO_REORG ON

5) DB2 설치본, 인스턴스, 데이터베이스의 생성·변경·삭제

DB2 서버는 주로 하나 이상의 Db2 카피(copy), 즉 동일 서버의 특정 위치에 설치된 Db2 데이터베이스 제품들로 구성됩니다. 각 Db2 버전 카피는 같거나 다른 코드 레벨일 수 있습니다. DB2 버전 9 이후부터는 동일 서버에 여러 개의 Db2 카피를 설치하고 실행할 수 있습니다. 예를 들어 DB2 버전 9의 DB2COPY1, 버전 10의 DB2COPY2, 버전 11의 DB2COPY3 등이 가능합니다.

여러 DB2 카피 사용의 장점

  • 동일한 서버에서 서로 다른 Db2 버전의 애플리케이션 운영 가능
  • 운영 데이터베이스를 상위 버전으로 이관하기 전에 같은 컴퓨터에서 사전 테스트 가능
  • 별도의 DB2 버전별로 업무를 분리하여 관리 가능

DB2 설치본 전환 방법 (여러 DB2COPY가 존재할 경우)

사용 가능한 카피 목록 조회:

$>db2swtch -l

DB2COPY1    C:\IBM\SQLLIB    (Default DB2 and IBM Database Client Interface Copy)

기본 카피 전환:

$>db2swtch -db2 -d DB2COPY1

Switching is successful. The current default DB2 copy is DB2COPY1.

DAS(Database Administration Server)를 현재 카피로 갱신:

$>dasupdt

SQL22266N  The DB2 Administration Server is already installed under the current DB2 Copy.

DB2 인스턴스 관리

현재 설치본(DB2COPY1)에서 인스턴스를 생성·조회·삭제하고 현재 인스턴스명을 확인·설정하려면 아래 명령어를 사용합니다.

인스턴스 중지 및 시작 (참고: start_stop_time 파라미터가 시작/중지 동작에 영향을 줍니다):

$>db2stop [force]

$>db2start

Windows 환경에서는 서비스(Services)를 이용해 인스턴스의 시작·중지·자동 시작 동작을 제어할 수도 있습니다.

관리자 모드로 인스턴스 시작

데이터베이스 관리 목적으로만 인스턴스를 시작하려면 아래 명령어를 사용합니다.

$>db2start admin mode [user <username> | group <groupname>]

또는 QUIESCE 명령을 사용할 수 있습니다.

$>QUIESCE DATABASE

위 명령 실행 시 해당 데이터베이스는 SYSADM, SYSMAINT, DBADM, SYSCTRL 권한을 가진 사용자만 접근할 수 있습니다.

$>QUIESCE INSTANCE instance-name

위 명령 실행 시 해당 인스턴스 하위의 모든 데이터베이스가 SYSADM, SYSMAINT, SYSCTRL 권한을 가진 사용자만 접근 가능한 상태가 됩니다.

QUIESCE 해제

관리 작업이 완료되면 아래 명령으로 데이터베이스를 일반 접근 모드로 복원합니다.

UNQUIESCE DATABASE — 데이터베이스를 Quiesce 모드에서 해제

UNQUIESCE INSTANCE instance-name — 인스턴스와 해당 인스턴스의 모든 데이터베이스를 Quiesce 모드에서 해제

데이터베이스 생성

DB2 데이터베이스는 다양한 유형의 애플리케이션을 지원하며, 워크로드는 크게 3가지 범주로 나뉩니다.

  • Simple: OLTP(온라인 트랜잭션 처리)
  • Complex: OLAP(온라인 분석 처리)
  • Mixed: OLTP와 OLAP의 혼합형

생성 문법:

CREATE DATABASE testdb1 (옵션 예: encrypt 등, 전체 문법은 IBM DB2 공식 가이드 참조)

예시:

db2 create db emp_utf autoconfigure using workload_type simple apply db only

db2 create db emp_utf using codeset utf-8 territory kr collate using system

데이터베이스 삭제:

db2 drop db emp_utf

6) 기본 테이블스페이스, 테이블스페이스 생성 및 목록 조회

DB2 데이터베이스에는 기본적으로 3개의 테이블스페이스가 제공되며, 필요에 따라 추가 테이블스페이스를 생성할 수 있습니다.

  • SYSCATSPACE: 시스템 카탈로그 관련 정보를 저장하는 테이블스페이스
  • TEMPSPACE1: 정렬(SORTING)과 같은 메모리 기반 작업에 사용되는 임시 테이블스페이스
  • USERSPACE1: 기본이 아닌(non-default) 데이터베이스 오브젝트의 기본 테이블스페이스

또한 DB2 데이터베이스에는 IBMDEFAULTBP라는 이름의 기본 버퍼풀이 하나 포함되어 있습니다.

테이블스페이스 생성

새로 생성한 테이블스페이스에는 테이블, 인덱스, 뷰 등의 오브젝트를 만들 수 있습니다. 예를 들어 MYTBLS1 테이블스페이스에 B라는 테이블을 생성할 수 있습니다.

테이블스페이스 목록 조회

아래 명령어를 사용하며, 상세 정보를 확인하려면 옵션을 함께 사용합니다.

db2 list tablespaces [show details]

7) 리스너(Listener) 설정

인스턴스 레벨에서 DB2COMM 파라미터를 설정하여 데이터베이스 연결 방식을 구성할 수 있습니다. 아래는 연결 포트를 60000으로 변경하는 예시입니다. 포트를 변경한 후에는 새로운 포트에서 리스닝을 시작하기 위해 데이터베이스 서비스를 재시작해야 합니다.

$>db2set -i db2inst1 DB2COMM=tcpip

$>db2 update dbm cfg using SVCENAME 60000

$>db2stop

$>db2start

8) 로그 아카이브(Archive) 설정

커맨드 라인 프로세서(CLP)에서 UPDATE DATABASE CONFIGURATION 명령을 사용하여 데이터베이스 로깅 옵션을 구성합니다.

순환 로깅(circular logging)을 사용하려면 logarchmeth1logarchmeth2 데이터베이스 구성 파라미터를 OFF로 설정해야 합니다(기본값). 아카이브 로깅(archive logging)을 사용하려면 두 파라미터 중 최소 하나를 OFF 이외의 값으로 설정해야 합니다. 예를 들어 아카이브 로깅을 사용하면서 아카이브 로그를 디스크에 저장하려면 아래 명령을 실행합니다.

db2 update db configuration for mydb using logarchmeth1 disk:/u/dbuser/archived_logs

또는 IBM Data Studio의 UPDATE DATABASE CONFIGURATION 명령이나 db2CfgSet API를 통해서도 동일하게 구성할 수 있습니다.

참고로, 불필요한 리두 로그(redo log) 생성을 피하려면 CREATE TABLE/INDEX 명령에서 NOT LOGGED INITIALLY 옵션을 사용할 수 있습니다.

결론

데이터베이스 관리 업무는 매우 다양한 활동을 포괄하며, 이 글에서는 그중 몇 가지 핵심 프로세스를 살펴보았습니다. IBM DB2는 ANSI(미국 국립표준협회)가 정의한 SQL 표준을 대부분 준수하며, 클러스터 데이터베이스, 고가용성(HA), 파티셔닝, 복제(replication), 머티리얼라이즈드 뷰(materialized views)와 같은 고급 기능을 제공합니다. Oracle, PostgreSQL 등 다른 인기 RDBMS와 유사한 보안 체계를 유지하면서도 합리적인 가격 정책과 거의 모든 기술과의 연결성을 갖춘 DB2는 글로벌 데이터베이스 시장에서 개발자들에게 독특한 선택지가 됩니다.

데이터베이스 도입과 운영 과정에서 전문가의 도움이 필요하시면 언제든 문의해 주세요. 피드백 탭을 통해 의견을 남기거나 질문할 수 있으며, 저희와 대화를 시작할 수도 있습니다.