238
1 초초초초 초초 초초초 초초초초 초초 초초초 10g 10g

초보자를 위한 오라클 10g

  • Upload
    derick

  • View
    65

  • Download
    0

Embed Size (px)

DESCRIPTION

초보자를 위한 오라클 10g. 목차. - PowerPoint PPT Presentation

Citation preview

1

초보자를 위한 오라클 초보자를 위한 오라클 10g10g초보자를 위한 오라클 초보자를 위한 오라클 10g10g

2

Chapter1. Chapter1. 데이터베이스데이터베이스Chapter2. Chapter2. 오라클 설치오라클 설치Chapter3. Chapter3. 오라클 메모리오라클 메모리Chapter4. Chapter4. 오라클 프로세스오라클 프로세스Chapter5. Chapter5. 오라클 엑세스 및 시스템 뷰오라클 엑세스 및 시스템 뷰Chapter6. Chapter6. 오라클 필수 파일오라클 필수 파일Chapter7. Chapter7. 오라클 시작과 종료오라클 시작과 종료Chapter8. Chapter8. 리두 로그 파일 및 아카이브 로그 파일리두 로그 파일 및 아카이브 로그 파일Chapter9. Chapter9. 오라클 스토리지오라클 스토리지Chapter10. Chapter10. 테이블스페이스테이블스페이스Chapter11. Chapter11. 오라클 오브젝트오라클 오브젝트Chapter12. Chapter12. 언두 데이터언두 데이터Chapter13. Chapter13. 제약 조건제약 조건Chapter14. Chapter14. 유저 및 권한 유저 및 권한 Chapter15. Chapter15. 플래쉬백 및 데이터 펌프플래쉬백 및 데이터 펌프

목차목차

3

Chapter1. Chapter1. 데이터베이스데이터베이스

4

1. 데이터베이스1. DBMS1. DBMS 의 개요의 개요

프로그램프로그램 프로그램프로그램 프로그램프로그램……

데이터베이스

DBMSDBMS • 중복성 통제• 메타 데이터 관리 • 사용자 중심의 데이터 처리• 데이터 일관성 유지• 데이터 정합성 보장• 백업 및 복구 기능• 질의 처리• 보안 기능

5

1. 데이터베이스2. DBMS 2. DBMS 언어언어

데이터베이스

• 데이터 정의어

• 데이터 제어어

• 데이터 조작어

• 데이터 검색어

쿼리 (Query)

Insert, Update 및 Delete

Grant, Revoke

Create, Alter

6

1. 데이터베이스3. 3. 오라클 종류오라클 종류

• 오라클 엔터프라이즈 에디션

• 오라클 스탠다드 에디션

• 오라클 퍼스널 에디션

• 오라클 라이트 에디션

모바일 데이터베이스 구축

개발용 버전

추가 기능이 없음

일반 기업용 버전

7

Chapter2. Chapter2. 오라클 설치오라클 설치

8

2. 오라클 설치 오라클 관리자 업무오라클 관리자 업무

오라클 데이터베이스의 설계 , 구현 및 관리에 대한 업무를 우선 순위에

따라 살펴보면 다음과 같습니다 .

1. 데이터베이스 서버 하드웨어 평가

2. Oracle 소프트웨어 설치

3. 데이터베이스 및 보안 전략 계획

4. 데이터베이스 생성 , 이전 및 열기

5. 데이터베이스 백업

6. 시스템 유저 등록 및 해당 유저의 Oracle 네트워크 액세스 계획

7. 데이터베이스 설계 구현

8. 데이터베이스 failure 로부터 recovery

9. 데이터베이스 성능 모니터

9

2. 오라클 설치 오라클 데이타베이스 관리 도구오라클 데이타베이스 관리 도구

Oracle Universal Installer Database Configuration Assistant Database Upgrade Assistant Oracle Net Manager Oracle Enterprise Manager SQL*Plus 및 iSQL*Plus Recovery Manager Oracle Secure Backup 데이터 펌프

10

2. 오라클 설치 오라클 데이타베이스 관리 도구오라클 데이타베이스 관리 도구

명령행 툴

Enterprise Manager 를 관리하려면

다음 명령을 사용합니다 .

emctl start | status | set | stop iSQL*Plus 를 중지하거나 시작하려면

다음 명령을 사용합니다 .

isqlplusctl start | stop 리스너를 관리하려면 다음 명령을 사용합니다 .

lsnrctl help | start | status | stop

11

2. 오라클 설치1. 1. 오라클 설치를 위한 사전 절차오라클 설치를 위한 사전 절차

시스템 요구 사항시스템 요구 사항

운영 체제 요구 사항운영 체제 요구 사항

운영 체제 커널 파라메터운영 체제 커널 파라메터

필요한 디렉토리 생성필요한 디렉토리 생성

운영 체제 유저 / 그룹 생성운영 체제 유저 / 그룹 생성

12

2. 오라클 설치1. 1. 오라클 설치를 위한 사전 절차 – 시스템 요구사항오라클 설치를 위한 사전 절차 – 시스템 요구사항

메모리 요구 사항 : 1GB: Database Control 이 포함된 instance 용

디스크 공간 요구 사항 : 1.5GB 의 스왑 스페이스

400MB 의 /tmp 디렉토리 디스크 공간 1.5~3.5GB 의 Oracle 소프트웨어용 공간 1.2GB 의 미리 구성된 데이터베이스용 공간 ( 선택 사항 ) 2.4GB 의 Flash Recovery Area( 선택 사항 )

운영 체제 : 설명서를 참조하십시오 .

13

2. 오라클 설치1. 1. 오라클 설치를 위한 사전 절차 – 시스템 요구사항오라클 설치를 위한 사전 절차 – 시스템 요구사항

적절한 임시공간64-bit 와 32-bit 문제 올바른 운영 체제 (OS) 인지 검사OS 패치 레벨시스템 패키지시스템 및 커널 파라미터X 서버 사용 권한충분한 스와핑비어있지 않은 ORACLE_HOME

14

2. 오라클 설치1. 1. 오라클 설치를 위한 사전 절차 – 환경 변수 설정오라클 설치를 위한 사전 절차 – 환경 변수 설정

ORACLE_BASE: OFA 에 대한 Oracle 디렉토리 구조의 기준 ORACLE_HOME: Oracle 소프트웨어를 포함하는 디렉토리 ORACLE_SID: 초기 instance 이름 ( 기본적으로 ORCL) NLS_LANG: 언어 , 지역 (territory) 및 클라이언트 character

set 설정

15

2. 오라클 설치2. 2. 오라클 설치 작업 절차 오라클 설치 작업 절차

X 윈도우 설정 인스톨러 실행

기본 정보 설정

설치 타입 선정

설치 목록 선택 설정

설치 종료

인스톨러 설치

사전 필요 작업 확인

설치

링크 및 기타 설정

16

2. 오라클 설치3. 3. 오라클 설치 절차오라클 설치 절차

설치 초기 화면 Deinstall Product 선택

17

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

설치 목록 확인 Close 선택

18

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

오라클 인스톨러 정보 기입 Next 선택

19

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

orainstRoot.sh 수행 Continue 선택

20

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

설치 파일이 존재하는 Source 및 오라클을 설치할 파일 시스템 지정 Next 선택

21

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 타입 설정 Next 선택

22

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 사전 작업 확인 Next 선택

23

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 사전 작업 내용 확인 Next 선택

24

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

설치할 Product Components 선택 Next 선택

25

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

운영 체제 그룹 설정 Next 선택

26

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

데이터베이스 생성 설정 Next 선택

27

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

설치 정보 확인 Install 선택

28

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 시작 ( 파일 복사 )

29

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 시작 ( 링크 단계 )

30

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 시작 ( 환경 설정 )

31

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

Root.sh 수행 OK 선택

32

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

오라클 넷 설정 Next 선택

33

2. 오라클 설치3. 3. 오라클 설치 절차 오라클 설치 절차

인스톨 종료 Exit 선택

34

2. 오라클 설치4. 4. 데이터베이스 구조 데이터베이스 구조

오라클 데이터베이스

데이터 파일데이터 파일

컨트롤 파일컨트롤 파일

리두로그 파일리두로그 파일

기타 파일기타 파일

데이터베이스 필수 요소

35

2. 오라클 설치4. 4. 데이터베이스 생성 데이터베이스 생성 - - 계획계획

DBA 는 다음과 같은 사항을 계획해야 합니다 .

데이터베이스의 논리적 저장 영역 구조 및 물리적 구현 데이터베이스에 사용할 디스크 드라이브 개수 필요한 데이터 파일 개수 ( 확장 계획 )

사용할 테이블스페이스 개수 저장할 정보 유형 유형 또는 크기에 따른 특별한 저장 영역 요구 사항

전체 데이터베이스 설계 데이터베이스 백업 전략

36

2. 오라클 설치5. 5. 수동 데이터베이스 생성 수동 데이터베이스 생성

파라메터 파일 생성

데이터베이스 생성

필요 스크립트 수행

데이터베이스 생성 완료

> cat /oracle/app/oracle/product/10.1/dbs/initORATEST.ora

compatible='10.1.0.2' # 데이터베이스 버전

db_name=ORATEST # 데이터베이스 이름

instance_name=ORATEST # 데이터베이스 인스턴스 이름

control_files='/data1/control01.ctl' # 데이터베이스 컨트롤 파일 이름

db_block_size=8192 # 데이터베이스 블록 크기 지정

db_cache_size = 80M # 버퍼 캐쉬 크기

large_pool_size = 3M # Large Pool 크기

log_buffer = 1048576 # 로그 버퍼 크기

shared_pool_size = 50M # 공유 풀 (Shard Pool) 크기

sort_area_size = 1048576 # 메모리 정렬 영역 크기

undo_management=AUTO # 언두 세그먼트 관리 방식

undo_tablespace=UNDOTBS1 # 언두 테이블 스페이스 이름

> cat /oracle/app/oracle/product/10.1/dbs/initORATEST.ora

compatible='10.1.0.2' # 데이터베이스 버전

db_name=ORATEST # 데이터베이스 이름

instance_name=ORATEST # 데이터베이스 인스턴스 이름

control_files='/data1/control01.ctl' # 데이터베이스 컨트롤 파일 이름

db_block_size=8192 # 데이터베이스 블록 크기 지정

db_cache_size = 80M # 버퍼 캐쉬 크기

large_pool_size = 3M # Large Pool 크기

log_buffer = 1048576 # 로그 버퍼 크기

shared_pool_size = 50M # 공유 풀 (Shard Pool) 크기

sort_area_size = 1048576 # 메모리 정렬 영역 크기

undo_management=AUTO # 언두 세그먼트 관리 방식

undo_tablespace=UNDOTBS1 # 언두 테이블 스페이스 이름

37

2. 오라클 설치5. 5. 수동 데이터베이스 생성 수동 데이터베이스 생성

파라메터 파일 생성

데이터베이스 생성

필요 스크립트 수행

데이터베이스 생성 완료

SQL> CREATE DATABASE ORATEST

USER SYS IDENTIFIED BY oracle

USER SYSTEM IDENTIFIED BY oracle

LOGFILE GROUP 1 ('/data1/redo01a.log') SIZE 5M,

GROUP 3 ('/data3/redo03a.log') SIZE 5M7

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 1000

MAXINSTANCES 1

CHARACTER SET KO16KSC5601

NATIONAL CHARACTER SET AL16UTF16

DATAFILE '/data1/system_01.dbf' SIZE 200M REUSE

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE '/data2/sysaux_01.dbf' SIZE 325M REUSE

DEFAULT TABLESPACE tbs_1 datafile '/data1/tbs_01.dbf' size 10M

DEFAULT TEMPORARY TABLESPACE temp

TEMPFILE '/data3/temp_01.dbf' SIZE 200M REUSE

UNDO TABLESPACE undotbs1

DATAFILE '/data2/undotbs1_01.dbf' SIZE 100M REUSE

AUTOEXTEND ON MAXSIZE UNLIMITED;

SQL> CREATE DATABASE ORATEST

USER SYS IDENTIFIED BY oracle

USER SYSTEM IDENTIFIED BY oracle

LOGFILE GROUP 1 ('/data1/redo01a.log') SIZE 5M,

GROUP 3 ('/data3/redo03a.log') SIZE 5M7

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 1000

MAXINSTANCES 1

CHARACTER SET KO16KSC5601

NATIONAL CHARACTER SET AL16UTF16

DATAFILE '/data1/system_01.dbf' SIZE 200M REUSE

EXTENT MANAGEMENT LOCAL

SYSAUX DATAFILE '/data2/sysaux_01.dbf' SIZE 325M REUSE

DEFAULT TABLESPACE tbs_1 datafile '/data1/tbs_01.dbf' size 10M

DEFAULT TEMPORARY TABLESPACE temp

TEMPFILE '/data3/temp_01.dbf' SIZE 200M REUSE

UNDO TABLESPACE undotbs1

DATAFILE '/data2/undotbs1_01.dbf' SIZE 100M REUSE

AUTOEXTEND ON MAXSIZE UNLIMITED;

노마운트 단계에서 수행

38

2. 오라클 설치5. 5. 수동 데이터베이스 생성 수동 데이터베이스 생성

파라메터 파일 생성

데이터베이스 생성

필요 스크립트 수행

데이터베이스 생성 완료

> sqlplus '/as sysdba'

SQL> @$ORALCE_HOME/rdbms/admin/catalog.sql

SQL> @$ORALCE_HOME/rdbms/admin/catproc.sql

> sqlplus '/as sysdba'

SQL> @$ORALCE_HOME/rdbms/admin/catalog.sql

SQL> @$ORALCE_HOME/rdbms/admin/catproc.sql

데이터 딕셔너리 뷰 생성

패키지 및 프로시져 생성

39

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

DBCA 수행

40

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

DBCA 시작 화면 다음 선택

41

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 생성 선택 다음 선택

42

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 생성 템플리트 선택 다음 선택

43

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

환경 설정 다음 선택

44

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

오라클 엔터프라이즈 매니저 설정 다음 선택

45

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

암호지정 다음 선택

46

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

저장 방식 설정 다음 선택

47

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 파일 위치 설정 다음 선택

48

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

플래시백 및 아카이브 설정 다음 선택

49

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

샘플 스키마 설정 다음 선택

50

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 환경 설정 다음 선택

51

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 환경 확인 및 변경 다음 선택

52

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 생성 선택 완료 선택

53

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 생성

54

2. 오라클 설치5. 5. 자동 데이터베이스 생성 자동 데이터베이스 생성

데이터베이스 생성 완료

55

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

일반 유저

오라클 넷 데이터베이스

• Oracle Names

• 로컬 이름 방식• 호스트 이름 방식

• 디렉토리 이름 지정

디렉토리 서버 이용

호스트 이름 도는 IP Tnsnames.ora

오라클 자체 디렉토리

서버 이용

56

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

Ldap.ora Names.ora

tnsnames.ora sqlnet.oralistener.ora

오라클 넷

57

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

Listener.ora

Tnsnames.ora

접속

LISTENER=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521))

)

)

SID_LIST_LISTENER =

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=sales.us.acme.com)

(ORACLE_HOME=/oracle9i)

(SID_NAME=sales)

)

)

LOG_DIRECTORY_listener=/oracle/network/admin/log

LOG_FILE_listener=list.log

LISTENER=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521))

)

)

SID_LIST_LISTENER =

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=sales.us.acme.com)

(ORACLE_HOME=/oracle9i)

(SID_NAME=sales)

)

)

LOG_DIRECTORY_listener=/oracle/network/admin/log

LOG_FILE_listener=list.log

로컬 이름 지정 방식

Listener 기동

58

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

Listener.ora

Tnsnames.ora

접속

> lsnrctl start 리스너명

> lsnrctl status 리스너명

Connecting to DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))

STATUS of the 리스너명

Alias LISTENER

Start Date 23-SEP-2005 05:15:30

Uptime 84 days 10 hr. 39 min. 38 sec

Trace Level OFF

Security OFF

Listener Parameter File /oracle/product/10.1/network/admin/listener.ora

Listener Log File /oracle/product/10.1/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST)(PORT=1521)))

> lsnrctl stop 리스너명

> lsnrctl start 리스너명

> lsnrctl status 리스너명

Connecting to DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))

STATUS of the 리스너명

Alias LISTENER

Start Date 23-SEP-2005 05:15:30

Uptime 84 days 10 hr. 39 min. 38 sec

Trace Level OFF

Security OFF

Listener Parameter File /oracle/product/10.1/network/admin/listener.ora

Listener Log File /oracle/product/10.1/network/log/listener.log

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=TEST)(PORT=1521)))

> lsnrctl stop 리스너명

로컬 이름 지정 방식

Listener 기동

59

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

Listener.ora

Tnsnames.ora

접속

로컬 이름 지정 방식

Listener 기동 ORA8 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS=(PROTOCOL=TCP)(HOST=203.235.207.233)(PORT=1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = OCBSTEST)

)

)

ORA8 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS=(PROTOCOL=TCP)(HOST=203.235.207.233)(PORT=1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = OCBSTEST)

)

)

60

2. 오라클 설치6. 6. 오라클 넷 오라클 넷

Listener.ora

Tnsnames.ora

접속 > sqlplus scott/tiger@ora8> sqlplus scott/tiger@ora8

로컬 이름 지정 방식

Listener 기동

61

Chapter3. Chapter3. 오라클 메모리오라클 메모리

62

3. 오라클 메모리1. 1. 오라클 메모리 종류오라클 메모리 종류

서버 프로세스서버 프로세스

서버 프로세스서버 프로세스

PGA

PGA

SGA

서버 프로세스서버 프로세스PGA

63

3. 오라클 메모리2. PGA2. PGA

정렬 공간(Sort Area)

정렬 공간(Sort Area)

세션 정보(Session

Information)

세션 정보(Session

Information)

커서 상태 정보(Cursor State)

커서 상태 정보(Cursor State)

변수 저장 공간(Stack Space)변수 저장 공간

