DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

인스턴스

DBMS 2
DB2 가이드
DB2 사용자 가이드
인스턴스
작성자
admin
작성일
2021-02-19 13:25
조회
1077

인스턴스

인스턴스 생성

①Linux 및 UNIX에서 인스턴스를 생성하려면, OS 그룹과 사용자 계정이 필요합니다.


$ login root
$ mkgroup <일차 그룹명>
$ mkuser pgrp=<일차 그룹명> <인스턴스 사용자명>
$ passwd <인스턴스 사용자명>

②DB2 제품이 설치된 디렉토리에 있는 db2icrt 명령어를 이용하여 생성합니다.


$ cd /opt/ibm/db2/V9.7/instance
$ ./db2icrt ?u?<인스턴스명>

③인스턴스 사용자의 홈디렉토리에는 sqllib 라는 서브 디렉토리가 생성되어 DB2 9.7 엔진 에서 제공하는 실행 모듈들이 링크됩니다.


$ ls <인스턴스 사용자의 홈디렉토리>

④/etc/services 파일에 인스턴스와 관련된 4개의 포트가 추가됩니다.


$ grep <인스턴스명> /etc/services
DB2_<인스턴스명> 60000/tcp
DB2_<인스턴스명>_1 60001/tcp
DB2_<인스턴스명>_2 60002/tcp
DB2_<인스턴스명>_END 60003/tcp

db2


인스턴스 갱신

①인스턴스의 환경을 갱신하기 위해서는 먼저 인스턴스를 중지해야 합니다.


$ login <인스턴스 사용자명>
$ db2stop force

②root 사용자가 db2iupdt 명령어를 이용하여 인스턴스의 환경을 갱신합니다.


$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2iupdt <인스턴스명>
$ ./db2ilist

③복수개의 코드 레벨(DB2 엔진)이 존재 할 경우, 한 경로의 상위 코드 레벨에서 다른 경로 에 설치된 낮은 코드 레벨로 인스턴스를 이동합니다


$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2iupdt -D db2inst1

④인스턴스 사용자가 db2start 명령어로 인스턴스를 재 기동하고, DB2 제품 정보를 확인합 니다.


$ login <인스턴스 사용자명>
$ db2start
$ db2level

db2


인스턴스 제거

①인스턴스를 제거하기 위해서는 먼저 인스턴스를 중지해야 합니다.


$ login <인스턴스 사용자명>
$ db2stop force

②root 사용자가 db2idrop 명령어를 이용하여 인스턴스를 제거합니다.


$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2idrop <인스턴스명>
$ ./db2ilist | grep <인스턴스명>

③인스턴스 사용자의 홈 디렉토리에 존재하던 sqllib 라는 서브 디렉토리가 제거된 것을 확인 할 수 있습니다.


$ ls <인스턴스 사용자의 홈디렉토리>/sqllib

④/etc/services 파일에 추가된 포트는 자동으로 제거되지 않습니다.


$ grep <인스턴스명> /etc/services
DB2_<인스턴스명> 60000/tcp
DB2_<인스턴스명>_1 60001/tcp
DB2_<인스턴스명>_2 60002/tcp
DB2_<인스턴스명>_END 60003/tcp

db2


인스턴스 시작

①인스턴스 사용자로 로그인합니다.


$ login <인스턴스 사용자명>

②인스턴스 기능을 시작하려면 db2start 명령어를 이용합니다.


$ db2start

③db2sysc 를 비롯한 여러 개의 프로세스가 생성됩니다. DB2 엔진과 관련된 프로세스의 이름은 대부분 db2 라는 글자로 시작됩니다. 프로세스 이름의 마지막 부분에 나오는 숫자 는 데이터베이스 파티션 번호입니다. DPF인 경우에는 동일한 엔진 프로세스가 데이터베이 스 파티션별로 생성됩니다.


$ ps ?ef | grep <인스턴스 사용자명>
$ db2pd -edu

④인스턴스 공유 메모리가 할당된 것을 확인할 수 있습니다.


$ db2mtrk ?i
인스턴스용 메모리
monh other
16.0K 1.3M

