DB2-데이터베이스

이 장에서는 관련 구문을 사용하여 데이터베이스 생성, 활성화 및 비활성화에 대해 설명합니다.

데이터베이스 아키텍처

데이터베이스는 데이터베이스 작업을 효율적으로 처리하기 위해 함께 작동하는 테이블, 스키마, 버퍼 풀, 로그, 스토리지 그룹 및 테이블 스페이스의 모음입니다.

데이터베이스 디렉토리

데이터베이스 디렉토리는 조직화 된 데이터베이스 저장소입니다. 데이터베이스를 만들 때 기본 저장 장치, 구성 파일 및 임시 테이블 목록 등과 같은 데이터베이스에 대한 모든 세부 정보가 데이터베이스 디렉터리에 저장됩니다.

인스턴스 폴더에 파티션 전역 디렉토리가 생성됩니다. 이 디렉토리는 데이터베이스와 관련된 모든 글로벌 정보를 포함합니다. 이 파티션 전역 디렉토리의 이름은 NODExxxx / SQLyyy이며, ​​여기서 xxxx는 데이터 파티션 번호이고 yyy는 데이터베이스 토큰입니다.

파티션 전역 디렉토리에서 구성원 별 디렉토리가 생성됩니다. 이 디렉토리에는 로컬 데이터베이스 정보가 포함되어 있습니다. 구성원 별 디렉토리의 이름은 MEMBERxxxx로 지정되며 여기서 xxxx는 구성원 번호입니다. DB2 Enterprise Server Edition 환경은 단일 구성원에서 실행되며 하나의 구성원 특정 디렉토리 만 있습니다. 이 구성원 별 디렉토리는 MEMBER0000으로 고유하게 이름이 지정됩니다.

분할 된 전역 디렉터리

디렉토리 위치 : <인스턴스> / NODExxx / SQLxxx