(Stack Space)

PGA

서버 프로세스서버 프로세스

64

3. 오라클 메모리3. SGA3. SGA

공유 풀 (Shard Pool) 데이터 버퍼 캐쉬(Data Buffer Cache)

리두 로그 버퍼(Redo Log Buffer)

라이브러리 캐쉬(Library Cache)

데이터 딕셔너리 캐쉬(Data Dictionary

Cache)

대형 풀 (Large Pool) 자바 풀 (Java Pool)

SGA

V$SGA

V$PARAMETER

V$SPPARAMETER

V$SGA_DYNAMIC_COMPONENTS

show parameter 명령어

V$SGA

V$PARAMETER

V$SPPARAMETER

V$SGA_DYNAMIC_COMPONENTS

show parameter 명령어

65

3. 오라클 메모리4. 4. 공유 풀공유 풀

공유 풀 (Shard Pool)

session=100process=150…

라이브러리 캐쉬

데이터 딕셔너리 캐쉬

동적 영역(Dynamic Area)

고정 영역(Permanent Area)

66

3. 오라클 메모리5. 5. 공유 풀 개념공유 풀 개념

SELECT * FROM 사원SELECT * FROM 사원

공유 풀공유 풀

라이브러리 캐쉬

SELECT * FROM 사원

데이터 딕셔너리 캐쉬

사원 테이블 정보

67

3. 오라클 메모리6. 6. 데이터 버퍼 캐쉬데이터 버퍼 캐쉬

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

서버 프로세스서버 프로세스 DBWRDBWR

디스크로부터 데이터를 읽음 디스크로 데이터 저장

68

3. 오라클 메모리7. 7. 데이터 버퍼 캐쉬 응용데이터 버퍼 캐쉬 응용

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

재활용

기본

고정

69

3. 오라클 메모리8. 8. 리두 로그 버퍼리두 로그 버퍼

INSERT INTO TAB1 (ID, 이름 ) VALUES(‘A123’,’ 황오현’ )INSERT INTO TAB1 (ID, 이름 ) VALUES(‘A123’,’ 황오현’ )

리두 로그 버퍼

DBA, INSERT,TAB1,DELETE,TAB1

LGWRLGWR

로그 정보

서버 프로세스서버 프로세스

디스크

70

3. 오라클 메모리9. 9. 대형 풀대형 풀

I/O 서버 프로세스I/O 서버 프로세스

UGAUGA

병렬 프로세싱병렬 프로세싱

RMANRMAN

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

대형 풀

71

3. 오라클 메모리10. 10. 자바 풀자바 풀

자바 명령 파싱자바 명령 파싱

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

자바 풀

72

3. 오라클 메모리11. 11. 공유 메모리 자동 관리공유 메모리 자동 관리

데이터 버퍼 캐시데이터 버퍼 캐시

공유 풀공유 풀

대형 풀대형 풀

자바 풀자바 풀

SGA

MMANMMAN

* 업무 부하 파악* 자동 크기 조정

SGA_TARGET=1024MSGA_TARGET=1024M

메모리 사용 효율 증가메모리 사용 효율 증가

메모리 부족으로 인한 에러 감소

메모리 부족으로 인한 에러 감소

TYPICAL 또는 ALL 로 설정

STATISTICS_LEVEL 파라메터STATISTICS_LEVEL 파라메터

SGA_TARGET 파라메터SGA_TARGET 파라메터

0 이 아닌 값으로 설정

메모리 관리 요소 감소메모리 관리 요소 감소

효과

공유 메모리 자동 관리 설정

73

Chapter4. Chapter4. 오라클 프로세스오라클 프로세스

74

4. 오라클 프로세스1. 1. 오라클 프로세스오라클 프로세스

공유 풀(Shard Pool)

데이터 버퍼 캐쉬

리두 로그 버퍼

라이브러리 캐쉬데이터 딕셔너리

캐쉬

대형 풀 자바 풀

SGA

PMONPMON SMON SMON DBWRDBWR LGWRLGWR

ARCHARCH

CKPTCKPT

DMnnDMnn

MMANMMAN

MMONMMON

MMNLMMNL

RVWRRVWR

PnnnPnnn

기타기타

SnnnSnnn

DnnnDnnn

필수 백그라운드 프로세스

선택 백그라운드 프로세스 오라클 10g 추가 백그라운드 프로세스

서버 프로세스서버 프로세스 서버 프로세스서버 프로세스 서버 프로세스서버 프로세스

유저 프로세스유저 프로세스 유저 프로세스유저 프로세스 유저 프로세스유저 프로세스

75

4. 오라클 프로세스2. 2. 데이터베이스 기록자 백그라운드 프로세스데이터베이스 기록자 백그라운드 프로세스 (DBWR)(DBWR)

UPDATE TEST SET A=‘B’ WHERE 이름 = ‘ 이창구’ ;

UPDATE TEST SET A=‘B’ WHERE 이름 = ‘ 이창구’ ;

변경된 데이터 저장

SGA

데이터 버퍼 캐쉬

A B

리두 로그 버퍼공유 풀

DBWRDBWRA

TEST 테이블

지연 쓰기 (Deferred Write)

빠른 커밋 (Faster Commit)

지연 쓰기 (Deferred Write)

빠른 커밋 (Faster Commit)

* 체크포인트 발생 * 더티 버퍼 임계치 도달 * 프리 버퍼 검색 임계치 도달 * 테이블스페이스 변경 시 * 테이블 변경 시 (Read Only) * 테이블 스페이스 백업 상태 * Time Out 발생 시

* 체크포인트 발생 * 더티 버퍼 임계치 도달 * 프리 버퍼 검색 임계치 도달 * 테이블스페이스 변경 시 * 테이블 변경 시 (Read Only) * 테이블 스페이스 백업 상태 * Time Out 발생 시

76

4. 오라클 프로세스3. 3. 로그 기록자 백그라운드 프로세스로그 기록자 백그라운드 프로세스 (LGWR)(LGWR)

SGA

A B

데이터 버퍼 캐쉬

A B

리두 로그 버퍼공유 풀

DBWRDBWR

A

TEST 테이블

UPDATE TEST SET A=‘B’ WHERE 이름 = ‘ 이창구’ ;

UPDATE TEST SET A=‘B’ WHERE 이름 = ‘ 이창구’ ;

리두 로그 파일

A B

LGWRLGWR

* 커밋을 수행할 경우 * DBWR 이 변경된 데이터 블록을 저장하기 전 * 리두 로그 버퍼의 1/3 이상 사용 * 1MB 이상의 리두 로그 생성 시 * 3 초 마다 (Time Out)

* 커밋을 수행할 경우 * DBWR 이 변경된 데이터 블록을 저장하기 전 * 리두 로그 버퍼의 1/3 이상 사용 * 1MB 이상의 리두 로그 생성 시 * 3 초 마다 (Time Out)

77

4. 오라클 프로세스4. 4. 프로세스 모니터 백그라운드 프로세스프로세스 모니터 백그라운드 프로세스 (PMON)(PMON)

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

서버 프로세스서버 프로세스

작업 실패

PMONPMON

사원 테이블테이블에 락 (Lock) 발생

리소스 할당 락 (Lock) 해소 및 리소스 할당 해제

작업 롤백

78

4. 오라클 프로세스5. 5. 시스템 모니터 백그라운드 프로세스시스템 모니터 백그라운드 프로세스 (SMON)(SMON)

SMONSMON

테이블

장애 발생

롤백 세그먼트

임시 세그먼트

인스턴스 복구 수행

테이블의 연속된 공간 통합

OPTIMAL 크기 유지

임시 세그먼트 제거

79

4. 오라클 프로세스6. 6. 체크포인트 백그라운드 프로세스체크포인트 백그라운드 프로세스 (CKPT)(CKPT)

리두 로그 파일

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

LGWRLGWR

테이블

DBWRDBWR CKPTCKPT

디스크에 기록을 제어

80

4. 오라클 프로세스7. 7. 기타 백그라운드 프로세스기타 백그라운드 프로세스

리두 로그 파일

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

테이블

ARCHARCH백업 리두 로그 파일

RECORECOSnnnSnnnDnnnDnnn

분산 시스템공유 서버 (MTS) 환경

정기적인 작업

CJQ0CJQ0

JnnnJnnn

PnnnPnnn

대용량 작업

81

4. 오라클 프로세스8. 8. 오라클 오라클 10g10g 에 추가된 백그라운드 프로세스에 추가된 백그라운드 프로세스

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

테이블MMONMMON

MMNLMMNL

디스크로 저장

플래쉬백(Flash Back)

플래쉬백(Flash Back)

RVWR

성능 데이터 수집

공유 메모리 자동 관리 기능

MMANMMAN

자기 진단

DMnnDMnn

데이터 펌프(Data Pump)

82

Chapter5. Chapter5. 오라클 엑세스와 시스템 뷰오라클 엑세스와 시스템 뷰

83

5. 오라클 프로세스1. 1. 엑세스엑세스

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

로그

리두 로그 파일언두 테이블스페이스

일반 테이블스페이스

시스템 테이블스페이스

SQL

서버 프로세스서버 프로세스

UPDATE 급여SET 상여 = 연봉 *0.1WHERE 고과 = ‘A’

UPDATE 급여SET 상여 = 연봉 *0.1WHERE 고과 = ‘A’

유저 프로세스유저 프로세스 세션 정보세션 정보

데이터 딕셔너리 캐쉬

라이브러리 캐쉬

2750 2500

고과 연봉A 2500C 3500

84

5. 오라클 프로세스2. 2. 구문분석구문분석

기존 동일 SQL 에 대한 정보 존재 유무 검색

기존 동일 SQL 에 대한 정보 존재 유무 검색

기존 구문 분석 정보 이용

기존 구문 분석 정보 이용

구문 분석

구문 분석 수행

구문 분석 수행

존재존재

SELECT * FROM EMPSELECT * FROM EMP

쿼리 수행

예 아니요

문장 확인 및 데이터베이스 분석

문장 확인 및 데이터베이스 분석

서버 프로세스서버 프로세스

단순화 및 권한 확인단순화 및 권한 확인

락 (Lock)락 (Lock)

실행 계획 및 구문 분석 트리 생성

실행 계획 및 구문 분석 트리 생성

85

5. 오라클 프로세스3. 3. 데이터 딕셔너리 뷰데이터 딕셔너리 뷰

오브젝트 관련오브젝트 관련

스토리지 관련스토리지 관련

기타기타

데이터 딕셔너리 뷰

유저 및 권한 관련

86

5. 오라클 프로세스4. 4. 데이터 딕셔너리 뷰데이터 딕셔너리 뷰

세션 관련세션 관련

대기 이벤트 관련대기 이벤트 관련

기타기타

동적 성능 뷰

87

Chapter6. Chapter6. 오라클 필수 파일오라클 필수 파일

88

6. 오라클 필수 파일1. 1. 오라클 필수 파일의 종류 오라클 필수 파일의 종류

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

컨트롤 파일추적 파일패스워드 파일

유저 추적 파일유저 추적 파일경고 로그 파일경고 로그 파일 Core 추적 파일Core 추적 파일

파라메터 파일

89

6. 오라클 필수 파일2. 2. 파라메터 파일의 개념파라메터 파일의 개념

SHARED_POOL_SIZE = 40MDB_CACHE_SIZE = 200MLOG_BUFFER = 5242880

SESSSIONS = 200…

적용

환경 설정 파일

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

40 MB 200 MB 5MB

유저 1유저 1

유저 2유저 2

유저200유저200

유저201유저201

접속 불가

90

6. 오라클 필수 파일3. 3. 파라메터 파일의 종류파라메터 파일의 종류

구 분 정적 파라메터 파일 동적 파라메터 파일

파일 형식 텍스트 형식 바이너리 형식

관 리 사용자가 관리 오라클이 관리

파일 수정 텍스트 편집기로 수행

일반 편집기로 수정하면 사용할 수 없음

( 정적 파라메터 파일로 변경 후 수정 또는 SQL 명령어로 수정 )

관련 뷰 V$PARAMETER V$SPPARAMETER

파일 명 initSID.ora spfileSID.ora

동적 파라메터 종류 적음 많음

사 용 오라클 모든 버전에서 사용 가능 오라클 9i 이상에서만 사용 가능

91

6. 오라클 필수 파일4. 4. 파라메터 파일 생성파라메터 파일 생성

정적 파라메터 파일

동적 파라메터 파일

생 성

$ORACLE_HOME/dbs/init.ora 파일을 참고해서 텍스트 편집기로 생성 후 저장$ORACLE_HOME/dbs/init.ora 파일을 참고해서 텍스트 편집기로 생성 후 저장

SQL> CREATE PFILE = ‘pfile_name’

FROM SPFILE = ‘spfile_name’;

SQL> CREATE PFILE = ‘pfile_name’

FROM SPFILE = ‘spfile_name’;

SQL> CREATE SPFILE = ‘spfile_name’

FROM PFILE = ‘pfile_name’;

SQL> CREATE SPFILE = ‘spfile_name’

FROM PFILE = ‘pfile_name’;

92

6. 오라클 필수 파일5. 5. 파라메터 변경파라메터 변경

수 정

SQL> ALTER SYSTEM SET parameter_name = parameter_value

[COMMENT= ‘text’] [SCOP= MEMORY | SPFILE | BOTH]

[SID= ‘sid’ | ‘*’ ];

SQL> ALTER SESSION SET parameter_file = parameter_value;

SQL> ALTER SYSTEM SET parameter_name = parameter_value

[COMMENT= ‘text’] [SCOP= MEMORY | SPFILE | BOTH]

[SID= ‘sid’ | ‘*’ ];

SQL> ALTER SESSION SET parameter_file = parameter_value;

파라메터 파일

재기동 없이 변경 가능 변경하기 위해 반드시 재기동 필요

정적 파라메터동적 파라메터

93

6. 오라클 필수 파일6. 6. 파라메터 확인파라메터 확인

확 인

SQL> SELECT * FROM V$PARAMETER;

SQL> SELECT * FROM V$SPPARAMETER;

SQL> SHOW PARAMETER parameter_name

SQL> SELECT * FROM V$PARAMETER;

SQL> SELECT * FROM V$SPPARAMETER;

SQL> SHOW PARAMETER parameter_name

파라메터 값 조회

V$SPARAMETERV$PARAMETE

R

94

6. 오라클 필수 파일7. 7. 컨트롤 파일의 개념컨트롤 파일의 개념

Database 상태 정보 저장

데이터베이스 이름 : ORCLIDX1 테이블스페이스 : ONLINE IDX2 테이블스페이스 : OFFLINE현재 리두 로그 번호 : 322데이터 파일 : /data/IDX1.dbf…

컨트롤 파일

리두 로그 321

리두 로그 322

IDX1 테이블스페이스

IDX2 테이블스페이스

/data/IDX1.dbf

ORCL 데이터베이스

적용

참조

95

6. 오라클 필수 파일8. 8. 컨트롤 파일의 내용컨트롤 파일의 내용

■ 데이터베이스 이름

■ 데이터베이스 생성 시 타임스탬프

■ 현재 리두 로그 파일 번호

■ 체크포인트 정보

■ 테이블스페이스 정보

■ 데이터 파일과 리두 로그 파일 정보

■ 데이터베이스 생성 시 생성되는 데이터베이스 구분자

■ 아카이브 로그 위치와 상태정보

■ RMAN(Recovery Manager) 사용 시 백업 위치와 백업파일 상태

■ 데이터베이스 이름

■ 데이터베이스 생성 시 타임스탬프

■ 현재 리두 로그 파일 번호

■ 체크포인트 정보

■ 테이블스페이스 정보

■ 데이터 파일과 리두 로그 파일 정보

■ 데이터베이스 생성 시 생성되는 데이터베이스 구분자

■ 아카이브 로그 위치와 상태정보

■ RMAN(Recovery Manager) 사용 시 백업 위치와 백업파일 상태

데이터베이스

컨트롤 파일• 생성시 데이터 베이스 상태 정보 기록• 주기적으로 변경되는 데이터베이스 정보 기록

96

6. 오라클 필수 파일9. 9. 컨트롤 파일 다중화의 개념컨트롤 파일 다중화의 개념

컨트롤 파일 다중화

• 데이터베이스 변경 시 모든 컨트롤파일에 기록

• 한 개의 컨트로 파일 장애 시 서비스 중단

• 남아 있는 컨트롤 파일로 쉽게 복구 가능 (Copy)

컨트롤 파일 1

리두 로그리두 로그

리두 로그 리두 로그 테이블스페이스테이블스페이스

테이블스페이스테이블스페이스

ORCL 데이터베이스

컨트롤 파일 2

디스크장애

97

6. 오라클 필수 파일10. 10. 컨트롤 파일의 다중화 방법컨트롤 파일의 다중화 방법

① 데이터베이스 종료

② 편집기로 CONTROL_FILES 파라메터 수정

③ 운영 체제 명령으로 컨트롤 파일 복사

④ 데이터베이스 시작

① 데이터베이스 종료

② 편집기로 CONTROL_FILES 파라메터 수정

③ 운영 체제 명령으로 컨트롤 파일 복사

④ 데이터베이스 시작

동적 파라메터 파일 사용

① 명령어로 CONTROL_FILES 파라메터 수정

② 데이터베이스 종료

③ 운영 체제 명령으로 컨트롤 파일 복사

④ 데이터베이스 시작

① 명령어로 CONTROL_FILES 파라메터 수정

② 데이터베이스 종료

③ 운영 체제 명령으로 컨트롤 파일 복사

④ 데이터베이스 시작

정적 파라메터 파일 사용

98

6. 오라클 필수 파일11. 11. 패스워드 파일의 개념패스워드 파일의 개념

SYSDBA

시스템 ( 운영체제 )

데이터베이스

SYSOPER

운영 체제 그룹에 등록된 운영 체제 유저에게 인증

패스워드 파일에 등록된 오라클 유저에게 인증패스워드 파일 인증

운영체제 인증