db2


인스턴스 중지

①인스턴스 중지는 인스턴스 사용자가 담당합니다.


$ login <인스턴스 사용자명>

②인스턴스를 중지하기 전에 데이터베이스에 접속된 응용프로그램을 모두 중지시켜야 합니다. db2stop 명령어에서 force 옵션을 이용하면, 접속된 응용프로그램을 모두 강제로 중지하 고 인스턴스를 중지하게 합니다.


$ db2stop force

③인스턴스가 중지되면, 인스턴스 사용자의 DB2 프로세스는 모두 제거됩니다.


$ ps ?ef | grep <인스턴스 사용자명>
$ db2pd -edu

④db2bp 라는 이름의 프로세스는 db2stop 명령어를 실행해도 제거되지 않습니다. db2bp는 DB2 세션용 프로그램을 위한 별도의 프로세스이므로 kill 명령어로 제거해도 무 방합니다.


$ kill -9

⑤인스턴스 공유 메모리가 해제된 것을 확인할 수 있습니다.


$ db2mtrk ?i
인스턴스가 시작되지 않음.

db2


인스턴스 강제 중지

①인스턴스 중지는 인스턴스 사용자가 담당합니다.


$ login <인스턴스 사용자명>

②인스턴스를 중지하기 전에 데이터베이스에 접속된 응용프로그램을 모두 중지시켜야 합니다.


$ db2 force applications all

③db2_kill 명령을 사용하여 인스턴스를 강제로 중지시킵니다. 인스턴스를 비정상적으로 중지 한 경우에는 ipclean 명령어를 이용하여 DB2가 사용하던 리소스를 정리하도록 합니다.


$ db2_kill $ ipclean ?a $ ipcs ?a | grep <인스턴스 사용자명>

④인스턴스 사용자의 DB2 프로세스가 모두 제거된 것을 확인합니다.


$ ps ?ef | grep <인스턴스 사용자명> $ db2pd -edu

⑤db2start 명령어를 이용하여 인스턴스를 재 시작합니다.


$ db2start

db2


인스턴스 구성 파일

①인스턴스 구성 파일은 인스턴스 사용자가 관리합니다.


$ login <인스턴스 사용자명>

②get dbm cfg 명령어를 이용하여 인스턴스 구성 파일을 확인합니다. show detail 옵션 을 이용하면 설정값과 현재값을 확인할 수 있습니다.


$ db2 attach to <인스턴스명>
$ db2 get dbm cfg show detail | grep <구성변수명>
$ db2 detach

③인스턴스를 재 기동하지 않고 즉시 반영되는 구성 변수의 값을 변경할 때는 attach 명령 어로 인스턴스에 접속하여 update dbm cfg 명령어를 사용합니다.


$ db2 attach to <인스턴스명>
$ db2 update dbm cfg using <구성변수명> <값>
$ db2 detach

④reset dbm cfg 명령어는 모든 인스턴스 구성 변수를 초기값으로 변경합니다. 일부 인스 턴스 구성 변수는 인스턴스를 재 기동해야 변경한 값이 반영됩니다.


$ db2 reset dbm cfg
$ db2stop force
$ db2start

db2


인스턴스 지정 방법

①DB2 사용자로 로그인합니다.


$ login

②DB2INSTANCE 라는 OS 환경 변수 명을 이용하여 인스턴스 명을 지정합니다.


$ export DB2INSTANCE=<인스턴스명>
$ echo $DB2INSTANCE

③DB2 명령을 실행하려면 PATH 등의 기본적인 환경 변수 설정이 필요합니다.


$ export PATH=$PATH:<인스턴스 사용자 홈디렉토리>/sqllib/bin

④DB2INSTANCE, PATH 등의 환경 변수를 간단하게 설정하려면, 인스턴스 사용자의 홈 디렉토리에 생성된 sqllib 라는 서브 디렉토리에 있는 db2profile 을 실행하면 됩니다.


$ . <인스턴스 사용자 홈디렉토리>/sqllib/db2profile
$ echo $DB2INSTANCE

