2007 International Business Machines Corporation. All rights reserved. DB2 Admin Workshop 2007 International Business Machines Corporation. All rights reserved.
목차 (Agenda) DB2 UDB 제품 군 DB2 시작과 제어센터 사용(GUIs) Instance Database Table Spaces Objects Security
DB2 UDB 제품 군
DB2 Product Family HOST Workgroup Server Edition (WSE) DB2 UDB Everyplace WinCE, Win32 PalmOS, QNX Linux, Embedded Linux Cellvic, Symbian J2ME Personal Edition Personal Edition (PE) Windows Linux Workgroup Server Edition (WSE) AIX HP-UX Solaris Enterprise Server Edition (ESE) DB2 UDB for OS/390 DB2 for VM, VSE & MVS DB2 UDB for AS/400 HOST DRDA ( DB2 Connect ) Express-C
DB2 UDB 시작과 제어센터 사용(GUIs)
메뉴의 종류
제어 센터 (db2cc) Menu bar Tool bar Contents pane tool bar Satellite Admin Center Control Center Task Center Journal Development Center Tools Settings Help Replication Center Command Center Health Center License Center Configuration Advisor Show/Hide Legend
제어 센터 (db2cc) - DBM 구성
제어 센터 (db2cc) - DB 구성
개발 센터 (db2dc)
명령 편집기(db2cmdctr)
명령 창 / 명령행 처리기 non-interactive mode (명령 창) interactive mode (명령행 처리기) db2 connect to sample db2 “select * from syscat.tables” | more interactive mode (명령행 처리기) db2 db2=> connect to sample db2=> select * from syscat.tables
정보 센터
Instance
Instance 란?
The Database Manager Instance
Instance Administrator db2icrt db2ilist db2idrop
관리 서버(DAS) Administration Server 생성 dascrt –u <DASUser> db2admin create Administration Server 제거 dasdrop db2admin drop Administration Server의 시작 및 중지 db2admin start db2admin stop Administration Server 나열 db2admin db2set –g DB2ADMINSERVER DAS의 Configuration File db2 get admin cfg (Display) db2 update admin cfg using (Update the parameters)
DB2 UDB 환경 OS Location of DB2 Environment Variables Windows NT [시작]-[설정]-[제어판]-[시스템]에 위치하여 DB2 환경변수를 setting한다. UNIX Unix System에 따라 차이가 있지만 db2profile이라는 Script file (Bourne or Korn shell), or db2cshrc(C shell)에 시스템 환경변수를 setting한다.
DB2 Profile Registry 1 2 3
db2set 명령어
Database
DB2 아키텍처
DB2 프로세스 모델
데이터베이스 구성도 Instance …… Database 2 …. INSTANCE Catalog Tables DataBase configuration file Log Tables Tablespace Indexes Container Database 1 Database 2 …. Primary Key Foreign Key Alias View Trigger Check Constraint DataBase Manager configuration file Instance ……
데이터베이스, 테이블 스페이스와 테이블
데이터베이스 작성 문법 1/3 Create Database options: CREATE DATABASE DB database-name Create Database Options AT DBPARTITIONNUM Create Database options: ON path drive ALIAS database-alias USING CODESET territory codeset TERRITORY COLLATE USING SYSTEM COMPATIBILITY IDENTITY numsegs NUMSEGS NLSCHAR DEF_EXTENT_SZ CATALOG TABLESPACE tblspace-defn dft-extentsize tblspace-defn
input-keyword--param-value 데이터베이스 작성 문법 – 계속 2/3 USER TABLESPACE tblspace-defn TEMPORARY TABLESPACE tblspace-defn WITH “comment-string” AUTOCONFIGURE USING input-keyword--param-value APPLY DB ONLY DB AND DBM NONE
number-of-millisecond 데이터베이스 작성 문법 – 계속 3/3 tblspace-defn: MANAGED BY ) DATABASE USING SYSTEM USING ‘container-string’ ( , FILE DEVICE number-of-pages EXTENTSIZE number-of-pages PREFETCHSIZE number-of-millisecond OVERHEAD TRANSFERRATE
데이터베이스 생성 예제 CREATE DB MYDB; or CREATE DB MYDB ON D: CREATE DB MYDB CATALOG TABLESPACE MANAGED BY SYSTEM USING (C:\MYDB\CATALOG) TEMPORARY TABLESPACE USING (C:\MYDB\TEMP) USER TABLESPACE MANAGED BY DATABASE USING (FILE ‘C:\MYDB\DMS\USER.TS’ 10M);
데이터베이스 기본 구성 … ON path/drive Instance name SQL00001 SQL0000.0 SYSCATSPACE TEMPSPACE1 USERSPACE1 … NODE0000 Instance name
Managing Initialization Overhead db2 activate database < dbalias > db2 deactivate database < dbalias > Versus first connect to activate database last disconnect to deactivate database
DB2 디렉토리 Local DB Directory System DB Directory Node Directory Connect to Local DB Remote DB SPC Remote DB2 R_DB indirect DB1 L_DB Pointer Node TYPE DB Name DB Alias C:\ 간접 Location 50000 … Port IP System DB Directory Local DB Directory Node Directory (Local) (Remote)
DB2 디렉토리 예제 System Database Directory Local Database Directory C:\>db2 list db directory 시스템 데이터베이스 디렉토리 디렉토리의 항목 수 = 1 데이터베이스 1 항목 : 데이터베이스 별명 = SAMPLE 데이터베이스 이름 = SAMPLE 데이터베이스 드라이브 = C:\DB2 데이터베이스 릴리스 레벨 = a.00 주석 = 디렉토리 항목 유형 = 간접 카탈로그 데이터베이스파티션 번호 = 0 데이터베이스 2 항목: 데이터베이스 별명 = RSAMPLE 데이터베이스 이름 = SAMPLE 노드 이름 = TESTSVR 데이터베이스 릴리스 레벨 = a.00 주석 = 디렉토리 항목 유형 = 리모트 카탈로그 데이터베이스 파티션 번호 = -1 C:\>db2 list db directory on C: C:의 지역 데이터베이스 디렉토리 디렉토리의 항목 수 = 1 데이터베이스 1 항목 : 데이터베이스 별명 = SAMPLE 데이터베이스 이름 = SAMPLE 데이터베이스 드라이브 = SQL00001 데이터베이스 릴리스 레벨 = a.00 주석 = 디렉토리 항목 유형 = 홈 카탈로그 데이터베이스 파티션 번호 = 0 데이터베이스 파티션 번호 = 0
DB Catalog Catalog Database Catalog Node Uncatalog DB/Node Database-name on-path/drive DB As alias At-NodeName Catalog Node ADMIN TCPIP NODE NodeName REMOTE hostname CATALOG SERVER Service-name REMOTE_INSTANCE-instance-name SECURITY-socks 데이터베이스가 생성될 때, System Database Directory file에 자동적으로 카탈로그 된다. CATALOG DATABASE 명령어를 이용하여 명시적으로 데이터베이스를 System Database Directory file에 카탈로그 할 수 있다. UNCATALOG DATABASE 명령어를 이용하여 명시적으로 데이터베이스를 System Database Directory file에서 삭제할 수 있다. Catalog Database 명령어 : 다른 디렉토리에서 전에 삭제되었던 내용을 다시 카탈로그 별명으로 데이터베이스를 카탈로그 할 때 시스템 데이터베이스 하려 할 때 서버시스템에 있는 데이터베이스를 클라이언트 시스템에서 카탈로그 하려 할 때 Uncatalog DB/Node UNCATALOG DB NODE Database-name Node-name
카타로그 정의 예제 catalog tcpip node ibmsvr remote 203.231.14.48 server 50000 catalog db sample as rsample at node ibmsvr connect to rsample user db2inst1 using db2inst1 uncatalog node ibmsvr uncatalog db rsample
Table Spaces
테이블 스페이스와 컨테이너 테이블 공간 데이블들을 저장하는 장소 하나이상의 물리적인 저장 디바이스로 나누어질 수 있다 테이블 공간 타입 컨테이너 데이터가 실제적으로 저장되는 물리적 저장장치 단일 테이블 공간은 여러 컨테이너에 걸쳐 있을 수 있지만, 각 컨테이너는 하나의 테이블 공간에만 속할 수 있다. SMS일 경우, 컨테이너는 디렉토리이다. DMS일 경우, 컨테이너는 파일이나 디바이스이다.
테이블 스페이스 타입 테이블 공간 타입 Regular Large Temporary 테이블 데이터 타입 Long Index
테이블 스페이스 작성 문법 TABLESPACE tablespace-name CREATE LARGE SYSTEM USER TEMPOARY REGULAR IN DATABASE PATITION GROUP db-partition-group-name PAGESIZE 4096 Integer K MANAGED BY SYSTEM system-containers DATABASE database-containers EXTENTSIZE number-of-pages Integer K M G
테이블 스페이스 작성 문법 - 계속 PREFETCHSIZE Integer K M number-of-pages G BUFFERPOOL bufferpool-name OVERHEAD number-of-milliseconds 24.1 number-of-milliseconds 0.9 TRANSFERRATE DROPPED TABLE RECOVERY off on
테이블 스페이스 작성 문법 - 계속 system-containers: , USING on-db-partitions-clause ‘container-string’ ) ( database-containers: on-db-partitions-clause USING container-clause container-clause: Integer K M G , ( FILE DEVICE ‘container-string’ number-of-pages ) on-db-partitions-clause: DBPARTITIONNUM DBPARTITIONNUMS ( ON node-number1 node-number2 TO , )
테이블 스페이스 작성 문법 – 예제1 Creating SMS Tablespaces Unix : create tablespace SMSTBS managed by system using (‘/SMS/container1’, ’/SMS/container2’) prefetchsize 32 Intel : using (‘C:\SMS\container1’, ’D:\SMS\container2’) Creating DMS Tablespaces create tablespace DMSTBS managed by database using (device ‘/dev/rdata1’ 1024, device ‘/dev/rdata2’ 1024) extent 32 using (file ‘E:\DMS\container1’ 5M, file ‘F:\DMS\container2’ 5M,)
테이블 스페이스 작성 문법 – 예제2 connect to mydb; create tablespace datatbs managed by database using (file ‘C:\MYDB\datatbs1.ts’ 10M, file ‘C:\MYDB\datatbs2.ts’ 10M); create tablespace indextbs using (file ‘C:\MYDB\indextbs.ts’ 5M); create large tablespace longtbs using (file ‘C:\MYDB\longtbs1.ts’ 10M); create table emp_photo ( empno char(6) not null, photo_format varchar(10) not null, picture blob(150K) not logged compact) in datatbs index in indextbs long in longtbs;
Extent 크기 0 2 1 3 Container 0 Container 1 Extent Tablespace B 0 2 1 3 Container 0 Container 1 Extent Tablespace B 1 Extent=32 Pages (* 4K) (Default) 4K
테이블스페이스의 생성시 고려사항
SMS vs. DMS SMS DMS 제어 운영체제 Database Manager 컨테이너 디렉토리 파일 혹은 Raw device 공간할당 추가 공간이 요구되어질 때마다 한 page씩 할당 공간이 미리 할당되며 하나의 Extent안에 있는 공간은 물리적으로 연속적 테이블위치 한 테이블은 한 테이블 공간에 존재해야 한다. 하나의 테이블은 여러 개의 테이블공간으로 나뉠 수 있다. 크기를 증가시키는 법 Redirect restore~ 이용 Alter tablespace 문으로 Add container resize extend 크기를 줄이는 법 Drop container Reduce 장점 요구되어질 때 시스템에 의해 공간이 할당 데이터베이스를 생성할 때 초기 작업이 줄어든다 컨테이너를 추가함으로써 테이블 공간이 증가 데이터 타입에 따라 테이블을 여러 테이블공간으로 분리할 수 있다. 적절한 business 작은 개인용 데이터베이스 용으로 Temporary 테이블 공간 용으로 크고 점점 커지는 데이터베이스용으로
SMS Physical Files 파일이름 설 명 SQLTAG.NAM 설 명 SQLTAG.NAM 데이터베이스가 완전하고 일치하는지 검증하기 위해 사용자가 데이터베이스에 연결할 때 DBM에 의해 이용 SQLxxxxx.DAT LONG VARCHAR, LONG VARGRAPHIC, LOB데이터를 제외한 모든 데이터가 저장된다. SQLxxxxx.LF LONG VARCHAR, LONG VARGRAPHIC을 포함하는 파일 SQLxxxxx.LB BLOB, CLOB 또는 DBCLOB 데이터를 포함하는 파일 SQLxxxxx.LBA SQLxxxxx.LB 파일에 대한 공간 할당 및 여유 공간정보를 포함하는 파일 SQLxxxxx.INX 해당 테이블에 대한 모든 인덱스는 이 파일에 저장된다.
테이블스페이스의 list 보기 db2 list tablespaces db2 list tablespaces show detail db2 list tablespace containers for x db2 list tablespace containers for x show detail C:\>db2 list tablespaces 현재 데이터베이스에 대한 테이블 스페이스 테이블 스페이스 ID = 0 이름 = SYSCATSPACE 유형 = 시스템 관리 스페이스 내용 = 임의의 데이터 상태 = 0x0000 세부사항 설명: 정상 테이블 스페이스 ID = 1 이름 = TEMPSPACE1 내용 = 시스템 임시 데이터
ALTER TABLESPACE 문은 다음의 경우에 사용: DMS table space에 container를 추가할 경우 DMS table space에 container를 삭제할 경우 DMS table space의 container의 크기를 변경할 경우 DMS table space의 container의 크기를 확장할 경우 DMS table space의 container의 크기를 축소할 경우 Table space의 PREFETCHSIZE 값을 변경할 경우 Table space의 OVERHEAD 값을 변경할 경우 Table space의 TRANSFERRATE 값을 변경할 경우 Table space의 BUFFERPOOL 값을 변경할 경우
ALTER 테이블 스페이스 작성 문법 tablespace-name ALTER TABLESPACE on-db-partitions-clause system-container-clause ADD database-container-clause DROPPED TABLE RECOVERY EXTEND RESIZE all-containers-clause ON OFF REDUCE drop-container-clause DROP PREFETCHSIZE number-of-pages Integer K,M,G BUFFERPOOL bufferpool-name OVERHEAD number-of-millisecond TRANSFERRATE number-of-milliseconds SWITCH ONLINE
테이블스페이스 변경 실습 컨테이너 추가 alter tablespace longtbs add (file ‘C:\MYDB\longtbs2.ts’ 5M); 컨테이너 삭제 alter tablespace datatbs drop (file ‘C:\MYDB\datatbs2.ts’); 컨테이너 크기 증가 alter tablespace indextbs resize (file ‘C:\MYDB\indextbs.ts’ 10M); or extend (file ‘C:\MYDB\indextbs.ts’ 5M); 컨테이너 크기 감소 reduce (file ‘C:\MYDB\longtbs2.ts’ 5M);
테이블 공간 관리 SYSCAT.TABLES SYSCAT.TABLESPACES TBSPAID TABLEID TABNAME EXTENTSIZE DATATYPE TBSPACETYPE TBSPACEID TBSPACE S = SMS D = DMS A = All L = Long T = Temp
Bufferpool SYSCTRL or SYSADM authority create bufferpool mybp1 size 1000 create bufferpool mybp2 size 1000 deferred alter tablespace datatbs bufferpool mybp1 IMMEDIATE DEFERRED bufferpool-name Create Bufferpool size Number of page
QUIT vs. TERMINATE vs. CONNECT RESET CLP COMMAND Terminate CLP Back-end Process Disconnect database Connection quit No terminate Yes connect reset Yes if CONNECT = 1 (RUOW)
CLP 문법 db2 db2-command option flag sql-statement ? phrase message class-code
Objects
dbm configuration file Objects의 계층적 구조 Instance 1 dbm configuration file Catalog Catalog Database 1 Database 2 Log Log DB configuration file DB cfg file Table1 Table2 Table3 Table2 Index1 View1 View1 Index1 View2 BLOBs Index2 View3
데이터베이스 디렉토리와 구조 /path [ DB2INSTANCE ] [ NODE0000 ] [ sqldbdir ] SQLDBCON cfg file SQLOGCTL.LFH log file control SQLSPCS.1 tablespace에 관한 file SQLSPCS.2 tablespace에 관한 file SQLBP.1 bufferpool에 관한 file SQLBP.2 bufferpool에 관한 file [ db2event ] monitoring의 output file이 들어가는 directory db2rhist.asc recovery history를 가지는 file db2rhist.bak [ SQLOGDIR ] . . . . S0000000.LOG S0000001.LOG DAT - data INX - index LF - LONG VARCHAR & LONG VARGRAPHIC LB - LOBS LBA - LOB allocation [ SMS ] ... [ CONT1 ] [ SQLT0000.0 ] SQLTAG.NAM SQLTAG.NAM SQL00030.DAT SQL00030.INX [ CONT2 ] SQLTAG.NAM SQL00041.DAT . . . . SQL00030.LB SQL00030.LF SQL00030.LBA . . . . . . . [ DMS ] DMSLONG.TBS
Schema Schema의 정의 테이블 및 다른 데이터베이스 오브젝트들을 그룹화하도록 돕는 사용자 ID 와 같은 식별자 데이타베이스의 또 다른 오브젝트임. 사용자에 의해 소유되고 데이터와 스키마 안에 있는 오브젝트에 대한 Access를 제어할 수 있다. Object의 이름 두 부분 중 앞부분의 이름. 예) db2admin.employee default schema 는 오브젝트를 생성한 사용자의 USER ID임.
스키마 생성 Connect to database SYSADM 또는 DBADM의 권한이 필요하다. Create schema Payroll authorization db2admin
System Catalog Tables와 Views
테이블 CREATE table명 TABLE ( ) 칼럼정의 Primary constraint Referential constraint check constraint IN 테이블공간명 INDEX IN LONG IN ALTER table명 TABLE COLUMN Primary constraint Referential constraint check constraint DROP PRIMARY KEY FOREIGN KEY UNIQUE CHECK CONSTRAINT 제한조건명 ADD 칼럼정의 ( ) DROP table명 TABLE Constraint절 CONSTRAINT 제한조건명 UNIQUE PRIMARY FOREIGN KEY ( 칼럼명 ) CHECK 점검조건
테이블 - 계속 DB2 UDB는 4, 8, 16, 32 KB 크기의 페이지를 지원합니다. 컬럼의 개수, 행의 최대 크기, 테이블의 최대 크기 등은 페이지의 크기에 따라 달라진다. 테이블은 제어 센터나 CREATE TABLE 문을 통해 생성. 테이블, 뷰, 별명의 이름은 128 문자까지. 컬럼의 이름은 30 문자까지. 온라인 테이블 재구성 테이블을 재 구성 하는 동안 응용프로그램이 테이블을 액세스할 수 있다. 유형 2 인덱스가 있고, 확장 인덱스가 없는 테이블에만 허용된다. 오프라인 테이블 재구성 온라인 보다 테이블을 더 빨리 재 구성할 수 있다. LOBS와 LONG 데이터는 특별히 요청하지 않는 한 더 이상 재 구성 하지 않는다. 테이블이 재 구성 된 후 인덱스가 순서대로 대 구성 된다. 페이지 컬럼 행 길이 테이블 크기 4KB 500개 4005바이트 64GB 8KB 1012개 8101바이트 128GB 16KB 16293바이트 256GB 32KB 32677바이트 512GB
테이블 생성 예제 connect to mydb; create table artists (artno smallint not null, name varchar(50) with default ‘abc’, Classfication char(1) not null, Bio clob(10K) not logged, Picture blob(10M) not logged compact ) in datatbs index in indextbs long in longtbs;
인덱스 색인 테이블 A A 17 47 ABC 19 17 QRS 47 85 FCP 81 81 MLI 85 93 CJP 87 87 칼럼 A 17 47 ABC 행 19 17 QRS 47 85 FCP 81 81 MLI 85 93 CJP 87 87 DJS 93 19 KMP 색인 및 테이블 사이의 관계
인덱스 생성 CREATE index명 INDEX UNIQUE ON nickname table명 DESC ASC ( ) ’ 칼럼명 SPECIFICATION ONLY CLUSTER PCTFREE PCTFREE 10 integer INCLUDE ’ 칼럼명 MINPCTUSED integer DISALLOW REVERSE SCAN ALLOW REVERSE SCAN COLLECT STATISTICS DETAILED SAMPLED DROP index명 INDEX
View CONNECT TO MUSICDB CREATE view명 VIEW ( ) ’ 칼럼명 AS fullselect DROP view명 VIEW CONNECT TO MUSICDB CREATE VIEW EMPSALARY AS SELECT EMPNO, EMPNAME, SALARY FROM PAYROLL, PERSONNEL WHERE EMPNO=EMPNUMB AND SALARY > 30000.00 SELECT * FROM EMPSALARY EMPNO EMPNAME SALARY ------ ----------------- ---------- 10 John Smith 1000000.00 20 Jane Johnson 300000.00 30 Robert Appleton 250000.00 ...
Alias CONNECT TO MUSICDB CREATE ALIAS SINGERS FOR ARTISTS 별명 SYNONYM ALIAS FOR 테이블명 뷰명 별명2 DROP 별명 ALIAS 존재하는 테이블, 뷰 또는 Alias 와 같진 않다. 단지 같은 DB 안의 한 테이블을 언급할 수 있다. CONNECT TO MUSICDB CREATE ALIAS SINGERS FOR ARTISTS CREATE ALIAS DBUSER.ALBUMS FOR DB2INST1.ALBUMS
Constraints(제한조건) 제한조건(Constraints)은 데이타베이스 관리 프로그램이 실행하는 규칙 제한 조건의 세가지 유형 Unique Constraint 한 테이블내의 하나 이상의 행에서 동일한 값을 사용할 수 없도록 하는 규칙 Referential Constraint 하나이상의 테이블 내에 있는 하나 이상의 칼럼 값에 관한 논리적인 규칙 테이블 Check Constraint 특정 테이블에 데이터를 추가할 때 제한조건을 설정 예를 들면 개인정보를 포함하는 테이블에 봉급 데이터가 추가 또는 갱신될 때 사원에 대한 봉급 레벨이 최소 50만원 이상이 되도록 제한할 수 있다.
Referential Integrity 테이블 간 또는 테이블 안에서 정의된 관계를 의미한다. Create table 문과 Alter table문에서 정의할 수 있다. Insert, Update, Delete, Alter table, Add Constraint 및 SET Integrity문을 수행하는 동안 데이타베이스 관리 프로그램을 통해 적용
Referential Integrity - 계속
Referential Integrity 예제 CREATE TABLE DEPARTMENT ( DEPT CHAR(3) NOT NULL, DEPTNAME CHAR(20) NOT NULL, CONSTRAINT DEPT_NAME UNIQUE (DEPTNAME) ); ALTER TABLE DEPARTMENT ADD PRIMARY KEY (DEPT); CREATE TABLE EMPLOYEE ( EMPNO CHAR(6) NOT NULL, NAME CHAR(30), WKDEPT CHAR(3) NOT NULL ALTER TABLE EMPLOYEE ADD FOREIGN KEY (WKDEPT) REFERENCES DEPARTMENT (DEPT) ON DELETE RESTRICT; REFERENCES 옵션에 컬럼 명을 지정하지 않으면 DEFAULT로 부모 테이블의 PRIMARY KEY 참조한다.
Unique Key CONNECT TO MUSICDB CREATE TABLE PAY.EMPTAB ( EMPNO SMALLINT NOT NULL PRIMARY KEY, NAME CHAR(20), DRIVERLIC CHAR(17) NOT NULL, CONSTRAINT DRIV_UNIQ UNIQUE(DRIVERLIC) ) IN TBSP1 Unique indexes PAY.DRIV_UNIQ and SYSIBM.yymmddhhmmssxxx created Columns must be NOT NULL
Check Constraints DATA RULE : DB2 CREATE TABLE SPEED_LIMITS ( No value in the US_SL column in the table SPEED_LIMITS can exceed 65. PGM n DB2 PGM 1 PGM 2 ENFORCEMENT APPLICATION DATABASE CREATE TABLE SPEED_LIMITS ( ROUTE_NUM SMALLINT, CANADA_SL INTEGER NOT NULL, US_SL INTEGER NOT NULL CHECK (US_SL <=65) ) ALTER TABLE SPEED_LIMITS ADD CONSTRAINT SPEED65 CHECK (US_SL <=65)
Security 76 76
권한 SYSADM SYSMAINT DATABASE1 DBADM DATABASE2 SYSCTRL 데이터를 볼 수 없다 77 77
SYSADM 권한 시스템 관리 권한(SYSADM) 최상위 레벨의 관리자 권한. 유틸리티를 수행하고 데이타베이스 및 데이타베이스 관리 프로그램 명령 발행. 데이타베이스 관리 프로그램 인스턴스 내의 데이타베이스에 있는 테이블의 데이타베이스에 액세스 가능 SYSADM 그룹 Unix System의 경우 SYSADM 그룹은 인스턴스 OWNER의 1차 그룹으로 설정 Windows NT System의 경우 로컬 Administrator group의 멤버로 DB2 UDB를 설치 DBM Configuration cfg에서 SYSADM_GROUP 파라 미터를 원하는 그룹이름으로 변경 78
SYSCTRL 권한 최상위 레벨의 시스템 제어 권한. 데이타베이스 관리 프로그램 인스턴스와 데이타베이스에 대해 유지보수 및 유틸리티 조작을 수행할 수 있는 기능 제공. 사용자가 중요한 데이터가 들어 있는 데이타베이스 관리 프로그램 인스턴스를 관리하기 위한 목적으로 설계. SYSCTRL 권한을 갖고 있는 사용자는 데이타베이스 오브젝트에 Access 권한이 없다. SYSCTRL 권한을 갖고 있는 사용자는 데이타베이스 관리 Configuration file을 수정할 권한이 없다. 79 79
SYSMAINT 권한 시스템 제어 권한 중 두 번째로 높은 레벨. 시스템 자원에 영향을 줄 수 있지만, 데이터베이스의 데이터를 직접 액세스할 수는 없다. 80 80
DBADM 권한 관리 권한 중 두 번째로 높은 레벨. 특정 데이타베이스에만 적용되며 사용자가 특정 유틸리티를 수행하고 데이타베이스 명령을 발행하고 데이타베이스 테이블의 데이터에 액세스 할 수 있다. SYSADM 권한을 가지고 있는 사용자만이 DBADM 권한을 권한 부여 하거나 권한 취소할 수 있다. DBADM 권한을 가지고 있는 사용자는 다른 사용자에게 데이터베이스에 대한 특권을 권한 부여할 수 있음. 81 81
권한 부여 SYSADM, SYSCTRL, SYSMAINT 권한 부여 DBADM 권한 부여 데이타베이스관리자의 Configuration file을 변경시켜야 한다. Grant 문을 이용하여 권한 부여할 수 없다. C:\> db2 update dbm cfg using SYSADM_GROUP db2adm C:\> db2 update dbm cfg using SYSCTRL_GROUP db2cntrl C:\> db2stop C:\> db2start DBADM 권한 부여 SYSADM 권한을 갖고 있는 사용자가 Grant문을 이용하여 권한을 부여할 수 있다. C:\> db2 grant DBADM to SPC 82
Database 권한 요약 83 기능 SYSADM SYSCTRL SYSMAINT DBADM Catalog / Uncatalog Database Y Catalog / Uncatalog Node Catalog / Uncatalog DCS Migrate Database Update DBM Cfg Grant / Revoke DBADM Force Users Create / Drop Database Quiesce Instance / Database Create / Alter / Drop Tablespace Restore to New Database Update DB Cfg Backup Database / Tablespace Restore to Existing Database Rollforward Recovery Start / Stop Database Instance Restore Tablespace Run Trace Take DBM / DB Snapshot Query Tablespace State Update Log History Files Quiesce Tablespace Load Tables Set / Unset Check Pending State Read Log Files Create / Activate / Drop Event Monitors Run Load Utility 83
권한과 특권 Authority Privilege 84 CONTROL (Indexes) CONNECT (Database) BINDADD BIND EXECUTE ALL DELETE INSERT SELECT UPDATE ALTER INDEX REFERENCES (Views) (Tables) (Packages) CREATE_NOT_FENCED CREATETAB DBADM SYSCTRL SYSMAINT Authority Privilege SYSADM IMPLICIT_SCHEMA ALTERIN CREATEIN DROPIN (스키마 소유자) 84 84
데이터베이스 특권 데이타베이스 BINDADD IMPLICIT_SCHEMA CREATE_NOT_FENCED LOAD CREATETAB CONNECT 85 85
오브젝트 특권 데이타베이스 스키마 소유자 CONTROL (뷰) 테이블 (별명) (색인) (테이블공간) (패키지) ALL ALTER INDEX INSERT REFERENCES SELECT UPDATE DELETE BIND EXECUTE CREATEIN ALTERIN DROPIN USE 86
스키마 특권 스키마 권한은 데이타베이스의 스키마에 조치를 취할 수 있는 권한임. 사용자에게는 다음 권한이 권한 부여 CREATEIN 사용자가 스키마 내에서 오브젝트를 작성하도록 한다. ALTERIN 사용자가 스키마 내에서 오브젝트를 변경하도록 한다. DROPIN 사용자가 스키마 내에서 오브젝트를 제거하도록 한다. 스키마 소유자는 모두 이러한 특권과 기능을 다른 사용자에게 권한 부여할 권한을 가짐. 스키마 오브젝트 내에서 조정되는 오브젝트에는 테이블, 뷰, 색인, 패키지, 데이터 유형, 함수, 트리거, 프로시저, 별명이 있다. 87
테이블 공간 특권 테이블 공간 특권은 데이타베이스에서 테이블 공간에 대한 조치를 포함. 사용자에게는 다음 권한이 권한 부여 USE 테이블 공간 내에서 테이블을 작성하도록 허용한다. 테이블 공간의 소유자는 USE 특권과 이 특권을 다른 사용자에게 부여하는 능력을 가진다. 데이타베이스 작성 중 USERSPACE1에 대한 USE특권이 PUBLIC으로 부여 USE특권은 SYSCATSPACE 또는 임의의 시스템 임시 테이블 공간에서 사용될 수 없다. 88
테이블 및 뷰 특권 사용자에게는 다음 권한이 권한 부여 CONTROL ALTER INDEX SELECT INSERT DELETE UPDATE REFERENCES 89 89
패키지 특권 패키지 특권은 사용자가 패키지를 작성하고 조작할 수 있도록 한다. 사용자에게는 다음 권한이 권한 부여 CONTROL 패키지를 리바인드, 제거 또는 실행할 능력과 이러한 특권을 다른 사용자에게 확대할 수 있는 능력을 제공 BIND 사용자가 기존 패키지를 리바인드 할 수 있도록 한다. EXECUTE 사용자가 패키지를 실행할 수 있도록 한다. 90
특권 요약 RESOURCE NEEDED TO CREATE NEEDED TO CONTROL OTHER PRIVILEGES Database SYSADM SYSCTRL DBADM CONNECT BINDADD CREATETAB NOFENCE IMPLICIT_SCHEMA Tablespace USE Package CONTROL BIND EXECUTE Table (T) View (V) CREATETAB (T) CONTROL OR SELECT (V) SELECT (T/V) INSERT (T/V) DELETE (T/V) UPDATE (T/V) ALTER (T) INDEX (T) REFERENCES (T) Index INDEX none Alias If schema differs from current authid, requires DBADM, SYSADM Schemas CREATEIN ALTERIN DROPIN 91
권한 부여 DBADM 권한을 가진 사용자는 사용자 MEL에 대한 PAY 스키마를 생성할 수 있다. CREATE SCHEMA PAY AUTHORIZATION MEL MEL은 스키마 PAY에서 오브젝트를 생성할 수 있다. CREATE TABLE PAY.T1 (COL1 INT) MEL은 다른 사용자에게 특권을 부여할 수 있다. GRANT CREATEIN ON SCHEMA PAY TO USER CAL GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA PAY TO GROUP G1 WITH GRANT OPTION 모든 사용자가 아직 존재하지 않는 스키마 이름과 함께 CREATE 문을 사용하여 오브젝트를 작성함으로써 스키마를 내재적으로 작성할 수 있음. REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC GRANT IMPLICIT_SCHEMA ON DATABASE TO USER JON 92
권한 부여 GRANT/ REVOKE database privileges ON DATABASE TO/ FROM USER/ GROUP userid groupid PUBLIC package Privileges ON PACKAGE package_name table/view ON TABLE table/view_name CONTROL ON INDEX index_name 93 93
Grant… Table, View 특권 부여 문법 PRIVILEGES ALL , ALTER CONTROL DELETE INDEX INSERT REFERENCES SELECT UPDATE ( column-name ) , ON TABLE table-name view-name TO authorization-name PUBLIC USER GROUP WITH GRANT OPTION 94
Mel attempts bind of pgm.sqc Mel attempts to create a view 권한 부여 예제 Mel은 group1의 멤버이다. db2 grant select on table T1 to group group1 db2 grant update on table T1 to user mel db2 grant insert on table T1 to public db2 grant insert on table T2 to public exec sql insert… from T1... exec sql update T1 set... exec sql select... from T2... Mel attempts bind of pgm.sqc OK OK OK SQL bind fails create view V1 as select C3 from T1 create view V2 as select C1, C8 from T2 Mel attempts to create a view OK SQL create view fails 95
DB2 BIND GRANT 옵션 DB2 BIND… GRANT 명령어는 PACKAGE에 대해 EXECUTE, BIND 특권을 특정 USERID 나 PUBLIC에게 부여한다.. RICK은 BINDADD와 필요한 SQL 특권을 가지고 있다 SALLY는 packa에 대해 CONTROL 권한을 가지고 있다. db2 connect to sample db2 prep packa.sqc bindfile db2 bind packa.bnd grant Authid Groupid public OR Grant execute, bind on package packa To 96
프로그램에 요구되는 특권 Action 요구되는 특권 Precompile to bindfile CONNECT on database Create a new package BINDADD on database 각 Static SQL 문을 수행할 수 있는 특권 Modify an existing package BIND on package 각 Static SQL문을 수행할 수 있는 특권 Recreate an existing package Execute a package EXECUTE on package Drop a package CONTROL on package or creator of package 97
특권 정보 SYSCAT.DBAUTH Database privileges SYSCAT.COLAUTH Table and View Column privileges SYSCAT.INDEXAUTH Index privileges SYSCAT.PACKAGEAUTH Access Package privileges SYSCAT.SCHEMAAUTH Schema privileges SYSCAT.TABAUTH Table and View privileges 98 98
내재적 특권 데이터베이스를 생성하면… CONNECT, CREATETAB, BINDADD, CREATE_NOT_FENCED, 그리고 sIMPLICIT_SCHEMA 특권을 가진 DBADM 권한을 내부적으로 생성자에게 부여. To creator (SYSADM or SYSCTRL) BINDADD, CREATETAB, CONNECT, IMPLICIT_SCHEMA, 그리고 SYSADM CATALOG TABLE에 대한 SELECT 특권을 내재적으로 부여 성공적으로 바운드된 패키지에 대해 BIND 및 EXECUTE 특권을 PUBLIC에게 부여 System catalog table 및 뷰에 대해 SELECT 특권을 PUBLIC에게 부여 USERSPACE1에 대한 USE 특권을 PUBLIC에게 부여 DBADM 권한을 부여하면… BINDADD, CREATETAB, CONNECT, CREATE_NOT_FENCED 그리고 IMPLICIT_SCHEMA 특권을 내재적으로 부여 오브젝트 (table, index, package) 를 생성하면… 오브젝트 생성자에게 CONTROL 특권을 내재적으로 부여 뷰를 생성하면… 기본 테이블에 대한 생성자의 특권이 뷰 생성자에게 내재적으로 부여 99