패스워드파일

패스워드파일

99

6. 오라클 필수 파일10. 10. 운영체제 인증의 개념운영체제 인증의 개념

운영 체제 그룹 : dba

운영 체제 유저 : oracle, dbadmin

운영 체제 그룹 : dba

운영 체제 유저 : oracle, dbadmin

운영 체제 그룹 : was

운영 체제 유저 : wasadmin

운영 체제 그룹 : was

운영 체제 유저 : wasadmin

SYSDBA

SYSOPER 권한부여

데이터베이스 기동 데이터베이스 종료 ,

백업 , 복구 등

데이터베이스 기동 데이터베이스 종료 ,

백업 , 복구 등

가능

불가능

100

6. 오라클 필수 파일11. 11. 패스워드 파일 인증의 개념패스워드 파일 인증의 개념

운영 체제 그룹 : dba

운영 체제 유저 : oracle, dbadmin

운영 체제 그룹 : dba

운영 체제 유저 : oracle, dbadmin

패스워드 파일

데이터베이스 유저 : SYS, SYSTEM,HR

패스워드 파일

데이터베이스 유저 : SYS, SYSTEM,HR

SYSDBA

SYSOPER

권한부여

데이터베이스 기동 데이터베이스 종료 ,

백업 , 복구 등

데이터베이스 기동 데이터베이스 종료 ,

백업 , 복구 등

가능

불가능

권한부여 가능

데이터베이스 유저 : SCOTT 데이터베이스 유저 : SCOTT

101

6. 오라클 필수 파일12. 12. 패스워드 파일의 관리패스워드 파일의 관리

생 성 > orspwd file=file_name password=password entries=max_users > orspwd file=file_name password=password entries=max_users

삭 제 운영 체제 명령으로 파일 삭제

운영 체제 명령으로 파일 삭제

수 정

① 데이터베이스 종료

② 패스워드 파일 삭제 후 재생성

③ 데이터베이스 시작

① 데이터베이스 종료

② 패스워드 파일 삭제 후 재생성

③ 데이터베이스 시작

102

6. 오라클 필수 파일13. 13. 추적추적 (Trace) (Trace) 파일의 개념파일의 개념

유저 덤프

백그라운드 덤프코아 덤프

운영 체제 관련 추적파일

유저 오류 추적 파일

백그라운드 프로세스관련 추적파일

이벤트 발생

데이터베이스

103

6. 오라클 필수 파일14. 14. 유저 추적 파일유저 추적 파일

데이터베이스데이터베이스

유저 덤프

유저 오류 추적 파일

유저 유저

오류 발생

유저유저

임의로 유저 추적 활성화

SQL> ALTER SESSION SET SQL_TRACE = TRUE;

SQL> EXEC SYS.DBMS_SYSTEM.SET_SQL _TRACE_IN_SESSION (7, 18, TRUE);

Parameter File:user_dump_dest = /oracle/app/admin/ORCL/udump

104

6. 오라클 필수 파일15. 15. 백그라운드 추적 파일백그라운드 추적 파일

alertSID.logalertSID.log

Parameter File:background_dump_dest = ‘/oracle/app/admin/ORCL/bdump’Parameter File:background_dump_dest = ‘/oracle/app/admin/ORCL/bdump’

데이터베이스데이터베이스

백그라운드 덤프

백그라운드 프로세스

백그라운드 프로세스

오류 발생

로그로그

데이터베이스의 전체 로그 기록

백그라운드 프로세스관련 추적파일

SID_processf_PID.trcSID_processf_PID.trc

105

6. 오라클 필수 파일16. 16. 코어 추적 파일코어 추적 파일

코어 덤프

운영 체제 운영 체제

오류 발생

운영 체제 관련 추적파일

데이터베이스

106

Chapter7. Chapter7. 오라클 시작과 종료오라클 시작과 종료

107

7. 오라클 시작과 종료1. 1. 오라클 시작과 종료의 개념오라클 시작과 종료의 개념

시작 (STARTUP)

종료 (SHUTDOWN)

종료

노마운트

마운트

오픈

108

7. 오라클 시작과 종료2. 2. 노마운트 단계노마운트 단계

파라메터 파일 읽기

SGA 할당

alertSID.log 파일과 추적 파일 시작

백그라운드 프로세스 기동

노마운트

■ 컨트롤 파일 재생성 작업 가능

109

7. 오라클 시작과 종료3. 3. 마운트 및 오픈 단계마운트 및 오픈 단계

컨트롤 파일 확인

컨트롤 파일내의 데이터 파일및 리두 로그 파일 인지

마운트

■ 데이터베이스 복구 ■ 아카이브 로그 모드 적용 및 해제

온라인 데이터 파일 확인

온라인 리두 로그 파일 확인

오픈

110

7. 오라클 시작과 종료4. 4. 오라클 시작 방법오라클 시작 방법

일반 시작

제한된 모드로 시작

읽기 전용으로 시작

시작

SQL> STARTUP {pfile|spfile = 파라메터 파일 위치 }

SQL> ALTER DATABASE OPEN {RESETLOGS};

SQL> STARTUP {pfile|spfile = 파라메터 파일 위치 }

SQL> ALTER DATABASE OPEN {RESETLOGS};

SQL> STARTUP RESTRICT

 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION ( 설정 );

 

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION ( 해제 );

SQL> STARTUP RESTRICT

 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION ( 설정 );

 

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION ( 해제 );

 SQL> STARTUP MOUNT

 

SQL> ALTER DATABASE OPEN READ ONLY;

 SQL> STARTUP MOUNT

 

SQL> ALTER DATABASE OPEN READ ONLY;

111

7. 오라클 시작과 종료5. 5. 오라클 종료 방법오라클 종료 방법

NORMAL

ABORT

TRANSACTIONAL

IMMEDIATE

비정상 종료

종료

SQL> SHUTDOWN SQL> SHUTDOWN

SQL> SHUTDOWN TRANSACTIONAL SQL> SHUTDOWN TRANSACTIONAL

SQL> SHUTDOWN IMMEDATE SQL> SHUTDOWN IMMEDATE

SQL> SHUTDOWN ABORT SQL> SHUTDOWN ABORT

• 모든 접속 유저가 접속 종료 후 DB 종료• 새로운 접속 불가

• 수행 중인 모든 SQL 완료 후 DB 종료• 새로운 접속 불가• 새로운 SQL 수행 불가

• 수행 중인 모든 SQL Rollback 후 DB 종료• 새로운 접속 불가• 새로운 SQL 수행 불가

• 수행 중인 모든 SQL 취소 , Rollback 후 DB 종료

•새로운 접속 불가

• 새로운 SQL 수행 불가

• 인스턴스 복구 필요

112

Chapter8. Chapter8. 리두 로그 파일과 아카이브 리두 로그 파일과 아카이브 로그 파일로그 파일

113

8. 리두로그 파일과 아카이브 로그 파일 1. 1. 리두 로그 파일의 개념리두 로그 파일의 개념

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

리두 로그 파일

LGWR

■ 리두 로그 버퍼 - 데이터베이스 장애 시 복구를 수행하기 위해 모든 DML 에 대한 로그를 기록

■ 리두 로그 파일 - 리두 로그 버퍼의 내용을 디스크에 기록하는 데이터베이스 구성요소

114

2. 2. 리두 로그 파일의 구성 요소리두 로그 파일의 구성 요소

■ 리두 로그 멤버 - 리두 로그 버퍼의 내용을 기록하는 파일이며 하나의 리두 로그 멤버는 하나의 리두 로그 파일 - LGWR 백그라운드 프로세스는 리두 로그 버퍼의 내용을 동일 그룹에 속해 있는 모든 리두 로그 멤버에 동일한 내용들을 기록

■ 리두 로그 그룹 - 동일한 로그 기록을 저장하고 있는 리두 로그 멤버들의 집합을 의미

그룹 A그룹 B

LGWRLGWR

멤버 2멤버 2

로그 시퀀스 번호 9 로그 시퀀스 번호 10

디스크 1

디스크 2

RedoA1.log

RedoA2.log

RedoB1.log

RedoB2.log

멤버 1멤버 1

8. 리두로그 파일과 아카이브 로그 파일

115

3. 3. 현재 리두 로그 그룹현재 리두 로그 그룹

■ 현재 리두 로그 그룹 (Current Redo Log Group) :

여러 개의 리두 로그 그룹 중 LGWR 백그라운드 프로세스가 리두 로그 버퍼의 내용을 기록하는 리두 로그 그룹

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

LGWR

그룹 A그룹 B

멤버 2멤버 2

멤버 1멤버 1

SGA

현재 리두 로그 그룹

8. 리두로그 파일과 아카이브 로그 파일

116

4. 4. 로그 스위치 개념로그 스위치 개념

■ 로그 스위치 (Log Switch) 현상 :

현재 리두 로그 그룹이 순서에 의해 다음 리두 로그 그룹으로 변경되는 현상

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

LGWR

그룹 A그룹 B

멤버 2멤버 2

멤버 1멤버 1

SGA

현재 리두 로그 그룹

로그 시퀀스 번호 10 로그 시퀀스 번호 9

로그 스위치 :

- 현재 리두 로그 그룹 공간 부족 - ALTER SYSTEM SWITCH LOGFILE;

8. 리두로그 파일과 아카이브 로그 파일

117

5. 5. 로그 스위치 절차로그 스위치 절차

로그 스위치 발생로그 스위치 발생

④ 로그 시퀀스 번호 증가 :

- 로그 스위치에 의해 현재 리두 로그 그룹이 변경될 때마다 1씩 증가하므로 가장 높은 값이 가장 최근 로그임 .

④ 로그 시퀀스 번호 증가 :

- 로그 스위치에 의해 현재 리두 로그 그룹이 변경될 때마다 1씩 증가하므로 가장 높은 값이 가장 최근 로그임 .

③ 리두 로그 파일에 대한 작업 수행 :

- 현재 로그 그룹을 CURRENT, 이전 로그 그룹을 ACTIVE 로 표시 - 이전 리두 로그 그룹에 대해 체크포인트 및 아카이브 실행 - 체크 포인트가 완료되면 INACTIVE 로 표시

③ 리두 로그 파일에 대한 작업 수행 :

- 현재 로그 그룹을 CURRENT, 이전 로그 그룹을 ACTIVE 로 표시 - 이전 리두 로그 그룹에 대해 체크포인트 및 아카이브 실행 - 체크 포인트가 완료되면 INACTIVE 로 표시

① 컨트롤 파일 확인 : - 다음에 사용될 리두 로그 번호 확인 - 다음에 사용될 리두 로그 그룸의 체크포인트 , 아카이브 완료 여부 확인

① 컨트롤 파일 확인 : - 다음에 사용될 리두 로그 번호 확인 - 다음에 사용될 리두 로그 그룸의 체크포인트 , 아카이브 완료 여부 확인

② 로그 스위치 직전의 SCN 을 리두 로그 파일 헤더에 기록 ② 로그 스위치 직전의 SCN 을 리두 로그 파일 헤더에 기록

8. 리두로그 파일과 아카이브 로그 파일

118

C.F

4. 4. 리두 로그 파일의 장애리두 로그 파일의 장애

단일 리두 로그 파일 다중 리두 로그 파일

리두 로그 파일 장애 발행 유형 :

- 사용자 실수로 리두 로그 파일 삭제- 디스크 장애로 리두 로그 파일 손상

그룹 A그룹 B

유저유저멤버 1멤버 1

디스크 1

장애발생

장애발생

그룹 A그룹 B

유저유저멤버 1

멤버 2멤버 2

멤버 1디스크 1

디스크 2

8. 리두로그 파일과 아카이브 로그 파일

장애발생

119

5. 5. 리두 로그 파일 관리리두 로그 파일 관리 (V$LOG)(V$LOG)

검 색

SELECT * FROM V$LOG;

SELECT * FROM V$LOG;

SELECT * FROM V$LOGFILE;

SELECT * FROM V$LOGFILE;

SELECT *

FROM V$LOG_HISTORY;

SELECT *

FROM V$LOG_HISTORY;

8. 리두로그 파일과 아카이브 로그 파일

SQL> SELECT GROUP#, SEQUENCE#, MEMBERS, BYTES/1024/1024 “SIZE”, STATUS FROM V$LOG;

GROUP# SEQUENCE# MEMBERS SIZE STATUS ----- -------- ------- --- ------ --------- 1 46 2 10 CURRENT 2 44 1 10 INACTIVE 3 45 1 5 INACTIVE

SQL> ALTER SYSTEM SWITCH LOGFILE; System altered.

SQL> SELECT GROUP#, SEQUENCE#, MEMBERS, BYTES/1024/1024 “SIZE”, STATUS FROM V$LOG;

GROUP# SEQUENCE# MEMBERS SIZE STATUS ----- -------- ------- --- ------ ------- 1 46 2 10 ACTIVE 2 47 1 10 CURRENT 3 45 1 5 INACTIVE• 리두 로그 그룹 정보 검색

120

6. 6. 리두 로그 파일 관리리두 로그 파일 관리 (V$LOGFILE)(V$LOGFILE)

검 색

SELECT * FROM V$LOG;

SELECT * FROM V$LOG;

SELECT * FROM V$LOGFILE;

SELECT * FROM V$LOGFILE;

SELECT *

FROM V$LOG_HISTORY;

SELECT *

FROM V$LOG_HISTORY;

8. 리두로그 파일과 아카이브 로그 파일

SQL> SLEECT GROUP$, MEMBER FROM V$LOGFILE;

GROUP# MEMBER ------ ---------------- 1 /data1/redo1_1.log 1 /data2/redo1_2.log 2 /data1/redo2_1.log 3 /data2/redo2_1.log

• 리두 로그 파일 정보 검색

121

7. 7. 리두 로그 파일 관리리두 로그 파일 관리 (V$LOG_HISTORY)(V$LOG_HISTORY)

검 색

SELECT * FROM V$LOG;SELECT * FROM V$LOG;

SELECT * FROM V$LOGFILE;

SELECT * FROM V$LOGFILE;

SELECT *

FROM V$LOG_HISTORY;

SELECT *

FROM V$LOG_HISTORY;

8. 리두로그 파일과 아카이브 로그 파일

SQL> SELECT TO_CHAR(FIRST_TIME,'YYYYMM') “DATE” , COUNT(*) cnt FROM V$LOG_HISTORY GROUP BY TO_CHAR(FIRST_TIME,'YYYYMM');

DATE CNT ------ ---------------- 200508 2143 200509 2154 200510 2208 200512 2011 200601 716

• 리두 로그 사용 추이 조회

122

8. 8. 리두 로그 파일 관리 관련 명령어 리두 로그 파일 관리 관련 명령어

리두 로그 그룹 추가

리두 로그 멤버 삭제

리두 로그 그룹 삭제

리두 로그 멤버 추가관 리

SQL> ALTER DATABASE ADD LOGFILE [GROUP n]

(‘file_name’,[‘file_name’]...) SIZE n

[, [GROUP n] (file_name’,[‘file_name’]...) SIZE n ...];

SQL> ALTER DATABASE ADD LOGFILE [GROUP n]

(‘file_name’,[‘file_name’]...) SIZE n

[, [GROUP n] (file_name’,[‘file_name’]...) SIZE n ...];

SQL> ALTER DATABASE DROP LOGFILE GROUP n; SQL> ALTER DATABASE DROP LOGFILE GROUP n;

8. 리두로그 파일과 아카이브 로그 파일

리두 로그 그룹 초기화

SQL> ALTER DATABASE ADD LOGFILE MEMBER

‘file_name’ [REUSE]

[,file_name’ [REUSE] ...] TO GROUP n

[,‘file_name’ [REUSE]

[,file_name’ [REUSE] ...] TO GROUP n...];

SQL> ALTER DATABASE ADD LOGFILE MEMBER

‘file_name’ [REUSE]

[,file_name’ [REUSE] ...] TO GROUP n

[,‘file_name’ [REUSE]

[,file_name’ [REUSE] ...] TO GROUP n...];

SQL> ALTER DATABASE DROP LOGFILE MEMBER

‘file_name’ [,’file_name’ ...];

SQL> ALTER DATABASE DROP LOGFILE MEMBER

‘file_name’ [,’file_name’ ...];

SQL> ALTER DATABASE CLEAR [UNARCHIVED]

LOGFILE GROUP n;

SQL> ALTER DATABASE CLEAR [UNARCHIVED]

LOGFILE GROUP n;

123

9. 9. 아카이브 로그의 개념 아카이브 로그의 개념 8. 리두로그 파일과 아카이브 로그 파일

2122

로그 스위치

2322

노아카이브 로그 모드 (Noarchivelog Mode)

로그 스위치

리두 로그 파일 리두 로그 파일

아카이브 로그 모드 (Archivelog Mode)

2122

로그 스위치

2322

로그 스위치

21 22 아카이브 로그

124

10. 10. 아카이브 로그의 장아카이브 로그의 장 // 단점단점 8. 리두로그 파일과 아카이브 로그 파일

노아카이브 로그 모드 아카이브 로그 모드

백업 및 복구 용이백업 및 복구 용이

디스크 I/O 감소디스크 I/O 감소

백업 및 복구 복잡백업 및 복구 복잡

디스크 I/O 증가디스크 I/O 증가

복구 시점 조절 불가복구 시점 조절 불가

온라인 복구 불가온라인 복구 불가

복구 시점 조절 가능복구 시점 조절 가능

온라인 복구 가능온라인 복구 가능

온라인 백업 불가온라인 백업 불가 온라인 백업 가능온라인 백업 가능

단점

단점

장점

장점

125

11. 11. 아카이브 로그 모드 설정아카이브 로그 모드 설정 // 해제해제

아카이브 로그 모드 설정아카이브 로그 모드 설정

아카이브 로그 모드 해제 아카이브 로그 모드 해제

8. 리두로그 파일과 아카이브 로그 파일

① 데이터베이스 종료

② 관련 파라메터 설정

③ STARTUP MOUNT

④ ALTER DATABASE ARCHIVELOG;

⑤ ALTER DATABASE OPEN;

① 데이터베이스 종료

② STARTUP MOUNT

③ ALTER DATABASE NOARCHIVELOG;

④ ALTER DATABASE OPEN;

126

3. 오라클 시작과 종료12. 12. 아카이브 로그 모드 관련 파라메터아카이브 로그 모드 관련 파라메터

아카이브 로그 관련 파라메터 :

■ LOG_ARCHIVE_DEST

■ LOG_ARCHIVE_DEST_n

■ LOG_ARCHIVE_DEST_STATE_n

■ LOG_ARCHIVE_DUPLEX_DEST

■ LOG_ARCHIVE_FORMAT

■ LOG_ARCHIVE_MAX_PROCESSES

■ LOG_ARCHIVE_MIN_SUCCEED_DEST

■ LOG_ARCHIVE_TRACE아카이브 로그 관련 파라메터 설정 예 :

LOG_ARCHVIE_DEST = /data1/ARCH

LOG_ARCHIVE_DUPLEX_DEST = /data2/ARCH

LOG_ARCHIVE_DEST_1 = "LOCATION=/data1/ARCH/ MANDATORY REOPEN = 600"

LOG_ARCHIVE_DEST_2 = "LOCATION=/data2/ARCH/ OPTIONAL"

LOG_ARCHIVE_DEST_3 = "SERVICE=arch_back OPTIONAL"

LOG_ARCHIVE_FORMAT = orcl_%s_%t_%r.arc

127

13. 13. 정보 조회정보 조회 (Archive Log List)(Archive Log List)

검 색

ARCHIVE LOG LIST ARCHIVE LOG LIST

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_PROCESSES

SELECT *

FROM V$ARCHIVE_PROCESSES

8. 리두로그 파일과 아카이브 로그 파일

SQL> ARCHIVE LOG LIST

Database log mode Archive Mode Automatic archival Enabled Archive destination /data1/ARCH/ Oldest online log sequence 35 Next log sequence to archive 37 Current log sequence 37

• 아카이브 로그 모드 정보 제공

관 리 ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT;

128

14. 14. 정보 조회정보 조회 (V$ARCHIVE_LOG)(V$ARCHIVE_LOG)8. 리두로그 파일과 아카이브 로그 파일

SQL> SELECT DEST_NAME, NAME, B.STATUS FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG B WHERE A.DEST_ID = B.DEST_ID;

DEST_NAME NAME S ------------ ------------------------ - LOG_ARCHIVE_DEST /data1/orcl_1_1_55820.arc A LOG_ARCHIVE_DEST /data1/orcl_2_1_55820.arc A LOG_ARCHIVE_DEST /data1/orcl_3_1_55820.arc A

• 아카이브 로그 파일 정보 검색

검 색

ARCHIVE LOG LIST ARCHIVE LOG LIST

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_PROCESSES

SELECT *

FROM V$ARCHIVE_PROCESSES

관 리 ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT;

129

15. 15. 정보 조회정보 조회 (V$ARCHIVE_PROCESS)(V$ARCHIVE_PROCESS)8. 리두로그 파일과 아카이브 로그 파일

SQL> SELECT * FROM V$ARCHIVE_PROCESSES; PROCESS STATUS LOG_SEQUENCE STAT------- -- ----- ---- -------------- --- 0 ACTIVE 0 IDLE 1 ACTIVE 0 IDLE 2 STOPPED 0 IDLE 3 STOPPED 0 IDLE 4 STOPPED 0 IDLE 5 STOPPED 0 IDLE 6 STOPPED 0 IDLE 7 STOPPED 0 IDLE 8 STOPPED 0 IDLE 9 STOPPED 0 IDLE 10 STOPPED 0 IDLE

• 아카이브 로그 프로세스 정보 검색

검 색

ARCHIVE LOG LIST ARCHIVE LOG LIST

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_PROCESSES

SELECT *

FROM V$ARCHIVE_PROCESSES

관 리 ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT;

130

16. 16. 현재 리두 로그 아카이브 수행현재 리두 로그 아카이브 수행8. 리두로그 파일과 아카이브 로그 파일

• 현재 리두 로그 아카이브

검 색

ARCHIVE LOG LIST ARCHIVE LOG LIST

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_DEST A, V$ARCHIVED_LOG BWHERE A.DEST_ID = B.DEST_ID;

SELECT *

FROM V$ARCHIVE_PROCESSES

SELECT *

FROM V$ARCHIVE_PROCESSES

관 리 ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT;

131

Chapter9. Chapter9. 오라클 스토리지오라클 스토리지

132

9. 오라클 스토리지1. 1. 오라클 스토리지 구조오라클 스토리지 구조

데이터 블록

테이블스페이스테이블스페이스

세그먼트세그먼트

운영 체제 블록

데이터 파일

오라클

시스템

디스크

테이블스페이스테이블스페이스테이블스페이스테이블스페이스

세그먼트세그먼트세그먼트세그먼트세그먼트세그먼트

익스텐트익스텐트익스텐트익스텐트익스텐트익스텐트익스텐트익스텐트익스텐트익스텐트

데이터베이스데이터베이스

오브젝트오브젝트

세그먼트테이블인덱스파티션파티션 인덱스

뷰시퀀스동의어

SQL> SELECT FILE_NAME, BYTES/1024/1024 “MB” FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'USERS';

FILE_NAME MB ---------------- ---- /data1/users_01.dbf 10 /data2/users_02.dbf 20

133

9. 오라클 스토리지2. 2. 데이터 블록의 개요데이터 블록의 개요

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

111 이창구112 최수련113 장우형

SELECT * FROM ‘ 사원’WHERE 사원 ID=’111’

SELECT * FROM ‘ 사원’WHERE 사원 ID=’111’

• 오라클의 I/O 단위

• DB_BLOCK_SIZE 파라메터로 크기 설정

• 하나 이상의 운영 체제 블록으로 구성

134

9. 오라클 스토리지3. 3. 데이터 블록의 구조데이터 블록의 구조

데이터블록 헤더

캐시 계층캐시 계층

트랙젝션 계층트랙젝션 계층

테이블 딕렉토리테이블 딕렉토리

행 디렉토리행 디렉토리

데이터 데이터

사용 가능한 공간

데이터 헤더

데이터 계층

135

9. 오라클 스토리지4. 4. 데이터 블록 크기에 따른 장데이터 블록 크기에 따른 장 // 단점단점

데이터 블록 크기를 크게 설정 데이터 블록 크기를 작게 설정

블록 사용 율이 높음블록 사용 율이 높음

한 번 의 I/O 로 많 은 데이터 추출한 번 의 I/O 로 많 은 데이터 추출

블록 사용 율이 낮음블록 사용 율이 낮음

한 번 의 I/O 로 적 은 데이터 추출한 번 의 I/O 로 적 은 데이터 추출

블록에 대한 경합 가능성 높음블록에 대한 경합 가능성 높음

블록에 대한 경합 가능성 낮음블록에 대한 경합 가능성 낮음

단점장점

장점단점

136

9. 오라클 스토리지5. 5. 데이터 블록에 설정 가능한 옵션데이터 블록에 설정 가능한 옵션

설정 항목 설명

INITRANS - 블록의 초기 트랜잭션 슬롯의 개수를 지정 - 테이블에 데이터 블록의 경우 기본 값 : 1 - 인덱스에 대한 데이터 블록의 기본 값 : 2

MAXTRANS - 데이터 블록 안에 생성할 수 있는 최대 트랜잭션 슬롯의 개수 지정 - 오라클 10g 부터는 해당 값은 무조건 255개로 설정된다

PCTFREE - 행에 변경 발생시 행의 크기가 증가하는 것에 대비해 지정하는 여유 공간 - 기본 값은 데이터 블록 크기의 10%

PCTUSED - 수동 세그먼트 공간 관리 방식 사용 시 블록 재사용을 여부를 결정 - 기본 값은 데이터 블록 크기의 40%

137

9. 오라클 스토리지6. PCTUSED 6. PCTUSED 및 및 PCTFREEPCTFREE

① ②

③ ④

PCTFREE 10 PCTUSED 40 PCTFREE 10 PCTUSED 40

90%

40%

90%

40%

90%

40%

90%

40%

INSERTINSERT INSERTINSERT

INSERTINSERT INSERTINSERT

DELETEDELETE DELETEDELETE

미사용 공간

사용된 공간

138

9. 오라클 스토리지7. PCTFREE7. PCTFREE

고객 ID고객 ID 이름이름 주소 (100)주소 (100)

100201100201 정은진정은진 서울 강동구서울 강동구100202100202 최세진최세진 서울 중구서울 중구

고객 테이블 블록 #1

90%

고객ID(10)고객

ID(10)이름(10)이름(10)

주소 (100)주소 (100)

100201100201 정은진정은진 서울 강동구서울 강동구100202100202 최세진최세진 서울 중구 장미 아파트서울 중구 장미 아파트

100%

PCTFREE 10 PCTFREE 10

고객ID(10)고객

ID(10)이름이름 주소 (100)주소 (100)

100202100202 정은진정은진 서울 강동구 서울 강동구

고객ID(10)고객

ID(10)이름(10)이름(10)

주소 (100)주소 (100)

100201100201 최세진최세진 서울 중구 장미 아파트서울 중구 장미 아파트

고객 테이블 블록 #1UPDATE

PCTFREE 0 PCTFREE 0

고객 ID고객 ID 이름이름 주소 (100)주소 (100)

100201100201 정은진정은진 서울 강동구서울 강동구100202100202 최세진최세진 서울 중구서울 중구

UPDATE

90%

고객 테이블 블록 #1

10%

고객 테이블 블록 #2

90%

고객 테이블 블록 #1

행정보

139

9. 오라클 스토리지8. Transaction Slot8. Transaction Slot

캐시계층캐시계층

트랜잭션 계층트랜잭션 계층

테이블 디렉토리테이블 디렉토리

행 디렉토리행 디렉토리

데이터데이터

데이터 블록

트랜잭션 슬롯

변경 프로세스 1변경 프로세스 1

변경 프로세스 2변경 프로세스 2

작업 수행

대기

• INITRANS 의 수치가 높을 경우 :

- 트랜잭션 슬롯 하나 당 24Bytes 의 공간을 차지하므로 사용할 수 있는 블록 공간이 감소 .

- 데이터 블록에 대한 동시 유저 작업을 설정한 값만큼 지원

• INITRANS 의 수치가 낮을 경우 : - 공간 사용 효율은 좋아지나 동시에 여러 트랜잭션이 수행될 경우 해당 데이터 블록에 사용 가능 공간이 존재하지 않는다면 이미 할당된 트랜잭션 슬롯 개수만큼만 동시 유저의 작업이 가능하다 .

140

9. 오라클 스토리지9. 9. 행 이전과 행 연결행 이전과 행 연결

PCTFREE 중 여유 공간

21 번 블록

UPDATE

행 이전

A

A

A INSERT

6KB 17 번 블록

4KB

17 번 블록 22 번 블록

위치 정보

행 연결

35 번 블록

21 번 블록

A

행 이전 행 이전 행 연결 행 연결

141

9. 오라클 스토리지10. 10. 프리리스트프리리스트

A

고수위

익스텐트 맵

세그먼트 헤더 데이터 블록

익스텐트 1 익스텐트 2

고수위

프리리스트

프리블록

142

9. 오라클 스토리지11. 11. 익스텐트의 개요익스텐트의 개요

공간 부족

새로운 익스텐트 할당

사원 테이블

INSERT

143

9. 오라클 스토리지12. 12. 익스텐트의 할당 및 해제익스텐트의 할당 및 해제

• 세그먼트 생성 - MINEXTENTS 옵션에서 설정한 값 만큼 할당

• 세그먼트 확장 - 1 순위 : 데이터가 저장될 수 있는 여유 공간을 가지는 데이터 블록을 할당 . - 2 순위 : 1 순위에서 언급한 데이터 블록이 존재하지 않다면 해당 세그먼트의 고수위를 뒤로 이동시켜 빈 데이터 블록을 확보한 후 할당 - 3 순위 : 2 순위에서 언급한 고수위를 뒤로 이동시킬 공간이 없을 경우 익스텐트를 할당

• 수동으로 익스텐트를 할당

Extent 할당 Extent 할당

• 세그먼트 삭제

• 세그먼트 Truncate

• 수동으로 익스텐트를 할당 해제

Extent 할당 해제 Extent 할당 해제

144

13. 13. 익스텐트 조회익스텐트 조회 (DBA_EXTENTS)(DBA_EXTENTS)

검 색

SELECT * FROM DBA_EXTENTS SELECT * FROM DBA_EXTENTS

SELECT SELECT * FROM DBA_FREE_SPACE SELECT SELECT * FROM DBA_FREE_SPACE

SQL> SELECT A.FILE_NAME, B.EXTENT_ID, B.BLOCKS, B.BYTES/1024 MB FROM DBA_DATA_FILES A, DBA_EXTENTS B WHERE A.FILE_ID = B.FILE_ID AND B.SEGMENT_NAME=' 고객 ';

FILE_NAME EXTENT_ID BLOCKS MB ------------ -- ---- ------ --- /data1/users01.dbf 0 8 64 /data1/users02.dbf 1 8 64

관 리

ALTER TABLE table_name ALLOCATE EXTENT [ ([SIZE n [K|M] ] [DATAFILE ‘datafile_name’]) ];ALTER TABLE table_name ALLOCATE EXTENT [ ([SIZE n [K|M] ] [DATAFILE ‘datafile_name’]) ];

9. 오라클 스토리지

ALTER TABLE table_name DEALLOCATE UNUSED [ KEEP n [ K|M ] ] ;ALTER TABLE table_name DEALLOCATE UNUSED [ KEEP n [ K|M ] ] ;

145

14.14. 익스텐트 조회익스텐트 조회 (DBA_FREE_SPACE)(DBA_FREE_SPACE)

SQL> SELECT TABLESPACE_NAME TS, FILE_ID, BLOCK_ID, BYTES, BLOCKS CNT FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME = 'USERS';

TS FILE_ID BLOCK_ID BYTES CNT ----- ----- ------- ------ ---- USERS 5 754953 8388608 1024 USERS 5 755977 8388608 1024 USERS 5 757001 8388608 1024

9. 오라클 스토리지

검 색

SELECT * FROM DBA_EXTENTS SELECT * FROM DBA_EXTENTS

SELECT SELECT * FROM DBA_FREE_SPACE SELECT SELECT * FROM DBA_FREE_SPACE

관 리

ALTER TABLE table_name ALLOCATE EXTENT [ ([SIZE n [K|M] ] [DATAFILE ‘datafile_name’]) ];ALTER TABLE table_name ALLOCATE EXTENT [ ([SIZE n [K|M] ] [DATAFILE ‘datafile_name’]) ];

ALTER TABLE table_name DEALLOCATE UNUSED [ KEEP n [ K|M ] ] ;ALTER TABLE table_name DEALLOCATE UNUSED [ KEEP n [ K|M ] ] ;

146

15. 15. 오브젝트와 세그먼트오브젝트와 세그먼트9. 오라클 스토리지

오브젝트오브젝트

세그먼트테이블인덱스파티션파티션 인덱스

뷰시퀀스동의어

• 오브젝트 - 뷰 , 인덱스 , 테이블 등• 세그먼트 - 테이블 , 인덱스 , 클러스터 등 실제 물리적 공간을 가지는 오브젝트

147

16. 16. 고수위 고수위 (High Water Mark – HWM) (High Water Mark – HWM) 개념개념9. 오라클 스토리지

고수위

익스텐트

익스텐트

익스텐트 익스텐트

사원 테이블

부서 테이블

급여 테이블

사용 데이터 블록 미사용 데이터 블록

148

17. 17. 고수위 고수위 (High Water Mark – HWM) (High Water Mark – HWM) 특징특징9. 오라클 스토리지

• 고수위 (High Water Mark, HWM) :

- 세그먼트 생성 이후 최대 사용량을 표시하는 세그먼트 구성요소

• 고수위의 특징 :

- 모든 세그먼트에는 고수위 존재 - 테이블 전체 스캔 (Full Scan) 시 고수위 앞에 존재하는 모든 데이터 블록을 엑세스 - 고수위 뒤에 존재하는 데이터 블록에는 데이터 저장 불가 - 고수위는 테이블 Truncate 또는 Drop 에 의해서 앞으로 이동 및 제거 가능 오라클 10g 에서는 세그먼트 축소 명령어로 고수위 이동이 가능

149

18. 18. 고수위 고수위 (High Water Mark – HWM)(High Water Mark – HWM) 와 테이블 스캔와 테이블 스캔9. 오라클 스토리지

익스텐트

익스텐트사용 데이터 블록

미사용 데이터 블록

사원 테이블

부서 테이블

전체 스캔 범위

전체 스캔 범위

150

19. 19. 고수위 고수위 (High Water Mark – HWM) (High Water Mark – HWM) 이동이동9. 오라클 스토리지

고수위

익스텐트

익스텐트

Insert

고수위

익스텐트

Insert

③ 새로운 익스텐트 할당

② 고수위 이동

사원 테이블

사용 데이터 블록 미사용 데이터 블록

고수위

151

9. 오라클 스토리지20. 20. 세그먼트의 관리세그먼트의 관리

검 색 SELECT * FROM DBA_SEGMENTS SELECT * FROM DBA_SEGMENTS

SQL> SELECT OWNER, SEGMENT_NAME, EXTENTS, BYTES/1024/1024 MB FROM DBA_SEGMENTS;

OWNER SEGMENT_NAME EXTENTS MB ----- --------------- --------- ----- SCOTT EMP 8 16 SCOTT DEPT 8 16 SCOTT SALARY 8 16 SCOTT GRADE 8 16 SCOTT PROJECT 8 16 …………..

152

9. 오라클 스토리지21. 21. 세그먼트 축소의 개념세그먼트 축소의 개념

테이블 생성 초기상태