⑤다른 인스턴스를 지정하려면, 원하는 인스턴스 사용자의 db2profile을 선택하여 실행합니 다.


$ . <원하는 인스턴스 사용자 홈디렉토리>/sqllib/db2profile
$ echo $DB2INSTANCE

db2


DB2 레지스터리 변수

①DB2 레지스터리 변수는 인스턴스 사용자가 관리합니다.


$ login <인스턴스 사용자>

②db2set 명령어의 기본 형식은 db2set <레지스터리 변수명>=<값> 입니다.


$ db2set <레지스터리변수>=<값>

③레지스터리 변수의 설정을 취소하려면 <값> 항목을 입력하지 않으면 됩니다.


$ db2set <레지스터리변수>=

④? i 옵션을 사용하면 특정한 인스턴스에만 변수가 적용되게 합니다. ? g 옵션은 현재의 서 버에 존재하는 모든 인스턴스에 대해 변수를 적용합니다.


$ db2set ?i <인스턴스명> <레지스터리변수>=<값>
$ db2set ?g <레지스터리변수>=<값>
$ db2set ?all

⑤대부분의 레지스터리 변수는 설정 후에 인스턴스의 재기동이 필요합니다.


$ db2stop force
$ db2start

db2


DB2 관리 서버

①UNIX에서 DAS 인스턴스를 생성하려면 OS 그룹과 사용자 계정이 필요합니다.


$ login root
$ mkgroup <일차 그룹명>
$ mkuser pgrp=<일차 그룹명><das용 사용자명="" 인스턴스="">
$ passwd<das용 사용자명="" 인스턴스=""></das용></das용>

②DB2 제품이 설치된 디렉토리에 있는 dascrt 명령어를 이용하여 생성합니다.


$ cd /opt/ibm/db2/V9.7/instance
$ ./dascrt<das용 인스턴스명="">
$ ./daslist</das용>

③DAS용 인스턴스 사용자는 db2admin 명령어로 DAS를 시작하거나 중지합니다.


$ login
$ db2admin start
$ db2admin stop

④DAS를 제거하려면 dasdrop 명령어를 이용합니다.


$ ./dasdrop dasusr1

db2


원격 클라이언트 지원

①원격 클라이언트와 통신하려면 /etc/services 파일에 연속된 번호를 가진 2개의 TCP/IP 포트를 추가합니다.


$ login root
$ grep <인스턴스명> /etc/services
<인스턴스명>c 50000/tcp
<인스턴스명>i 50001/tcp

②DB2 레지스터리 변수인 DB2COMM에 TCPIP를 지정합니다.


$ login <인스턴스 사용자>
$ db2set DB2COMM=TCPIP

③/etc/services 파일에서 지정한 첫 번째 포트의 서비스 명을 DBM 구성 변수인 SVCENAME 에 지정하고, 인스턴스를 재 기동합니다.


$ db2 update dbm cfg using SVCENAME <서비스 명>
$ db2stop force
$ db2start

④TCP/IP용 통신 리스너 프로세스인 db2tcpcm이 생성된 것을 확인합니다.


$ db2pd ?edu | grep ?I db2tcpcm

db2


DPF 환경 설정

서버의 호스트 명을 확인합니다. 호스트 명은 hostname 명령어의 실행 결과로 확인하며, /etc/hosts 파일의 정의 내용과 반드시 동일해야 합니다.


$ login <인스턴스 사용자명> $ hostname $ cat /etc/hosts

DPF는 rsh을 이용하므로 .rhosts 파일이 적절하게 생성되어야 합니다.


$ vi rhosts

인스턴스를 중지한 후에 db2nodes.cfg 파일을 수정합니다.


$ db2stop force $ cd <인스턴스 사용자의 홈디렉토리>/sqllib $ vi db2nodes.cfg

인스턴스를 재 기동하면, 각 파티션별로 인스턴스용 프로세스가 생성됩니다. 프로세스 이름 뒤에 표시된 번호는 데이터베이스 파티션 번호입니다.


$ db2start $ ps ?ef | grep <인스턴스명> | grep db2sysc