Download presentation
Presentation is loading. Please wait.
1
능력단위명 : 데이터베이스 구현(2001020405_14v2) 대분류 중분류 소분류 세분류 정보통신(20) 정보기술(01)
정보기술개발(02) DB엔지니어링(04) 능력단위(분류번호) 버전정보 수준 데이터베이스구현 ( _14v2) 14v2 3 수준 업무 작성자 버전 작성일 개발 강전근 V1.0 검토 박상정
2
데이터베이스구현 능력단위 명 : 데이터베이스구현 (2001020405_14v2] 구 분 세 부 내 용 능력단위요소(단원 명)
능력단위 명 : 데이터베이스구현 구 분 세 부 내 용 능력단위요소(단원 명) 1 DBMS(Data Base Management System)설치하기 2 데이터베이스 생성하기 3 데이터베이스 오브젝트 생성하기
3
과정 목차 단원명(능력단위요소) 주요내용(수행준거 요약하여 제시) 01. DBMS 설치하기 02. 데이터베이스 생성하기
_14V2 3 과정 목차 단원명(능력단위요소) 주요내용(수행준거 요약하여 제시) 01. DBMS 설치하기 1.1 데이터베이스 요구사항에 따라 하드웨어와 운영체제에 적합한 DBMS(Data Base Management System)를 선정하고 설치계획을 수립할 수 있다. 1.2 DBMS(Data Base Management System) 설치계획에 따라 DBMS(Data Base Management System)를 설치하고 저장소 연결, 환경설정, 클라언트 접속 작업을 수행할 수 있다. 1.3 설치된 DBMS(Data Base Management System)를 검증 절차에 따라 데이터베이스 요구 사항을 확인 하고 DBMS(Data Base Management System) 설치 완료보고서를 작성할 수 있다. 02. 데이터베이스 생성하기 2.1 설계에 따른 테이블과 인덱스 등의 오브젝트에 기반하여 데이터 파일, 컨트롤파일, 로그파일에 필요한 용량을 산정하고 형식을 정의할 수 있다. 2.2 관리자 도구 혹은 명령어를 이용하여 데이터베이스 블록사이즈, 로그관리, 환경설정을 적용하고 확인 할 수 있다. 2.3 데이터베이스에 대한 관리자, 사용자 계정을 이해하고 데이터베이스 사용규칙에 따라 계정별 권한 설정을 적용할 수 있다. 2.4 생성된 데이터베이스의 용량, 권한, 환경설정을 점검하고 데이터베이스 명세적 검증을 통하여 데이터베이스 완료보고서를 작성할 수 있다.
4
과정 목차 단원명(능력단위요소) 주요내용(수행준거 요약하여 제시) 03. 데이터베이스 오브젝트 생성하기
_14V2 4 과정 목차 단원명(능력단위요소) 주요내용(수행준거 요약하여 제시) 03. 데이터베이스 오브젝트 생성하기 3.1 테이블, 인덱스, 제약조건을 이해하고 데이터베이스 설계에 따라 설치된 DBMS(Data Base Management System)에 적합한 오브젝트 생성계획을 수립할 수 있다. 3.2 물리 데이터베이스 설계에 따라 데이터베이스 오브젝트를 생성하기 위한 DDL(Data Definition Language)을 작성할 수 있고 생성된 오브젝트에 대한 유효성 여부를 검사할 수 있다. 3.3 생성된 데이터베이스 오브젝트의 적정성과 무결성을 판단하고 데이터베이스 오브젝트 명세를 포함한 완료보고서를 작성할 수 있다.
5
DBMS 설치하기 _14V2.1 5 단원 1 : DBMS설치하기 학습 내용 1-1. 데이터베이스 요구사항에따라 하드웨어와 운영체제에 적합한 DBMS를 선정하고 설치계획 수립 1-2. DBMS설치계획에따라 DBMS를 설치하고 저장소연결,환경설정, 클라이언트접속 작업을 함 1-3. 설치된 DBMS를 검증 절차에 따라 데이터베이스요구사항을 확인하고 DBMS설치 완료보고서 작성 학습 목표 DBMS(Data Base Management System) 설치하기를 통하여 데이터베이스 사용 준비를 할 수 있다.
6
1-1. DBMS선정 및 설치계획 수립 1-1. DBMS 선정 및 설치 계획 수립 운영체제에 적합한 DBMS 선정
DBMS 설치하기 _14V2.1 6 1-1. DBMS선정 및 설치계획 수립 1-1. DBMS 선정 및 설치 계획 수립 운영체제에 적합한 DBMS 선정 설치계획 수립
7
1. DBMS선정 기초 <표 1> 데이터베이스의 개념 구분 내용 장점 데이터 통합 데이터통합 중복제거
DBMS 설치하기 _14V2.1 7 1-1. DBMS선정 및 설치계획 수립 1. DBMS선정 기초 <표 1> 데이터베이스의 개념 구분 내용 장점 데이터 통합 (intergrated data) 데이터통합 중복제거 2. 저장 데이터 (stored data) 전자 매체에 저장 영구 보관,신속 검색 3. 공용 데이터 (shared data) 공동 사용 다중사용 4. 운영 데이터 (operational data) 조직의 목적에 사용 업무 효율화
8
DBMS 설치하기 _14V2.1 8 1-1. DBMS선정 및 설치계획 수립 [그림 1] 농산물 통합 DB 사례
9
<표 2> 데이터베이스의 활용 분야
DBMS 설치하기 _14V2.1 9 1-1. DBMS선정 및 설치계획 수립 <표 2> 데이터베이스의 활용 분야 구 분 내 용 사회일반 문화예술 일기예보 교통정보 의료 등 서비스 취업 금융 부동산 빅데이터 등 지식정보 학술 특허 법률 통계 등
10
가. 웹 데이터베이스 시스템 1) 데이터베이스 종류 시스템 구성에 따라 다음과 같이 크게 분류할 수 있다.
DBMS 설치하기 _14V2.1 10 1-1. DBMS선정 및 설치계획 수립 1) 데이터베이스 종류 시스템 구성에 따라 다음과 같이 크게 분류할 수 있다. 가. 웹 데이터베이스 시스템 - 데이터베이스를 인터넷이 연계된 웹 브라우저에서 사용 할 수 있도록 서비스 등에 사용 - 불특정 다수 고객을 상대로 하는 온라인 상거래나 공공 민원 서비스 등에 사용 나. 분산 데이터베이스 시스템 - 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템 - 대규모의 응용 시스템에 사용됨
11
2) 파일 시스템과 DBMS <표 3> 파일 시스템과 DBMS의 구분 1-1. DBMS선정 및 설치계획 수립 구분
DBMS 설치하기 _14V2.1 11 1-1. DBMS선정 및 설치계획 수립 2) 파일 시스템과 DBMS <표 3> 파일 시스템과 DBMS의 구분 구분 파일 시스템 DBMS 데이터 정의 및 저장 데이터 정의 : 응용 프로그램 데이터 저장 : 파일 시스템 데이터 정의 : DBMS 데이터 저장 : 데이터베이스 데이터 접근 방법 응용 프로그램이 파일에 직접 접근 응용 프로그램이 DBMS에 파일 접근을 요청 사용 언어 자바, C++, C 등 자바, C++, C 등과 SQL CPU/주기억장치 사용 적음 많음
12
3) 파일 시스템과 DBMS의 응용 1-1. DBMS선정 및 설치계획 수립
DBMS 설치하기 _14V2.1 12 1-1. DBMS선정 및 설치계획 수립 3) 파일 시스템과 DBMS의 응용 a. 파일 시스템으로 구축된 구매 및 판매 응용 프로그램 b. DBMS로 구축된 구매 및 판매 응용 프로그램 [그림 2] 비교 프로그램
13
<표 4> 운영체제 기반 DBMS의 종류와 특징 특징 Access SQL Server Oracle MySQL DB2
DBMS 설치하기 _14V2.1 13 1-1. DBMS선정 및 설치계획 수립 <표 4> 운영체제 기반 DBMS의 종류와 특징 특징 Access SQL Server Oracle MySQL DB2 SQLite 제조사 마이크로 소프트사 오라클사 IBM사 리처드 힙 (오픈소스) 운영체제 기반 윈도우 윈도우, 유닉스, 리눅스 유닉스 모바일 OS (안드로이드, iOS 등) 용도 개인용 DBMS 윈도우 기반 기업용 DBMS 대용량 데이터베이스를 위한 응용 소용량 데이터베이스를 위한 응용 모바일 전용 데이터베이스
14
2. 데이터베이스 요구 파악 - 조직의 발전 추이 분석 : 정보화 대상 조직의 경영 등 발전 추이 분석
DBMS 설치하기 _14V2.1 14 1-1. DBMS선정 및 설치계획 수립 2. 데이터베이스 요구 파악 - 조직의 발전 추이 분석 : 정보화 대상 조직의 경영 등 발전 추이 분석 - 업무부하 측정 : 전부서 업무량 측정 - 인터뷰를 통한 요구 사항 작성(사용자 요구사항) . 계획 단계에서는 사용자와의 인터뷰를 통해 구축될 업무에 대한 전체 프로세스 정의 - 장표 수집 : 수작업 및 사용중인 전산 시스템의 모든 입출력 화면 수집(조직 전체의 입출력 장표)
15
3. 데이터베이스 설치 계획 수립 - DBMS설치 공정 1-1. DBMS선정 및 설치계획 수립
DBMS 설치하기 _14V2.1 15 1-1. DBMS선정 및 설치계획 수립 3. 데이터베이스 설치 계획 수립 - DBMS설치 공정
16
4. 데이터베이스 설치 계획 수립 - DBMS설치 계획 예시 1-1. DBMS선정 및 설치계획 수립
DBMS 설치하기 _14V2.1 16 1-1. DBMS선정 및 설치계획 수립 4. 데이터베이스 설치 계획 수립 - DBMS설치 계획 예시 - DBMS설치 계획은 대상 업무분석에서 부터 S/W 및 H/W 선정, 사후관리까지 많은 일정계획이 필요함
17
5. 데이터베이스 설치 계획 수립 사례 가. DBMS설치 계획 1-1. DBMS선정 및 설치계획 수립
DBMS 설치하기 _14V2.1 17 1-1. DBMS선정 및 설치계획 수립 5. 데이터베이스 설치 계획 수립 사례 가. DBMS설치 계획
18
DBMS 설치하기 _14V2.1 18 1-1. DBMS선정 및 설치계획 수립 나. DBMS 도입 사례
19
다. DBMS유지보수 계획 수립 사례 1-1. DBMS선정 및 설치계획 수립 DBMS 설치하기2001020405_14V2.1
19 1-1. DBMS선정 및 설치계획 수립 다. DBMS유지보수 계획 수립 사례
20
문제1 : 다음 중 데이터베이스 설치 계획 수립 단계에 속하지 않는 것은?
DBMS 설치하기 _14V2.1 20 1-1. DBMS선정 및 설치계획 수립 정답 확인 문제1 : 다음 중 데이터베이스 설치 계획 수립 단계에 속하지 않는 것은? 분석 설계 구현 해석 정답: (4) 해석 해설: 해석 단계는 없음 평가! 문항~
21
1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 21 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 1-2. DBMS 저장소 연결 및 클라이언트 접속 작업 DBMS 설치,저장소연결,환경설정 DBMS 접속 작업 설치 목적의 상업적 DBMS는 모두 “K-DBMS”라 칭한다.
22
DBMS 설치하기 _14V2.1 22 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 1. 데이터베이스 설치 및 관련작업 1) DBMS(Data Base Management System)설치 2) 저장소 연결 3) 환경설정 4) 클라이언트 접속 작업 클라이언트-서버 시스템 : 클라이언트와 서버로 나뉘는 네트워크 아키텍처를 나타낸다. 일반적으로 클라이언트 서버 시스템이라고 하면 웹 시스템이 나오기 이전의, 사용자 PC에는 클라이언트가 설치되어 화면을 처리하고 서버에서는 자료를 서비스해주는 시스템을 일컫는다.
23
2. DBMS 설치하기 데이터베이스 설치( 사례를 통한 기능 익히기)
DBMS 설치하기 _14V2.1 23 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 2. DBMS 설치하기 데이터베이스 설치( 사례를 통한 기능 익히기) - K-DBMS 등 설치 목적의 DBMS홈페이지에서 다운로드 가능 - Universal Installer - ‘기본 설치’와 ‘고급 설치’ 중 기본 설치 선택 - 전역 데이터베이스 이름, 데이터베이스 암호 입력 후, 반드시 기억 - 사용자 계정과 암호 - Enterprise Manager - iSQL*Plus - iSQL*Plus DBA
24
3. K-DBMS 데이터베이스 설치시 오류 - Universal Installer 자체의 오류
DBMS 설치하기 _14V2.1 24 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 3. K-DBMS 데이터베이스 설치시 오류 - Universal Installer 자체의 오류 - 설치 오류의 자체 발생 가능성 상존 - 오류의 종류 . JDK 버전 오류(1.4 기준). . 설치 디렉토리 문제 (한글이름, 정확한 경로) . Enterprise Manager 문제 . iSQL*Plus 문제 . 윈도우 사용자 권한 문제 - 설치 오류 시, 가장 좋은 방법은 제거 후 재 설치
25
4. K-DBMS 데이터베이스 제거방법 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 25 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 4. K-DBMS 데이터베이스 제거방법 - Universal Installer를 통해 제거. - 완전히 제거가 안됨(UI 버그) - 제거 방법 . 서비스 정지. . Universal Installer를 실행해 제거. . 관련 파일 제거 (1) Registry HKEY_CURRENT_USER\SOFTWARE\ORACLE HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ EventLog\Application\Oracle.oracle HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \K-DBMS Console HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\Oracle10g_home HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OraclService
26
DBMS 설치하기 _14V2.1 26 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 (2) 환경변수 제거 (K-DBMS _HOME, ORACLE_SID, TNS_NAME, PATH..) (3) 파일 제거 5. 설치후 작업 - K-DBMS 연결 . Net Configuration Assistant를 통해 연결. . 로컬 네트 서비스 이름 구성 . tnsname.ora 파일에 연결 정보가 저장됨. ( $ORACLE_HOME\NETWORK\ADMIN\ 폴더에 위치함) - 테이블 스페이스 생성 - 사용자 생성
27
6. 테이블 스페이스(TableSpace) - K-DBMS 등의 논리적 저장공간
DBMS 설치하기 _14V2.1 27 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 6. 테이블 스페이스(TableSpace) - K-DBMS 등의 논리적 저장공간 - Data Block < Extent < Segment < TableSpace - 테이블 스페이스 단위로 물리적인 파일 생성됨. => 최소 1개의 데이터 파일로 구성. - 사용자 생성
28
7. 데이터베이스 연동 자바 프로그래밍 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 28 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 7. 데이터베이스 연동 자바 프로그래밍 <표 1> 데이터베이스 연동 자바 프로그래밍 실습 환경 항목 프로그램 데이터베이스 프로그램 K-DBMS 등 목적 DB 설치 자바 컴파일러 JDK 버전 7 데이터베이스와 자바를 연결하는 드라이버 JDBC 드라이버(파일이름 ojdbc6.jar)
29
1) 소스코드 설명 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 29 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 1) 소스코드 설명 <표 2> 데이터베이스 접속 자바 클래스(java.sql) 클래스 구분 클래스 혹은 인터페이스 주요 메소드 이름 메소드 설명 java.lang Class Class forName(<클래스이름>) <클래스이름>의 JDBC 드라이버를 로딩 java.sql DriverManager Connection getConnection (url, user, password) 데이터베이스 Connection 객체를 생성 Connection Statement createStatement() SQL 문을 실행하는 Statement 객체를 생성 void close() Connection 객체 연결을 종료 Statement ResultSet executeQuery (String sql) SQL 문을 실행해서 ResultSet 객체를 생성 ResultSet executeUpdate INSERT/DELETE/UPDATE 문을 실행해서 ResultSet 객체를 생성 ResultSet boolean first() 결과 테이블에서 커서가 처음 투플을 가리킴 boolean next() 결과 테이블에서 커서가 다음 투플을 가리킴 int getInt(<int>) <int>가 가리키는 열 값을 정수로 반환 String getString(<int>) <int>가 가리키는 열 값을 문자열로 반환
30
1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 30 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 [그림 1] 데이터베이스 연결 자바 객체들의 호출 관계
31
2) 저장소 연결, 환경설정, 클라이언트 접속 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 31 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 2) 저장소 연결, 환경설정, 클라이언트 접속 <표 3> 자바 프로그램 실습 단계 단계 세부 단계 프로그램 비고 [1단계] DBMS 설치 및 환경설정 ① K-DBMS 등 목적 DBMS 설치 ② K-DBMS 등 접속을 위한 사용자 (USER) 생성 오라클 등 설치목적의 DBMS [2단계] 데이터베이스 준비 ① 업무 데이터베이스 준비(USER.SQL) [3단계] 자바 실행 (A) 명령 프롬프트 이용 ① 자바 컴파일러 설치 ② JDBC 드라이버 설치 ③ 자바 프로그램 준비(userlist.java) ④ 컴파일 및 실행 JDK JDBC (B) 이클립스 이용 ① 자바와 이클립스 개발도구 설치 Eclipse Eclipse(이클립스) : 자바를 비롯한 다양한 언어를 지원하는 프로그래밍 통합개발환경을 목적으로 시작하였으나, 현재는OSGI를 도입하여, 범용 응용소프트웨어 플랫폼으로 진화하였다.
32
[1단계] DBMS 설치 및 환경설정 - K-DBMS 등 목적하는 DBMS 설치 - DB접속을 위한 사용자(user) 설정
DBMS 설치하기 _14V2.1 32 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 [1단계] DBMS 설치 및 환경설정 - K-DBMS 등 목적하는 DBMS 설치 - DB접속을 위한 사용자(user) 설정 [2단계] 데이터베이스 준비 - 데이터베이스 준비(데모용 demo_user.sql)
33
1) 자바 컴파일러 설치 [3단계(A)] 자바 실행 – 명령 프롬프트를 이용하는 방법 2) JDBC 드라이버 설치
DBMS 설치하기 _14V2.1 33 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 [3단계(A)] 자바 실행 – 명령 프롬프트를 이용하는 방법 1) 자바 컴파일러 설치 2) JDBC 드라이버 설치 3) 자바 프로그램 준비(demolist.java) - java 파일은 메모장 또는 전용 편집기 프로그램에서 작성하여 사용 4) 컴파일 및 실행
34
[3단계(B)] 자바실행 – 이클립스를 이용하는 방법
DBMS 설치하기 _14V2.1 34 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 [3단계(B)] 자바실행 – 이클립스를 이용하는 방법 - 이클립스 개발도구 설치 - JDBC 드라이버 설치 - 자바 프로그램 준비(demolist.java) - 컴파일 및 실행
35
8. 저장소 연결 1) 저장소 연결 : 저장소 연결은 자동 연결과 수동 연결이 있다. 문제로서 다음의 요소를 고려 해야 함
DBMS 설치하기 _14V2.1 35 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 8. 저장소 연결 1) 저장소 연결 : 저장소 연결은 자동 연결과 수동 연결이 있다. - 자동연결("auto connect") 설정은 각 페이지가 로드될때 자동으로 데이터베이스 클래스를 로드함. - 수동연결 : 수동으로 연결하는 것으로 다음의 파라미터를 고려 해야 함 (사용가능 파라미터) . 데이터베이스 연결값은 배열 혹은 연결문자열(DSN string) . TRUE/FALSE (boolean).연결에대한 식별자(ID)를 리턴할지를 결정 2) 저장소 연결 관련 내용 : 저장소 연결은 DB서버와 Client의 문제로서 다음의 요소를 고려 해야 함 - 컴퓨터 명, DB인스턴스 명, 관리자 계정, 사용자 계정, 데이터베이스 명, DB서버로의 접속 경로
36
3) 인터페이스 연결 : ODBC 및 OLE DB 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 36 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 3) 인터페이스 연결 : ODBC 및 OLE DB - ODBC : ODBC(Open DataBase Connectivity)는 마이크로소프트가 만든 데이터베이스에 접근 하기위한 소프트웨어 표준규격으로, 각 데이터베이스의 차이는 ODBC 드라이버에 흡수되기 때문에 사용자는 ODBC에 정해진 순서에 따라서 프로그램을 쓰면 접속처의 데이터베이스가 어떠한 데이터베이스 관리 시스템에 관리되고 있는지 의식할 필요 없이 접근할 수 있음 OLE DB : (Object Linking and Embedding, Database) 또는 객체 연결 삽입 데이터베이스로 마이크로소프트사가 개발한 API로, 통일된 방식으로 저장된 여러 종류의 데이터에 접근하기 위해 만들어졌다.컴포넌트오브젝 모델(COM)을 사용하여 추가된 인터페이스 집합이다. 4) 클라이언트 접속 작업 : 접속 작업은 내부망에서 직접 접속하는 방법과 외부로 부터 접속코자 하는 것으로 나누어 볼 수 있는데 내부에서는 통상적으로 서버에 서 터미널 서비스를 설치한 후에 클라이언트 접속 파일을 만든후 그 파일을 공유 하여 사용. 외부에서는 다음의 사례 절차를 참고 함.
37
1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 37 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 가. 먼저 외부에서 서버버전 설치된컴퓨터의 무선 ip 로 핑이 빠져나가는지 확인 ( 서버가 무선ip 사용중이면 접속하는 클라이언트도 같은 ip 대역대의 무선ip 라고 가정. ) 나. K-DBMS는 통신을 위해 기본적으로 1521 포트 사용하기 때문에 서버가 설치된 컴퓨터에서 방화벽 사용 해제하시거나 1521 포트 열어 줌 다. 서버설치된컴퓨터에 시작->설정->관리도구->서비스->OracleListener 라. 리스너가 시작되면 외부에서 접속. 외부클라이언트 설치된 경로에 DB서버 접속을 위한 network\admin\tnsnames.ora 에서 접속할DB서버 IP나 포트 등의 정보를 설정
38
9. 프로그램 실습 개요 - 소스코드 설명 - 프로그램 실습
DBMS 설치하기 _14V2.1 38 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 9. 프로그램 실습 개요 - 소스코드 설명 - 프로그램 실습 <표 3> 데이터베이스 연동 웹 프로그래밍 실습 환경 항목 프로그램 데이터베이스 프로그램 K-DBMS 등 설치 버전 자바 컴파일러 JDK 버전 7 웹 서버 톰캣 데이터베이스와 자바를 연결하는 드라이버 JDBC 드라이버(파일이름 ojdbc6.jar) JDBC(제이디비씨) : 자바로 작성된 프로그램을, 일반 데이터베이스에 연결하기 위한 응용프로그램 인터페이스 규격이다.
39
10. 프로그램 실습 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 39 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 10. 프로그램 실습 <표 4> JSP 프로그램 실습 단계 단계 세부 단계 프로그램 비고 [1단계] DBMS 설치 및 환경설정 ① K-DBMS 등 DB설치 ② K-DBMS 등 접속을 위한 사용자 생성 오라클 등 목적하는 DB설치 [2단계] 데이터베이스 준비 ① 업무용 데이터베이스 준비 [3단계] JSP 실행 ① 자바 컴파일러, 톰캣 설치 ② JDBC 드라이버 설치 ③ JSP 프로그램 준비 ④ 실행 톰캣 등 JDBC
40
1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 40 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 [그림 2] 데이터베이스 연동 JSP 프로그램의 실행 흐름도
41
1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업
DBMS 설치하기 _14V2.1 41 1-2. DBMS를 설치,저장소 연결,환경설정,클라이언트 접속 작업 정답 확인 문제1 : 다음 중 저장소 연결시 고려 요소가 아닌 것은? DB명 관리자 계정 사용자 계정 테이블 계정 정답: (4) 테이블 계정 해설: 테이블 계정은 없음 평가! 문항~
42
1-3. DBMS 요구사항 확인 및 설치 완료 보고 1-3. DBMS 요구사항을 확인 및 설치 완료 보고
DBMS 설치하기 _14V2.1 42 1-3. DBMS 요구사항 확인 및 설치 완료 보고 1-3. DBMS 요구사항을 확인 및 설치 완료 보고 DBMS 요구사항 확인 DBMS 설치 완료 보고
43
1. DBMS요구사항 DBMS(data base management system) : 연관성 있는 데이터들의
DBMS 설치하기 _14V2.1 43 1-3. DBMS 요구사항 확인 및 설치 완료 보고 1. DBMS요구사항 DBMS(data base management system) : 연관성 있는 데이터들의 집합을 효율적으로 응용하기 위해 구성된 소프트웨어 집합체 - DBMS 요구 개요 : . DBMS는 먼저 데이터베이스사용자가 데이터 언어로 표현한 데이베이스 접근요구를 조사,분석한 뒤에 컴퓨터가 이해할 수 있는 형태로 변환 .사용자 요구는 일반적으로 데이터의 검색,삽입,삭제,갱신 데이터를 포함 .요구를 실행을 위해 DBMS는 사용자의 외부 스키마,외부/개념 사상, 개념 스키마/내부 사상,내부 스키마,저장 구조를 통해 목표 데이터 연산 실행 - DBMS 구성요소
44
[그림 1 ] DBMS 구성도 1-3. DBMS 요구사항 확인 및 설치 완료 보고
DBMS 설치하기 _14V2.1 44 1-3. DBMS 요구사항 확인 및 설치 완료 보고 [그림 1 ] DBMS 구성도
45
DBMS 설치하기 _14V2.1 45 1-3. DBMS 요구사항 확인 및 설치 완료 보고 - DBMS 관리내용: . 다수 USER의 데이터베이스 이용(검색,기록,삭제)관리 . 프로그램의 요구 사항 관리 . 데이터 저장 경로 관리 . 다중 사용자 환경관리 . 데이터의 무결성 유지 . 보안성 보장 . 데이터 표준화 . 데이터 또는 DB 제반 기능 향상(마이그레이션)
46
DBMS 설치하기 _14V2.1 46 1-3. DBMS 요구사항 확인 및 설치 완료 보고 - DBMS 관리내용: . 다수 USER의 데이터베이스 이용(검색,기록,삭제)관리 . 프로그램의 요구 사항 관리 . 데이터 저장 경로 관리 . 다중 사용자 환경관리 . 데이터의 무결성 유지 . 보안성 보장 . 데이터 표준화 . 데이터 또는 DB 제반 기능 향상(마이그레이션) - DBMS기능 향상(마이그레이션) .필요성 : S/W및 H/W의 안정성 유지 및 IT 투자가치 보호 .투자가치 : 극대화 .외부 비지니스 환경 : 지속적 대응
47
DBMS 설치하기 _14V2.1 47 1-3. DBMS 요구사항 확인 및 설치 완료 보고 .신기능 적용 : 추가적 기능 보강 기반 .운영 효율화 : 버전 통합 운영 .주변 IT환경 : OS버젼, 통신 네트웍, 정보기기 발전
48
- DBMS설치 완료보고 예시 1-3. DBMS 요구사항 확인 및 설치 완료 보고
DBMS 설치하기 _14V2.1 48 1-3. DBMS 요구사항 확인 및 설치 완료 보고 - DBMS설치 완료보고 예시 - DBMS도입은 H/W 플랫폼 및 용도에 따라 다양한 설치 사양이 존재
49
[그림2] 설치 완료 구성도 .설치완료 보고 사례(1) 1-3. DBMS 요구사항 확인 및 설치 완료 보고
DBMS 설치하기 _14V2.1 49 1-3. DBMS 요구사항 확인 및 설치 완료 보고 .설치완료 보고 사례(1) [그림2] 설치 완료 구성도
50
.설치 완료 보고 사례(2.1) 1-3. DBMS 요구사항 확인 및 설치 완료 보고 <요구 규격 사항>
DBMS 설치하기 _14V2.1 50 1-3. DBMS 요구사항 확인 및 설치 완료 보고 .설치 완료 보고 사례(2.1) <요구 규격 사항> <설치 사항>
51
.설치 완료 보고 사례(2.2) 1-3. DBMS 요구사항 확인 및 설치 완료 보고 <요구 규격 사항>
DBMS 설치하기 _14V2.1 51 1-3. DBMS 요구사항 확인 및 설치 완료 보고 .설치 완료 보고 사례(2.2) <요구 규격 사항> <설치 사항>
52
문제1 : 다음 중 DBMS의 관리내용이 아닌 것은?
DBMS 설치하기 _14V2.1 52 1-3. DBMS 요구사항 확인 및 설치완료 정답 확인 문제1 : 다음 중 DBMS의 관리내용이 아닌 것은? 데이터 무결성 삭제 데이터 저장경로 관리 데이터 표준화 다중사용자 환경관리 정답 : (1)데이터 무결성 삭제 해설 : DBMS는 데이터 무결성을 유지토록 해야 함 평가! 문항~
53
데이터베이스 생성하기 _14V2.2 53 단원 2 : 데이터베이스 생성하기 학습 내용 2-1. 설계에 따른 테이블과 인덱스 등의 오브젝트에 기반하여 데이터 파일,컨트롤 파일, 로그파일에 필요한 용량을 산정하고 형식을 정의 2-2. 관리자 도구 혹은 명령어를 이용하여 데이터베이스 블록사이즈, 로그관리, 환경설정을 적용하고 확인 함 2-3. 데이터베이스에 대한 관리자,사용자 계정을 이해하고 데이터베이스 사용규칙에 따라 계정별 권한 설정을 적용함 2-4. 생성된 데이터베이스의 용량,권한, 환경설정을 점검하고 데이터베이스 명세적 검증을 통하여 데이터베이스완료보고서 작성 학습 목표 설계에 따른 데이터베이스의 내용과 환경을 이해하고 관리자,사용자 계정을 사용규칙에 따라 설정하며 생성된 데이터베이스의 명세적 검증을 통하여 데이터베이스완료 함
54
2-1. 테이블의 오브젝트에 기반 하여 데이터파일,컨트롤파일,로그파일의 용량을 산정하고 정의
데이터베이스 생성하기 _14V2.2 54 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 2-1. 테이블의 오브젝트에 기반 하여 데이터파일,컨트롤파일,로그파일의 용량을 산정하고 정의 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 용량산정 및 정의
55
<표 1> 데이터베이스의 주요파일
데이터베이스 생성하기 _14V2.2 55 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 <표 1> 데이터베이스의 주요파일 파일 설명 데이터 파일 운영체제상에 물리적으로 존재 사용자 데이터와 개체를 저장 테이블과 인덱스로 구성. 온라인 리두 로그 데이터의 모든 변경사항을 기록 데이터베이스 복구에 사용되는 로그 정보 저장 최소 두 개의 온라인 리두 로그 파일 그룹을 가짐 컨트롤 파일 DBMS가 필요로 하는 다른 파일들(데이터 파일, 로그 파일 등)의 위치 정보를 저장 데이터베이스 구조 등의 변경사항이 있을 때 자동으로 업데이트됨 DB의 마운트, 오픈의 필수 파일 복구 시 동기화 정보 저장
56
[그림 1] DBMS와 데이터 파일 데이터베이스 생성하기2001020405_14V2.2 56
2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 [그림 1] DBMS와 데이터 파일
57
. SQL서버에서 이루어지는 모든 작업은 권한이 있어야 사용
데이터베이스 생성하기 _14V2.2 57 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 2. 데이터베이스 관련 파일 - 데이터베이스 생성 . SQL서버에서 이루어지는 모든 작업은 권한이 있어야 사용 . 데이터베이스 생성 : 이름, 옵션, 파일그룹 등 지정 하여 생성 . 파일그룹 : 기본적인 “Primary”그룹 외에 새로운 파일 그룹을 추가 - 데이터베이스 파일과 파일 그룹 . 파일 그룹은 말 그대로 파일들의 묶음이다. 하나 이상의 파일 들이 파일 그룹에 포함될 수 있다. 이 파일 그룹은 반드시 존재해야 한다. 파일 그룹은 데이터 유형의 파일에만 해당하며, 로그 파일들에는 적용 되지 않음. - 데이터베이스 파일 그룹 사용 이유 . SQL서버가 여러 개의 물리적인 디스크에 위치한 다수의 파일들을 관리 가능토록 함 . 물리적 파일이 분산되어 있으면 동시에 처리 가능한 I/O성능이 높아짐
58
- SQL서버가 사용하는 파일 형태 . 적정한 용량 여유와 DBA의 주기적 체크 - 파일 크기와 자동 증가
데이터베이스 생성하기 _14V2.2 58 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 - SQL서버가 사용하는 파일 형태 . 주 데이터 파일(Maste Data File) : mdf 확장자로 종료되며 실제 데이터가 저장됨 . 트랜젝션 로그파일 : ldf확장자로 종료되는 파일로, 트랜젝션 로그가 저장됨 . 보조 데이터 파일(secondary data file):ndf확장자로 종료되는 파일로, 2개 이상의 데이터파일이 필요한 경우 이용됨 - 파일 크기와 자동 증가 . SQL에서 데이터 파일에서 기본 크기는 3MB, 로그 파일의 경우에는 1MB . 자동 증가는 DBA가 판단하여 저장 공간 부족으로 정지되지 않도록 해야함 . 자동 증가 옵션 : 일반적으로 다음 두 종류의 옵션 고려 a. 지정된 크기만큼 증가 b. 현재 데이터베이스의 크기에 비례(%)하여 증가 - 데이터베이스 용량 관리 . 적정한 용량 여유와 DBA의 주기적 체크 . 자동증가 옵션은 필요시만 사용
59
- 로그파일 . 컴퓨터 시스템의 모든 사용내역을 기록하고 있는 파일을 말하는
데이터베이스 생성하기 _14V2.2 59 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 - 로그파일 . 컴퓨터 시스템의 모든 사용내역을 기록하고 있는 파일을 말하는 것으로 항공기의 운항내역을 기록하는 블랙박스와 비슷한 역할을 한다. 컴퓨터 시스템에 해킹사고가 발생할 경우에는 로그파일을 근거로 사고 원인과 해커를 추적하게 되는데 로그파일 자체가 해커에 의해 삭제 되면 추적 자체가 불가능하게 되므로 로그파일 보호는 컴퓨터 시스템 보호를 위한 중요한 기능 중의 하나이다. . 트랜젝션 로그파일 : ldf확장자로 종료되는 파일로, 트랜젝션 로그가 저장됨 . 로그파일 통제 : 트랜젝션 로그는 INSERT,UPDATE,DELETE 모두에서 로그데이터를 발생 시킴. 따라서 적절한 통제(DELETE)로서 저장공간 관리 필요성 존재 . 트랜젝션 로그 삭제 : 일반적으로 가장 마지막 백업된 데이터파일 이전 발생된 이력을 담고 있는 로그 파일 삭제함
60
컨트롤 파일 . 데이터베이스에서 컨트롤 파일은 데이터베이스의 전체적인 제어정보를 가지고 있는
데이터베이스 생성하기 _14V2.2 60 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 컨트롤 파일 . 데이터베이스에서 컨트롤 파일은 데이터베이스의 전체적인 제어정보를 가지고 있는 파일로서, 모든 데이터베이스 파일들과 리두로그 파일들의 이름을 저장하고, 오라클 인스턴스가 기동될 때에 그들을 인식할 수 있도록 하는 역할을 함. 또한 데이터베이스가 시작될 때에 그 데이터베이스의 이름을 저장한다. 온라인 리두로그 파일처럼 컨트롤 파일 역시 대단히 중요한 파일이므로, 물리적으로 나뉜 두 개 이상의 디스크에 두 개 이상의 컨트롤 파일을 사용하여야 디스크 장애 등의 문제가 발생할 때 데이터베이스를 복구할 수 있다. 리두로그의 다중구조와 다른점은 로그 시퀀스 번호에 따라 파일마다 다른 정보를 저장하는 것이 아니라 항상 데이터베이스 구조 정보를 동일하게 미러링 하는 것 임 초기화 파라미터(ora.ini)는 DBMS가 초기화 될 때 즉 DB가 Startup 할 때 필요한 파라미터들이 들어 있고, 시작할 때만 필요함. 컨트롤 파일은 수시로 정보가 갱신 됨
61
3. 데이터베이스의 물리적 저장 . 하드디스크, SSD, USB 메모리 등 - 가장 많이 사용되는 장치는 하드디스크
데이터베이스 생성하기 _14V2.2 61 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 3. 데이터베이스의 물리적 저장 - 실제 데이터가 저장되는 곳은 보조기억장치 . 하드디스크, SSD, USB 메모리 등 - 가장 많이 사용되는 장치는 하드디스크 . 하드디스크는 원형의 플레이트(plate)로 구성되어 있고, 이 플레이트는 논리적으로 트랙으로 나뉘며 트랙은 다시 몇 개의 섹터로 나뉨 . 원형의 플레이트는 초당 빠른 속도로 회전하고, 회전하는 플레이트를 하드디스크의 액세스 암(arm)과 헤더(header)가 접근하여 원하는 섹터에서 데이터를 가져옴 . 하드디스크에 저장된 데이터를 읽어 오는 데 걸리는 시간은 모터(motor)에 의해서 분당 회전하는 속도(RPM, Revolutions Per Minute), 데이터를 읽을 때 액세스 암이 이동하는 시간 (latency time), 주기억장치로 읽어오는 시간 (transfer time)에 영향을 받음 Solid State Drive(SSD) : 직역하면 고형 상태 보조저장장치로, Solid-state에는 고체상태라는 의미 이외에 소체(트랜지스터)라는 의미도 있다. 하드디스크를 대체하기 위해서 개발된 보조저장장치. 플래시 메모리로 이루어져 있다.
62
문제1 : 다음 중 로그파일에 대한 설명으로 맞지 않는 것은?
DBMS 설치하기 _14V2.2 62 2-1. 테이블의 오브젝트에 기반, 데이터파일,컨트롤파일,로그파일 정답 확인 문제1 : 다음 중 로그파일에 대한 설명으로 맞지 않는 것은? Ldf 확장자를 갖는다 로그파일 해킹 트랜젝션 로그 통제(삭제) 사용내역 기록 기능 정답: (2) 로그파일 해킹 해설: 해킹은 로그의 역할이 아님 평가! 문항~
63
2-2. 데이터베이스 블록사이즈,로그관리,환경설정
데이터베이스 생성하기 _14V2.2 63 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 2-2. 데이터베이스 블록사이즈,로그관리,환경설정 관리자도구 혹은 명령어를 이용하여 데이터베이스 블록사이즈,로그관리,환경설정
64
- DB block size : O/S에 커다란 영향을 미침.
데이터베이스 생성하기 _14V2.2 64 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 데이터베이스 블록사이즈 - DB block size : O/S에 커다란 영향을 미침. . db block size 는 오라클의 데이터를 저장하는 가장 작은 단위 . block 은 헤더와 데이터 저장 영역 두개로 나늬어 짐 . 일반적으로 DBMS는 한번의 I/O 를 발생시킬때 하나의 block을 읽고 씀 . 하나의 block 에는 여러 건의 데이터 가 들어 있음 . 보통 통계 또는 집계를 내기 위한 OLAP 환경의 데이터 베이스는 block 사이즈를 크게 잡는 것이 이득 . 트랙잭션이 많이 발생하는 OLTP 환경의 데이터 베이스는 block 사이즈를 작게 잡는 것이 이득
65
<표 > 블록 사이즈 구성 장단점 비교 장점
데이터베이스 생성하기 _14V2.2 65 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <표 > 블록 사이즈 구성 장단점 비교 블록 사이즈 대용량 구성(클 때) 소용량 구성(작을 때) 비고 장점 하나의 block Access로 많은 Row추출 테이블 Full Scan시 적은 I/O발생 - 1 Row Access시 유리 단점 1 Row Access시 낭비되는 Row가 많다 하나의 Block Access로 적은 Row추출 테이블 Full Scan시 많은 I/O발생
66
$ df -g | grep 'block size‘
데이터베이스 생성하기 _14V2.2 66 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 $ df -g | grep 'block size‘ / (/dev/md/dsk/d0 ): 8192 block size 1024 frag size /proc (/proc ): 512 block size 512 frag size /dev/fd (fd ): 1024 block size 1024 frag size /tmp (swap ): 8192 block size 8192 frag size /oracle (/dev/dsk/c2t1d0s0 ): 8192 block size 1024 frag size /oracle_data (/dev/dsk/c2t1d0s1 ): 8192 block size 1024 frag size /users (/dev/dsk/c2t1d0s3 ): 8192 block size 1024 frag size /nas ( :/data/cns): 8192 block size 8192 frag size [그림 ] 블록 사이즈 예시
67
2. 로그관리 - DBMS는 트랜잭션이 수행 중이거나 수행이 종료된 후 발생하는 데이터베이스
데이터베이스 생성하기 _14V2.2 67 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 2. 로그관리 - DBMS는 트랜잭션이 수행 중이거나 수행이 종료된 후 발생하는 데이터베이스 손실을 방지하기 위해 트랜잭션의 데이터베이스 기록을 추적하는 로그 파일 (log file)을 사용함 - 로그 파일은 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스. 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 남음 - 로그 파일에 저장된 로그의 구조 <트랜잭션번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값> ‘로그의 타입’은 트랜잭션의 연산 타입으로 START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등이 있음. ‘수정 전 값’은 데이터의 변경 전 값을, ‘수정 후 값’은 연산의 결과로 변경된 값을 나타냄
68
( 로그관리 : 기록처리 예) <T1, START>
데이터베이스 생성하기 _14V2.2 68 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 ( 로그관리 : 기록처리 예) <T1, START> <T1, UPDATE, Customer(홍길동).balance, , 70000> <T1, UPDATE, Customer(심청이).balance, , > <T1, COMMIT>
69
[그림 1] 트랜잭션 수행과 로그 파일 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <계좌이체 트랜잭션>
데이터베이스 생성하기 _14V2.2 69 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <계좌이체 트랜잭션> START TRANSACTION ① /* 홍길동 계좌를 읽어온다 */ ② /* 심청이 계좌를 읽어온다 */ /* 잔고 확인 */ ③ /* 예금인출 홍길동 */ UPDATE Customer SET balance=balance-20000 WHERE name=‘홍길동’; ④ /* 예금입금 심청이 */ SET balance=balance+30000 WHERE name=‘심청이’; COMMIT /* 부분완료 */ ⑤ /* 홍길동 계좌를 기록한다 */ ⑥ /* 심청이 계좌를 기록한다 */ [그림 1] 트랜잭션 수행과 로그 파일
70
3. 로그 파일을 이용한 회복 - 데이터의 변경 기록을 저장해 둔 로그 파일을 이용하면 시스템 장애도 복구 가능
데이터베이스 생성하기 _14V2.2 70 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 3. 로그 파일을 이용한 회복 - 데이터의 변경 기록을 저장해 둔 로그 파일을 이용하면 시스템 장애도 복구 가능 - 아래 두 개의 트랜잭션이 실행된다고 하자. 편의상 트랜잭션의 연산 SELECT, UPDATE는 read_item( ), write_item( )으로 대체한다. 트랜잭션은 각각 데이터 A, B, C, D를 읽거나 쓰는 작업을 진행한다. 데이터(A, B, C, D)의 초깃값은 (110, 120, 130, 140)이다.
71
< 로그파일을 이용한 회복 procedure >
데이터베이스 생성하기 _14V2.2 71 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 < 로그파일을 이용한 회복 procedure > 트랜잭션 T1 트랜잭션 T2 read_item(A); A=A+10; read_item(B); B=B+10; write_item(B); read_item(C); C=C+10; write_item(C); write_item(A); read_item(D); D=D+10; read_item(B) write_item(D);
72
- 트랜잭션이 T1 → T2 순으로 실행된다면 다음과 같은 로그 파일이 생성된다. <로그처리> 로그 번호
데이터베이스 생성하기 _14V2.2 72 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 - 트랜잭션이 T1 → T2 순으로 실행된다면 다음과 같은 로그 파일이 생성된다. <로그처리> 로그 번호 로그 레코드 1 2 3 4 5 6 7 8 9 10 [T1, START] [T1, UPDATE, B, 200, 210] [T1, UPDATE, C, 300, 310] [T1, UPDATE, A, 100, 110] [T1, COMMIT] [T2, START] [T2, UPDATE, A, 110, 120] [T2, UPDATE. B, 210, 220] [T2, UPDATE, D, 400, 410] [T2, COMMIT]
73
<트랜젝션 처리> 트랜잭션 T1 트랜잭션 T2 read_item(A); A=A+10; read_item(B);
데이터베이스 생성하기 _14V2.2 73 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <트랜젝션 처리> 트랜잭션 T1 트랜잭션 T2 read_item(A); A=A+10; read_item(B); B=B+10; write_item(B); read_item(C); C=C+10; write_item(C); write_item(A); read_item(D); D=D+10; read_item(B) write_item(D);
74
4. 시스템 운영과 로그 5. 트랜잭션의 재실행(REDO)
데이터베이스 생성하기 _14V2.2 74 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 4. 시스템 운영과 로그 시스템 운영 중 장애가 발생하여 시스템이 다시 가동되었을 때 DBMS는 로그 파일을 먼저 살펴봄. DBMS는 트랜잭션이 종료되었는지 혹은 중단되었는지 여부를 판단하여 종료된 트랜잭션은 종료를 확정하기 위하여 재실행(REDO)을 진행하고, 중단된 트랜잭션은 없던 일로 되돌리기 위해 취소(UNDO)를 진행함 5. 트랜잭션의 재실행(REDO) 장애가 발생한 후 시스템을 다시 가동을 했을 때, 로그 파일에 트랜잭션 시작(START)이 있고 종료(COMMIT)가 있는 경우임. COMMIT 연산이 로그에 있다는 것은 트랜잭션이 모두 완료되었다는 의미. 다만 변경 내용이 버퍼에서 데이터베이스에 기록되지 않았을 가능성이 있음. 따라서 로그를 보면서 트랜잭션이 변경한 내용을 데이터베이스에 다시 기록하는 과정이 필요하며, 이 과정을 REDO라고 함
75
6. 트랜잭션의 취소(UNDO) 장애가 발생한 후 시스템을 다시 가동했을 때, 로그 파일에
데이터베이스 생성하기 _14V2.2 75 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 6. 트랜잭션의 취소(UNDO) 장애가 발생한 후 시스템을 다시 가동했을 때, 로그 파일에 트랜잭션의 시작(START)만 있고 종료(COMMIT)가 없는 경우임. COMMIT 연산이 로그에 보이지 않는다는 것은 트랜잭션이 완료되지 못했다는 의미로, 트랜잭션이 한 일을 모두 취소해야 함. 이 경우 완료하지 못했지만 버퍼의 변경 내용이 데이터베이스에 기록되어 있을 가능성이 있기 때문에 로그를 보면서 트랜잭션이 변경한 내용을 데이터베이스에서 원상복구시켜야 함. 이 과정을 UNDO라고 함 COMMIT : 분산 트랜잭션 처리에서 하나의 트랜잭션에 포함되는 조작의 실행이 모두 완료되고 그에 따른 데이터베이스의 갱신 내용이 작업 영역(기억 장치)에 기록되어 트랜잭션의 적용이 완료되었다고 판단되는 시점에서 그 종료를 요구하는 동작. 이 시점을 커미트 시점이라고 한다.
76
데이터베이스 생성하기 _14V2.2 76 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 7. 즉시 갱신 방법 즉시 갱신(immediate update)은 ‘갱신 데이터→로그’, ‘버퍼→데이터베이스’ 작업이 부분완료 전에 동시에 진행될 수 있으며, 부분완료가 되면 갱신 데이터는 로그에 기록이 끝난 상태 8. 지연 갱신 방법 지연 갱신(deferred update)은 ‘갱신 데이터→로그’가 끝난 후 부분완료를 하고 ‘버퍼→데이터베이스’ 작업이 진행되는 방법
77
<표 1> 트랜잭션 로그와 회복(즉시 갱신 방법)
데이터베이스 생성하기 _14V2.2 77 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <표 1> 트랜잭션 로그와 회복(즉시 갱신 방법) 로그 번호 작업 결과 i =0 아무 작업도 필요 없음 T1과 T2가 수행을 시작하지 않았음 1 <= i <= 4 UNDO(T1) : T1을 취소 → T1이 i까지 생성한 로그 레코드를 이용하여 데이터베이스 항목을 되돌림 T1을 수행하지 않은 것과 같음 5 <= i <= 9 REDO(T1) : T1을 재수행 → 1부터 4까지 T1이 생성한 로그 레코드를 이용하여 데이터베이스 항목 값을 기록함 UNDO(T2) : T2를 취소 → T2가 5부터 i까지 생성한 로그 레코드를 이용하여 데이터베이스 항목을 되돌림 T1은 수행이 완료됨 T2는 수행하지 않은 것과 같음 10 REDO(T2) : T2를 재수행 T1, T2는 수행이 완료됨
78
<표 2> 트랜잭션 로그와 회복(지연 갱신 방법)
데이터베이스 생성하기 _14V2.2 78 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 <표 2> 트랜잭션 로그와 회복(지연 갱신 방법) 로그 번호 작업 결과 i =0 아무 작업도 필요 없음 T1과 T2가 수행을 시작하지 않았음 1 <= i <= 4 T1 : 아무 작업도 필요 없음 T1을 수행하지 않은 것과 같음 5 <= i <= 9 REDO(T1) : T1을 재수행 → 1부터 4까지 T1이 생성한 로그 레코드를 이용하여 데이터베이스 항목 값을 기록함 T2 : 아무 작업도 필요 없음 T1은 수행이 완료됨 T2는 수행하지 않은 것과 같음 10 REDO(T2) : T2를 재수행 T1, T2는 수행이 완료됨
79
9. 체크포인트를 이용한 회복 가)로그를 이용한 회복은 시스템에 장애가 일어났을 때 어느 시점까지
데이터베이스 생성하기 _14V2.2 79 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 9. 체크포인트를 이용한 회복 가)로그를 이용한 회복은 시스템에 장애가 일어났을 때 어느 시점까지 되돌아가야 하는지 알 수 없음. 트랜잭션이 많은 응용의 경우 하루 이상 되돌아가서 복구하는 것은 사실상 불가능. 회복 시 많은 양의 로그를 검색하고 갱신하는 시간을 줄이기 위하여 몇 십 분 단위로 데이터베이스와 트랜잭션 로그 파일을 동기화한 후 동기화한 시점을 로그 파일에 기록해두는 방법 혹은 그 시점을 체크포인트 (checkpoint, 혹은 검사점)라고 함 나)체크포인트 시점에는 다음 작업 진행 - 주기억장치의 로그 레코드를 모두 하드디스크의 로그 파일에 저장 - 버퍼에 있는 변경된 내용을 하드디스크의 데이터베이스에 저장 - 체크포인트를 로그 파일에 표시
80
다)체크포인트가 있으면 로그를 이용한 회복 기법은 좀더 간단해짐 라)체크포인트 이전에 [COMMIT] 기록이 있는 경우
데이터베이스 생성하기 _14V2.2 80 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 다)체크포인트가 있으면 로그를 이용한 회복 기법은 좀더 간단해짐 라)체크포인트 이전에 [COMMIT] 기록이 있는 경우 아무 작업이 필요 없음. 로그에 체크포인트가 나타나는 시점은 이미 변경 내용이 데이터베이스에 모두 기록된 후이기 때문 마)체크포인트 이후에 [COMMIT] 기록이 있는 경우 REDO(T)를 진행. 체크포인트 이후에 변경 내용이 데이터베이스에 반영되지 않았으므로 REDO를 진행 바)체크포인트 이후에 [COMMIT] 기록이 없는 경우 즉시 갱신 방법을 사용했다면 UNDO(T)를 진행. 버퍼의 내용이 반영됐을 수도 있기 때문에 원상복구 시켜야 함. 반면 지연 갱신 방법을 사용했다면 아무것도 할 필요가 없음. 지연 갱신 방법은 [COMMIT] 이전에는 버퍼의 내용을 데이터베이스에 반영하지 않기 때문
81
2-2. 데이터베이스 블록사이즈 로그관리,환경설정 로그 번호 로그 레코드
데이터베이스 생성하기 _14V2.2 81 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 트랜잭션 T1, T2, T3가 동시에 실행된 후 다음과 같이 로그 기록을 남김. 즉시 갱신 기법을 사용하여 회복을 한다면 REDO(T2), UNDO(T3)가 진행된다. T1에 대해서는 아무 작업이 필요 없음 로그 번호 로그 레코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [T1, START] [T1, UPDATE, B, 200, 120] [T1, UPDATE, C, 300, 310] [T2, START] [T2, UPDATE, A, 110, 120] [T1, UPDATE, A, 120, 110] [T1, COMMIT] [T2, UPDATE. B, 120, 220] [CHECKPOINT] [T3, START] [T3, UPDATE, A, 110, 120] [T2, UPDATE, D, 400, 410] [T2, COMMIT] [T3, UPDATE. B, 220, 230] ~~ 시스템 장애 ~~
82
10. 환경 설정 가. 설치 환경 . K-DB Exprsss Edition 설치 . 관리자 권한으로 실행 . 라이선스 동의
데이터베이스 생성하기 _14V2.2 82 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 10. 환경 설정 가. 설치 환경 . K-DB Exprsss Edition 설치 . 관리자 권한으로 실행 . 라이선스 동의 . Sys와 System 비밀번호 지정 . 설치완료 나. 접속환경 . 접속시 K-DB Exprsss Edition은 사전에 Listener 실행 . Listener.ora : 클라인언트의 요청으로 클라언트의 통신 환경 설정(프로토콜은 tcp/ip 주로 사용) . tnsnames.ora : K-DB클라이언트측에서 서버로 접속 할 때 필요한 프로토콜 및 포트번호,서버주소,인스턴스 등을 설정해 주는 파일로 클라이언트 측에 위치 . ODBC를 통한 연결 : 인터페이스 도구를 통한 데이터베이스 연결
83
다. 테이블 스페이스 블록 사이즈 설정 1) 테이블 스페이스의 블록 사이즈 설정
데이터베이스 생성하기 _14V2.2 83 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 다. 테이블 스페이스 블록 사이즈 설정 1) 테이블 스페이스의 블록 사이즈 설정 SQL>create tablespace usr1 datafile ‘/app/k-db/usr1.dbf’ size 100m blocksize 8k create tablespace usr1 2) 16k를 가지는 block을 설정코자 한다면 SQL>alter system set db_16k_cache_size=100m scope=both; //캐시영역을 16k로 변환 blocksize 16k
84
문제1 : 다음 중 로그관리의 설명으로 맞지 않는 것은?
DBMS 설치하기 _14V2.1 84 2-2. 데이터베이스 블록사이즈 로그관리,환경설정 정답 확인 문제1 : 다음 중 로그관리의 설명으로 맞지 않는 것은? DBMS는 데이터 손실방지를 위해 LOG를 사용 전원이 꺼지면 기록이 남지 않음 트랜젝션이 반영한 모든 데이터베이스의 변경 사항을 기록 기록 관리를 위해 별도의 데이터베이스를 사용 정답: (2) 전원이 꺼지면 기록이 남지 않음 해설: 전원이 꺼져도 기록이 남아 이상유무를 추적할 수 있다 평가! 문항~
85
2-2. 데이터베이스에 대한 관리자, 사용자 계정 이해 및 권한 설정
데이터베이스 생성하기 _14V2.2 85 2-3. DB관리자,사용자 계정 이해 및 권한 설정 2-2. 데이터베이스에 대한 관리자, 사용자 계정 이해 및 권한 설정 데이터베이스에 대한 관리자, 사용자 계정 이해 및 권한 설정
86
데이터베이스에 대한 관리자 <DBA의 수행 사항> - 자료 복구 및 백업
데이터베이스 생성하기 _14V2.2 86 2-3. DB관리자,사용자 계정 이해 및 권한 설정 데이터베이스에 대한 관리자 데이터베이스 관리자는 DBA(DataBase Administrator)라 하며 한 조직 내에서 데이터를 설치,구성,업그레이드,관리,감시하는 일을 한다. <DBA의 수행 사항> - 자료 복구 및 백업 - 데이터 보전(Database Preservation) - 보안 및 접근제어 - 시스템 부하관리 - 개발 및 테스트 지원 * 데이터베이스 관리자의 역할은 데이터베이스 관리 시스템(DBMS)의 기술 및 데이터베이스 소유자의 요구에 따라 바뀔 수 있으며, 상황에 따라 로컬 및 물리 데이터베이스 설계가 전통적으로 데이터베이스 분석가나 데이터베이스 설계자의 의무라 할지라도, 데이터베이스 관리자에게 부여될 수 있다.
87
2. 사용자(USER) <사용자 관련 사항> - 고유한 User Name - 인증방법
데이터베이스 생성하기 _14V2.2 87 2-3. DB관리자,사용자 계정 이해 및 권한 설정 2. 사용자(USER) 데이터베이스 사용자는 데이터베이스에 접근 하여 검색과 객체를 생성하고 수정과 삭제를 한다. 따라서 보안정책과 밀접한 관련이 있다. <사용자 관련 사항> - 고유한 User Name - 인증방법 - 사용자 Profile(옵션) - 사용자 그룹 설정 (계정 생성시가 아닌 Resource Manager를 이용하여 생성 후 지정) - Lock Status(옵션) - Default Tablespace(옵션) - Tempoary Tablespace(옵션)
88
3. SQL Developer - SQL Developer를 통하여 데이터베이스에 대한 관리자,사용자 계정을 이해하고
88 2-3. DB관리자,사용자 계정 이해 및 권한 설정 3. SQL Developer - SQL Developer를 통하여 데이터베이스에 대한 관리자,사용자 계정을 이해하고 권한 설정을 적용하는 방법을 익힌다. - 샘플 데이터베이스 설치 . 사용자 계정 및 샘플 데이터베이스 설치 : 제공된 소프트웨어 sct 사용자 계정 사용(해제) : 제공된 소프트웨어 계정 사용(해제) 명령 : ALTER USER sct ACCOUNT UNLOCK - SQL Developer 설치 : 제공된 소프트웨어 . 목적 데이터베이스 홈페이지에서 본인의 환경에 맞는 버전 다운로드 하여 설치
89
- SQL Developer [그림 1] SQL Developer에서 SQL 문을 실행한 화면
89 2-3. DB관리자,사용자 계정 이해 및 권한 설정 - SQL Developer [그림 1] SQL Developer에서 SQL 문을 실행한 화면
90
4. SQL 문을 작성할 때 주로 사용하는 명령어 2-3. DB관리자,사용자 계정 이해 및 권한 설정
데이터베이스 생성하기 _14V2.2 90 2-3. DB관리자,사용자 계정 이해 및 권한 설정 4. SQL 문을 작성할 때 주로 사용하는 명령어 <Tip> SQL Plus에서 사용하는 명령어에 관한 자세한 설명은 다음 링크 참고 </Tip> -데이터베이스 접속 : con [예] conn sct/tig : sct 계정에 비밀번호 tig로 접속 - 명령어 실행 : run, / [예] run : 바로 전에 실행했던 명령어를 다시 실행 [예] / : run과 같은 의미 - 명령어 찾기 : list, [예] list : 마지막에 수행했던 명령어를 출력한다. 직전 명령줄이 길 때 편리함 - 메모장을 이용하여 명령어 작성 및 실행하기 : ed <파일이름>, run <파일이름> [예] ed test : test.sql 이름의 파일이 메모장을 이용하여 작성할 수 있도록 열림 [예] start test : test.sql 이름에 저장된 명령어 스크립트가 실행됨 test : start test와 같은 의미 - 출력 모양을 조절하는 명령 : column [예] column bkname format a20 : bkname을 길이 20의 문자 포맷으로 출력 [예] column price format : price를 길이 6개의 숫자 포맷으로 출력
91
5. 사용자 계정 생성 ( 구조 ) CREATE USER <user_name>
데이터베이스 생성하기 _14V2.2 91 2-3. DB관리자,사용자 계정 이해 및 권한 설정 5. 사용자 계정 생성 - 사용자 계정을 생성하기 위해서는 DBA로 접근하여 생성함 ( 구조 ) CREATE USER <user_name> IDENTIFIED BY[“]<PASSWORD>[”] [DEFAULT TABLESPACE<tablespace_name>] [temporary Tablespace< temporary Tablespace_name>] [QUOTA<quota_amount>ON<tablespace_name>][….] [PROFILE<profile_name>] [PASSWORD EXPIRE] [ACCOUNT<LOCK|UNLOCK>]
92
DEFAULT TABLESPACE USR1 TEMPORARY TABLESPACE USER1 QUOTA 0 ON SYSTEM
데이터베이스 생성하기 _14V2.2 92 2-3. DB관리자,사용자 계정 이해 및 권한 설정 ( 생성 예 ) CRATE USER TST_USR1 IDENTIFIED BY ”PSWD123“ DEFAULT TABLESPACE USR1 TEMPORARY TABLESPACE USER1 QUOTA 0 ON SYSTEM QUOTA UNLIMITED ON USERS PROFILE DEFAULT_PROFILE PASSWORD EXPIRE ACCOUNT LOCK
93
- 계정을 사용하기 위해서는 DBA가 각 계정에 CREATE SESSION
데이터베이스 생성하기 _14V2.2 93 2-3. DB관리자,사용자 계정 이해 및 권한 설정 6. 계정사용 및 권한 설정 - 계정을 사용하기 위해서는 DBA가 각 계정에 CREATE SESSION 권한이 부여되어야 한다. (권한 부여 예) SQL>conn usr1/dbsystem //권한 없이 연결시도 error: SQL>grant create session to usr1, usr2, usr3; // 권한 부여 Grant succeeded. SQL>conn usr1/dbsystem//권한 부여후 연결 시도 Grant succeeded.//연결 성공
94
문제1 : 다음 중 데이터베이스 관리자의 권한 설명으로 맞지 않는 것은?
DBMS 설치하기 _14V2.2 94 2-3. 데이터베이스 블록사이즈 로그관리,환경설정 정답 확인 문제1 : 다음 중 데이터베이스 관리자의 권한 설명으로 맞지 않는 것은? 데이터베이스 관리자는 사용자 계정을 통제할 수 있다 개발자도 사용자 계정을 통제할 수 있다. 데이터베이스 관리자의 권한으로 비정규 사용자를 통제 할 수 있다. 데이터베이스 관리자의 권한은 일반적으로 데이터터베이스를 총괄하는 책임자에게 부여된다. 정답: (2) 개발자도 사용자 계정을 통제할 수 있다 해설: 데이터베이스 관리자만이 사용자 계정을 통제할 수 있다 평가! 문항~
95
2-4. 데이터베이스 용량,권한 환경설정 점검 및 검증
데이터베이스 생성하기 _14V2.2 95 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 2-4. 데이터베이스 용량,권한 환경설정 점검 및 검증 데이터베이스 용량,권한 환경설정 점검 및 검증
96
1. 데이터베이스 관리 - 시스템 설치 - 서비스 관리 - 점검 및 모니터링 - 장애 대처 - 백업과 복원
데이터베이스 생성하기 _14V2.2 96 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 1. 데이터베이스 관리 - 시스템 설치 - 서비스 관리 - 점검 및 모니터링 - 장애 대처 - 백업과 복원 - 사용자 관리 및 권한 관리 - 시스템 데이터베이스 관리 - 사용자 데이터베이스 관리 - 데이터베이스 저장 공간 관리 - 인덱스 관리
97
데이터베이스 생성하기 _14V2.2 97 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 2. 데이터베이스 용량 데이터베이스 용량은 초기 데이터베이스를 구축 하고자 하는 DB시스템 구축 차원의 디스크 등 물리적 차원의 용량과 정보를 저장하는 논리적 차원의 테이블 스페이스로 나눠볼 수 있다. 데이터베이스 구축 용량 : 최근 인터넷의 발전과 더불어 클라우드 환경이 전개되면서 안정적이고 확장가능하며 보안이 강화된 데이터베이스를 기반으로 솔루션과 애플리케이션을 제공할 수 있는 데이터베이스의 요구에 따라 대용량의 정보를 저장키 위한 디스크 등 물리적 저장장치의 획기적 개선이 이루어지고 있다. 테이블 스페이스 : 실제 설계에 따라 정보를 저장하는 논리적, 물리적 공간
98
데이터베이스 생성하기 _14V2.2 98 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 3. 데이터베이스 설치 및 환경 데이터베이스는 제품 및 OS에 따라 요구되는 시스템 설치 및 운영 환경이 다르다. 설치시 고려 해야될 요소로는 Processor type, Physical memory, 파일저장의 HDD, O/S, S/W Package가 있다. 파일저장 부분 : 파일저장은 크게 물리적인 부분과 논리적인 부분으로 나뉜다. 가. 물리적 구조 : 데이터파일, 리두로그파일,컨트롤파일,서버에서 아카이부된 로그파일,플래시백 로그파일로 구성된다. 나. 논리적 구조 : 테이블 스페이스,데이터블록, 익스텐트로 구성된다. 메모리 부문 : 데이터베이스의 동작은 메모리구조와 프로세서에 의해 수행된다 예로서 메모리는 프로그램 코드를 저장하고 데이터베이스 사용자들간에 공유 (시스템 공유 영역)되는 데이터를 저장 하는데 사용된다.
99
4. 데이터베이스 구동 - 프로세스 부문 : 프로세스는 데이터베이스 서버가 작동되게 하는 프로그램을
데이터베이스 생성하기 _14V2.2 99 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 프로세스 부문 : 프로세스는 데이터베이스 서버가 작동되게 하는 프로그램을 말하는데 항상 다수개의 프로그램이 실행되어 서버가 동작한다. 4. 데이터베이스 구동 - Startup : 데이터베이스 기동 SQLDBA>startup mount - 온라인 리두로그파일을 추가하거나 위치 이름을 변경할 때 사용한다. SQLDBA>alter database add logfile group 3 ‘$file_name’; - 아카이브 옵션을 활성화나 비활성화할 때 사용한다. SQLDBA>alter database archivelog; SQLDBA>alter database noarchivelog; - 전체 데이터베이스 복구 작업 SQLDBA>recover database - 오라클 종료 SQLDBA>shutdown . Database closed . Database dismounted . DB instance shutdown
100
5. 데이터베이스 접근과 권한 DBMS는 ① 로그인 단계에서 DBMS 접근을 제한하는 로그인 사용자 관리
데이터베이스 생성하기 _14V2.2 100 5. 데이터베이스 접근과 권한 DBMS는 ① 로그인 단계에서 DBMS 접근을 제한하는 로그인 사용자 관리 ② 로그인한 사용자별로 특정 데이터로의 접근을 제한하는 권한 관리의 기능 제공 DBMS 데이터베이스 사용자1 테이블1 허가 사용자2 거부 테이블2 거부 ① 로그인 확인 ② 권한확인 [그림 1] 데이터베이스 접근 권한
101
데이터베이스 생성하기 _14V2.2 101 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 6. 테이블스페이스와 로그인 사용자 관리 1) 테이블스페이스 생성하기 - 테이블스페이스 : DBMS에서 데이터를 저장할 때 사용하는 논리적 저장공간(하드디스크에서는 실제 여러 개의 물리적인 데이터 파일로 구성될 수 있음). DBMS시스템 운영에 필요한 필수 정보를 담고 있음 2) 테이블스페이스 생성하기 CREATE TABLESPACE 테이블스페이스명 DATAFILE ‘저장될 경로 및 사용할 파일명’ SIZE 저장공간
102
DATAFILE 'C:\dbwork\usr_tbspace' SIZE 20M;
데이터베이스 생성하기 _14V2.2 102 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 테이블 생성 예 20M의 용량의 테이블스페이스 usr_tabspace를 C:\드라브에 생성 CREATE TABLESPACE DATAFILE 'C:\dbwork\usr_tbspace' SIZE 20M;
103
데이터베이스 생성하기 _14V2.2 103 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 테이블스페이스 삭제 DROP TABLESPACE 테이블스페이스이름 [INCLUDING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]; - 삭제 예 DROP TABLESPACE usr_test INCLUDING CONTENTS AND DATAFILES; - 데이터베이스 용량 알아내기 사례(메가바이트 단위) mysql>select table_schema “DBname”,sun(data_length+index_length) /1024/1024”size(MB)”from SCHEMA.tables group by table_schema;
104
7. 신규 로그인 사용자 계정 생성하기 - 사용자 계정 생성하기 - 사용자 계정 삭제하기 CREATE USER [사용자이름]
데이터베이스 생성하기 _14V2.2 104 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 7. 신규 로그인 사용자 계정 생성하기 - 사용자 계정 생성하기 CREATE USER [사용자이름] IDENTIFIED BY [비밀번호] DEFAULT TABLESPACE [테이블스페이스]; - 사용자 계정 설정 변경하기 ALTER USER [사용자이름] IDENTIFIED BY [비밀번호]; - 사용자 계정 삭제하기 DROP USER [사용자이름] CASCADE;
105
- 사용 예 (새로운 사용자 계정 생성) 새로운 사용자 usr_test를 생성(비밀번호는 usr_test),
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 사용 예 (새로운 사용자 계정 생성) 새로운 사용자 usr_test를 생성(비밀번호는 usr_test), CREATE USER usr_test IDENTIFIED BY usr_test;
106
8. 권한 관리 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 8. 권한 관리 - 소유한 개체에 대한 사용 권한을 관리하기 위한 명령을 DCL(Data Control Language)이라고 함 - 대표적 DCL 문 : 권한 허가 GRANT 문, 권한 취소 REVOKE 문 OWNER Usr_OWNER GRANT With grant option 권한 허가 REVOKE 권한 취소 Usr_tst1 권한 허가 GRANT REVOKE 권한 취소 Usr_tst2 [그림 2] GRANT 문과 REVOKE 문
107
9. 권한 허가 - GRANT (usr 계정) usrguest에게 Bk 테이블의 SELECT 권한을 부여
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 9. 권한 허가 - GRANT - 객체를 생성한 소유자가 대상 객체에 대한 권한을 다른 사용자에게 허가하는 명령 GRANT 권한 [(컬럼[ ,...n ])] [ ,...n ] [ON 객체] TO {사용자Ι롤ΙPUBLIC [ ,...n ]} [WITH GRANT OPTION] (usr 계정) usrguest에게 Bk 테이블의 SELECT 권한을 부여 GRANT SELECT ON Bk TO usrguest;
108
10. 권한 취소 - REVOKE - GRANT 문으로 허가한 권한을 취소, 회수하는 명령
2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 10. 권한 취소 - REVOKE - GRANT 문으로 허가한 권한을 취소, 회수하는 명령 REVOKE 권한 [(컬럼[ ,...n ])] [ ,...n ] [ON 객체] FROM { 사용자Ι롤ΙPUBLIC [ ,...n ]} [CASCADE]
109
11. 권한 취소 - REVOKE GRANT 문이 권한 부여를 위해 ‘TO 사용자’를 표기하였다면,
2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 11. 권한 취소 - REVOKE GRANT 문이 권한 부여를 위해 ‘TO 사용자’를 표기하였다면, REVOKE 문은 권한 취소를 위해 ‘ FROM 사용자’를 표기함 권한을 재부여하는 WITH GRANT OPTION의 회수를 위해 ‘CASCADE’ 옵션을 사용함 CASCADE는 사용자가 다른 사용자에게 부여한 권한까지 연쇄적으로 취소하라는 의미로, 사전에 주의 깊게 확인하고 사용해야 함
110
- usrguest에게 부여된 Bk 테이블의 SELECT 권한을 취소
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - REVOKE실행 예 - usrguest에게 부여된 Bk 테이블의 SELECT 권한을 취소 REVOKE SELECT ON Book FROM usrguest;
111
12. 역할 – ROLE(1) - 롤(ROLE): 데이터베이스 객체에 대한 권한을 모아둔 집합
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 12. 역할 – ROLE(1) - 롤(ROLE): 데이터베이스 객체에 대한 권한을 모아둔 집합 USER USER1 USER2 [그림 3] 사용자별 시스템 권한
112
13. 역할 – ROLE(2) [그림 4] 사용자별 역할과 권한 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 13. 역할 – ROLE(2) USER USER1 USER2 [그림 4] 사용자별 역할과 권한
113
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - ROLE 구문
114
1) 역할 생성부터 사용자 추가까지의 단계 2) 역할을 제거하면 반대로 수행 - CREATE ROLE - 역할 생성
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 1) 역할 생성부터 사용자 추가까지의 단계 - CREATE ROLE - 역할 생성 - GRANT - 만들어진 역할에 권한 부여 - GRANT - 사용자에게 역할 부여 2) 역할을 제거하면 반대로 수행 - DROP ROLE - 역할 삭제(사용자에게 부여된 역할에 대한 권한 역시 제거됨) (system 계정) ‘programmer’라는 역할을 생성 예 CREATE ROLE programmer;
115
- Role부여 예 - programmer 역할에 CREATE ANY TABLE과 CREATE ANY VIEW 권한을 부여
2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - Role부여 예 - programmer 역할에 CREATE ANY TABLE과 CREATE ANY VIEW 권한을 부여 GRANT CREATE ANY TABLE, CREATE ANY VIEW TO programmer; - usrguest에 programmer 역할의 권한을 부여 GRANT programmer TO usrguest;
116
- 테이블 생성 및 삽입 예 (usr 계정) usrguest사용자에게 테이블을 생성하고 데이터를 삽입(INSERT) 예
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 테이블 생성 및 삽입 예 (usr 계정) usrguest사용자에게 테이블을 생성하고 데이터를 삽입(INSERT) 예 CREATE TABLE usrguest NEWTABLE ( myname VARCHAR2(40), myphone VARCHAR2(20) ); INSERT INTO usrguest .NEWTABLE (myname, myphone) VALUES ('홍길동', ' ');
117
- 역할 제거 예 (system 계정) pgmr 역할 제거 DROP ROLE programmer;
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 - 역할 제거 예 (system 계정) pgmr 역할 제거 DROP ROLE programmer; (system 계정) usrguest.TAB 제거 DROP TABLE usrguest.TAB;
118
14. 백업과 복원 백업(backup) : 데이터베이스에서도 역시 예상하지 못한 장애에
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 14. 백업과 복원 백업(backup) : 데이터베이스에서도 역시 예상하지 못한 장애에 대비하여 데이터베이스를 복제하여 보관하는 작업 복원(recovery) :장애가 발생하여 운영 중인 데이터에 손상이 발생했을 때 기존에 복사해 둔 백업 파일을 사용하여 원래대로 되돌려 놓는 작업 - 미디어 오류 - 사용자 오류 - 하드웨어 장애
119
15. 데이터파일 입력순서 [그림 4] 데이터 파일의 입력 순서(시간순)
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 15. 데이터파일 입력순서 [그림 4] 데이터 파일의 입력 순서(시간순)
120
16. 백업의 종류 가. 전체 백업 - 데이터베이스 전체를 백업 나. 차등 백업
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 16. 백업의 종류 가. 전체 백업 - 데이터베이스 전체를 백업 나. 차등 백업 - 데이터베이스 중요도 별로 구분하여 차등 백업 다. 트랜잭션 로그 백업 - 로그 데이터를 백업하여 항상 복구 가능토록 함
121
17. 데이터베이스 백업 방법 가. 물리적 백업 데이터베이스를 구동하기 위해 필요한 모든 파일
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 17. 데이터베이스 백업 방법 가. 물리적 백업 데이터베이스를 구동하기 위해 필요한 모든 파일 (Data File, Redo Log File, Control File 등)을 물리적으로 ‘복사’하는 방법 콜드 백업 : 데이터베이스를 셧다운(shutdown)한 후에 백업을 진행하는 방법 핫 백업 : 운영 중인 데이터베이스의 파일을 복사하는 방법
122
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 나. 논리적 백업 실제 K-DBMS 데이터베이스를 구성하는 물리적 파일을 직접 복사하는 방법이 아닌, 오라클 데이터베이스의 콘텐츠(내용)를 별도의 파일로 옮기는 백업 방법 18. K-DBMS 백업 및 복원 실습 가) 기본 준비 - 실제 백업된 파일이 저장될 폴더 준비. - 윈도우의 [시작]-[실행]에서 ‘cmd’를 입력하여 명령창을 실행시킨 후 명령어 입력
123
- DBMS 내부에서 실제 파일이 위치하는 폴더를 지정 및 권한을 설정 후 exit 명령으로 SQL Plus를 종료함
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 > 실행모드 : SQL Plus를 sysdba - DBMS 내부에서 실제 파일이 위치하는 폴더를 지정 및 권한을 설정 후 exit 명령으로 SQL Plus를 종료함 나) EXPDP - 명령을 입력하여 madang 스키마의 모든 자료를 백업(Export)함 - 백업(Export)이 완료된 파일을 확인
124
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 다) IMPDP - Orders 테이블을 삭제하기 위해 윈도우 명령창으로 이동함. 명령은 사용자 ID로 접속한 후 Orders 테이블을 삭제(DROP)하고 삭제된 내용을 조회(SELECT)한 후 SQL Plus를 종료 - 이전에 백업 받은 파일을 이용하여 Orders 테이블만 복원(IMPORT)함 - 복원된 자료 확인
125
18. 생성된 DBMS의 용량,권한,환경설정 완료보고
데이터베이스 생성하기 _14V2.2 2-4. 데이터베이스 용량,권한,환경설정 점검 및 검증 18. 생성된 DBMS의 용량,권한,환경설정 완료보고 데이터베이스 권한 : DBA가 부여하며 항상 보안을 고려 해야 함 데이터베이스의 설치 용량은 업무의 증가 추이를 감안 설정 환경 설정 : DB는 항상 통신 네트웍에 연계되는 바 다양한 설치 환경이 있음
126
문제1 : 다음 중 데이터베이스 관리자의 권한을 관리하기위한 DCL 명령문으로 맞지 않는 것은?
DBMS 설치하기 _14V2.2 2-4. 데이터베이스 블록사이즈 로그관리,환경설정 정답 확인 문제1 : 다음 중 데이터베이스 관리자의 권한을 관리하기위한 DCL 명령문으로 맞지 않는 것은? GRANT문 REVOKE문 DROP문 DELETE문 정답: (4) DELETE문 해설: DELETE는 DCL에서는 사용하지 않는다. 평가! 문항~ DCL : Data Control Language의 약자로 데이터 제어에 사용되는 명령어
127
데이터베이스 오브젝트 생성하기 _14V2.3 단원 3 : 데이터베이스 오브젝트 생성하기 학습 내용 3-1. 테이블, 인덱스, 제약조건을 이해하고 데이터베이스 설계에 따라 설치된 DBMS에 적합한 오브젝트 생성 계획을 수립 3-2. 물리 데이터베이스 설계에 따라 데이터베이스 오브젝트를 생성하기위한 DDL을 작성할 수 있고 생성된 오브젝트에 대한 유효성 여부를 검사함 3-3. 생성된 데이터베이스 오브젝트의 적정성과 무결성을 판단하고 데이터베이스 오브젝트 명세를 포함한 완료 보고서 학습 목표 테이블의 제관리 내용을 이해하고 설치된 DBMS에 적합한 물리 및 논리 데이터베이스의 오브젝트 생성한 후, 무결성 등 적정성을 검증하여데이터베이스 시스템을 완료함 DDL(Data Defination Language) : 데이터베이스에서 데이터와 데이터간의 관계를 정의하여 데이터베이스 구조를 설정하는 SQL(구조화 조회 언어)문.
128
3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립
129
1. 관계 데이터 모델의 개념 - 릴레이션 - 릴레이션 스키마와 인스턴스 - 릴레이션의 특징 - 관계 데이터 모델
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 1. 관계 데이터 모델의 개념 - 릴레이션 - 릴레이션 스키마와 인스턴스 - 릴레이션의 특징 - 관계 데이터 모델
130
2. 릴레이션 - 릴레이션(relation) : 행과 열로 구성된 테이블 <표 1> 릴레이션과 관련된 한글 용어
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 2. 릴레이션 - 릴레이션(relation) : 행과 열로 구성된 테이블 <표 1> 릴레이션과 관련된 한글 용어 용어 한글 용어 비고 relation 릴레이션, 테이블 “관계”라고 하지 않음 relational data model 관계 데이터 모델 relational database 관계 데이터베이스 relational algebra 관계대수 relationship 관계
131
3. 릴레이션이의 개요 [그림 1] 데이터와 테이블(릴레이션)
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 3. 릴레이션이의 개요 도서 5, 피겨 기술, 나인스포츠, 도서 4, 골프 기술, 스포츠미디어, 25000 도서 3, 농구 기술, 스포츠미디어, 12000 도서 2, 야구 기술, 스포츠컴, 11000 도서 1, 축구 기술, 스포츠컴, 8000 도서번호 도서이름 출판사 가격 1 축구 기술 스포츠컴 8000 2 야구 기술 11000 3 농구 기술 스포츠미디어 22000 4 골프 기술 25000 5 피겨 기술 나인스포츠 9000 [그림 1] 데이터와 테이블(릴레이션)
132
- 첫 번째 행(1, 축구 기술, 스포츠컴, 8000)의 경우, 도서번호 = {1,2,3,4,5}
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 도서번호 = {1,2,3,4,5} 도서이름 = {축구 기술, 야구 기술, 농구 기술, 골프 기술, 피겨 기술} 출판사= {스포츠컴, 스포츠미디어, 나인스포츠} 가격 = {8000, 11000, 22000, 25000, 9000} - 첫 번째 행(1, 축구 기술, 스포츠컴, 8000)의 경우, 네 개의 집합에서 각각 원소 한 개씩 선택하여 만들어 진 것으로 이 원소들이 관계(relationship)를 맺고 있음을 볼 수 있다.
133
4. 관계(relationship) - 릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 4. 관계(relationship) - 릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계 - 릴레이션 간에 생성되는 관계 : 릴레이션 간의 관계 도서(도서번호, 도서이름, 출판사, 가격) 주문(도서번호, 고객번호, 판매가격, 주문일자) 고객(고객번호, 이름, 주민번호, 주소, 핸드폰) [그림 2] 릴레이션 간의 관계
134
5. Relation Schema와 Instance
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 5. Relation Schema와 Instance [그림 3] 도서 릴레이션
135
5.1 릴레이션 스키마 1) 스키마의 요소 속성(attribute) : 릴레이션 스키마의 열
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 5.1 릴레이션 스키마 1) 스키마의 요소 속성(attribute) : 릴레이션 스키마의 열 도메인(domain) : 속성이 가질 수 있는 값의 집합 차수(degree) : 속성의 개수 2) 스키마의 표현 릴레이션 이름(속성1 : 도메인1, 속성2 : 도메인2, 속성3 : 도메인3 …) EX) 도서(도서번호, 도서이름, 출판사, 가격)
136
5.2 릴레이션 인스턴스 1) 인스턴스 요소 투플(tuple) : 릴레이션의 행
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 5.2 릴레이션 인스턴스 1) 인스턴스 요소 투플(tuple) : 릴레이션의 행 카디날리티(cardinality) : 투플의 수 <표 2> 릴레이션 구조와 관련된 용어 릴레이션 용어 같은 의미로 통용되는 용어 파일 시스템 용어 릴레이션(relation) 테이블(table) 파일(file) 스키마(schema) 내포(intension) 헤더(header) 인스턴스(instance) 외연(extension) 데이터(data) 튜플(tuple) 행(row) 레코드(record) 속성(attribute) 열(column) 필드(field)
137
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 6. 릴레이션의 규칙 - 속성은 단일 값을 가짐 각 속성의 값은 도메인에 정의된 값만을 가지며 그 값은 모두 단일 값 이어야 함 - 속성은 서로 다른 이름을 가짐 속성은 한 릴레이션에서 서로 다른 이름을 가져야만 함 - 한 속성의 값은 모두 같은 도메인 값을 가짐 한 속성에 속한 열은 모두 그 속성에서 정의한 도메인 값만 가질 수 있음
138
예) 릴레이션 스키마에서 (이름, 주소) 순으로 속성을 표시하거나 (주소, 이름) 순으로 표시하여도 상관없음
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 속성의 순서는 무순 속성의 순서가 달라도 릴레이션 스키마는 같음 예) 릴레이션 스키마에서 (이름, 주소) 순으로 속성을 표시하거나 (주소, 이름) 순으로 표시하여도 상관없음 - 릴레이션 내의 튜플은 항상 유일해야 됨 하나의 릴레이션 인스턴스 내에서는 서로 중복된 값을 가질 수 없음. 즉 모든 튜플은 서로 값이 달라야 함 - 튜플의 순서는 무순서 튜플의 순서가 달라도 같은 릴레이션임 관계 데이터 모델의 투플은 실제적인 값을 가지고 있으며 이 값은 시간이 지남에 따라 데이터의 삭제, 수정, 삽입에 따라 순서가 바뀔 수 있음
139
6.1 릴레이션의 특징 튜플 중복 불가 속성의 값은 유일 값이어야 함 [그림 4] 릴레이션이 규칙에 위배된 경우
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 6.1 릴레이션의 특징 도서번호 도서이름 출판사 가격 1 축구 기술 스포츠컴 7000 2 야구 기술 11000 3 농구 기술 스포츠미디어 22000 4 골프 기술 25000 5 피겨 기술 나인스포츠 9000 6 피겨 기술, 피겨 고급 튜플 중복 불가 속성의 값은 유일 값이어야 함 [그림 4] 릴레이션이 규칙에 위배된 경우
140
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7. 관계 데이터 모델 - 관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현함 - 릴레이션에 대한 제약조건(constraints)과 관계 연산을 위한 관계대수 (relational algebra)를 정의함 관계 데이터 모델 - 릴레이션 - 제약조건 - 관계대수 관계 데이터베이스 시스템 - 릴레이션(SQL로 생성 및 관리) 제약조건(SQL로 제약 선언) 관계대수(SQL로 연산) DB시스템 구현 [그림 5] 관계 데이터베이스 시스템
141
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1 무결성 제약조건 가) 키 (KEY : 튜플을 대표하는 유일한 값) 나) 무결성 제약조건 (무결성 : 일체의 결점이 없는 조건) 다) 무결성 제약조건의 수행
142
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.1 키 - 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합 - 릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 함. 즉 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 함 - 키는 릴레이션 간의 관계를 맺는 데도 사용됨
143
7.1.2 슈퍼키 가. 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.2 슈퍼키 가. 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합 튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음 나. (고객관리 릴레이션 사례) - 고객번호 : 고객별로 유일한 값이 부여되어 있기 때문에 튜플을 식별할 수 있음 - 이름 : 동명이인이 있을 경우 튜플을 유일하게 식별할 수 없음 - 주민번호 : 개인별로 유일한 값이 부여되어 있기 때문에 튜플을 식별할 수 있음
144
- 주소 : 가족끼리는 같은 정보를 사용하므로 튜플을 식별할 수 없음 - 핸드폰 번호 : 한 사람이 여러 개의 핸드폰을 사용할
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 주소 : 가족끼리는 같은 정보를 사용하므로 튜플을 식별할 수 없음 - 핸드폰 번호 : 한 사람이 여러 개의 핸드폰을 사용할 수 있고 반대로 핸드폰을 사용하지 않는 사람이 있을 수 있기 때문에 튜플을 식별할 수 없음 마. 고객 릴레이션은 고객번호와 주민번호를 포함한 모든 속성의 집합이 슈퍼키가 됨 EX) 주민번호, 고객번호
145
7.1.2 후보키 나. 관계 데이터베이스에서 관계(데이터베이스 테이블) 내의
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.2 후보키 가. 튜플을 유일하게 식별할 수 있는 속성의 최소 집합 나. 관계 데이터베이스에서 관계(데이터베이스 테이블) 내의 특정 튜플(tuple)을 일의적으로 식별할 수 있는 키 필드. 이 키 필드는 단일 속성일 수도 있고 복수의 속성일 수도 있다. 관계에는 반드시 최소한 하나의 후보 키가 있어야 한다. 그러나 하나 이상의 키도 있을 수 있다. 키가 하나밖에 없을 때에 그 키는 자동적으로 그 관계의 1차 키 (primary key)가 된다. 키가 하나 이상 있는 경우에 각 키를 후보 키라고 한다.
146
다. 복수의 후보 키가 있는 경우에 데이터베이스 설계자는 후보 키 중의 하나를 1차 키로 지정해야 한다.
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 다. 복수의 후보 키가 있는 경우에 데이터베이스 설계자는 후보 키 중의 하나를 1차 키로 지정해야 한다. 1차 키로 지정되지 않은 키를 대체 키(alternate key) 라고 한다 라. 주문 릴레이션의 후보키는 2개의 속성을 합한 (고객번호, 도서번호)가 됨 이렇게 2개 이상의 속성으로 이루어진 키를 복합 키(composite key)라고 함
147
7.1.3 기본키 나. 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하고 여러 개라면 릴레이션의 특성을 반영하여 하나를
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.3 기본키 가. 여러 후보키 중 하나를 선정하여 대표로 삼는 키 나. 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하고 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨 다. 기본키 선정 시 고려사항 - 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함 - NULL 값은 허용하지 않음 - 키 값의 변동이 일어나지 않아야 함
148
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 최대한 적은 수의 속성을 가진 것이라야 함 - 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 라. 릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함 릴레이션 이름(속성1, 속성2, …. 속성N) EX) 고객(고객번호, 이름, 주민번호, 주소, 핸드폰) 도서(도서번호, 도서이름, 출판사, 가격)
149
7.1.4 대리키 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.4 대리키 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음 이러한 키를 대리키(surrogate key) 혹은 인조키(artificial key)라고 함 2) 대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없음
150
<표 3> 대리키를 사용하도록 변경된 주문 릴레이션
데이터베이스 오브젝트 생성하기 _14V2.3 150 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 <표 3> 대리키를 사용하도록 변경된 주문 릴레이션 주문호 고객번호 도서번호 판매가격 주문일자 1 9000 2 11000 3 5 4 25000 6 22000 7
151
7.1.5 대체키 가. 대체키(alternate key) : 기본키로 선정되지 않은 후보키
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.5 대체키 가. 대체키(alternate key) : 기본키로 선정되지 않은 후보키 나. 복수의 후보 키가 있는 경우에 설계자는 그중의 하나를 1차 키(primary key)로 지정해야 하는데, 이때 1차 키로 지정되지 않은 키를 말하는 것 다. 고객관리 릴레이션에서 고객번호와 주민번호 중 고객번호를 기본키로 정하면 주민번호가 대체키가 됨
152
7.1.6 외래키 가. 다른 릴레이션의 기본키를 참조하는 속성을 말함 나. 다른 릴레이션의 기본키를 참조하여 관계 데이터
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.1.6 외래키 가. 다른 릴레이션의 기본키를 참조하는 속성을 말함 나. 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(relationship)를 표현함 다. 외래키의 특징 - 관계 데이터 모델의 릴레이션 간의 관계를 표현함 - 다른 릴레이션의 기본키를 참조하는 속성임
153
참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함 참조되는(기본키) 값이 변경되면 참조하는(외래키)
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨 - NULL 값과 중복 값 등이 허용됨 - 자기 자신의 기본키를 참조하는 외래키도 가능함 - 외래키가 기본키의 일부가 될 수 있음
154
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음. 즉 자기 자신의 기본키를 참조할 수도 있음 참조 외래키 기본키 명함번호 이름 주소 중요도 1 홍길동 서울시 종로구 3 2 심청이 서울시 서대문구 이경수 서울시 서초구 4 지영필 서울시 도봉구 [그림 6] 명함 릴레이션
155
- 인덱스(index, 색인)란 도서의 색인이나 사전과 같이 데이터를 쉽고 빠르게
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.2 인덱스 - 인덱스(index, 색인)란 도서의 색인이나 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조 [그림 6] B-tree의 구조
156
7.3. 인덱스의 특징(1) - 빠른 검색과 함께 효율적인 레코드 접근이 가능함
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.3. 인덱스의 특징(1) - 인덱스는 테이블에서 한 개 이상의 속성을 이용하여 생성 - 빠른 검색과 함께 효율적인 레코드 접근이 가능함 - 순서대로 정렬된 속성과 데이터의 위치만 보유하므로 테이블보다 작은 공간을 점유 - 저장된 값들은 테이블의 부분집합이 됨 - 일반적으로 B-tree 형태의 구조를 가짐 - 데이터의 수정, 삭제 등의 변경이 발생하면 인덱스의 재구성이 필요함
157
데이터베이스 생성하기 _14V2.2 157 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.3. 인덱스의 특징(2) - 인덱스는 테이블에서 한 개 이상의 속성을 이용하여 생성함 - 빠른 검색과 함께 효율적인 레코드 접근이 가능함 - 순서대로 정렬된 속성과 데이터의 위치만 보유 하므로 테이블보다 작은 공간을 차지함 - 저장된 값들은 테이블의 부분집합이 됨 - 일반적으로 B-tree 형태의 구조를 가짐 - 데이터의 수정, 삭제 등의 변경이 발생하면 인덱스의 재구성이 필요함
158
7.4 데이터베이스 인덱스의 종류 <표 4> 인덱스의 종류
데이터베이스 생성하기 _14V2.2 158 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.4 데이터베이스 인덱스의 종류 <표 4> 인덱스의 종류
159
7.5. 인덱스의 생성 - 인덱스 생성 시 고려사항 . 인덱스는 WHERE 절에 자주 사용되는 속성이어야 함
데이터베이스 생성하기 _14V2.2 159 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.5. 인덱스의 생성 - 인덱스 생성 시 고려사항 . 인덱스는 WHERE 절에 자주 사용되는 속성이어야 함 . 인덱스는 조인에 자주 사용되는 속성이어야 함 . 단일 테이블에 인덱스가 많으면 속도가 느려질 수 있음 (테이블 당 4~5개 정도 권장) . 속성이 가공되는 경우 사용하지 않음 . 속성의 선택도가 낮을 때 유리함(속성의 모든 값이 다른 경우) - 인덱스의 생성 문법 CREATE [REVERSE]┃[UNIQUE] INDEX 인덱스이름] ON 테이블이름 (컬럼 [ASC┃DESC] [{, 컬럼 [ASC | DESC]} …])[;]
160
7.6. 인덱스의 종류 및 사례 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.6. 인덱스의 종류 및 사례
161
7.7. 인덱스 생성 및 고려사항 7.8. 인덱스 생성 예 - 인덱스는 WHERE 절에 자주 사용되는 속성이어야 함
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 7.7. 인덱스 생성 및 고려사항 - 인덱스는 WHERE 절에 자주 사용되는 속성이어야 함 - 인덱스는 조인에 자주 사용되는 속성이어야 함 - 단일 테이블에 인덱스가 많으면 속도가 느려질 수 있음 (테이블 당 4~5개 정도 권장) - 속성이 가공되는 경우 사용하지 않음 - 속성의 선택도가 낮을 때 유리함(속성의 모든 값이 다른 경우) 7.8. 인덱스 생성 예 CREATE [REVERSE]┃[UNIQUE] INDEX 인덱스이름] ON 테이블이름 (컬럼 [ASC┃DESC] [{, 컬럼 [ASC | DESC]} …])[;] <질의1> EX_TBL 테이블의 ‘ex-name열을 대상으로 비클러스터 인덱스 ix_samp을 생성 하시오. CREATE Index ix_samp ON EX_TBL(ex-name);
162
데이터베이스 생성하기 _14V2.2 162 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 [그림 7] 생성된 인덱스 확인 및 실행 계획
163
7.9. 인덱스의 재구성과 삭제 - 인덱스의 재구성은 ALTER INDEX 명령을 사용
데이터베이스 생성하기 _14V2.2 163 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 인덱스의 재구성은 ALTER INDEX 명령을 사용 - 생성 문법 삭제 문법 7.9. 인덱스의 재구성과 삭제 ALTER [REVERSE] [UNIQUE] INDEX 인덱스이름 [ON {ONLY} 테이블이름 {컬럼이름 [{, 컬럼이름 } …])] REBUILD[;] 질의 1) 인덱스 ix_P을 재생성하시오. ALTER INDEX ix_P REBUILD; DROP INDEX 인덱스이름 질의 2) 인덱스 ix_P를 삭제하시오. DROP INDEX ix_P;
164
8. 무결성 제약조건 데이터의 일관성과 정확성을 지키는 것 나. 제약조건 : 제약조건이란 데이터를 추가,수정,삭제하는
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 8. 무결성 제약조건 가. 데이터 무결성(integrity, 無缺性) : 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것 나. 제약조건 : 제약조건이란 데이터를 추가,수정,삭제하는 과정에서 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 컬럼에 대해서 정의하는 규칙을 말하며 이 규칙으로 인해 데이터의 무결성을 유지할 수 있음 다. 도메인 무결성 제약조건 도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건임. SQL 문에서 데이터 형식 (type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용하여 지정할 수 있음
165
기본키 제약(primary key constraint)이라고도 함. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉,
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 라. 개체 무결성 제약조건 기본키 제약(primary key constraint)이라고도 함. 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL 값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건임 마. 참조 무결성 제약조건 외래키 제약(foreign key constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건임. 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것임
166
8.1 참조 무결성 제약조건 <표 5> 제약조건의 정리
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 8.1 참조 무결성 제약조건 <표 5> 제약조건의 정리 구분 도메인 키 도메인 무결성 제약조건 개체 무결성 제약조건 참조 무결성 제약조건 제약 대상 속성 튜플 속성과 튜플 용어 도메인 제약 (Domain Constraint) 기본키 제약 (Primary Key Constraint) 외래키 제약 (Foreign Key Constraint) 해당 키 - 기본키 외래키 Null값 허용 여부 허용 릴레이션 내 제약조건의 갯수 속성 개수와 동일 1개 0 ~ N 기타 - 튜플 삽입,수정 시 제약사항 우선 확인 튜플 삽입/수정 시 - 튜플 삽입/수정 시 - 부모 릴레이션의 튜플 수정/삭제 시
167
- 수정 : 기본키 값이 같거나 NULL로도 수정이 금지됨 - 삭제 : 특별한 확인이 필요하지 않으며 즉시 수행함
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 - 삽입 : 기본키 값이 같으면 삽입이 금지됨 - 수정 : 기본키 값이 같거나 NULL로도 수정이 금지됨 - 삭제 : 특별한 확인이 필요하지 않으며 즉시 수행함 학번 이름 학과코드 501 이지영 1001 401 김연중 2001 402 장미숙 502 최신우 [그림 8] 학생 릴레이션 (501, 남기영, 1001) (NULL, 이영찬, 1001) 삽입 거부 삽입 거부 학번 이름 학과코드 501 이지영 1001 401 김연중 2001 402 장미숙 502 최신우 학번 이름 학과코드 501 이지영 1001 401 김연중 2001 402 장미숙 502 최신우 [그림 8] 개체 무결성 제약조건 실행 사례(기본키 충돌 및 NULL 값 삽입)
168
가. 학과(parent릴레이션) : 튜플 삽입후 정상적 수행 *참조 : 학과코드
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 8.2 참조 무결성 제약조건(1) 가. 학과(parent릴레이션) : 튜플 삽입후 정상적 수행 *참조 : 학과코드 학생(child 릴레이션) 학과(parent 릴레이션) 학번 이름 학과코드 501 이지영 1001 401 김연중 2001 402 장미숙 502 최신우 학과코드 학과명 1001 기계과 2001 통신과 [그림 9] 학생관리 데이터베이스
169
학과(parent 릴레이션) : 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 나. 삭제 학과(parent 릴레이션) : 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요 학생(child 릴레이션) : 바로 삭제 가능 ※ parent 릴레이션에서 투플을 삭제할 경우 참조 무결성 조건을 수행하기 위한 고려사항 - 즉시 작업을 중지 - 자식 릴레이션의 관련 투플을 삭제 - 초기에 설정된 다른 어떤 값으로 변경 - NULL 값으로 설정
170
부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 다. 수정 삭제와 삽입 명령이 연속해서 수행됨 부모 릴레이션의 수정이 일어날 경우 삭제 옵션에 따라 처리된 후 문제가 없으면 다시 삽입 제약조건에 따라 처리됨
171
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 9. 데이터 조작어 – 삽입, 수정, 삭제 - 스키마 객체의 데이터를 입력(INSERT), 수정(UPDATE), 조회(SELECT), 삭제(DELETE)를 하거나 테이블의 잠금(LOCK TABLE), SQL문의 처리에 대한 정보입수(EXPLAIN PLAN), PL/SQL 모듈을 호출(CALL)등을 수행하는 문장의 집단이다. - 각 명령어는 INSERT, UPDATE, DELETE, SELECT, LOCK TABLE, EXPLAIN PLAN, CALL등이 있다.
172
가. INSERT 문 - <INSERT예>학생 데이터 입력
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 가. INSERT 문 - <INSERT예>학생 데이터 입력 INSERT INTO STUDENT(ID,NAME,DEPT-COD) VALUES(201501,’홍길동’,1001);
173
나. UPDATE 문 - UPDATE 문의 기본 문법 - UPDATE 문은 특정 속성 값을 수정하는 명령
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 나. UPDATE 문 - UPDATE 문은 특정 속성 값을 수정하는 명령 - UPDATE 문의 기본 문법 UPDATE 테이블이름 SET 속성이름1=값1[, 속성이름2=값2, ...] [WHERE <검색조건>];
174
<표 6> 참조 무결성 제약조건의 옵션(parent 릴레이션에서 투플을 삭제할 경우)
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 <표 6> 참조 무결성 제약조건의 옵션(parent 릴레이션에서 투플을 삭제할 경우) 명령어 의미 예 RESTRICTED child릴레이션에서 참조하고 있을 경우 parent릴레이션의 삭제 작업을 거부함 학과 릴레이션의 튜플 삭제 거부 CASCADE child릴레이션의 관련 튜플을 같이 삭제 처리함 학생 릴레이션의 관련 튜플을 삭제 DEFAULT child릴레이션의 관련 튜플을 미리 설정해둔 값으로 변경함 학생 릴레이션의 학과가 다른 학과로 자동 배정 NULL child릴레이션의 관련 튜플을 NULL 값으로 설정함(NULL 값을 허가한 경우) 학과 릴레이션의 학과가 NULL 값으로 변경
175
2.3 참조 무결성 제약조건(2) 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 2.3 참조 무결성 제약조건(2) ②참조 확인 (2001, 통신과) ①삭제 요청 학생 학과 학번 이름 학과코드 501 이지영 1001 401 김연중 2001 402 장미숙 502 최신우 학과코드 학과명 1001 기계과 2001 통신과 ③옵션 선택 - RESTRICTED : 요청한 삭제 작업중지(에러 처리) - CASCADE : 학생 릴레이션의 해당 투플을 같이 연쇄적으로 삭제(CASCADE) - 기본값으로 변경(미리 설정한 값, DEFAULT) - NULL 값으로 설정 [그림 10] 참조 무결성 제약조건에서 parent 릴레이션의 튜플을 삭제할 경우
176
10. 오브젝트 생성 계획 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립
데이터베이스 오브젝트 생성하기 _14V2.3 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 10. 오브젝트 생성 계획
177
문제1 : 다음 중 스키마 객체의 데이터를 조작하는 데이터 조작문(DML)에 속하지 않는 것은?
데이터베이스 오브젝트 생성하기 _14V2.3 177 3-1. 테이블,인덱스,제약조건을 이해하고, DBMS에 적합한 오브젝트 생성계획 수립 정답 확인 문제1 : 다음 중 스키마 객체의 데이터를 조작하는 데이터 조작문(DML)에 속하지 않는 것은? INSERT문 CREATE문 UPDATE문 DELETE문 정답: (2) CREATE문 해설: CREATE문은 DDL(데이터 정의어 )명령어로서 테이블을 만드는데 사용 평가! 문항~
178
3-2. 물리데이터베이스 설계에 따른 DDL작성 및 유효성 검증
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 3-2. 물리데이터베이스 설계에 따른 DDL작성 및 유효성 검증 Data Defination Language 작성 및 생성된 오브젝트의 유효성 검증
179
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 1. DDL작성 및 유효성 검증 가. DDL개요 데이터베이스에서 데이터와 데이터간의 관계를 정의하여 데이터베이스 구조를 설정하는 SQL(구조화 조회 언어)문으로서 데이터베이스, 테이블, 필드, 인덱스 등 객체(Object)를 생성하고(CREATE), 제약을 걸며, 변경하거나(ALTER) 삭제하는(DROP) 등 응용 프로그램과 데이터베이스 관리시스템간의 인터페이스인 쿼리(query)에 사용되는 SQL문이다. 외부 스키마 명세를 정의하고, 데이터베이스를 정의, 수정하며, 스키마에 사용되는 제약조건에 대한 명세를 정의하고, 데이터의 물리적 순서를 규정하며, 수행된 결과는 데이터 사전(data dictionary)이라는 여러 개의 파일과 테이블로서 저장된다. 검증은 객체의 생성과 변경, 삭제등의 실습 예를 통하여 확인할 수 있다.
180
나. DDL구조 및 실습 - 유효성 검증 포함 1) CREATE 문
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 나. DDL구조 및 실습 - 유효성 검증 포함 1) CREATE 문 테이블의 구성과 속성에 관한 제약조건을 정의하며 기본키와 외래키를 정의 Primary key : 기본키 정의시 사용 Foreign key는 외래키 정의시 사용 On update와 On delete는 외래키 속성의 수정과 튜플 삭제시 사용
181
- 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 데이터베이스 오브젝트
생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 -
182
* SQL문의 실행으로 TBL SYSTEM에 EX_TBL에 테이블이 생성 되었음을 확인 할 수 있다.
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 테이블 생성 사례 CREATE TABLE EX_TBL { COL_01 VARCHAR2(10), COL_02 VARCHAR2(5), COL_03 VARCHAR2(11) } TBL SYSTEM * SQL문의 실행으로 TBL SYSTEM에 EX_TBL에 테이블이 생성 되었음을 확인 할 수 있다.
183
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 2) ALTER문 생성된 테이블의 속성과 속성에 관한 제약조건 및 기본키와 외래키를 변경 정의시 사용 ADD,DROP은 속성의 추가 삭제시 사용 MODIFY는 속성의 기본 값을 설정하거나 삭제할 때 사용 - ALTER의 기본 문법
184
ALTER문 사용 사례 .일반 테이블 스페이스 변경 . ALTER문으로 스페이스 변경
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 ALTER문 사용 사례 .일반 테이블 스페이스 변경 CREATE TABLESPACE EX_TBL ( DATAFILE ‘c:/kdbdata/kdb1/ex_tbl01.dbf’ size 11M DEFAULT STORAGE ( INITIAL 3M NEXT 1M ……. ) TBL SYSTEM . ALTER문으로 스페이스 변경 ALTER TABLESPACE EX_TBL ADD DATAFILE ‘c:/kdbdata/kdb1/ex_tbl01.dbf’ size 15M;
185
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 3) DROP 문 - DROP 문은 테이블을 삭제하는 명령. - 테이블의 구조와 데이터를 모두 삭제하므로 사용에 주의해야 함 (데이터만 삭제하려면 DELETE 문을 사용함). - DROP문의 기본 문법 DROP TABLE 테이블이름 - 삭제 예 > CUST 테이블을 삭제 DROP TABLE CUST;
186
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 2. 모델링화를 통한 데이터베이스 물리적 모형 데이터 모델링(Data Modeling)화 : 현실세계의 개념으로부터 논리적인 데이터모델을 구성하는 작업을 말하며, 일반적으로 이를 물리적인 데이터베이스 모델로 환원하여 고객의 요구에 따라 특정 정보시스템의 데이터베이스에 반영하는 작업을 포함한다. 데이터 모델링을 해 나갈 때는, 데이터를 구조화하고 조직화한다. 뒤이어 이러한 데이터 구조는 데이터베이스 시스템(DBMS) 상에서 구현된다. 데이터를 정의하고 조직화하는 것 외에도, 데이터 모델링은 (명시적으로나 비명시적으로) 구조 안에 들어갈 데이터의 제약 조건이나 범위를 규정해 나가게 된다.
187
현실세계 [그림 1] 데이터 모델링화 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 데이터베이스 오브젝트
생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 현실세계 DATABASE [그림 1] 데이터 모델링화
188
2.1 개념적 모델링 주문 상품 고객 [그림 2] 개념적 모델링의 예
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 2.1 개념적 모델링 개념적 모델링(conceptual modeling) 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정 개체(entity)를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD, Entity Relationship Diagram)을 만드는 과정까지를 말함 주문 상품 고객 상품이름 도서단가 제조사 상품단가 주문일자 고객이름 주소 전화번호 [그림 2] 개념적 모델링의 예
189
2.2. 논리적 모델링 상품 주문 고객 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 2.2. 논리적 모델링 논리적 모델링(logical modeling) : 개념적 모델링에서 만든 ER 다이어그램을 사용하려는 DBMS에 맞게 사상(매핑, mapping)하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정 논리적 모델링 과정 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출함 정규화 수행 데이터 표준화 수행 상품 주문 고객 상품 (상품번호,상품이름,제조사이름,상품단가) 고객 (고객번호,고객이름,주소,전화번호) 주문 (주문번호,고객번호,상품번호,주문일자,주문금액) [그림 3] 논리적 모델링의 예
190
2.3. 물리적 모델링(Physical Modeling)
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 2.3. 물리적 모델링(Physical Modeling) 가) 논리적 스킴마로부터 내부 스킴마를 설계하는 과정 나) 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정 다) 효율적이고 구현 가능한 물리적 데이터베이스를 생성해 내는 것 라) DBMS의 특성에 맞게 저장 구조를 정의할 때 데이터베이스가 최적의 성능을 낼 수 있음
191
라) 물리적 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려할 사항 - 응답시간을 최소화
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 라) 물리적 모델링 시 트랜잭션, 저장 공간 설계 측면에서 고려할 사항 - 응답시간을 최소화 - 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토 - 데이터가 저장될 공간을 효율적으로 배치
192
1) DBMS에 접속하여 테이블 생성하기 예 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 1) DBMS에 접속하여 테이블 생성하기 예 DB에
193
해설: COMMIT은 트랜젝션 제어에 속하는 명령문이다. 평가! 문항~
데이터베이스 오브젝트 생성하기 _14V2.3 3-2. 물리데이터베이스 설계에 따른 DDL 작성 및 유효성 검증 정답 확인 문제1 : 다음 중 DDL문에 속하지 않는 것은? COMMIT CREATE ALTER DROP 정답: (1) COMMIT 해설: COMMIT은 트랜젝션 제어에 속하는 명령문이다. 평가! 문항~
194
3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료처리
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료처리 DB의 적정성과 무결성 DB오브젝트 완료보고
195
1. 데이터 무결성(Data Integrity) 개요
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 1. 데이터 무결성(Data Integrity) 개요 가. 데이터 무결성 정의 및 보호 - 데이터 무결성이란 사전적 정의로 데이터가 변경되거나 파괴되는 상황에 노출되지 않고 보존되는 특성을 말하며, DBMS에 있어서는 권한 있는 사용자가 수행 하는 모든 작업에서 저장된 데이터의 일관성(Consistency), 정확성(Correctness), 정밀성(Accuracy)를 유지하기 위한 것으로 정의. - 데이터 무결성의 보호는 물리적 차원으로 네트워크 관리자의 서 버접근, 전송선로관리, 서지 및 전자적 충격으로 부터 하드웨어 및 저장장치의 보호 등이 있으며 또한 사용자 인증, 시스템 관리, 장애 및 외부공격에 대비한 복구 대책 수립 등 관리대책이 필요함 * 관계형 데이터베이스는 수많은 개체(Entity)와 관계(Relation)들로 이루어진 복합체다. 따라서 이러한 개체 관계들이 실제의 테이블 형태로 저장되고 관리되는데 이때 의도 유무와 관계없이 무결성이 유지되지 않는 이상현상(Anomaly)이 발생될 수 있다.
196
나. 데이터 무결성 제약(constraint) - 데이터의 투명성(acid)를 보장하기 위한 규범으로 데이터보호를 위해
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 나. 데이터 무결성 제약(constraint) - 데이터의 투명성(acid)를 보장하기 위한 규범으로 데이터보호를 위해 데이터베이스 설계시 고려해야 함. 다. 데이터 무결성 종류 - 개체 무결성(entity integrity) : 기본키는 반드시 유일성과 값을 가짐 - 참조 무결성(referential integrity) : . 외래키는 참조할 수 없는 값을 가질 수 없음 . 외래키 값은 그 외래키가 기본키로 사용된 릴레이션의 기본키 값이 거나 null값 일 것 - 속성 무결성(attribute integrity) : 컬럼은 지정된 데이터 형식을 반드시 만족하는 값만 포함 - 키무결성(key integrity) : 한 릴레이션에 같은 키 값을 가진 튜플들은 허용 안 됨 - 사용자 정의 무결성(user definition integrity) : 모든 데이터 업무 규칙을 준수 - 도메인 무결성(domain integrity) : 특정 속성 값이 미리 정의된 도메인 범위에 속해야 함
197
. 외래키 값은 반드시 참조하는 테이블의 Primary key . 외래키 존재시 마스터 레코드 삭제 불가
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 라. 데이터 무결성 확보 방안 - Pprimary key : . 지정된 컬럼들이 유일성 보장 . Null값 허용 안함 - Foreign key . 테이블 간의 논리적 관계 유지 보장 . 외래키 값은 반드시 참조하는 테이블의 Primary key . 외래키 존재시 마스터 레코드 삭제 불가 - Data type : 데이터 무결성 유지를위한 데이터 형 제한 - Check : 데이터를 추가할 때마다 서버가 해당컬럼에 지정된 check 제약조건을 검사 - Default : 특정 컬럼에 명시하지않은 값을 서버가 값을 삽입 - Trigger : 특정 처리에 대하여 사전에 정의된 일련의 process들을 DBMS가 자동으로 수행
198
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 2. 이상현상(Anomaly)의 개념 삽입이상(Insertion Anomaly) : 튜플 삽입시 해당 속성 값이 없어 나타나는 null값 문제 발생 삭제이상(Deletion Anomaly) : 튜플 삭제시 관련 정보까지 손실 되는 triggered 삭제현상 수정이상(Update Anomaly) : 튜플 수정시 중복된 데이터 값의 불일치가 나타날 수 있는 inconsistency 문제 발생
199
2.1 이상현상의 사례 <표 1> 수강 데이터베이스 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 2.1 이상현상의 사례 <표 1> 수강 데이터베이스 학번 이름 학과코드 강좌 주소 학과 501 이지영 1001 DB 서울시 정보 401 김연중 2001 수학 청주시 경영 402 장미숙 영어 대전시 502 최신우 국어 평택시 삽입이상 : 학번이 없는 비정규 학생의 경우 수강 데이터베이스에 학번을 ‘null’ 값으로 삽입 할 수 없음 삭제이상 : 김연중 학생을 삭제 했다면 김연중이 ‘청주시’에 주소를 두고 있다는 정보까지 없어짐 3) 수정이상 : 정보과의 학과 코드 값을 ‘1001”에서 ‘1119’로 변경했다면, 정보과 모든 학생의 데이터를 바꿔주지 않으면 불일치가 발생됨
200
3. 트랜잭션, 동시성 제어, 회복 - 데이터베이스에서 데이터의 무결성 유지를 위한 제어 요소로 트랜잭션
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 3. 트랜잭션, 동시성 제어, 회복 - 데이터베이스에서 데이터의 무결성 유지를 위한 제어 요소로 트랜잭션 (Transaction), 동시성 제어(Concurrency Control), 트랜잭션 고립 수준, 회복(Recovery) 등을 종합적 요소로 살펴 본다. 1) 트랜젝션(Transaction) 가. 트랜잭션의 개념 나. 트랜잭션의 성질 다. 트랜잭션과 DBMS
201
가. 트랜잭션의 개념 - 트랜잭션(transaction) : DBMS에서 데이터를 다루는 논리적인 작업의 단위
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 가. 트랜잭션의 개념 - 트랜잭션(transaction) : DBMS에서 데이터를 다루는 논리적인 작업의 단위 - 데이터베이스에서 트랜잭션을 정의하는 이유 a. 데이터베이스에서 데이터를 다룰 때 장애가 일어날 때 데이터를 복구하는 작업의 단위가 됨. b. 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때가 이 작업을 서로 분리하는 단위가 됨. 트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 함 (all or nothing) 사례 : 은행 업무를 보는데 A 계좌(홍길동)에서 B 계좌(심청이)로 50,000원을 이체
202
① A 계좌(홍길동)에서 50,000원을 인출하는 UPDATE 문
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 BEGIN ① A 계좌(홍길동)에서 50,000원을 인출하는 UPDATE 문 ② B 계좌(심청이)에 50,000원을 입금하는 UPDATE 문 END (PROCESS) Start transaction 1) 홍길동 계좌를 READ 2) 심청이 계좌를 READ 3) UPDATE Customer/*홍길동 계좌 인출*/ SET balance=balance-50000 WHERE name = ‘홍길동’ 4) UPDATE Customer/*심청이 계좌 입금*/ SET balance=balance+50000 WHERE name = ‘심청이’ 5) COMMIT 6) 홍길동 계좌 WRITE 7) 김연아 계좌 WRITE [그림 1] 계좌이체 트랜잭션과 수행 과정
203
<표 2> 트랜잭션과 프로그램의 차이점
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 <표 2> 트랜잭션과 프로그램의 차이점 [그림 2] 컴퓨터 시스템 내의 트랜잭션과 프로그램
204
나. 트랜잭션의 ACID : 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질로 다음의 4가지를 요구함
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 나. 트랜잭션의 ACID : 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질로 다음의 4가지를 요구함 원자성(Atomicity) : 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야(all or nothing) 함 일관성(Consistency) : 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야 함 고립성(Isolation) : 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야 함 지속성(Durability) : 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 함
205
(1) 원자성 (Atomicity) 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 (1) 원자성 (Atomicity) - 트랜잭션이 원자처럼 더 이상 쪼개지지 않는 하나의 프로그램 단위로 동작해야 한다는 의미 - 일부만 수행되는 일이 없도록 전부 수행하거나 아예 수행하지 않아야(all or nothing) 함 <표 3> 트랜잭션 제어 명령어(TCL) 표준 명령어 데이터베이스 문법 설명 START TRANSACTION SET TRANSACTION NAME <이름> 트랜잭션의 시작 COMMIT 트랜잭션의 종료 ROLLBACK ROLLBACK {TO <savepoint>} 트랜잭션을 전체 혹은 <savepoint>까지 무효화 시킴 SAVEPOINT SAVEPOINT <savepoint> <savepoint>를 만듬
206
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 (2) 일관성 - 트랜잭션은 데이터베이스의 일관성(Consistency)을 유지해야 함 - 일관성은 테이블이 생성 시 CREATE 문과 ALTER 문의 무결성 제약조건을 통해 명시됨 계좌이체(10만원 이체) 트랜잭션 실행 중 데이터베이스 (consistent) 데이터베이스 (inconsistent) 데이터베이스 (consistent) A계좌 + B계좌 = 50만원 A계좌 + B계좌 = 40만원 A계좌 + B계좌 = 50만원 [그림 3] 데이터베이스 변경 중과 변경 후의 일관성
207
(3) 고립성 동시에 수행됨. 동시에 수행되는 트랜잭션은 상호 존재를
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 (3) 고립성 - 데이터베이스는 공유가 목적이므로 여러 트랜잭션이 동시에 수행됨. 동시에 수행되는 트랜잭션은 상호 존재를 모르고 독립적으로 수행되는데, 이를 고립성(Isolation) 이라고 함 - 고립성을 유지하기 위해서는 트랜잭션이 변경 중인 임시 데이터를 다른 트랜잭션이 읽고 쓸 때 제어가 필요함
208
(4) 지속성(Durability) - 트랜젝션의 정상적 수행을 DBMS가 데이터베이스에 기록하는 성질 end
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 (4) 지속성(Durability) - 트랜젝션의 정상적 수행을 DBMS가 데이터베이스에 기록하는 성질 start partially committed commit (작업수행) (완료수행) end failed (취소수행) cancel [그림 4] 트랜잭션의 상태도
209
다. 트랜잭션과 DBMS [그림 5] 트랜잭션의 특성과 DBMS의 역할
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 다. 트랜잭션과 DBMS - DBMS는 원자성을 유지하기 위해 회복(복구) 관리자 프로그램을 작동시킴 - DBMS는 일관성을 유지하기 위해 무결성 제약조건을 활용함 - DBMS는 고립성을 유지하기 위해 일관성을 유지하는 것과 마찬가지로 동시성 제어 알고리즘을 작동시킴 - DBMS는 지속성을 유지하기 위해 회복 관리자 프로그램을 이용함 트랜잭션의 특성 DBMS의 역할 원자성 무결성 제약조건 (SQL 문) 일관성 동시성 제어 (LOCKING) 고립성 회 복 (LOG DB) 지속성 [그림 5] 트랜잭션의 특성과 DBMS의 역할
210
4. 동시성 제어 (concurrency control)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 4. 동시성 제어 (concurrency control) - 트랜잭션이 동시에 수행될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 역할 <표 4> 트랜잭션의 읽기(read)/쓰기(write) 관계 트랜젝션 관계 T1 T2 동시접근 [관계 1] Read Read만 하면 아무 문제가 없음 허용 [관계 2] Write 오손(Dirty)데이터 읽기, 반복불가능 읽기, 유령(phantom)데이터 읽기 허용 or 불가( 선택 ) [관계 3] 갱신손실(절대 허용 불가) 허용불가(LOCK을 이용)
211
1) 갱신손실 (lost update) 문제 - 갱신손실 발생 : T2는 잘못된 데이터로 작업하여 잘못된 결과를 만든 다음
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 1) 갱신손실 (lost update) 문제 - 두 개의 트랜잭션이 한 개의 데이터를 동시에 갱신(update)할 때 발생 (데이터베이스에서 절대 발생하면 안 되는 현상) Process TI T2 버퍼 값 1 A=read_item(X); A=A-10; X=100 2 B=read_item(X); B=B+10; 3 write_item(A->X); X=90 4 write_item(B->X); X=110 - 갱신손실 발생 : T2는 잘못된 데이터로 작업하여 잘못된 결과를 만든 다음 T1의 갱신 작업을 무효화하고 덧쓰기를 수행한 것이다. T1의 갱신이 손실된 갱신손실(lost update) 이 발생.
212
2) 락(LOCK) - 갱신손실 문제 해결 : 락(LOCK) 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 2) 락(LOCK) - 갱신손실 문제 해결 : 락(LOCK) PROCESS TI T2 버퍼 값 1 LOCK(X) A=read_item(X); A=A-10; X=100 2 (wait... 대기) 3 write_item(A->X); UNLOCK(X); X=90 4 B=read_item(X); B=B+10; write_item(B->X); UNLOCK(X)
213
나. 락(LOCK)의 유형 (1) 락은 트랜잭션이 읽기를 할 때 사용하는 락인 공유락
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 나. 락(LOCK)의 유형 (1) 락은 트랜잭션이 읽기를 할 때 사용하는 락인 공유락 (SL, shared lock)과 읽고 쓰기를 할 때 사용하는 배타락 (XL, exclusive lock)으로 나뉨 (2) 공유락과 배타락을 사용하는 규칙 데이터에 락이 걸려있지 않으면 트랜잭션은 데이터에 락을 걸 수 있음 트랜잭션이 데이터 X를 읽기만 할 경우 SL(X)를 요청하고, 읽거나 쓰기를 할 경우 XL(X)를 요청 다른 트랜잭션이 데이터에 SL(X)을 걸어둔 경우, SL(X)의 요청은 허용하고 LX(X)는 허용하지 않음 다른 트랜잭션이 데이터에 XL(X)을 걸어둔 경우, SL(X)와 XL(X) 모두 허용하지 않음 - 트랜잭션이 락을 허용받지 못하면 대기 상태가 됨
214
3. 2단계 락킹 (2 phase locking) <표 5> 락(LOCK) 호환행렬
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 <표 5> 락(LOCK) 호환행렬 요청 상태 SL XL 허용 대기 3. 2단계 락킹 (2 phase locking)
215
가. 정의 : 락을 걸고 해제하는 시점에 제한을 두지 않으면 두 개의 트랜잭션이
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 가. 정의 : 락을 걸고 해제하는 시점에 제한을 두지 않으면 두 개의 트랜잭션이 동시에 실행될 때 데이터의 일관성이 깨질 수 있어 이를 방지하는 방법 나. 확장단계(Growing phase, Expanding phase) : 트랜잭션이 필요한 락을 획득하는 단계로, 이 단계에서는 이미 획득한 락을 해제하지 않음 다. 수축단계(Shrinking phase) : 트랜잭션이 락을 해제하는 단계로, 이 단계에서는 새로운 락을 획득하지 않음 라. 2단계 LOCK Process 사례 a. 작업 설명 : 두 개의 데이터에 두 개의 트랜잭션이 접근하여 갱신하는 작업 b. 문제 발생 : 락을 사용하되 2단계 락킹 기법을 사용하지 않을 경우 c. 문제 해결 : 2단계 락킹 기법을 사용할 경우
216
- 2단계 락킹 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 - 2단계 락킹 a. 문제 발생 : 락을 사용하되 2단계 락킹 기법을 사용하지 않을 경우 process T1 T2 A, B 값 1 XL(A) t1=read_item(A); t1=t1-10; A=write_item(t1); UN(A) A=90 B=100 2 t2=read_item(A); t2=t2*1.1; A=write_item(t2); LX(B) t2=read_item(B); B=write_item(t2); UN(B) A=99 B=110 3 XL(B) t1=read_item(B); t1=t1+10; B=write_item(t1); B=120 /* A+B=219 이 결과는 일관성 제약조건에 위배됨 */
217
3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 b. 문제 해결 : 2단계 락킹 기법을 사용할 경우 PROCESS T1 T2 A, B 값 1 XL(A) t1=read_item(A); t1=t1-10; A=write_item(t1); A=90 B=100 2 …(대기상태)… 3 XL(B) t1=read_item(B); t1=t1+10; B=write_item(t1); UN(A) UN(B) B=110 4 t2=read_item(A); t2=t2*1.1; A=write_item(t2); LX(B) t2=read_item(B); B=write_item(t2); A=99 B=121 /* A+B=220 이 결과는 일관성 제약조건을 지킴 */
218
4) 데드락(DeadLock) 가. 정의 : 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 4) 데드락(DeadLock) 가. 정의 : 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방 데이터에 대하여 락을 요청하면 무한 대기 상태에 빠질 수 있는 현상으로 교착상태라고도 함 나. LOCK Process 사례 a. 작업 설명 : 두 개의 데이터에 두 개의 트랜잭션이 접근하여 갱신하는 작업 b. 문제 발생 : SQL Server에서 데드락 발생 c. 문제 해결 일반적으로 데드락이 발생하면 DBMS는 T1 혹은 T2의 작업 중 하나를 강제로 중지시키므로서 해결.
219
3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 process T1 T2
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 process T1 T2 1 SET TRANSACTION NAME ‘T1’; UPDATE order SET prc=prc+1000 WHERE orderid=1; 2 SET TRANSACTION NAME ‘T2’; SET prc=prc*1.1 WHERE orderid=2; 3 …(대기상태)… 4 5 오류발생 및 강제중지 -> T2수행 후 UPDATE처리 UPDATE수행 완료 -> COMMIT;
220
5) 트랜잭션 고립 수준 - 트랜젝션 고립수준은 트랜젝션 동시성 보장과 관련된 용어
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 5) 트랜잭션 고립 수준 - 트랜젝션 고립수준은 트랜젝션 동시성 보장과 관련된 용어 - 고립수준이 높을수록 동시 수행되는 트랜젝션간 간섭 정도가 작으며 트랜젝션이 직렬적으로 수행됨, 트랜젝션의 동시성은 적으나 데이터일관성은 강함 - 고립수준이 낮을수록 동시 수행되는 트랜젝션간 간섭 정도가 높으며 트랜젝션이 병렬적으로 수행됨, 트랜젝션의 동시성은 크나 데이터일관성은 약함 · 트랜잭션 동시 실행 문제 · 트랜잭션 고립 수준 명령어 · 트랜잭션 고립 수준 실습
221
가. 오손(Dirty Read) 읽기 읽기 작업을 하는 트랜잭션 T1이 쓰기 작업을 하는 트랜잭션
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 가. 오손(Dirty Read) 읽기 읽기 작업을 하는 트랜잭션 T1이 쓰기 작업을 하는 트랜잭션 T2가 작업하는 중간에 데이터를 읽기 때문에 생기는 문제 작업 중인 트랜잭션 T2가 필요에 의해 작업을 철회(ROLLBACK)할 경우 트랜잭션 T1은 무효가 된 데이터를 읽게 되고 잘못된 결과를 도출하는 현상
222
가. 오손(dirty read) 읽기 - 오손 읽기(dirty read)를 실험 테이블
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 가. 오손(dirty read) 읽기 - 오손 읽기(dirty read)를 실험 테이블 /* 실험 테이블 생성 */ Drop TABLE Users; CREATE TABLE Users ( id INTEGER, name VARCHAR2(20), age NUMBER); INSERT INTO Users VALUES (1, 'HONG GILDONG', 30); SELECT * FROM Users; COMMIT;
223
나. 반복 불가능 읽기 (Non-Repeatable Read)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 나. 반복 불가능 읽기 (Non-Repeatable Read) - 트랜잭션 T1이 데이터를 읽고 트랜잭션 T2가 데이터를 쓰고 (갱신, UPDATE) 트랜잭션 T1이 다시 한 번 데이터를 읽을 때 생기는 문제 발생 트랜잭션 T1이 읽기 작업을 다시 한 번 반복할 경우 이전의 결과와 다른 결과 도출
224
- 상태도(Non-Repeatable Read)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 - 상태도(Non-Repeatable Read) (1) process : 두 개의 트랜잭션을 동시에 실행 트랜잭션 T1, T2가 동시에 실행된다. T1은 읽기만 하고 T2는 쓰기 (갱신, UPDATE)를 함. T1은 데이터를 읽고 작업을 한 후, T2가 변경한 데이터를 다시 한 번 읽어와 작업함 (2) 이상현상 발생 : 반복불가능 읽기 트랜젝션 T1이 데이터를 읽고 작업하던 중 T2가 데이터를 변경하였다. T1은 변경한 데이터를 보고 다시 한 번 작업을 했음. 오손 읽기와 달리 이번에는 T2가 COMMIT을 했기 때문에 정상데이터로 인식. 그런데 T1 입장에서는 같은 SQL 문이 다른 결과를 도출
225
3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
226
다. 유령데이터 읽기 (Phantom Read)
데이터베이스 오브젝트 생성하기 _14V2.3 226 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 다. 유령데이터 읽기 (Phantom Read) 한 트랜잭션 안에서 일정 범위의 레코드를 두번 이상 읽을 때, 첫번째 쿼리에서 없던 레코드가 두번째 쿼리에서 나타나는 현상이는 트랜잭션 도중 새로운 레코드가 삽입되는 것을 허용하기 때문에 나타나는 현상임 트랜잭션 T1이 데이터를 읽고 트랜잭션 T2가 데이터를 쓰고(삽입, INSERT) 트랜잭션 T1이 다시 한 번 데이터를 읽을 때 생기는 문제 트랜잭션 T1이 읽기 작업을 다시 한 번 반복할 경우 이전에 없던 데이터(유령 데이터)가 나타나는 현상 -
227
순서 process T1 : read T2 : write - 유령데이터 읽기(Phantom Read)사례 (READ결과출력)
데이터베이스 오브젝트 생성하기 _14V2.3 227 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 - 유령데이터 읽기(Phantom Read)사례 순서 process T1 : read (READ결과없음) T2 : write (내용삽입) (READ결과출력)
228
3. 트랜잭션 고립 수준 명령어 <표 6> 트랜잭션 고립 수준 명령어와 발생 현상
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 3. 트랜잭션 고립 수준 명령어 - 트랜잭션 고립 수준 명령어(transaction isolation level instruction)DBMS는 트랜잭션을 동시에 실행시키면서 락보다 좀 더 완화된 방법으로 문제를 해결하기 위해 제공하는 명령어 <표 6> 트랜잭션 고립 수준 명령어와 발생 현상 문제 고립 수준 오손 읽기 반복불가능 읽기 유령데이터 읽기 READ UNCOMMITTED 가능 READ COMMITTED 불가능 REPEATABLE READ SERIALIZABLE
229
1) READ UNCOMMITTED(Level = 0)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 1) READ UNCOMMITTED(Level = 0) - 고립 수준이 가장 낮은 명령어로, 자신의 데이터에 아무런 공유락을 걸지 않음 다른 트랜잭션에 공유락과 배타락이 걸린 데이터를 대기하지 않고 읽음. 심지어 다른 트랜잭션이 COMMIT하지 않은 데이터도 읽을 수 있음. 그 때문에 오손(dirty) 페이지의 데이터를 읽게 됨. (배타락은 갱신손실 문제 에 유효) <표 7> READ UNCOMMITTED 모드 요약 모드 READ UNCOMMITTED LOCK SELECT 문 - 공유락 걸지 않음 UPDATE 문 - 배타락 설정 다른 트랜잭션의 공유락과 배타락이 걸린 데이터를 읽음 SQL 문 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 문제점 오손 읽기, 반복불가능 읽기, 유령데이터 읽기
230
2) READ COMMITTED(Level=1)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 2) READ COMMITTED(Level=1) - 오손(dirty) 페이지의 참조를 피하기 위해 자신의 데이터를 읽는 동안 공유락을 걸지만 트랜잭션이 끝나기 전에라도 해지 가능 다른 트랜잭션 데이터는 락 호환성 규칙에 따라 진행. <표 8> READ COMMITTED 모드 요약 모드 READ COMMITTED LOCK SELECT 문 - 공유락을 걸고 끝나면 바로 해지 UPDATE 문 - 배타락 설정 다른 트랜잭션이 설정한 공유락은 읽지만 배타락은 읽지 못함 SQL 문 SET TRANSACTION ISOLATION LEVEL READ COMMITTED 문제점 반복불가능 읽기, 유령데이터 읽기
231
3) REPEATABLE READ(Level=2)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 3) REPEATABLE READ(Level=2) - 자신의 데이터에 설정된 공유락과 배타락을 트랜잭션이 종료할 때까지 유지하여 다른 트랜잭션이 자신의 데이터를 갱신(UPDATE)할 수 없도록 함 다른 트랜잭션 데이터는 락 호환성 규칙에 따라 진행한다. 다른 고립화 수준에 비해 데이터의 동시성(concurrency)이 낮아 특별하지 않은 상황이라면 사용하지 않는 것이 좋음 <표 9> REPEATABLE READ 모드 요약 모드 REPEATABLE READ LOCK SELECT 문 - 공유락을 걸고 트랜잭션을 끝까지 유지 UPDATE 문 - 배타락 설정 다른 트랜잭션이 설정한 공유락은 읽지만 배타락은 읽지 못함 SQL 문 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 문제점 유령데이터 읽기
232
4) SERIALIZABLE(Level=3)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 4) SERIALIZABLE(Level=3) - 고립 수준이 가장 높은 명령어로, 실행 중인 트랜잭션은 다른 트랜잭션으로부터 완벽하게 분리됨 데이터 집합에 범위를 지어 잠금을 설정할 수 있기 때문에 다른 사용 자가 데이터를 변경하려고 할 때 트랜잭션을 완벽하게 분리할 수 있음. - 이 명령어는 네 가지 고립화 수준 중 제한이 가장 심하고 데이터의 동시성도 낮음. - SELECT 질의의 대상이 되는 테이블에 미리 배타락을 설정한 것과 같은 효과를 냄
233
<표 10> SERIALIZABLE 모드 요약 모드 SERIALIZABLE LOCK
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 <표 10> SERIALIZABLE 모드 요약 모드 SERIALIZABLE LOCK SELECT 문 - 공유락을 걸고 트랜잭션을 끝까지 유지 UPDATE 문 - 배타락 설정 다른 트랜잭션이 설정한 공유락은 읽지만 배타락은 읽지 못함 인덱스에 공유락을 설정하여 다른 트랜잭션의 INSERT 문이 금지됨 SQL 문 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 문제점 없음
234
3) 회복 - 트랜잭션과 회복 - 로그 파일 - 로그 파일을 이용한 회복 - 체크포인트를 이용한 회복
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 3) 회복 - 트랜잭션과 회복 - 로그 파일 - 로그 파일을 이용한 회복 - 체크포인트를 이용한 회복 가. 정의 : 데이터베이스에 장애 (Failure)가 발생했을 때 데이터베이스를 일관성 (Consistent state)있는 상태로 되돌리는 DBMS의 기능
235
[그림 6] Tranction 회복 상태도(일반 예)
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 [그림 6] Tranction 회복 상태도(일반 예)
236
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 나. 데이터베이스 시스템에서 발생할 수 있는 장애 유형 - 시스템 충돌 : 하드웨어 혹은 소프트웨어의 오류로 인하여 주기억장치가 손실되는 것. 주기억장치에 상주하여 처리 중인 프로그램과 데이터의 일부 혹은 전부가 손실됨 - 미디어 장애 : 헤드의 충돌이나 읽기 장애에 의하여 보조기억장치의 일부 데이터가 손실되는 것. 보조기억장치에 저장 중인 데이터의 일부 혹은 전부가 손실됨 - 응용 소프트웨어 오류 : 데이터베이스에 접근하는 소프트웨어의 논리적인 오류로 트랜잭션의 수행이 실패하는 것 - 자연재해 : 화재, 홍수, 지진, 정전 등에 의해 컴퓨터 시스템이 손상되는 것 - 부주의 혹은 태업sabotage : 운영자나 사용자의 부주의로 데이터가 손실 되거나 의도적인 손상을 입는 것
237
- 트랜잭션 단위가 완료될 때까지 DB에 Write 연산을 지연시키고 Log에만 기록한다.
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 다. 지연갱신 기법 (1) 갱신 - 트랜잭션 단위가 완료될 때까지 DB에 Write 연산을 지연시키고 Log에만 기록한다. - 트랜잭션이 완료되면 Log를 이용하여 데이터베이스에 Write 연산을 수행한다. (2) 회복 - 트랜잭션이 완료가 안된 상태이면 Undo 작업 없이 Log 정보를 무시한다. - 트랜잭션이 완료된 상태이면 Log 정보를 이용하여 Redo를 수행한다. 라. 즉시갱신 기법 - 트랜잭션 수행 중에 갱신 결과를 DB에 즉시 반영하고 Log에 기록한다. - Log에는 갱신되는 항목의 이전 값과 새로운 값 모두를 기록한다. - 트랜잭션이 완료가 안된 상태이면 Log 정보를 이용하여 Undo를 수행한다. - 트랜잭션이 완료된 상태이면 Redo를 수행한다.
238
마. 검사점(Checkpoint) 회복 기법 (1) 개요 - 시스템에 장애가 발생하면 Log를 참조하여 Redo할 트랜잭션과
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 마. 검사점(Checkpoint) 회복 기법 (1) 개요 - 시스템에 장애가 발생하면 Log를 참조하여 Redo할 트랜잭션과 Undo할 트랜잭션을 결정해야 함 - 복구 시에 시스템 부하를 줄이기 위해 주기적으로 Checkpoint를 둘 수 있슴 - Log 유지는 지연갱신 기법이나 즉시갱신 기법 중 하나를 사용 (2) Checkpoint 수행 - 변경된 모든 버퍼 블록을 디스크에 기록한다. - Log에 Checkpoint를 기록한다. (3) 회복 - Log 끝에서부터 역방향으로 첫 Checkpoint를 찾기 전까지 Log를 검색 - 검색된 트랜잭션 중에서 완료된 경우는 Redo 연산을 실행하고, 완료가 안된 경우는 Undo 연산을 실행 (지연갱신 기법을 사용했을 경우에는 Undo 연산이 불필요하다) - Checkpoint 이전에 완료된 트랜잭션은 Redo 연산에서 제외
239
4. DB오브젝트 완료보고 (1) 개요 - 시스템에 장애가 발생하면 Log를 참조하여 Redo할 트랜잭션과
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 4. DB오브젝트 완료보고 (1) 개요 - 시스템에 장애가 발생하면 Log를 참조하여 Redo할 트랜잭션과 Undo할 트랜잭션을 결정해야 함 - 복구 시에 시스템 부하를 줄이기 위해 주기적으로 Checkpoint를 둘 수 있슴 - Log 유지는 지연갱신 기법이나 즉시갱신 기법 중 하나를 사용 (2) Checkpoint 수행 - 변경된 모든 버퍼 블록을 디스크에 기록한다. - Log에 Checkpoint를 기록한다. (3) 회복 - Log 끝에서부터 역방향으로 첫 Checkpoint를 찾기 전까지 Log를 검색 - 검색된 트랜잭션 중에서 완료된 경우는 Redo 연산을 실행하고, 완료가 안된 경우는 Undo 연산을 실행 (지연갱신 기법을 사용했을 경우에는 Undo 연산이 불필요하다) - Checkpoint 이전에 완료된 트랜잭션은 Redo 연산에서 제외
240
5. 무결성 및 오브젝트 적절성 완료보고 예시 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 5. 무결성 및 오브젝트 적절성 완료보고 예시
241
문제1 : 다음 중 데이터 무결성 종류에 속하지 않는 것은?
데이터베이스 오브젝트 생성하기 _14V2.3 3-3. DB의 적정성과 무결성을 판단하고 DB오브젝트 완료보고 정답 확인 문제1 : 다음 중 데이터 무결성 종류에 속하지 않는 것은? 개체 무결성(Entity Integrity) 참조 무결성(Reference Integrity) 인덱스 무결성(Index Integrity) 도메인 무결성(Domain Integrity) 정답: (3)인덱스 무결성(Index Integrity) 해설: 인덱스에는 무결성 조건이 없음 평가! 문항~
Similar presentations