테이블 사용 후 상태

사용 데이터 블록 미사용 데이터 블록

DML

고수위

• 테이블의 경우 테이블 전체 조회 소요 시간 증가

• 인덱스의 경우 인덱스 레벨이 깊어지므로 조회 소요 시간 증가

• 하나의 데이터 블록 조회로 적은 로우가 추출되므로 디스크 I/O 증가 가능

• 빈 데이터 블록의 증가로 디스크 공간 낭비

블록 단편화 블록 단편화

153

9. 오라클 스토리지22. 22. 세그먼트 축소의 종류세그먼트 축소의 종류

사원 테이블 사원 테이블

테이블 재구성

사원 테이블

테이블 MOVE

사원 테이블 사원 테이블

온라인 세그먼트 축소

불록 단편화 해결 방법불록 단편화 해결 방법

154

9. 오라클 스토리지23. 23. 세그먼트 축소 종류별 특징세그먼트 축소 종류별 특징

항 목 테이블 재구성 테이블 Move온라인 세그먼트

재구성

절차 복잡함 단순함 던순함

작업 중 서비스 불가능 불가능 가능

수행 시간 빠름 빠름 보통

추가 필요 공간 대상 테이블 크기만큼 필요

대상 테이블크기만큼 필요 공간 필요 없음

인덱스 재구성 필요유무 재생성 필요 재구성 필요 재구성 필요 없음

행 이전 및 행 연결 해결 해결 부분 해결

세그먼트 축소 방법 특징 비교

155

9. 오라클 스토리지24. 24. 온라인 세그먼트 축소 방법온라인 세그먼트 축소 방법

ALTER TABLE 사원 SHRINK SPACE;ALTER TABLE 사원 SHRINK SPACE;

고수위

할당 해제

사용 데이터 블록

미사용 데이터 블록 고수위

1. 전체가 채워지지 않은 데이터 블록의 데이터를 다른 여유 공간이 있는 데이터 블록에 저장

2. 1 단계의 저장이 완료되면 옮겨진 데이터 블록의 기존 데이터를 삭제한다 .

3. 고수위를 이동시키며 빈 데이터 블록은 할당 해제를 한

156

9. 오라클 스토리지25. 25. 온라인 세그먼트 축소의 특징온라인 세그먼트 축소의 특징

• 온라인으로 실행 가능• 별도의 추가 공간 없이 실행 가능• 테이블에 세그먼트 축소 명령을 적용하는 경우 관련된 인덱스도 같이 세그먼트 축소 적용 가능• 온라인 세그먼트 축소가 실행으로 인한 내부적 Delete, Insert 는 Trigger 를 실행 시키지 않음

고수위

ALTER TABLE 사원 SHRINK SPACE;ALTER TABLE 사원 SHRINK SPACE;

위치 변경

157

9. 오라클 스토리지26. 26. 온라인 세그먼트 축소 시 고려사항온라인 세그먼트 축소 시 고려사항

• 테이블의 경우 ROW MOVEMENT 옵션 ENABLE 필요•자동 세그먼트 공간 관리 (ASSM) 테이블스페이스에 저장된 세그먼트만 실행 가능• 온라인 세그먼트 축소 가능 세그먼트

- 파티션 또는 서브파티션을 포함하는 테이블 및 인덱스

- 인덱스 구조 테이블 (Index Organized Table, IOT)

- 구체화된 뷰 (Materialized View)와 구체화된 뷰 로그

• 온라인 세그먼트 축소 불가능 세그먼트

- 클러스터 테이블

- LONG 컬럼을 포함한 테이블

- ON COMMIT 옵션을 사용한 구체화된 뷰

- ROWID 기반 구체화된 뷰

- LOB 세그먼트

- 함수 기반 인덱스를 가지는 테이블

158

9. 오라클 스토리지27. 27. 온라인 세그먼트 축소온라인 세그먼트 축소

수행

행 이전 활성화행 이전 활성화 SQL> ALTER TABLE table_name ENABLE ROW MOVEMENT SQL> ALTER TABLE table_name ENABLE ROW MOVEMENT

행 이전 비활성화행 이전 비활성화 SQL> ALTER TABLE table_name DISABLE ROW MOVEMENT SQL> ALTER TABLE table_name DISABLE ROW MOVEMENT

SQL> ALTER segment_type segment_name SHRINK SPACE

[ COMPACT ] [ CASCADE ];

SQL> ALTER segment_type segment_name SHRINK SPACE

[ COMPACT ] [ CASCADE ];온라인 세그먼트 축소온라인 세그먼트 축소

159

Chapter10. Chapter10. 테이블 스페이스테이블 스페이스

160

10. 테이블 스페이스1. 1. 테이블스페이스 개요테이블스페이스 개요

용도

● 시스템 테이블스페이스

● 일반 테이블스페이스

시스템용 테이블스페이스시스템용 테이블스페이스

비시스템용 테이블스페이스비시스템용 테이블스페이스

익스텐트 관리 방법

딕셔너리 관리 테이블스페이스딕셔너리 관리 테이블스페이스

지역 관리 테이블스페이스지역 관리 테이블스페이스

세그먼트 공간 관리

자동 세그먼트 공간 관리 테이블스페이스자동 세그먼트 공간 관리 테이블스페이스

수동 세그먼트 공간 관리 테이블스페이스수동 세그먼트 공간 관리 테이블스페이스

● SYSAUX 테이블스페이스

● 임시 테이블스페이스 ● 언두 테이블스페이스

161

10. 테이블 스페이스2. 2. 용도에 따른 테이블스페이스 구분용도에 따른 테이블스페이스 구분

시스템용 테이블스페이스

시스템용 테이블스페이스

시스템시스템

SYSAUX SYSAUX

- 데이터베이스 운영에 필요한 데이터 저장 - 데이터베이스 생성 시 반드시 생성해야 하며 생성 후 삭제 불가 - 테이블스페이스 상태 변경 불가 - 데이터베이스 정보 및 유저 오브젝트 정보를 저장 - 시스템 언두 세그먼트 저장 - 시스템 테이블스페이스가 지역 관리 방식으로 생성되면 이 후 - 모든 테이슬스페이스는 지역 관리 방식으로만 생성 가능

- 데이터베이스 운영에 필요한 데이터 저장 - 데이터베이스 생성 시 반드시 생성해야 하며 생성 후 삭제 불가 - 시스템 테이블스페이스의 사용량과 부하 감소시키는 역할 - 시스템 테이블스페이스 단편화 현상 감소시키는 역할

162

10. 테이블 스페이스3. 3. 용도에 따른 테이블스페이스 구분용도에 따른 테이블스페이스 구분 (( 비시스템용비시스템용 ))

비 시스템용 테이블스페이스

비 시스템용 테이블스페이스

일반 테이블스페이스일반 테이블스페이스 - 필요에 따라 하나 이상 생성하여 사용하며 , 생성 , 수정 및 삭제 에 대한 제약이 거의 없음

임시 테이블스페이스임시 테이블스페이스

- 정렬에 사용되는 임시 세그먼트를 저장하는 공간

- ORDER BY, GROUP BY , 인덱스 생성시 사용

- 임시 세그먼트만 저장 가능

- 기본 임시 테이블스페이스는 데이터베이스 생성 시 지정 됨

- 기본 임시 테이블스페이스는 DROP, OFFLINE 불가

- 롤백을 위한 이전 이미지를 저장하는 공간

- 언두 세그먼트만 저장 가능

- 자동 관리 언두 세그먼트를 사용하기 위해서는 지역 관리 테이블스페이스로 생성해야 함

임시 테이블스페이스임시 테이블스페이스

163

10. 테이블 스페이스4. 4. 용도에 따른 테이블스페이스 구분용도에 따른 테이블스페이스 구분 (( 임시 테이블스페이스임시 테이블스페이스 ))

항목 일반 테이블스페이스 임시 테이블스페이스 지역적 관리 임시 테이블스페이스

익스텐트 할당 해제 SMON 에 의해 수시로 발생 발생 안함 발생 안한

엑세스 방식 일반 엑세스 일반 엑세스 다이렉트 엑세스

복구 복구 필요 복구 필요 복구 불필요

임시 테이블스페이스의 종류 임시 테이블스페이스의 종류

164

10. 테이블 스페이스5. 5. 임시 테이블스페이스의 임시 세그먼트 할당임시 테이블스페이스의 임시 세그먼트 할당

테이터 파일

일반 테이블스페이스일반 테이블스페이스

유저 A유저 A

유저 B유저 B

유저 C유저 C

임시 세그먼트

임시테이블 스페이스

임시테이블 스페이스

테이터 파일

유저 A유저 A

유저 B유저 B

유저 C유저 C

임시 세그먼트

임시 테이블스페이스의 임시 세그먼트 할당방식의 비교 임시 테이블스페이스의 임시 세그먼트 할당방식의 비교

165

10. 테이블 스페이스6. 6. 임시 테이블스페이스의 익스텐트 할당임시 테이블스페이스의 익스텐트 할당

임시 테이블스페이스의 익스텐트 할당 방식의 비교 임시 테이블스페이스의 익스텐트 할당 방식의 비교

임시 세그먼트

익스텐트 익스텐트

세그먼트 헤더

유저 A유저 A

유저 B유저 B

A B

익스텐트 헤더

임시 테이블스페이스의 익스텐트 할당 특징 :

• 익스텐트 단위로 요청 유저에게 할당

• 익스텐트 헤더에 사용중인 유저 표시

• 세그먼트 헤더에서 사용하지 않는 익스텐트 관리

166

10. 테이블 스페이스7. 7. 임시 테이블스페이스의 엑세스임시 테이블스페이스의 엑세스

SGA

데이터 버퍼 캐쉬공유 풀 정렬 작업을 수행 중인 유저

유저유저

다이렉트 엑세스

지역 관리 임시 테이블스페이스

임시 테이블스페이스

일반 테이블스페이스

임시 테이블스페이스의 엑세스 방식의 비교 임시 테이블스페이스의 엑세스 방식의 비교

리두 로그 버퍼

167

10. 테이블 스페이스8. 8. 익스텐트 관리 방법에 따른 테이블스페이스 구분익스텐트 관리 방법에 따른 테이블스페이스 구분

테이터 파일

익스텐트

딕셔너리 관리 테이블스페이스딕셔너리 관리 테이블스페이스

테이터 파일

지역 관리 테이블스페이스

지역 관리 테이블스페이스

시스템 테이블스페이스

시스템 테이블스페이스

테이터 파일

데이터 딕셔너리 테이블

익스텐트 정보 기록

비트 맵

익스텐트 정보를 기록하지 않음

익스텐트 정보 기록

168

10. 테이블 스페이스9. 9. 딕셔너리 관리 테이블스페이스 구분딕셔너리 관리 테이블스페이스 구분

테이터 파일

익스텐트

딕셔너리 관리 테이블스페이스딕셔너리 관리 테이블스페이스

시스템 테이블스페이스

시스템 테이블스페이스

테이터 파일

익스텐트 정보 기록

사원 테이블

데이터 딕셔너리 테이블

• 해당 테이블스페이스에 존재하는 세그먼트가 사용하는 익스텐트의 정보가 변경될 때마다 관련 데이터 딕셔너리 테이블에 해당 익스텐트 정보를 갱신

• 세그먼트마다 각기 다른 익스텐트 크기 설정 가능

• 데이터 딕셔너리 테이블에 대한 언두 정보 발생

169

10. 테이블 스페이스10. 10. 딕셔너리 관리 테이블스페이스 구분딕셔너리 관리 테이블스페이스 구분

• 데이터 딕셔너리 테이블을 갱신하거나 참조하지 않음

• 데이터 딕셔너리 테이블 갱신에 따른 언두 정보 불필요

• 익스텐트 통합 불필요

• UNIFORM 옵션을 사용하여 테이블스페이스를 생성한 경우 모든 세그먼트의 스토리지 옵션이 동일

• UNIFORM 옵션을 사용하지 않은 경우 오라클이 세그먼트 크기를 참조하여 자동으로 익스텐트 크기 를 결정

테이터 파일

지역 관리 테이블스페이스

지역 관리 테이블스페이스

시스템테이블스페이스

시스템테이블스페이스

테이터 파일

익스텐트 정보를 기록하지 않음익스텐트 정보 기록

데이터 딕셔너리 테이블

170

10. 테이블 스페이스11. 11. 세그먼트 공간 관리 방법에 따른 테이블스페이스 구분세그먼트 공간 관리 방법에 따른 테이블스페이스 구분

• 자동 세그먼트 공간 관리 방식 (Automatic Segment Space Management, ASSM) :

- 세그먼트를 구성하는 각 익스텐트의 첫 번째 데이터 블록인 익스텐트 헤더에서 비트맵으로 여유 공간을 가지는 데이터 블록을 관리하는 방식

- PCTUSED, FREELISTS 관련 옵션 사용 불필요

- 공간 사용 효율성 및 동시 Insert 작업에 대한 성능 향상

• 수동 세그먼트 공간 관리 방식 :

- 세그먼트를 구성하는 익스텐트 중 첫 번째 익스텐트의 첫 번째 데이터 블록인 세그먼트 헤더에서 프리리스트로 여유 공간을 가지는 데이터 블록을 관리하는 방식

자동 세그먼트 공간 관리

비트맵익스텐트

수동 세그먼트 공간 관리

프리리스트첫번째 익스텐트

171

10. 테이블 스페이스12. 12. 테이블스페이스 생성테이블스페이스 생성

생성생성

일반 테이블스페이스 생성일반 테이블스페이스 생성

SQL> CREATE TABLESPACE tablespace_name

[DATAFILE datafile_clause]

[BLOCKSIZE n [K]]

[LOGGING | NOLOGGING]

[DEFAULT storage_clause]

[extent_management_clause]

[segment_management_clause];

SQL> CREATE TABLESPACE tablespace_name

[DATAFILE datafile_clause]

[BLOCKSIZE n [K]]

[LOGGING | NOLOGGING]

[DEFAULT storage_clause]

[extent_management_clause]

[segment_management_clause];

언두 테이블스페이스 생성언두 테이블스페이스 생성

SQL> CREATE UNDO TABLESPACE tablespace_name

[DATAFILE clause]

[extent_management_clause];

SQL> CREATE UNDO TABLESPACE tablespace_name

[DATAFILE clause]

[extent_management_clause];

SQL> CREATE TEMPORARY TABLESPACE tablespace_name

[TEMPFILE clause]

[extent_management_clause];

SQL> CREATE TEMPORARY TABLESPACE tablespace_name

[TEMPFILE clause]

[extent_management_clause]; 임시 테이블스페이스 생성임시 테이블스페이스 생성

172

10. 테이블 스페이스13. 13. 테이블스페이스 변경테이블스페이스 변경

변경변경

크기 변경크기 변경

SQL> ALTER TABLESPACE tablespace_name

[DATAFILE datafile_clause]

SQL> ALTER DATABAE ‘file_name’ resize n [G|M|K]

SQL> ALTER TABLESPACE tablespace_name

[DATAFILE datafile_clause]

SQL> ALTER DATABAE ‘file_name’ resize n [G|M|K]

읽기 전용으로 변경읽기 전용으로 변경SQL> ALTER TABLESPACE tablespace_name READ ONLY

SQL> ALTER TABLESPACE tablespace_name READ WRITE

SQL> ALTER TABLESPACE tablespace_name READ ONLY

SQL> ALTER TABLESPACE tablespace_name READ WRITE

SQL> ALTER TABLESPACE tablespace_name

[DEFAULT storage_clause]

SQL> ALTER TABLESPACE tablespace_name

[DEFAULT storage_clause] 스토리지 옵션 변경스토리지 옵션 변경

데이터파일 위치 변경데이터파일 위치 변경

Online / Offline 변경Online / Offline 변경

SQL> ALTER TABLESPACE tablespace_name { ONLINE | OFFLINE [NORMAL|TEMPORARY|IMMEDATE] };SQL> ALTER TABLESPACE tablespace_name { ONLINE | OFFLINE [NORMAL|TEMPORARY|IMMEDATE] };

이름 변경이름 변경 SQL> ALTER TABLESPACE old_name rename to new_name;SQL> ALTER TABLESPACE old_name rename to new_name;

173

10. 테이블 스페이스14. 14. 일반 테이블스페이스의 데이터 파일 이동일반 테이블스페이스의 데이터 파일 이동

테이블스페이스 온라인테이블스페이스 온라인

rm /oradata1/tbs_a_01.dbf

② 복사

데이터베이스 정보 변경

데이터베이스 정보 변경

테이블스페이스 오프라인

/oradata1/Tbs_a_01.dbf /oradata3/

Tbs_a_01.dbf

이전 데이터 파일 삭제이전 데이터 파일 삭제

비 시스템테이블 스페이스 데이터파일 위치 이동 비 시스템테이블 스페이스 데이터파일 위치 이동

174

10. 테이블 스페이스15. 15. 시스템 테이블스페이스의 데이터 파일 이동시스템 테이블스페이스의 데이터 파일 이동

시스템테이블 스페이스 데이터파일 위치 이동 시스템테이블 스페이스 데이터파일 위치 이동

데이터베이스 오픈데이터베이스 오픈

rm /oradata1/system.dbf

② 복사

데이터베이스 정보 변경

데이터베이스 정보 변경

③④

/oradata1/system.dbf

/oradata3/system.dbf

이전 데이터 파일 삭제이전 데이터 파일 삭제

데이터베이스 마운트 상태데이터베이스 마운트 상태

175

10. 테이블 스페이스16. 16. 테이블스페이스 관련 조회테이블스페이스 관련 조회

검색검색

테이블스페이스 정보 검색테이블스페이스 정보 검색SQL> SELECT * FROM V$TABLESPACE;

 SQL> SELECT * FROM DBA_TABLESPACES;

SQL> SELECT * FROM V$TABLESPACE;

 SQL> SELECT * FROM DBA_TABLESPACES;

데이터파일 정보 검색데이터파일 정보 검색