파티션 전역 디렉토리에는 아래 나열된 데이터베이스 관련 파일이 포함되어 있습니다.

  • 전역 교착 상태 파일에 쓰기 이벤트 모니터링 파일
  • 테이블 스페이스 정보 파일 [SQLSPCS.1, SQLSPCS.2]
  • 스토리지 그룹 제어 파일 [SQLSGF.1, SQLSGF.2]
  • 임시 테이블 스페이스 컨테이너 파일. [/ 저장 경로 / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • 글로벌 구성 파일 [SQLDBCONF]
  • 히스토리 파일 [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • 로깅 관련 파일 [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • 잠금 파일 [SQLINSLK, SQLTMPLK]
  • 자동 저장 용기

회원 별 디렉토리

디렉토리 위치 : / NODExxxx / SQLxxxx / MEMBER0000

이 디렉토리에는 다음이 포함됩니다.

  • 데이터베이스와 관련된 개체
  • 버퍼 풀 정보 파일 [SQLBP.1, SQLBP.2]
  • 로컬 이벤트 모니터링 파일
  • 로깅 관련 파일 [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • 로컬 구성 파일
  • 교착 상태 이벤트 모니터 파일. 자세한 교착 상태 이벤트 모니터 파일은 ESE 및 파티션 된 데이터베이스 환경의 경우 카탈로그 노드의 데이터베이스 디렉토리에 저장됩니다.

데이터베이스 생성

"CREATE DATABASE"명령을 사용하여 인스턴스에 데이터베이스를 만들 수 있습니다. 모든 데이터베이스는 인스턴스 작성시 작성되는 기본 스토리지 그룹 "IBMSTOGROUP"으로 작성됩니다. DB2에서 모든 데이터베이스 테이블은 각각의 스토리지 그룹을 사용하는 "테이블 스페이스"에 저장됩니다.

데이터베이스에 대한 권한은 자동으로 PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA 및 SELECT]로 설정되지만 RESTRICTIVE 옵션이있는 경우 권한이 PUBLIC으로 부여되지 않습니다.

비 제한적 데이터베이스 생성

이 명령은 비 제한적인 데이터베이스를 만드는 데 사용됩니다.

Syntax: [새 데이터베이스를 생성합니다. 'database_name'은 만들려는 새 데이터베이스 이름을 나타냅니다.]

db2 create database <database name>

Example: [이름이 'one'인 새로운 비 제한적 데이터베이스를 생성하려면]

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

제한적인 데이터베이스 생성

이 명령을 호출하면 제한적인 데이터베이스가 생성됩니다.

Syntax: [아래 구문에서 "db_name"은 데이터베이스 이름을 나타냅니다.]

db2 create database <db_name> restrictive

Example: [ 'two'라는 이름으로 새로운 제한 데이터베이스를 생성하려면]

db2 create database two restrictive

사용자 정의 위치가 다른 데이터베이스 생성

다른 경로에 기본 스토리지 그룹 "IBMSTOGROUP"을 사용하여 데이터베이스를 작성하십시오. 이전에는 특정 위치에 데이터베이스를 저장하거나 생성하기 위해 사용자 정의 위치없이 "create database"명령을 호출했습니다. 사용자 정의 데이터베이스 위치를 사용하여 데이터베이스를 생성하려면 다음 절차를 따르십시오.

Syntax: [아래 구문에서 'db_name'은 '데이터베이스 이름', 'data_location'은 폴더 내 데이터 저장 위치, 'db_path_location'은 'data_location'의 드라이버 위치를 나타냅니다.]

db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'

Example: [데이터가 'data1'에 저장되고이 폴더가 'dbpath1'에 저장되는 'four'라는 데이터베이스를 생성하려면]

db2 create database four on '/data1' dbpath on '/dbpath1'

로컬 또는 시스템 데이터베이스 디렉토리 파일보기

이 명령을 실행하여 현재 인스턴스에서 사용 가능한 디렉토리 목록을 확인합니다.

Syntax:

db2 list database directory

Example:

db2 list database directory

Output:

System Database Directory  
 Number of entries in the directory = 6  
 Database 1 entry:  
 Database alias                       = FOUR  
 Database name                        = FOUR  
 Local database directory             = 
 /home/db2inst4/Desktop/dbpath  
 Database release level               = f.00  
 Comment                              =  
 Directory entry type                 = Indirect  
 Catalog database partition number    = 0  
 Alternate server hostname            =  
 Alternate server port number         =  
Database 2 entry: 
Database alias                       = SIX  
Database name                        = SIX  
Local database directory             = /home/db2inst4  
Database release level               = f.00  
Comment                              =  
Directory entry type                 = Indirect  
Catalog database partition number    = 0  
Alternate server hostname            =  
Alternate server port number         =

데이터베이스 활성화

이 명령은 특정 데이터베이스에 필요한 모든 서비스를 시작하여 데이터베이스를 애플리케이션에 사용할 수 있도록합니다.

Syntax: [ 'db_name'은 데이터베이스 이름을 나타냄]

db2 activate db <db_name>

Example: [데이터베이스 'one'활성화]

db2 activate db one

데이터베이스 비활성화

이 명령을 사용하여 데이터베이스 서비스를 중지 할 수 있습니다.

Syntax:

db2 deactivate db <db_name>

Example: [데이터베이스 'one'비활성화하기]

db2 deactivate db one

데이터베이스에 연결

데이터베이스를 만든 후 사용하려면 데이터베이스를 연결하거나 시작해야합니다.

Syntax:

db2 connect to <database name>

Example: [데이터베이스 1을 현재 CLI에 연결하려면]

db2 connect to one

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

데이터베이스가 제한적인지 확인

이 데이터베이스가 제한적인지 여부를 확인하려면 다음 구문이 있습니다.

Syntax: [다음 구문에서 'db'는 Database, 'cfg'는 구성, 'db_name'은 데이터베이스 이름을 나타냅니다.]

db2 get db cfg for <db_name> | grep -i restrict

Example: [ '하나'데이터베이스 제한 여부 확인]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

데이터베이스 관리자 및 데이터베이스 구성

인스턴스 구성 (데이터베이스 관리자 구성)은 'db2system'이라는 파일에 저장되고 데이터베이스 관련 구성은 'SQLDBCON'이라는 파일에 저장됩니다. 이러한 파일은 직접 편집 할 수 없습니다. API를 호출하는 도구를 사용하여 이러한 파일을 편집 할 수 있습니다. 명령 행 처리기를 사용하여 다음 명령을 사용할 수 있습니다.

데이터베이스 관리자 구성 매개 변수

Syntax: [인스턴스 데이터베이스 관리자 정보를 얻으려면]

db2 get database manager configuration
또는
db2 get dbm cfg

Syntax: [인스턴스 데이터베이스 관리자를 업데이트하려면]

db2 update database manager configuration
또는
db2 update dbm cfg

Syntax: [이전 구성을 재설정하려면]

db2 reset database manager configuration
또는
db2 reset dbm cfg

데이터베이스 구성 매개 변수

Syntax: [데이터베이스 정보 얻기]

db2 get database configuration
또는
db2 get db cfg

Syntax: [데이터베이스 구성을 업데이트하려면]

db2 update database configuration
또는
db2 update db cfg

Syntax: [데이터베이스 구성에서 이전에 구성한 값을 재설정하려면

db2 reset database configuration
또는
db2 reset db cfg

Syntax: [현재 활성 데이터베이스의 크기를 확인하려면]

db2 "call get_dbsize_info(?,?,?,-1)"

Example: [현재 활성화 된 데이터베이스의 크기를 확인하려면]

db2 "call get_dbsize_info(?,?,?,-1)"

Output:

Value of output parameters   
--------------------------   
Parameter Name  : SNAPSHOTTIMESTAMP   
Parameter Value : 2014-07-02-10.27.15.556775  
Parameter Name  : DATABASESIZE   
Parameter Value : 105795584  
Parameter Name  : DATABASECAPACITY   
Parameter Value : 396784705536  
Return Status = 0

데이터베이스에 필요한 공간 추정

데이터베이스 크기를 추정하려면 다음 요인의 기여도를 고려해야합니다.

  • 시스템 카탈로그 테이블
  • 사용자 테이블 데이터
  • 긴 필드 데이터
  • LOB (Large Object) 데이터
  • 인덱스 공간
  • 임시 작업 공간
  • XML 데이터
  • 로그 파일 공간
  • 로컬 데이터베이스 디렉토리
  • 시스템 파일

데이터베이스 권한 확인

다음 구문을 사용하여 비제 한 데이터베이스에서 PUBLIC에 부여 된 데이터베이스 권한을 확인할 수 있습니다.

Step 1: 인스턴스의 인증 사용자 ID와 비밀번호로 데이터베이스에 연결합니다.

Syntax: [사용자 이름과 암호로 데이터베이스에 연결하려면]

db2 connect to <db_name> user <userid> using <password>

Example: [사용자 ID가 'db2inst4'이고 암호가 'db2inst4'인 "one"데이터베이스를 연결하려면]

db2 connect to one user db2inst4 using db2inst4

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Step2: 데이터베이스 권한을 확인합니다.

Syntax: [아래의 구문은 현재 데이터베이스에 대한 권한 서비스 결과를 보여줍니다.]

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('public','g'))as t 
order by authority"

Example:

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t 
order by authority"

Output:

AUTHORITY                 D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE  
------------------------- ------ ------- -------- --------- ---------- ----------- ------  
ACCESSCTRL                *      *       N        *         *          N           *       
BINDADD                   *      *       Y        *         *          N           *       
CONNECT                   *      *       Y        *         *          N           *       
CREATETAB                 *      *       Y        *         *          N           *       
CREATE_EXTERNAL_ROUTINE   *      *       N        *         *          N           *       
CREATE_NOT_FENCED_ROUTINE *      *       N        *         *          N           *       
CREATE_SECURE_OBJECT      *      *       N        *         *          N           *       
DATAACCESS                *      *       N        *         *          N           *       
DBADM                     *      *       N        *         *          N           *       
EXPLAIN                   *      *       N        *         *          N           *       
IMPLICIT_SCHEMA           *      *       Y        *         *          N           *       
LOAD                      *      *       N        *         *          N           *       
QUIESCE_CONNECT           *      *       N        *         *          N           *       
SECADM                    *      *       N        *         *          N           *       
SQLADM                    *      *       N        *         *          N           *       
SYSADM                    *      *       *        *         *          *           *       
SYSCTRL                   *      *       *        *         *          *           *       
SYSMAINT                  *      *       *        *         *          *           *       
SYSMON                    *      *       *        *         *          *           *       
WLMADM                    *      *       N        *         *          N           *         
20 record(s) selected.

데이터베이스 삭제

Drop 명령을 사용하여 인스턴스 데이터베이스 디렉토리에서 데이터베이스를 제거 할 수 있습니다. 이 명령은 모든 오브젝트, 테이블, 공간, 컨테이너 및 연관된 파일을 삭제할 수 있습니다.

Syntax: [인스턴스에서 데이터베이스를 삭제하려면]

db2 drop database <db_name>

Example: [인스턴스에서 'six'데이터베이스를 삭제하려면]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully