DBMS 2
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
①Linux 및 UNIX에서 인스턴스를 생성하려면, OS 그룹과 사용자 계정이 필요합니다. ②DB2 제품이 설치된 디렉토리에 있는 db2icrt 명령어를 이용하여 생성합니다. ③인스턴스 사용자의 홈디렉토리에는 sqllib 라는 서브 디렉토리가 생성되어 DB2 9.7 엔진 에서 제공하는 실행 모듈들이 링크됩니다. ④/etc/services 파일에 인스턴스와 관련된 4개의 포트가 추가됩니다. ①인스턴스의 환경을 갱신하기 위해서는 먼저 인스턴스를 중지해야 합니다. ②root 사용자가 db2iupdt 명령어를 이용하여 인스턴스의 환경을 갱신합니다. ③복수개의 코드 레벨(DB2 엔진)이 존재 할 경우, 한 경로의 상위 코드 레벨에서 다른 경로 에 설치된 낮은 코드 레벨로 인스턴스를 이동합니다 ④인스턴스 사용자가 db2start 명령어로 인스턴스를 재 기동하고, DB2 제품 정보를 확인합 니다. ①인스턴스를 제거하기 위해서는 먼저 인스턴스를 중지해야 합니다. ②root 사용자가 db2idrop 명령어를 이용하여 인스턴스를 제거합니다. ③인스턴스 사용자의 홈 디렉토리에 존재하던 sqllib 라는 서브 디렉토리가 제거된 것을 확인 할 수 있습니다. ④/etc/services 파일에 추가된 포트는 자동으로 제거되지 않습니다. ①인스턴스 사용자로 로그인합니다. ②인스턴스 기능을 시작하려면 db2start 명령어를 이용합니다. ③db2sysc 를 비롯한 여러 개의 프로세스가 생성됩니다. DB2 엔진과 관련된 프로세스의 이름은 대부분 db2 라는 글자로 시작됩니다. 프로세스 이름의 마지막 부분에 나오는 숫자 는 데이터베이스 파티션 번호입니다. DPF인 경우에는 동일한 엔진 프로세스가 데이터베이 스 파티션별로 생성됩니다. ④인스턴스 공유 메모리가 할당된 것을 확인할 수 있습니다. ①인스턴스 중지는 인스턴스 사용자가 담당합니다. ②인스턴스를 중지하기 전에 데이터베이스에 접속된 응용프로그램을 모두 중지시켜야 합니다. db2stop 명령어에서 force 옵션을 이용하면, 접속된 응용프로그램을 모두 강제로 중지하 고 인스턴스를 중지하게 합니다. ③인스턴스가 중지되면, 인스턴스 사용자의 DB2 프로세스는 모두 제거됩니다. ④db2bp 라는 이름의 프로세스는 db2stop 명령어를 실행해도 제거되지 않습니다. db2bp는 DB2 세션용 프로그램을 위한 별도의 프로세스이므로 kill 명령어로 제거해도 무 방합니다. ⑤인스턴스 공유 메모리가 해제된 것을 확인할 수 있습니다. ①인스턴스 중지는 인스턴스 사용자가 담당합니다. ②인스턴스를 중지하기 전에 데이터베이스에 접속된 응용프로그램을 모두 중지시켜야 합니다. ③db2_kill 명령을 사용하여 인스턴스를 강제로 중지시킵니다. 인스턴스를 비정상적으로 중지 한 경우에는 ipclean 명령어를 이용하여 DB2가 사용하던 리소스를 정리하도록 합니다. ④인스턴스 사용자의 DB2 프로세스가 모두 제거된 것을 확인합니다. ⑤db2start 명령어를 이용하여 인스턴스를 재 시작합니다. ①인스턴스 구성 파일은 인스턴스 사용자가 관리합니다. ②get dbm cfg 명령어를 이용하여 인스턴스 구성 파일을 확인합니다. show detail 옵션 을 이용하면 설정값과 현재값을 확인할 수 있습니다. ③인스턴스를 재 기동하지 않고 즉시 반영되는 구성 변수의 값을 변경할 때는 attach 명령 어로 인스턴스에 접속하여 update dbm cfg 명령어를 사용합니다. ④reset dbm cfg 명령어는 모든 인스턴스 구성 변수를 초기값으로 변경합니다. 일부 인스 턴스 구성 변수는 인스턴스를 재 기동해야 변경한 값이 반영됩니다. ①DB2 사용자로 로그인합니다. ②DB2INSTANCE 라는 OS 환경 변수 명을 이용하여 인스턴스 명을 지정합니다. ③DB2 명령을 실행하려면 PATH 등의 기본적인 환경 변수 설정이 필요합니다. ④DB2INSTANCE, PATH 등의 환경 변수를 간단하게 설정하려면, 인스턴스 사용자의 홈 디렉토리에 생성된 sqllib 라는 서브 디렉토리에 있는 db2profile 을 실행하면 됩니다. ⑤다른 인스턴스를 지정하려면, 원하는 인스턴스 사용자의 db2profile을 선택하여 실행합니 다. ①DB2 레지스터리 변수는 인스턴스 사용자가 관리합니다. ②db2set 명령어의 기본 형식은 db2set <레지스터리 변수명>=<값> 입니다. ③레지스터리 변수의 설정을 취소하려면 <값> 항목을 입력하지 않으면 됩니다. ④? i 옵션을 사용하면 특정한 인스턴스에만 변수가 적용되게 합니다. ? g 옵션은 현재의 서 버에 존재하는 모든 인스턴스에 대해 변수를 적용합니다. ⑤대부분의 레지스터리 변수는 설정 후에 인스턴스의 재기동이 필요합니다. ①UNIX에서 DAS 인스턴스를 생성하려면 OS 그룹과 사용자 계정이 필요합니다. ②DB2 제품이 설치된 디렉토리에 있는 dascrt 명령어를 이용하여 생성합니다. ③DAS용 인스턴스 사용자는 db2admin 명령어로 DAS를 시작하거나 중지합니다. ④DAS를 제거하려면 dasdrop 명령어를 이용합니다. ①원격 클라이언트와 통신하려면 /etc/services 파일에 연속된 번호를 가진 2개의 TCP/IP 포트를 추가합니다. ②DB2 레지스터리 변수인 DB2COMM에 TCPIP를 지정합니다. ③/etc/services 파일에서 지정한 첫 번째 포트의 서비스 명을 DBM 구성 변수인 SVCENAME 에 지정하고, 인스턴스를 재 기동합니다. ④TCP/IP용 통신 리스너 프로세스인 db2tcpcm이 생성된 것을 확인합니다. 서버의 호스트 명을 확인합니다. 호스트 명은 hostname 명령어의 실행 결과로 확인하며, /etc/hosts 파일의 정의 내용과 반드시 동일해야 합니다. DPF는 rsh을 이용하므로 .rhosts 파일이 적절하게 생성되어야 합니다. 인스턴스를 중지한 후에 db2nodes.cfg 파일을 수정합니다. 인스턴스를 재 기동하면, 각 파티션별로 인스턴스용 프로세스가 생성됩니다. 프로세스 이름 뒤에 표시된 번호는 데이터베이스 파티션 번호입니다.인스턴스
인스턴스
인스턴스 생성
$ login root
$ mkgroup <일차 그룹명>
$ mkuser pgrp=<일차 그룹명> <인스턴스 사용자명>
$ passwd <인스턴스 사용자명>
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2icrt ?u?<인스턴스명>
$ ls <인스턴스 사용자의 홈디렉토리>
$ grep <인스턴스명> /etc/services
DB2_<인스턴스명> 60000/tcp
DB2_<인스턴스명>_1 60001/tcp
DB2_<인스턴스명>_2 60002/tcp
DB2_<인스턴스명>_END 60003/tcp
인스턴스 갱신
$ login <인스턴스 사용자명>
$ db2stop force
$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2iupdt <인스턴스명>
$ ./db2ilist
$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2iupdt -D db2inst1
$ login <인스턴스 사용자명>
$ db2start
$ db2level
인스턴스 제거
$ login <인스턴스 사용자명>
$ db2stop force
$ login root
$ cd /opt/ibm/db2/V9.7/instance
$ ./db2idrop <인스턴스명>
$ ./db2ilist | grep <인스턴스명>
$ ls <인스턴스 사용자의 홈디렉토리>/sqllib
$ grep <인스턴스명> /etc/services
DB2_<인스턴스명> 60000/tcp
DB2_<인스턴스명>_1 60001/tcp
DB2_<인스턴스명>_2 60002/tcp
DB2_<인스턴스명>_END 60003/tcp
인스턴스 시작
$ login <인스턴스 사용자명>
$ db2start
$ ps ?ef | grep <인스턴스 사용자명>
$ db2pd -edu
$ db2mtrk ?i
인스턴스용 메모리
monh other
16.0K 1.3M
인스턴스 중지
$ login <인스턴스 사용자명>
$ db2stop force
$ ps ?ef | grep <인스턴스 사용자명>
$ db2pd -edu
$ kill -9
$ db2mtrk ?i
인스턴스가 시작되지 않음.
인스턴스 강제 중지
$ login <인스턴스 사용자명>
$ db2 force applications all
$ db2_kill $ ipclean ?a $ ipcs ?a | grep <인스턴스 사용자명>
$ ps ?ef | grep <인스턴스 사용자명> $ db2pd -edu
$ db2start
인스턴스 구성 파일
$ login <인스턴스 사용자명>
$ db2 attach to <인스턴스명>
$ db2 get dbm cfg show detail | grep <구성변수명>
$ db2 detach
$ db2 attach to <인스턴스명>
$ db2 update dbm cfg using <구성변수명> <값>
$ db2 detach
$ db2 reset dbm cfg
$ db2stop force
$ db2start
인스턴스 지정 방법
$ login
$ export DB2INSTANCE=<인스턴스명>
$ echo $DB2INSTANCE
$ export PATH=$PATH:<인스턴스 사용자 홈디렉토리>/sqllib/bin
$ . <인스턴스 사용자 홈디렉토리>/sqllib/db2profile
$ echo $DB2INSTANCE
$ . <원하는 인스턴스 사용자 홈디렉토리>/sqllib/db2profile
$ echo $DB2INSTANCE
DB2 레지스터리 변수
$ login <인스턴스 사용자>
$ db2set <레지스터리변수>=<값>
$ db2set <레지스터리변수>=
$ db2set ?i <인스턴스명> <레지스터리변수>=<값>
$ db2set ?g <레지스터리변수>=<값>
$ db2set ?all
$ db2stop force
$ db2start
DB2 관리 서버
$ login root
$ mkgroup <일차 그룹명>
$ mkuser pgrp=<일차 그룹명><das용 사용자명="" 인스턴스="">
$ passwd<das용 사용자명="" 인스턴스=""></das용></das용>
$ cd /opt/ibm/db2/V9.7/instance
$ ./dascrt<das용 인스턴스명="">
$ ./daslist</das용>
$ login
$ db2admin start
$ db2admin stop
$ ./dasdrop dasusr1
원격 클라이언트 지원
$ login root
$ grep <인스턴스명> /etc/services
<인스턴스명>c 50000/tcp
<인스턴스명>i 50001/tcp
$ login <인스턴스 사용자>
$ db2set DB2COMM=TCPIP
$ db2 update dbm cfg using SVCENAME <서비스 명>
$ db2stop force
$ db2start
$ db2pd ?edu | grep ?I db2tcpcm
DPF 환경 설정
$ login <인스턴스 사용자명> $ hostname $ cat /etc/hosts
$ vi rhosts
$ db2stop force $ cd <인스턴스 사용자의 홈디렉토리>/sqllib $ vi db2nodes.cfg
$ db2start $ ps ?ef | grep <인스턴스명> | grep db2sysc