SQL> SELECT FILE_ID, FILE_NAME,

TABLESPACE_NAME,

BYTES, STATUS, AUTOEXTENSIBLE

FROM DBA_DATA_FILES;

 

SQL> SELECT FILE_ID, FILE_NAME,

TABLESPACE_NAME,

BYTES, STATUS, AUTOEXTENSIBLE

FROM DBA_TEMP_FILES;

SQL> SELECT FILE_ID, FILE_NAME,

TABLESPACE_NAME,

BYTES, STATUS, AUTOEXTENSIBLE

FROM DBA_DATA_FILES;

 

SQL> SELECT FILE_ID, FILE_NAME,

TABLESPACE_NAME,

BYTES, STATUS, AUTOEXTENSIBLE

FROM DBA_TEMP_FILES;

176

Chapter11. Chapter11. 오라클 오브젝트오라클 오브젝트

177

11. 오라클 오브젝트1. 1. 테이블의 구성요소 테이블의 구성요소

사원번호 사원이름 근무부서001000200030

최세진조경민이창구

개발팀개발팀컨설팅팀…

컬럼

사원 테이블

• 컬럼 : 테이블에 저장될 데이터의 특성을 지정하는 테이블의 구성요소• 행 : 컬럼에 정의된 형식으로 저장된 데이터 한 건 한 건을 의미• 컬럼 : 테이블에 저장될 데이터의 특성을 지정하는 테이블의 구성요소• 행 : 컬럼에 정의된 형식으로 저장된 데이터 한 건 한 건을 의미

178

11. 오라클 오브젝트2. 2. 컬럼 타입의 종류컬럼 타입의 종류

컬럼 타입의 종류

• Blob - 4GB 이내의 바이너리 데이터 저장• Clob - 4GB 이하 크기의 문자열 저장• Date - 날짜 및 시간 저장• Long - 2GB 이하 크기의 문자열 저장• Number(a,b) - 숫자를 저장하는 컬럼 타입으로 a 는 소수점 왼쪽 자릿수이며 b 는 소수점 이후 자릿수를 표현• Raw, Long Raw - 이미지 파일 및 비디오 파일과 같은 로우 바이너리 파일 저장• Rowid - 로우 아이디 값 저장• Timestamp(a) - 날짜 및 시간을 저장하며 a 는 초 이하의 자릿수를 지정• Varchar2(Size) - 문자열을 실제 문자열의 크기로 저장• Char(Size) - 문자열의 크기를 Size 값으로 고정해서 저장

• Blob - 4GB 이내의 바이너리 데이터 저장• Clob - 4GB 이하 크기의 문자열 저장• Date - 날짜 및 시간 저장• Long - 2GB 이하 크기의 문자열 저장• Number(a,b) - 숫자를 저장하는 컬럼 타입으로 a 는 소수점 왼쪽 자릿수이며 b 는 소수점 이후 자릿수를 표현• Raw, Long Raw - 이미지 파일 및 비디오 파일과 같은 로우 바이너리 파일 저장• Rowid - 로우 아이디 값 저장• Timestamp(a) - 날짜 및 시간을 저장하며 a 는 초 이하의 자릿수를 지정• Varchar2(Size) - 문자열을 실제 문자열의 크기로 저장• Char(Size) - 문자열의 크기를 Size 값으로 고정해서 저장

179

11. 오라클 오브젝트3. 3. 테이블의 종류테이블의 종류

일반 테이블 파티션 테이블

인덱스 구조의 테이블

180

11. 오라클 오브젝트4. 4. 테이블의 사용테이블의 사용

데이터 저장

데이터 변경

데이터 제거

데이터 조회

일반 테이블

181

11. 오라클 오브젝트5. 5. 테이블 생성테이블 생성

SQL> CREATE TABLE 사원 ( 사원번호 CHAR(4) NOT NULL, 사원이름 VARCHAR2(20) ) TABLESPACE USERS PCTFREE 10 PCTUSED 80 INITRANS 3 MAXTRANS 255 STORAGE ( INITIAL 10M NEXT 10M PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS UNLIMITED) ;

SQL> CREATE TABLE 사원 ( 사원번호 CHAR(4) NOT NULL, 사원이름 VARCHAR2(20) ) TABLESPACE USERS PCTFREE 10 PCTUSED 80 INITRANS 3 MAXTRANS 255 STORAGE ( INITIAL 10M NEXT 10M PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS UNLIMITED) ;

182

11. 오라클 오브젝트6. 6. 테이블 삭제테이블 삭제 , , 재구성재구성 , , 수정 및 절단수정 및 절단

테이블 재구성

SQL> ALTER TABLE 사원 MOVE TABLESPACE TEST;

테이블 재구성

SQL> ALTER TABLE 사원 MOVE TABLESPACE TEST;

테이블 절단

SQL> TRUNCATE TABLE 사원 ;

테이블 절단

SQL> TRUNCATE TABLE 사원 ;

테이블 삭제

SQL> DROP TABLE 사원 ;

테이블 삭제

SQL> DROP TABLE 사원 ;

컬럼 수정

SQL> ALTER TABLE table_name MODIFY (column_name data_type);

컬럼 수정

SQL> ALTER TABLE table_name MODIFY (column_name data_type);

183

11. 오라클 오브젝트7. 7. 테이블 컬럼 추가테이블 컬럼 추가 , , 삭제 및 변경삭제 및 변경

컬럼 추가

SQL> ALTER TABLE table_name ADD (column_name data_type);

컬럼 추가

SQL> ALTER TABLE table_name ADD (column_name data_type);

컬럼 삭제

SQL> ALTER TABLE 사원 DROP COLUMN column_name CASCADE CONSTRAINTS CHECKPOINT 1000;

컬럼 삭제

SQL> ALTER TABLE 사원 DROP COLUMN column_name CASCADE CONSTRAINTS CHECKPOINT 1000;

비사용 컬럼으로 변경

SQL> ALTER TABLE 사원 SET UNUSED COLUMN column_name CASCADE CONSTRAINT;

비사용 컬럼으로 변경

SQL> ALTER TABLE 사원 SET UNUSED COLUMN column_name CASCADE CONSTRAINT;

테이블 정보 확인

SQL> SELECT * FROM DBA_TABLES;SQL> SELECT * FROM DBA_OBJECTS;

테이블 정보 확인

SQL> SELECT * FROM DBA_TABLES;SQL> SELECT * FROM DBA_OBJECTS;

184

11. 오라클 오브젝트8. 8. 인덱스 개념인덱스 개념

인덱스

테이블 조회 SQL

빠른 조회 성능 보장

테이블

데이터베이스

185

11. 오라클 오브젝트9. 9. 인덱스 구조인덱스 구조

윤진이권기흥박경남이슬기

580600550530

사원이름 등급

create index emp_idx on emp(ename);

AACCBTABCAAAAB5AAA AACCBTABCAAAAB5AABAACCBTABCAAAAB5AACAACCBTABCAAAAB5AAD

ROWID

권기흥박경남윤진이이슬기

사원이름AACCBTABCAAAAB5AABAACCBTABCAAAAB5AACAACCBTABCAAAAB5AAA AACCBTABCAAAAB5AAD

ROWID

사원 테이블

사원이름 인덱스

검색

186

11. 오라클 오브젝트10. B*TREE 10. B*TREE 인덱스 인덱스

루트 (Root) 블록

브랜치 (Branch) 블록<03991, ROWID><03992, ROWID><03993, ROWID>…

<03991, ROWID><03992, ROWID><03993, ROWID>…

<04000, 블록 주소 ><04000, 블록 주소 >

<02500, 블록 주소 ><02500, 블록 주소 >

리프 (Leaf) 블록

• 루트 블록 (Root Block) - 분기할 수 있는 키 값과 하위 레벨인 브랜치 블록들에 대한 주소 값을 저장• 브랜치 블록 (Branch Block) - 분기할 수 있는 키 값과 하위 레벨인 리프 블록들에 대한 주소 값 저장• 리프 블록 (Leaf Block) - 실제 인덱스 키 컬럼 값과 ROWID 를 저장

• 루트 블록 (Root Block) - 분기할 수 있는 키 값과 하위 레벨인 브랜치 블록들에 대한 주소 값을 저장• 브랜치 블록 (Branch Block) - 분기할 수 있는 키 값과 하위 레벨인 리프 블록들에 대한 주소 값 저장• 리프 블록 (Leaf Block) - 실제 인덱스 키 컬럼 값과 ROWID 를 저장

187

11. 오라클 오브젝트11. B*TREE 11. B*TREE 인덱스 사용 인덱스 사용

<110, ROWID><120, ROWID>…

<110, ROWID><120, ROWID>…

<160, ROWID><170, ROWID>…

<160, ROWID><170, ROWID>…

<80, ROWID><90, ROWID>…

<80, ROWID><90, ROWID>…

<100, 블록 주소 ><100, 블록 주소 ><150, 블록 주소 ><150, 블록 주소 >

<100, 블록 주소 ><100, 블록 주소 >

브랜치 블록

루트 블록

리프 블록

부서번호 인덱스

사번 이름

110 권기흥211 김윤희212 김미경

사번 이름

110 권기흥211 김윤희212 김미경

부서 테이블

• 온라인 업무에서와 같이 적은 로우의 데이터 엑세스 시 유리

• 분포도가 나쁜 컬럼에 대해서는 성능 저하 발생 가능

• 하나의 로우 엑세스 시 어느 로우나 동일한 양의 블록 엑세스

• 온라인 업무에서와 같이 적은 로우의 데이터 엑세스 시 유리

• 분포도가 나쁜 컬럼에 대해서는 성능 저하 발생 가능

• 하나의 로우 엑세스 시 어느 로우나 동일한 양의 블록 엑세스

188

11. 오라클 오브젝트12. 12. 비트맵 인덱스 비트맵 인덱스

Root

Branch

Leaf

• 분포도가 나쁜 컬럼에 대해서 성능 보장

• OR 연산에 대해서 효율적

• DML 에 대한 데이터 변경 시 부하 급증 가능

• 분포도가 나쁜 컬럼에 대해서 성능 보장

• OR 연산에 대해서 효율적

• DML 에 대한 데이터 변경 시 부하 급증 가능

189

11. 오라클 오브젝트13. 13. 역 전환 키 인덱스 역 전환 키 인덱스

사번

1477

1537

3587

6217

6117

7417

사번 부서

7002 DM

7116 DM

7126 DCS

7349 CC

7741 OSS

7216 CSBS

… …

… …

인덱스 Key 테이블

• 좌측 리프 블록에 대한 경합 해소• 범위 스캔 시 인덱스 엑세스 불가• 좌측 리프 블록에 대한 경합 해소• 범위 스캔 시 인덱스 엑세스 불가

190

11. 오라클 오브젝트14. 14. 함수 기반 인덱스 함수 기반 인덱스

SQL> select * from emp where upper(ename)=‘JAMES’;SQL> select * from emp where abc(sal) > 1000;

SQL> Create Index emp_idx on emp(upper(ename));

SQL> select * from emp where sal > ‘1000’ ; (X)

• 사용하는 이유사용하는 이유 : : 위와 같이 인덱스를 계산된 위와 같이 인덱스를 계산된 columncolumn 을 기준으로 만들 때 사용을 기준으로 만들 때 사용• 사용할 수 있는 조건사용할 수 있는 조건 : compatible: compatible 이 이 8.1.7 8.1.7 이상일 경우이상일 경우 , query_rewrite_enable=true, , query_rewrite_enable=true, useruser 에 대한 에 대한 query rewrite query rewrite 권한권한

• 가공 ( 계산 ) 된 컬럼에 대한 인덱스 엑세스 가능 - 함수 등에 의해 Where 조건 절의 인덱스 컬럼 변경 시에도 인덱스 사용 가능• DML 부하 증가 - 실제 인덱스에 데이터 저장 시 함수를 적용하여 저장해야 하므로 함수 수행에 의한 부하 증가• 인덱스의 유연성 감소 - 인덱스로 만들어진 해당 함수가 Where 조건에 반드시 존재해야만 인덱스 사용이 가능하므로 다른 조건들에 대해 해당 인덱스 사용 불가

• 가공 ( 계산 ) 된 컬럼에 대한 인덱스 엑세스 가능 - 함수 등에 의해 Where 조건 절의 인덱스 컬럼 변경 시에도 인덱스 사용 가능• DML 부하 증가 - 실제 인덱스에 데이터 저장 시 함수를 적용하여 저장해야 하므로 함수 수행에 의한 부하 증가• 인덱스의 유연성 감소 - 인덱스로 만들어진 해당 함수가 Where 조건에 반드시 존재해야만 인덱스 사용이 가능하므로 다른 조건들에 대해 해당 인덱스 사용 불가

191

11. 오라클 오브젝트15. 15. 인덱스 생성 인덱스 생성

B* 트리 인덱스 생성 SQL> CREATE [UNIQUE] INDEX INDEX_NAMEON TABLE_NAME(COLUMN_NAME)PCTFREE nINITRANS nTABLESPACE TABLESPACE_NAMESTORAGE (INITIAL nM NEXT nM PCTINCREASE n MAXEXTENTS n);

B* 트리 인덱스 생성 SQL> CREATE [UNIQUE] INDEX INDEX_NAMEON TABLE_NAME(COLUMN_NAME)PCTFREE nINITRANS nTABLESPACE TABLESPACE_NAMESTORAGE (INITIAL nM NEXT nM PCTINCREASE n MAXEXTENTS n);

비트맵 인덱스 생성 SQL> CREATE BITMAP INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME);

비트맵 인덱스 생성 SQL> CREATE BITMAP INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME);

역 전환 인덱스 생성 SQL> CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME) REVERSE;

역 전환 인덱스 생성 SQL> CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN_NAME) REVERSE;

함수 기반 인덱스 생성  SQL> CREATE INDEX INDEX_NAME ON TABLE_NAME(함수 (COLUMN_NAME));

함수 기반 인덱스 생성  SQL> CREATE INDEX INDEX_NAME ON TABLE_NAME(함수 (COLUMN_NAME));

192

11. 오라클 오브젝트16. 16. 인덱스 제거 및 재구성인덱스 제거 및 재구성

인덱스 제거 SQL> DROP INDEX INDEX_NAME;

인덱스 제거 SQL> DROP INDEX INDEX_NAME;

인덱스 재구성 SQL> ALTER INDEX INDEX_NAME REBUILDTABLESPACE TABLESPACE_NAME ONLINE PARALLEL n;

인덱스 재구성 SQL> ALTER INDEX INDEX_NAME REBUILDTABLESPACE TABLESPACE_NAME ONLINE PARALLEL n;

193

11. 오라클 오브젝트17. 17. 뷰 개념 및 특징뷰 개념 및 특징

사원 테이블

뷰뷰

유저 1유저 1 유저 2유저 2 유저 3유저 3 유저 4유저 4

일부 컬럼에 대해 뷰 생성

• 뷰는 실제 데이터를 저장하지 않음• 뷰에는 인덱스를 생성할 수 없음• 보안 및 성능 향상을 위해 제공

• 뷰는 실제 데이터를 저장하지 않음• 뷰에는 인덱스를 생성할 수 없음• 보안 및 성능 향상을 위해 제공

194

11. 오라클 오브젝트18. 18. 뷰 관리뷰 관리

뷰 생성

SQL> CREATE OR REPLACE NOFORCE VIEW 사원 _VIEW AS 서브쿼리 ;

뷰 생성

SQL> CREATE OR REPLACE NOFORCE VIEW 사원 _VIEW AS 서브쿼리 ;

뷰 재컴파일

SQL> ALTER VIEW 사원 _VIEW COMFILE;

뷰 재컴파일

SQL> ALTER VIEW 사원 _VIEW COMFILE;

뷰 제거

SQL> DROP VIEW 사원 _VIEW;

뷰 제거

SQL> DROP VIEW 사원 _VIEW;

뷰 조회

SQL> SELECT * FROM DBA_VIEWS

뷰 조회

SQL> SELECT * FROM DBA_VIEWS

195

11. 오라클 오브젝트19. 19. 동의어 개념동의어 개념

부서 테이블

관리자 유저

사원 테이블

사원 동의어 부서 동의어

개발자 유저개발자 유저

196

11. 오라클 오브젝트20. 20. 동의어 관리동의어 관리

동의어 생성

SQL> CREATE [PUBLIC] SYNONYM synonym_name FOR object;

동의어 생성

SQL> CREATE [PUBLIC] SYNONYM synonym_name FOR object;

동의어 제거

SQL> DROP [PUBLIC] SYNONYM synonym_name;;

동의어 제거

SQL> DROP [PUBLIC] SYNONYM synonym_name;;

동의어 확인

SQL> SELECT * FROM DBA_SYNONYMS;

동의어 확인

SQL> SELECT * FROM DBA_SYNONYMS;

197

11. 오라클 오브젝트21. 21. 시퀀스 개념시퀀스 개념

사원이름DB팀개발팀지원팀인력팀

부서번호0001000200030004

10402010

사원 테이블

사원번호

... ... ...

신입 사원 채용신입 사원 채용중복되지 않은 유일한 사번 할당 필요

시퀀스시퀀스

198

11. 오라클 오브젝트22. 22. 시퀀스 관리시퀀스 관리

시퀀스 생성

SQL> CREATE SEQUENCE sequence_name [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE];

시퀀스 생성

SQL> CREATE SEQUENCE sequence_name [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE];

시퀀스 수정

SQL> ALTER SEQUENCE sequence_name [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE];

시퀀스 수정

SQL> ALTER SEQUENCE sequence_name [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE];

시퀀스 확인

SQL> SELECT * FROM DBA_SEQUENCES;

시퀀스 확인

SQL> SELECT * FROM DBA_SEQUENCES;

시퀀스 제거

SQL> DROP SEQUENCE sequence_name;;

시퀀스 제거

SQL> DROP SEQUENCE sequence_name;;

199

11. 오라클 오브젝트23. 23. 시퀀스 사용시퀀스 사용

