DBMS 2

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

데이터베이스

DBMS 2
DB2 가이드
DB2 사용자 가이드
데이터베이스
작성자
admin
작성일
2021-02-19 13:25
조회
1238

데이터베이스

데이터베이스

①한 인스턴스에서 한 개 이상의 데이터베이스를 생성할 수 있습니다.

db2

②데이터베이스 구성 파일을 이용하여 개별적인 환경을 구성할 수 있습니다. 데이터베이스 구성 파 일에는 다양한 데이터베이스 구성 변수가 저장됩니다.

③3개의 기본 테이블스페이스인 SYSCATSPACE, TEMPSPACE1, USERSPACE1을 가지고 있으며, 사용자가 다양한 유형의 테이블스페이스를 추가할 수 있습니다.

④SYSCATSPACE 테이블스페이스에는 데이터베이스의 모든 오브젝트에 대한 정보를 저장하고 있는 메타 테이블인 시스템 카탈로그 테이블이 생성됩니다.

⑤데이터베이스의 데이터에 대한 변경 사항은 데이터베이스 트랜잭션 로그 파일에 기록됩니다. 초 기에는 3개의 기본 로그 파일과 2개의 보조 로그 파일이 생성되며, 데이터베이스 구성 파일을 이 용하여 로그 파일의 개수와 크기를 조절할 수 있습니다.

⑥테이블스페이스, 테이블, 인덱스 등의 다양한 오브젝트를 생성하고, 사용자의 데이터를 테이블에 저장하여 SQL문으로 액세스합니다.

⑦서로 다른 데이터베이스에 속한 테이블들은 한 개의 SQL문으로 JOIN 하려면 FEDERATED 기능을 이용합니다. DB2 제품군에 대한 FEDERATED 기능은 기본적으로 제공됩니다.


데이터베이스 생성과 제거

①create db 명령어를 이용하여 데이터베이스를 생성합니다.


$ login <인스턴스 사용자명> $ db2 CREATE DB <데이터베이스명> $ ls ?lia <인스턴스 사용자의 홈디렉토리>/$DB2INSTANCE/NODE*

②기본 디렉토리가 아닌 다른 디렉토리에 데이터베이스 파일을 생성하려면 create db 명령어 에서 ON 옵션을 사용합니다.


$ db2 CREATE DB <데이터베이스명> ON <디렉토리명> $ ls ?lia <디렉토리명>/$DB2INSTANCE/NODE*

db2

③데이터베이스는 생성시에 사용하는 코드 페이지가 결정되고 변경할 수 없습니다. CODESET과 TERRITORY 옵션을 이용하여 데이터베이스를 위한 코드페이지를 지정할 수 있습니다. 기본값은 현 재 세션에 적용된 코드 페이지로 결정됩니다.


$ db2 CREATE DB <데이터베이스명> USING CODESET <코드셋> TERRITORY <국가코드> 
$ db2 GET DB CFG FOR <데이터베이스명> | grep <국가코드>

④데이터베이스가 중지된 상태에서 drop db 명령어를 이용하여 제거합니다.


$ db2 drop db <데이터베이스명>
시스템 카탈로그

①로 로그인합니다.


$ login

②데이터베이스에 접속합니다.


$ db2 CONNECT TO <데이터베이스명>

③시스템 카탈로그 테이블의 목록을 확인합니다. 카탈로그는 SYSIBM, SYSCAT, SYSSTAT 라 는 스키마명을 가집니다.


$ db2 LIST TABLES FOR SYSTEM

db2

④시스템 카탈로그 테이블의 정보를 확인합니다.


$ db2 “select * from <시스템 카탈로그 테이블>”

⑤시스템 카탈로그 뷰의 정보를 확인합니다.


$ db2 “select * from <시스템 카탈로그 뷰>”
데이터베이스 구성 파일

①<인스턴스 사용자>는 데이터베이스에 접속하여 get db cfg 명령어로 데이터베이스 구성 변 수의 설정값을 확인합니다.


$ login <인스턴스 사용자명> 
$ db2 connect to <데이터베이스명>
$ db2 get db cfg for <데이터베이스명> show detail
$ db2 connect reset

db2

②update db cfg 명령어로 데이터베이스 구성 변수를 변경합니다.


$ db2 connect to <데이터베이스명> 
$ db2 update db cfg for <데이터베이스명> using <구성변수명> <값>
$ db2 connect reset

③reset db cfg 명령어는 데이터베이스의 모든 구성 변수를 초기화 상태로 변경합니다. 일부 데 이터베이스 구성 변수는 해당 데이터베이스에 접속된 모든 응용프로그램을 종료한 후에 데이터 베이스를 재기동해야 반영됩니다.


$ db2 reset db cfg for <데이터베이스명> 
$ db2 force applications all
$ db2stop force
$ db2start
$ db2 connect to <데이터베이스명>
$ db2 get db cfg for <데이터베이스명> show detail
데이터베이스 기동과 중지

①<인스턴스 사용자>로 로그인하여 데이터베이스를 활성화시킵니다.


$ login <인스턴스 사용자명> $ db2 activate db <데이터베이스명>

②연관된 프로세스의 목록과 메모리를 확인합니다.


$ ps ?ef | grep <인스턴스명> 
$ db2mtrk -d 메모리 추적 설정: 21:53:53에서 2009/07/29 데이터베이스용 메모리: SAMPLE utilh pckcacheh other catcacheh bph (1) bph (S32K) 64.0K 192.0K 128.0K 64.0K 8.2M 832.0K bph (S16K) bph (S8K) bph (S4K) shsorth lockh dbh 576.0K 448.0K 384.0K 0 16.7M 20.9M

③데이터베이스를 기동하기 위해 activate database 명령어를 사용했다니다.


$ db2 deactivate db <데이터베이스명> $ db2mtrk -d 활성화된 데이터베이스가 없음

db2


데이터베이스 접속과 해제

①connect 문을 이용하여 데이터베이스에 접속한 후에 액세스가 가능합니다.


$ login?$ db2 connect to <데이터베이스명> $ db2 “select * from syscat.tables”

db2

②데이터베이스에 대한 접속을 해제하려면, connect reset 문을 이용합니다.


$ db2 connect reset

③원격 데이터베이스에 접속하려면, 반드시 사용자명과 암호를 지정해야 합니다.


$ db2 connect to <데이터베이스명> user <사용자명> using <암호> 
$ db2 “select * from syscat.tables”
$ db2 connect reset

④데이터베이스에 대한 접속을 해제하면, db2agent는 제거 되거나 idle 상태로 바뀌게 됩니다.


$ db2 connect reset $ db2pd -d sample -edu | grep -i db2agent
응용프로그램 강제 종료

①<인스턴스 사용자>로 로그인하여 데이터베이스에 접속합니다.


$ login?$ db2 connect to <데이터베이스명> $ db2 “select * from syscat.tables”

②접속된 응용프로그램의 이름과 그 핸들 번호를 확인합니다. 핸들 번호는 응용프로그램에게 할당 되는 OS의 프로세스 id가 아니라, DB2 엔진이 부여한 고유 번호입니다.


$ db2 list applications

③force applications 명령어에서 핸들 번호를 이용하여 특정한 응용프로그램을 강제로 종료 할 수 있습니다. 여러 개의 응용프로그램을 강제 종료하려면 ,(컴마) 를 이용하여 핸들 번호를 나 열합니다.


$ db2 “force application (<핸들 번호>)” 
$ db2 “force application (<핸들 번호 1>, <핸들 번호 2>)”
$ db2 list applications

db2

④접속된 모든 응용프로그램을 강제로 종료하려면 all 옵션을 사용합니다.


$ db2 force applications all $ db2 list applications
원격 노드 등록

①서버에서 인스턴스 사용자로 로그인하여?를 확인합니다. 이 값이 <원격 서버의 IP 주 소> 입니다.


$ login (서버의 인스턴스 사용자명) $ cat /etc/hosts

②서버의 인스턴스 구성 변수인 SVCENAME 의 값이 서비스명이면/etc/services 파일을 확 인합니다. 이 값이 < 원격 인스턴스의 TCP/IP 서비스 포트 번호>입니다.


$ db2 get dbm cfg | grep SVCENAME 
$ cat /etc/services

③클라이언트에서 인스턴스 사용자로 로그인하여 catalog tcpip node 명령어로 원격 서버 의 인스턴스를 등록합니다. (노드명)은 임의로 정할 수 있으며, 서버에서 확인한 (원격 서버의 IP 주소)와 (원격 인스턴스의 TCP/IP 서비스 포트 번호)를 이용합니다.


$ login (클라이언트의 인스턴스 사용자명) 
$ db2 catalog tcpip node (노드명) remote (원격 서버의 IP 주소) server (원격 인스턴스의 TCP/IP 서비스 포트 번호)
$ db2 list node directory

db2

④등록된 원격 노드는 uncatalog node 명령어로 제거합니다.


$ db2 uncatalog node (노드명)
지역 노드 등록

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


$ login (인스턴스 사용자명)

②catalog local node 명령어로 다른 인스턴스를 등록합니다. <노드명>은 임의로 정할 수 있습니다. 인스턴스명을 이용합니다.


$ db2 catalog local node <노드명> instance <다른 인스턴스명>

db2

③catalog tcpip node 명령어로 원격 서버의 인스턴스와 동일한 방법으로 등록할 수도 있습 니다. (노드명)은 임의로 정할 수 있으며, (현재 서버의 IP 주소)와 (지역 인스턴스의 TCP/IP 서비스 포트 번호)를 이용합니다.


$ login (인스턴스 사용자명) 
$ db2 catalog tcpip node (노드명) remote (현재 서버의 IP 주소) server (지역 인스턴스의 TCP/IP 서비스 포트 번호)

④list node directory 명령어로 등록한 지역 노드의 목록을 확인합니다.


$ db2 list node directory

⑤등록한 지역 노드는 uncatalog node 명령어로 제거합니다.


$ db2 uncatalog node (노드명)
원격 데이터베이스 등록

①서버에서 인스턴스 사용자로 로그인하여 <원격 데이터베이스의 별명>을 확인합니다.


$ login (서버의 인스턴스 사용자명) $ db2 list db directory

②클라이언트에서 인스턴스 사용자로 로그인하여 list node 명령어로 원격 데이터베이스가 존재 하는 (원격 노드명)을 확인합니다.


$ login (클라이언트의 인스턴스 사용자명) $ db2 list node directory

③catalog db 명령어를 이용하여 원격 데이터베이스를 등록합니다. (등록할 데이터베이스 별 명) 은 고유한 데이터베이스 별명으로 임의로 정합니다.


$ db2 catalog (원격 데이터베이스의 별명) as (등록할 데이터베이스 별 명) at node (원격 노드명)

db2

④connect 문을 이용하여 원격 데이터베이스에 접속합니다.


$ db2 connect to (등록 데이터베이스 별명) user (원격 사용자명) using (원격 사용자의 암호명)

⑤원격 데이터베이스에 대해 DB2 유틸리티를 실행하려면 db2ubind.lst 파일을 바인드합니다.


$ cd (인스턴스 사용자의 홈디렉토리)/sqllib/bnd $ db2 bind @db2ubind.lst blocking all grant public
시스템 데이터베이스 목록 확인

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


$ login (DB2 사용자명)

②list db directory 명령어로 시스템 데이터베이스의 목록을 확인합니다.


$ db2 list db directory

db2

db2


지역 데이터베이스 목록 확인

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


$ login (DB2 사용자명)

②list db directory 명령어의 ON 옵션을 이용하여 특정한 <디렉토리명>에 실제로 생성되어 있는 (지역 데이터베이스)의 목록을 확인합니다.


$ db2 list db directory ON (디렉토리명)

db2

③Windows 에서는 특정한 (디렉토리명) 대신에 (드라이브명)을 이용합니다.


시작 ? 실행 ? db2cmd C:\> db2 list db directory ON (드라이브명)