사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원 테이블

사원번호

... ... ...

신입 사원 채용신입 사원 채용

시퀀스시퀀스

NEXTVAL 할당

NEXTVAL

CURRVAL

200

Chapter12. Chapter12. 언두 데이터언두 데이터

201

12. 언두 데이터1. 1. 언두 데이터 개념언두 데이터 개념

부서 테이블

UPDATEUPDATE

10 DM팀 서울

번호 팀명 위치

분당으로 변경언두 세그먼트

언두 데이터 ( 서울 )

언두 테이블스페이스

202

12. 언두 데이터2. 2. 언두 데이터의 목적언두 데이터의 목적

언두 세그먼트

언두 테이블스페이스

읽기 일관성읽기 일관성

작업 롤백작업 롤백

복구복구

203

12. 언두 데이터3. 3. 언두 데이터에 의한 롤백언두 데이터에 의한 롤백

데이터 복구 ( 서울 )

부서 테이블

UPDATEUPDATE

10 DM팀 서울

번호 팀명 위치

분당으로 변경언두 세그먼트

언두 데이터 ( 서울 )

언두 테이블스페이스

①④

롤백롤백

204

12. 언두 데이터4. 4. 언두 데이터에 의한 읽기 일관성언두 데이터에 의한 읽기 일관성

부서 테이블

10 DM팀 서울

번호 팀명 위치

언두 테이블스페이스

조회조회

④③

UPDATEUPDATE Commit 여부Commit 여부

분당으로 갱신⑤

예아니오

10 DM팀 서울10 DM팀 서울

ORA-1555 또는

결과

205

12. 언두 데이터5. 5. 복구복구 (( 인스턴스 복구인스턴스 복구 ))

리두 로그리두 로그

언두 세그먼트

Commit 안된 데이터

장애 발생

장애 시점 이후의리두 로그 파일 적용

Commit 된 데이터

오라클 오라클 오라클

리두 로그 파일

206

12. 언두 데이터5. 5. 언두 세그먼트의 특징언두 세그먼트의 특징

언두 세그먼트테이블동일한 구조

트랜잭션 1

트랜잭션 2

트랜잭션 1

트랜잭션 2데이터 블럭

언두 세그먼트

207

12. 언두 데이터6. 6. 언두 세그먼트의 확장 및 축소언두 세그먼트의 확장 및 축소

EX4

Ex3

EX1

EX2

EX2

EX1

EX3

EX5

EX4

사용중인 익스텐트

사용하지 않는 익스텐트

EX4

EX3

EX1

EX2

EX4

EX3

EX1

EX2

언두 세그먼트 확장 언두 세그먼트 축소

언두 세그먼트 축소

1. 절단2. 익스텐트 재할당3. Optimal 크기

1. 절단2. 익스텐트 재할당3. Optimal 크기

208

12. 언두 데이터7. 7. 언두 세그먼트의 관리 방식언두 세그먼트의 관리 방식

오라클오라클

언두 테이블스페이스언두 테이블스페이스

수동 관리자동 관리

언두 관리 주체 데이터베이스 관리자

209

12. 언두 데이터8. 8. 언두 테이블스페이스 관리언두 테이블스페이스 관리

언두 테이블스페이스 생성 ( 데이터베이스 생성 시 )

SQL> CREATE DATABASE test …… UNDO TABLESPACE undo_tbs DATAFILE ‘/oradata/test/undo01.dbf’ SIZE 1000M;

언두 테이블스페이스 생성 ( 데이터베이스 생성 시 )

SQL> CREATE DATABASE test …… UNDO TABLESPACE undo_tbs DATAFILE ‘/oradata/test/undo01.dbf’ SIZE 1000M;

언두 테이블스페이스 생성 ( 데이터베이스 생성과 별도로 생성 시 )

SQL> CREATE UNDO TABLESPACE undo_tbs DATAFILE ‘/oradata/test/undo01.dbf’ SIZE 1000M;

언두 테이블스페이스 생성 ( 데이터베이스 생성과 별도로 생성 시 )

SQL> CREATE UNDO TABLESPACE undo_tbs DATAFILE ‘/oradata/test/undo01.dbf’ SIZE 1000M;

언두 테이블스페이스 변경

SQL> ALTER TABLESPACE undo_tbs ADD DATAFILE ‘/oradata/test/undo02.dbf’ SIZE 1000M;

언두 테이블스페이스 변경

SQL> ALTER TABLESPACE undo_tbs ADD DATAFILE ‘/oradata/test/undo02.dbf’ SIZE 1000M;

언두 테이블스페이스 제거

SQL> DROP TABLESPACE undo_tbs;

언두 테이블스페이스 제거

SQL> DROP TABLESPACE undo_tbs;

언두 테이블스페이스 교체

SQL> ALTER SYSTEM SET UNDO_TABLESPACE = undo_tbs;

언두 테이블스페이스 교체

SQL> ALTER SYSTEM SET UNDO_TABLESPACE = undo_tbs;

210

Chapter13. Chapter13. 제약 조건제약 조건

211

13. 제약 조건1. 1. 제약 조건의 종류제약 조건의 종류

해당 컬럼에 NULL 을 허용하지 않음NOT NULLNOT NULL

UNIQUEUNIQUE

PRIMARY KEYPRIMARY KEY

CHECKCHECK

FOREIGN KEYFOREIGN KEY

해당 컬럼의 값이 유일함을 만족

해당 컬럼의 값이 NOT NULL 이며 UNIQUE 를 만족

해당 컬럼에는 부모 테이블에 존재하는 값으로만 저장

조건을 만족하는 값만 해당 컬럼에 저장

212

13. 제약 조건2. NOT NULL 2. NOT NULL 제약 조건제약 조건

사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원 테이블

사원번호

... ......

데이터 Insert데이터 Insert

사원번호 컬럼NOT NULL 확인

사원번호 컬럼NOT NULL 확인

사원번호 컬럼이 NULL?

사원번호 컬럼이 NULL?

아니요

Insert 불가

NOT NULL 컬럼

213

13. 제약 조건3. UNIQUE 3. UNIQUE 제약 조건제약 조건

데이터 Insert데이터 Insert

사원 번호 +사원

UNIQUE 확인

사원 번호 +사원

UNIQUE 확인 사원번호 +사원이름이 UNIQUE?

사원번호 +사원이름이 UNIQUE?

Insert 불가

아니요

사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원 테이블

사원번호

... ......

UNIQUE 컬럼

214

13. 제약 조건4. PRIMARY KEY 4. PRIMARY KEY 제약 조건제약 조건

데이터 Insert데이터 Insert

사원번호 +사원이름이 UNIQUE?

사원번호 +사원이름이 UNIQUE?

Insert 불가

아니요

사원번호 +사원이름이 NOT

NULL?

사원번호 +사원이름이 NOT

NULL?

아니요

사원번호 + 사원이름NOT NULL 확인

사원번호 + 사원이름UNIQUE 확인

사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원번호

... ......

PRIMARY KEY 컬럼

215

13. 제약 조건5. FOREIGN KEY 5. FOREIGN KEY 제약 조건제약 조건

사원 테이블

사원 테이블에 데이터 Insert사원 테이블에 데이터 Insert

FOREIGN KEY

존재하지 않음

부서 테이블에 해당 부서번호 존재 확인부서 테이블에 해당 부서번호 존재 확인

부서이름관리팀인력팀총무팀기획팀

지역10203040

서울서울서울부산

부서 테이블부서번호

... ......

PRIMARY KEY

존재

Insert 수행

부 서 번 호 존 재 여부 확인

Insert 불가

사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원번호

... ......

216

13. 제약 조건6. CHECK 6. CHECK 제약 조건제약 조건

데이터 Insert데이터 Insert

급여 >‘200’

급여 >‘200’

급여 > ‘200’ 을 만족하는가 ?

급여 > ‘200’ 을 만족하는가 ?

Insert 불가

아니요

사원 테이블사원이름김윤희김희진이훈주김미경

부서번호0001000200030004

10402010

사원번호

... ......

217

13. 제약 조건7. CHECK 7. CHECK 제약 조건 변경 및 확인제약 조건 변경 및 확인

제약 조건 생성

SQL> CREATE TABLE table_name (column_name datatype [column_constraint], … [table_constraint]…);

제약 조건 생성

SQL> CREATE TABLE table_name (column_name datatype [column_constraint], … [table_constraint]…);

제약 조건 추가

SQL> ALTER TABLE table_nameADD [CONSTRAINT constraint_name] type (column);

제약 조건 추가

SQL> ALTER TABLE table_nameADD [CONSTRAINT constraint_name] type (column);

제약 조건 삭제

SQL> ALTER TABLE table_nameDROP CONSTRAINT constraint_name;

SQL> ALTER TABLE table_nameDROP PRIMARY KEY;

제약 조건 삭제

SQL> ALTER TABLE table_nameDROP CONSTRAINT constraint_name;

SQL> ALTER TABLE table_nameDROP PRIMARY KEY;

제약 조건 활성화 및 비활성화

SQL> ALTER TABLE table_nameENABLE CONSTRAINT constraint_name;

SQL> ALTER TABLE table_nameDISABLE CONSTRAINT constraint_name;

제약 조건 활성화 및 비활성화

SQL> ALTER TABLE table_nameENABLE CONSTRAINT constraint_name;

SQL> ALTER TABLE table_nameDISABLE CONSTRAINT constraint_name;

제약 조건 확인

SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITIONFROM DBA_CONSTRAINTSWHERE TABLE_NAME = ‘table_name’;

제약 조건 확인

SQL> SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, SEARCH_CONDITIONFROM DBA_CONSTRAINTSWHERE TABLE_NAME = ‘table_name’;

218

Chapter14. Chapter14. 유저와 권한유저와 권한

219

14. 유저와 권한1. 1. 유저와 권한의 개념유저와 권한의 개념

시스템

유저와 권한 유저와 권한

텔넷으로 접속

사용자

시스템 정보 파악

시스템

데이터베이스 유저와 권한 데이터베이스 유저와 권한

데이터베이스로 접속

사용자

데이터베이스 조작

시스템

운영 체제 유저 , 데이터베이스 유저 및 권한

운영 체제 유저 , 데이터베이스 유저 및 권한

시스템으로 접속

사용자

시스템 접속 후 데이터베이스 접속데이터베이스 접속 후 데이터베이스

조작

■ 운영 체제 유저 - 해당 운영 체제에 접속하기 위한 사용자를 의미

■ 운영 체제 권한 - 해당 운영 체제 유저로 접속하여 작업을 수행하기 위해 필요한 요소

220

14. 유저와 권한2. 2. 데이터베이스 유저 생성 및 변경데이터베이스 유저 생성 및 변경

데이터베이스 유저 생성

SQL> CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE temp_tablespace_name QUOTA { integer [K|M] | UNLIMITED } ON tablespace_name;

데이터베이스 유저 생성

SQL> CREATE USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE temp_tablespace_name QUOTA { integer [K|M] | UNLIMITED } ON tablespace_name;

데이터베이스 유저 제거

SQL> DROP USER user_name [CASCADE];

데이터베이스 유저 제거

SQL> DROP USER user_name [CASCADE];

데이터베이스 유저 변경

SQL> ALTER USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE temp_tablespace_name QUOTA { integer [K|M] | UNLIMITED } ON tablespace_name;

데이터베이스 유저 변경

SQL> ALTER USER user_name IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE temp_tablespace_name QUOTA { integer [K|M] | UNLIMITED } ON tablespace_name;

221

14. 유저와 권한3. 3. 데이터베이스 권한의 종류데이터베이스 권한의 종류

오브젝트 권한시스템 권한

시스템 권한 종류 내용

CREATE USER 유저 생성 권한

SELECT ANY TABLE 모든 유저의 테이블 조회 권한

CREATE ANY TABLE 모든 유저의 테이블 생성 권한

CREATE SESSION 유저에게 접속 권한

CREATE TABLE 유저의 테이블 생성 권한

CREATE VIEW 뷰 생성 권한

CREATE PROCEDURE 프로시져 생성 권한

SYSDBA 데이터베이스 최고 관리 권한

SYSOPER 데이터베이스 관리 권한

오브젝트 권한 종류 테이블 뷰

ALTER O X

DELETE O O

INSERT O O

UPDATE O O

INDEX O X

SELECT O O

222

14. 유저와 권한4. 4. 데이터베이스 권한 부여 및 제거데이터베이스 권한 부여 및 제거

시스템 권한 부여

SQL> GRANT 권한 TO user;

오브젝트 권한 부여

SQL> GRANT 권한 ON object_name TO user;

시스템 권한 부여

SQL> GRANT 권한 TO user;

오브젝트 권한 부여

SQL> GRANT 권한 ON object_name TO user;

시스템 권한 제거

SQL> REVOKE 권한 ON object_name FROM user;

오브젝트 권한 제거

SQL> REVOKE 권한 ON object_name FROM user;

시스템 권한 제거

SQL> REVOKE 권한 ON object_name FROM user;

오브젝트 권한 제거

SQL> REVOKE 권한 ON object_name FROM user;

기타

SQL> GRANT 권한 TO user WITH ADMIN OPTION; SQL> GRNAT 권한 ON object_name TO userWITH GRANT OPTION;

SQL> GRANT 권한 ON object_name TO PUBLIC;SQL> REVOKE 권한 ON object_name FROM PUBLIC;

기타

SQL> GRANT 권한 TO user WITH ADMIN OPTION; SQL> GRNAT 권한 ON object_name TO userWITH GRANT OPTION;

SQL> GRANT 권한 ON object_name TO PUBLIC;SQL> REVOKE 권한 ON object_name FROM PUBLIC;

223

14. 유저와 권한5. 5. 데이터베이스 롤 개념 및 관리데이터베이스 롤 개념 및 관리

롤 1롤 1

사용자 1

사용자 3

CREATE SESSION

CREATE TABLE

롤 2롤 2

사용자 2

CREATE INDEX

CREATE SESSION

SELECT ANYDictionary

사용자 4

사용자 5

롤 (Role) 생성

SQL> CREATE ROLE role_name;

롤 (Role) 생성

SQL> CREATE ROLE role_name;

롤 (Role) 에 권한 부여 및 제거

SQL> GRANT CREATE TABLE, CREATE SESSION TO role_name;SQL> REVOKE CREATE TABLE FROM role_name;

롤 (Role) 에 권한 부여 및 제거

SQL> GRANT CREATE TABLE, CREATE SESSION TO role_name;SQL> REVOKE CREATE TABLE FROM role_name;

유저에 롤 (Role) 부여

SQL> GRANT role_name TO user_name;

유저에 롤 (Role) 부여

SQL> GRANT role_name TO user_name;

224

14. 유저와 권한6. 6. 데이터베이스 권한 조회데이터베이스 권한 조회

권한 확인

SQL> SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION FROM DBA_SYS_PRIVS;

SQL> SELECT GRANTEE, OWNER, TABLE_NAME, GRANTOR FROM DBA_TAB_PRIVS;

권한 확인

SQL> SELECT GRANTEE, PRIVILEGE, ADMIN_OPTION FROM DBA_SYS_PRIVS;

SQL> SELECT GRANTEE, OWNER, TABLE_NAME, GRANTOR FROM DBA_TAB_PRIVS;

롤 (Role) 확인

SQL> SELECT ROLE FROM DBA_ROLES;

SQL> SELECT ROLE, PRIVILEGE FROM ROLE_SYS_PRIVS;

SQL> SELECT ROLE, OWNER, TABLE_NAME, COLUMN_NAME, PRIVILEGE FROM ROLE_TAB_PRIVS;

롤 (Role) 확인

SQL> SELECT ROLE FROM DBA_ROLES;

SQL> SELECT ROLE, PRIVILEGE FROM ROLE_SYS_PRIVS;

SQL> SELECT ROLE, OWNER, TABLE_NAME, COLUMN_NAME, PRIVILEGE FROM ROLE_TAB_PRIVS;

225

Chapter15. Chapter15. 플래쉬백과 데이터 펌프플래쉬백과 데이터 펌프

226

15. 플래쉬백과 데이터 펌프1. 1. 플래쉬백 개념플래쉬백 개념

데이터베이스

테이블

삭제된 테이블 복구

커밋이 수행된 DML 복원

이전 시점으로 데이터 베이스 복구

플래쉬백을 이용하여 가능

227

15. 플래쉬백과 데이터 펌프2. 2. 플래쉬백 종류플래쉬백 종류

데이터베이스 레벨 테이블 레벨 로우 레벨

플래쉬 백

플래쉬백 테이블

플래쉬백 삭제

버전 쿼리

트랜잭션 쿼리

플래쉬백데이터베이스

228

15. 플래쉬백과 데이터 펌프3. 3. 플래쉬백 데이터베이스 플래쉬백 데이터베이스

플래쉬백 로그 파일 리두 로그 파일

과거 시점으로 복구

원하는 시점으로 복구

SGA

데이터 버퍼 캐쉬 리두 로그 버퍼공유 풀

플래쉬백 버퍼

RVWRRVWR LGWRLGWR

229

15. 플래쉬백과 데이터 펌프4. 4. 플래쉬백 삭제 플래쉬백 삭제

SQL> DROP TABLE 사원 ;

플래쉬백 삭제

SQL> FLASHBACK TABLE 사원 TO BEFORE DROP;

휴지통

사원 테이블

사원 _PK 인덱스

BIN$aGfsdf=$0

BIN$bdfrgW=$0

SQL> DROP TABLE 사원 ;

230

15. 플래쉬백과 데이터 펌프5. 5. 플래쉬백 테이블 플래쉬백 테이블

SQL> FLASHBACK TABLE TO TIMESTAMP …;

플래쉬백 테이블

SQL> DELETE 사원 WHERE ……10:30

11:00

변경된 데이터

231

15. 플래쉬백과 데이터 펌프5. 5. 버전 쿼리 및 트랜잭션 쿼리 버전 쿼리 및 트랜잭션 쿼리

SQL> SELECT VERSION_STARTTIME, VERSION_ENDTIME, VERSION_XID

VERSION_OPERATION, ENAME

FROM 사원

VERSIONS BETWEEN

TIMESTAMP TO_DATE('06/11/2005 03:07:14','mm/dd/yyyy hh24:mi:ss')

AND TO_DATE('06/11/2005 03:07:35','mm/dd/yyyy hh24:mi:ss')

ORDER BY VERSIONS_STARTTIME;

VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V ENAME

11-JUN-05 03.07.22 11-JUN-05 03.07.24 0002101A00500C61 I 이슬기

11-JUN-05 03.07.30 11-JUN-05 03.07.32 000A101C00700029 U 김지한

11-JUN-05 03.07.33 11-JUN-05 03.07.35 000A101B00700029 U 황오현

SQL> SELECT VERSION_STARTTIME, VERSION_ENDTIME, VERSION_XID

VERSION_OPERATION, ENAME

FROM 사원

VERSIONS BETWEEN

TIMESTAMP TO_DATE('06/11/2005 03:07:14','mm/dd/yyyy hh24:mi:ss')

AND TO_DATE('06/11/2005 03:07:35','mm/dd/yyyy hh24:mi:ss')

ORDER BY VERSIONS_STARTTIME;

VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V ENAME

11-JUN-05 03.07.22 11-JUN-05 03.07.24 0002101A00500C61 I 이슬기

11-JUN-05 03.07.30 11-JUN-05 03.07.32 000A101C00700029 U 김지한

11-JUN-05 03.07.33 11-JUN-05 03.07.35 000A101B00700029 U 황오현

SQL> SELECT UNDO_SQL

FROM FLASHBACK_TRANSACTION_QUERY

WHERE XID = HEXTORAW('000A101C00700029');

UNDO_SQL

UPDATE scott.emp SET ENAME='김지한 '

WHERE ROWID= 'AAAB43ABBAAABBBAAA';

SQL> SELECT UNDO_SQL

FROM FLASHBACK_TRANSACTION_QUERY

WHERE XID = HEXTORAW('000A101C00700029');

UNDO_SQL

UPDATE scott.emp SET ENAME='김지한 '

WHERE ROWID= 'AAAB43ABBAAABBBAAA';

버전 쿼리

트랜잭션 쿼리

232

15. 플래쉬백과 데이터 펌프6. 6. 데이터 추출 및 적재 데이터 추출 및 적재

사원 테이블 데이터

사원 테이블 데이터

사원 테이블

데이터베이스 1 데이터베이스 2

사원 테이블

사원 테이블 데이터

사원 테이블 데이터

① 데이터 이동

② 데이터 추출 ③ 데이터 적재

항목 Export/Import Data Pump SQL Loader

수행 속도 느림 빠름 빠름

이동 가능 가능 불가능

추출 가능 가능 가능

적재 가능 가능 불가능

233

15. 플래쉬백과 데이터 펌프7. Export7. Export

■ scott/tiger, system/manager - 데이터베이스 유저 및 비밀번호

■ FULL - 해당 데이터베이스의 전체 데이터 추출 여부 ( 기본 값은 N)

■ BUFFER - 작업 단위의 크기 설정

■ OWNER - 데이터베이스 유저별 오브젝트 추출 설정

■ FILE - 추출한 데이터를 저장할 파일 이름 설정

■ TABLES - 데이터를 추출할 대상 테이블 설정

■ COMPRESS - 익스텐트 통합 여부를 지정 ( 기본 값은 Y)

■ GRANTS - 오브젝트 권한 설정에 대한 정보 추출 여부 ( 기본값은 Y)

■ INDEXES - 인덱스 스크립트 추출 여부 ( 기본 값은 Y)

■ DIRECT - 직접 경로로 Export 수행 여부 ( 기본 값은 N)

■ TRIGGERS - 트리거 정보 추출 여부 ( 기본 값은 Y)

■ LOG - 로그를 저장할 파일 지정

■ ROWS - 테이블의 데이터 추출 여부 ( 기본 값은 Y)

■ CONSISTENT - 대상 테이블의 읽기 일관성 지정 ( 기본 값은 N)

■ CONSTRAINTS - 제약 조건의 추출 여부 ( 기본 값은 Y)

■ PARFILE - 필요한 옵션을 파라메터 파일에 설정한 후 해당 파라메터 파일을 Export 시 적용

■ scott/tiger, system/manager - 데이터베이스 유저 및 비밀번호

■ FULL - 해당 데이터베이스의 전체 데이터 추출 여부 ( 기본 값은 N)

■ BUFFER - 작업 단위의 크기 설정

■ OWNER - 데이터베이스 유저별 오브젝트 추출 설정

■ FILE - 추출한 데이터를 저장할 파일 이름 설정

■ TABLES - 데이터를 추출할 대상 테이블 설정

■ COMPRESS - 익스텐트 통합 여부를 지정 ( 기본 값은 Y)

■ GRANTS - 오브젝트 권한 설정에 대한 정보 추출 여부 ( 기본값은 Y)

■ INDEXES - 인덱스 스크립트 추출 여부 ( 기본 값은 Y)

■ DIRECT - 직접 경로로 Export 수행 여부 ( 기본 값은 N)

■ TRIGGERS - 트리거 정보 추출 여부 ( 기본 값은 Y)

■ LOG - 로그를 저장할 파일 지정

■ ROWS - 테이블의 데이터 추출 여부 ( 기본 값은 Y)

■ CONSISTENT - 대상 테이블의 읽기 일관성 지정 ( 기본 값은 N)

■ CONSTRAINTS - 제약 조건의 추출 여부 ( 기본 값은 Y)

■ PARFILE - 필요한 옵션을 파라메터 파일에 설정한 후 해당 파라메터 파일을 Export 시 적용

>exp scott/tiger FILE=emp.dmp LOG=emp.log TABLES=emp DIRECTt=y

>exp system/manager FILE=full.dmp FULL=y INDEXES=n TRIGGERS=n

>exp system/manager FILE=scott.dmp onwer=scott ROWS=n

>exp scott/tiger FILE=emp.dmp LOG=emp.log TABLES=emp DIRECTt=y

>exp system/manager FILE=full.dmp FULL=y INDEXES=n TRIGGERS=n

>exp system/manager FILE=scott.dmp onwer=scott ROWS=n

234

15. 플래쉬백과 데이터 펌프8. Import8. Import

■ system/manager, scott/tiger - 데이터베이스 유저 및 비밀번호

■ FULL - 전체 데이터에 대해 Import 여부 ( 기본 값은 N)

■ BUFFER - 작업 단위의 크기 지정

■ FROMUSER - 적재하는 테이블의 소유자 지정

■ TOUSER - 적재되는 테이블의 소유자 지정

■ TABLES - 적재 대상 테이블 지정

■ IGNORE - 적재 대상 테이블이 존재할 경우 에러 발생 여부 ( 기본 값은 N)

■ GRANTS - 권한 적재 여부 지정 ( 기본 값은 Y)

■ INDEXES - 인덱스 생성 여부 ( 기본 값은 Y)

■ COMMIT - 적재 작업 수행 중 커밋 수행 여부이며 Y로 지정한 경우 BUFFER 옵션 단위로

커밋 수행 ( 기본 값은 N)

■ ROWS - 테이블의 데이터 적재 여부 ( 기본 값은 Y)

■ LOG - 로그를 저장할 파일 지정

■ CONSTRAINSTS - 제약 조건 적재 여부 ( 기본 값은 Y)

■ PARFILE - 적재 작업의 옵션을 설정한 파라메터 파일을 지정하여 적용

■ system/manager, scott/tiger - 데이터베이스 유저 및 비밀번호

■ FULL - 전체 데이터에 대해 Import 여부 ( 기본 값은 N)

■ BUFFER - 작업 단위의 크기 지정

■ FROMUSER - 적재하는 테이블의 소유자 지정

■ TOUSER - 적재되는 테이블의 소유자 지정

■ TABLES - 적재 대상 테이블 지정

■ IGNORE - 적재 대상 테이블이 존재할 경우 에러 발생 여부 ( 기본 값은 N)

■ GRANTS - 권한 적재 여부 지정 ( 기본 값은 Y)

■ INDEXES - 인덱스 생성 여부 ( 기본 값은 Y)

■ COMMIT - 적재 작업 수행 중 커밋 수행 여부이며 Y로 지정한 경우 BUFFER 옵션 단위로

커밋 수행 ( 기본 값은 N)

■ ROWS - 테이블의 데이터 적재 여부 ( 기본 값은 Y)

■ LOG - 로그를 저장할 파일 지정

■ CONSTRAINSTS - 제약 조건 적재 여부 ( 기본 값은 Y)

■ PARFILE - 적재 작업의 옵션을 설정한 파라메터 파일을 지정하여 적용

> imp scott/tiger FILE=emp.dmp LOG=emp.log TABLES=emp

> imp system/manager FILE=full.dmp LOG=full.log FULL=y

> imp system/manager FILE=scott.dmp FROMUSER=scott TOUSER=mike

> imp scott/tiger FILE=emp.dmp LOG=emp.log TABLES=emp

> imp system/manager FILE=full.dmp LOG=full.log FULL=y

> imp system/manager FILE=scott.dmp FROMUSER=scott TOUSER=mike

235

15. 플래쉬백과 데이터 펌프9. SQL Loader9. SQL Loader

■ USERID - 데이터베이스 유저 및 비밀번호

■ CONTROLFILE - 설정 값을 저장하고 있는 컨트롤 파일 이름

■ LOGFILE - 로그 파일 이름

■ DATA - 데이터 파일 이름

■ DIRECT - 직접 경로로 적재 수행 여부 ( 기본 값은 N)

■ PARALLEL - 병렬 프로세싱 사용 옵션

■ INFILE - 적재할 파일 이름

■ BADFILE - 입력 형식이 부적합한 로우에 대해 로그를 기록하는 파일

■ DISCARDFILE - 컨트롤 파일에 지정된 컬럼 선택 기준과 일치하지 않는 로우에 대해 기록

■ USERID - 데이터베이스 유저 및 비밀번호

■ CONTROLFILE - 설정 값을 저장하고 있는 컨트롤 파일 이름

■ LOGFILE - 로그 파일 이름

■ DATA - 데이터 파일 이름

■ DIRECT - 직접 경로로 적재 수행 여부 ( 기본 값은 N)

■ PARALLEL - 병렬 프로세싱 사용 옵션

■ INFILE - 적재할 파일 이름

■ BADFILE - 입력 형식이 부적합한 로우에 대해 로그를 기록하는 파일

■ DISCARDFILE - 컨트롤 파일에 지정된 컬럼 선택 기준과 일치하지 않는 로우에 대해 기록

컨트롤 파일 생성 (controlfile.ctl)

LOAD DATA

INFILE '/oracle/DBA/ 적재 .txt' BADFILE '/oracle/DBA/ 적재 .bad‘ DISCARDFILE '/oracle/DBA/ 적재 .dis'

INTO TABLE 사원

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

(" 번호 " CHAR(30),

"이름 " CHAR(10),

" 급여 " CHAR(10))

SQL Loader 수행

> sqlldr system/manager controlfile = controlfile.ctl log = /oracle/DBA/ 적재 .log

컨트롤 파일 생성 (controlfile.ctl)

LOAD DATA

INFILE '/oracle/DBA/ 적재 .txt' BADFILE '/oracle/DBA/ 적재 .bad‘ DISCARDFILE '/oracle/DBA/ 적재 .dis'

INTO TABLE 사원

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

(" 번호 " CHAR(30),

"이름 " CHAR(10),

" 급여 " CHAR(10))

SQL Loader 수행

> sqlldr system/manager controlfile = controlfile.ctl log = /oracle/DBA/ 적재 .log

236

15. 플래쉬백과 데이터 펌프10. 10. 데이터 펌프데이터 펌프

테이터 펌프 Export

> expdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=full.dmp \

LOGFILE=full.log FULL=y

> expdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=scott_hr.dmp \

LOGFILE=scott_hr.log SCHEMAS=scott,hr

> expdp scott/tiger DIRECTORY=pump_dir1 DUMPFILE=scott_emp.dmp \

LOGFILE=scott_emp.log TABLES=emp

> expdp system/oracle DIRECTORY=pump_dir1 DUMPFILE=users_ts.dmp \

logfile=users_ts.log TABLESPACES=users

테이터 펌프 Import

> impdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=full.dmp \

LOGFILE=full.log FULL=y

> impdp system/oracle DIRECTORY=PUMP_DIR2 DUMPFILE=scott_hr.dmp \

LOGFILE=scott_hr.log SCHEMAS=scott,hr

> impdp scott/tiger DIRECTORY=pump_dir1 DUMPFILE=scott_emp.dmp \

LOGFILE=scott_emp.log TABLES=emp

> impdp system/oracle DIRECTORY=pump_dir1 DUMPFILE=users_ts.dmp \

LOGFILE=users_ts.log TABLESPACES=users

테이터 펌프 Export

> expdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=full.dmp \

LOGFILE=full.log FULL=y

> expdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=scott_hr.dmp \

LOGFILE=scott_hr.log SCHEMAS=scott,hr

> expdp scott/tiger DIRECTORY=pump_dir1 DUMPFILE=scott_emp.dmp \

LOGFILE=scott_emp.log TABLES=emp

> expdp system/oracle DIRECTORY=pump_dir1 DUMPFILE=users_ts.dmp \

logfile=users_ts.log TABLESPACES=users

테이터 펌프 Import

> impdp system/oracle DIRECTORY=pump_dir2 DUMPFILE=full.dmp \

LOGFILE=full.log FULL=y

> impdp system/oracle DIRECTORY=PUMP_DIR2 DUMPFILE=scott_hr.dmp \

LOGFILE=scott_hr.log SCHEMAS=scott,hr

> impdp scott/tiger DIRECTORY=pump_dir1 DUMPFILE=scott_emp.dmp \

LOGFILE=scott_emp.log TABLES=emp

> impdp system/oracle DIRECTORY=pump_dir1 DUMPFILE=users_ts.dmp \

LOGFILE=users_ts.log TABLESPACES=users

237

15. 플래쉬백과 데이터 펌프11. 11. 데이터 펌프 옵션데이터 펌프 옵션

■ system/oracle, scott/tiger - 데이터베이스 유저 및 비밀번호

■ DIRECTORY - 데이터 펌프 파일을 저장하거나 또는 저장되어 있는 디렉토리

■ DUMPFILE - 데이터 펌프에 의한 추출 파일 또는 적재 파일 이름

■ LOGFILE - 로그가 저장될 파일 이름

■ FULL - 데이터베이스 전체에 데이터 펌프 적용

■ SCHEMAS - 설정된 데이터베이스 유저가 소유한 오브젝트에 대해 데이터 추출

■ TABLES - 명시된 테이블에 대해서만 데이터 추출

■ TABLESPACES - 명시된 테이블스페이스에 저장된 오브젝트에 대해서만 데이터 추출

■ system/oracle, scott/tiger - 데이터베이스 유저 및 비밀번호

■ DIRECTORY - 데이터 펌프 파일을 저장하거나 또는 저장되어 있는 디렉토리

■ DUMPFILE - 데이터 펌프에 의한 추출 파일 또는 적재 파일 이름

■ LOGFILE - 로그가 저장될 파일 이름

■ FULL - 데이터베이스 전체에 데이터 펌프 적용

■ SCHEMAS - 설정된 데이터베이스 유저가 소유한 오브젝트에 대해 데이터 추출

■ TABLES - 명시된 테이블에 대해서만 데이터 추출

■ TABLESPACES - 명시된 테이블스페이스에 저장된 오브젝트에 대해서만 데이터 추출

238

15. 플래쉬백과 데이터 펌프12. 12. 데이터 펌프 고급 옵션데이터 펌프 고급 옵션

여러 개의 프로세스 사용병렬 프로세싱병렬 프로세싱

필터링 기법필터링 기법

선택 추출선택 추출

원하는 오브젝트만 추출

데이터만 또는 오브젝트 정의만 추출(Data_Only : 데이터만 , METADATA_ONLY : 정의만 , ALL : 모두 )

오브젝트 정의 변경오브젝트 정의 변경 소유자 또는 테이블스페이스등을 변경

> expdp system/oracle DIRECTORY=pump_dir2 \

LOGFILE=full.log FULL=y PARALLEL=4 \

DUMPFILE=full01.dmp,full02.dmp,full03.dmp,full04.dmp \

> expdp system/oracle DIRECTORY=pump_dir2 \

LOGFILE=full.log FULL=y PARALLEL=4 \

DUMPFILE=full01.dmp,full02.dmp,full03.dmp,full04.dmp \

> expdp scott/tiger DIRECTORY=pump_test \ DUMPFILE=test.dmp EXCLUDE=TABLE: "= 'EMP'"> expdp scott/tiger DIRECTORY=pump_test \ DUMPFILE=test.dmp EXCLUDE=TABLE: "= 'EMP'"

> expdp scott/tiger DIRECTORY=pump_test dumpfile=test.dmp \ LOGFILE=test.log CONTENT=DATA_ONLY> expdp scott/tiger DIRECTORY=pump_test dumpfile=test.dmp \ LOGFILE=test.log CONTENT=DATA_ONLY

> impdp system/manager DIRECTORY=pump_test \

DUMPFILE=scott.dmp REMAP_SCHEMA='SCOTT':'MIKE'

> impdp system/manager DIRECTORY=pump_test \

DUMPFILE=scott.dmp REMAP_TABLESPACE='USERS':'TOOLS'

> impdp system/manager DIRECTORY=pump_test \

> impdp system/manager DIRECTORY=pump_test \

DUMPFILE=scott.dmp REMAP_SCHEMA='SCOTT':'MIKE'

> impdp system/manager DIRECTORY=pump_test \

DUMPFILE=scott.dmp REMAP_TABLESPACE='USERS':'TOOLS'

> impdp system/manager DIRECTORY=pump_test \