560
Oracle8i 관리자 설명서 릴리스 8.1.5 1999 년 2월 Part No. A67772-01

Oracle8 - My Korchammy.korcham.net/bbs_new/files/Oracle8iadmin.pdf · 제어파일삭제·······································5 - 9 6장 온라인

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Oracle8i

관리자 설명서

릴리스 8 . 1 . 5

1 9 9 9년 2월

Part No. A67772-01

관리자설명서, 릴리스 8 . 1 . 5

Part No. A67772-01

Copyright ⓒ 1996, 1999, Oracle Corporation. All rights reserved.

저자: Joyce Fee

기고: Alex Tsukerman, Andre Kruglikov, Ann Rhee, Ashwini Surpur, Bhaskar

Himatsingka, Harvey Eneman, Jags Srinivasan, Lois Price, Robert Jenkins, Sophia

Yeung, Vinay Srihari, Wei Huang, Jonathan Klein, Mike Hartstein, Bill Lee, Diana

Lorentz, Lance Ashdown, Phil Locke, Ekrem Soylemez, Connie Dialaris, Steven

Wertheimer, Val Kane, Mary Rhodes, Archna Kalra, Nina Lewis

그래픽디자이너: Valarie Moore

이 프로그램은 핵, 항공, 대량 수송 수단, 의료 또는 기타 본질적으로 위험한 상황에서 사용하도록 개발된

것이 아니므로 그런 목적으로 사용된경우, 라이센스 사용자는 응용 프로그램의 안전한 사용을보장하기 위

한 모든 적절한 비상-안전, 백업, 대비및 기타 조치를 반드시 취해야 합니다. 프로그램이 이러한 목적으로

사용되었을 경우 Oracle Corp.은이러한 프로그램 사용으로 인한 피해를책임지지 않습니다.

이 프로그램(소프트웨어와 설명서 포함)은 Oracle Corp.의 독점적 정보를 포함하고 있습니다. 이 정보는

사용 제한 및 기밀 유지 규정을 포함하는 사용권 계약에 따라 제공되며 저작권법, 특허 및 기타 지적 재산

권 관련 법규에 의해 보호됩니다. 이 프로그램을 리버스 엔지니어링하거나 분해하거나 또는 역 컴파일하는

것은 금지되어 있습니다.

이 문서의 내용은 사전 공지 없이 변경될 수 있습니다. 이 문서에서 잘못된 내용을 발견하면 서면으로 알

려주시기 바랍니다. Oracle Corp.에서는오류에 대해 책임을 지지 않습니다. 이 프로그램의 사용권 계약

에 서면으로 허가된 경우를 제외하고, 이 문서의 어떠한 부분도 Oracle Corp.의 서면 허가 없이 어떠한

목적으로도 기계적, 전자적 또는 기타 임의의 수단을통해 배포되거나 복사할 수 없습니다.

이 프로그램을 미국 정부나 사용권이 지정된 모든 사용자에게 제공하거나 미국 정부를 위해 프로그램을 사

용할 때는 다음 경고를 적용할 수 있습니다.

Restricted Rights Notice Programs delivered subject to the DOD FAR Supplement are

“commercial computer software”and use, duplication, and disclosure of the Programs

including documentation, shall be subject to the licensing restrictions set forth in the

applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal

Acquisition Regulations are “restricted computer software”and use, duplication, and

disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19,

Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500

Oracle Parkway, Redwood City, CA 94065.

O r a c l e은 등록 상표이며 Net8, Oracle Call Interface, Oracle7, Oracle8, Oracle8i, Oracle Desi-

gner, Oracle Enterprise Manager, Oracle Forms, Oracle Parallel Server, Oracle Server Man-

ager, Oracle SQL*Loader, LogMiner, PL/SQL, Pro*C, SQL*Net, SQL*Plus 및Trusted Oracle

은 Oracle Corp.의 상표이거나 등록 상표입니다. 기타 모든 제품들과 회사 이름은 각각 해당 소유주의

상표로서 참조용으로만 사용됩니다.

i i i

목차

독자 제안서··········································x xi

머리말············································x x i i i

I부 기본 데이터베이스 관리

1장 오라클 데이터베이스 관리자

O racle 사용자 유형····································1 - 2

데이터베이스 관리자··································1 - 2

보안 관리자······································1 - 3

응용 프로그램 개발자··································1 - 3

응용 프로그램 관리자··································1 - 3

데이터베이스 사용자··································1 - 3

네트워크 관리자····································1 - 4

데이터베이스 관리자 보안 및 권한······························1 - 4

데이터베이스 관리자의 운영 체제 계정··························1 - 4

데이터베이스 관리자 사용자명······························1 - 5

DBA 롤········································1 - 6

데이터베이스 관리자 인증··································1 - 6

인증 방법 선택·····································1 - 6

운영 체제 인증 사용···································1 - 7

O S O P E R와 O S D B A··································1 - 8

인증 암호 파일 사용···································1 - 9

암호 파일 관리·······································1 - 9

O R A PWD 사용····································1 - 1 0

R E M O T E _ L O G I N _ PASSWORDFILE 설정······················1 - 1 1

암호 파일에 사용자 추가································1 - 1 2

관리자 권한으로 접속·································1 - 1 4

암호 파일 유지 관리·································1 - 1 5

데이터베이스 관리자 유틸리티·······························1 - 1 7

S Q L * L o a d e r·····································1 - 1 7

E x p o r t와 I m p o r t···································1 - 1 7

데이터베이스 관리자의 우선순위······························1 - 1 7

1단계: 오라클 소프트웨어 설치·····························1 - 1 8

2단계: 데이터베이스 서버 하드웨어 평가························1 - 1 8

3단계: 데이터베이스 계획·······························1 - 1 8

4단계: 데이터베이스 생성 및 열기···························1 - 1 9

5단계: 데이터베이스 설계 구현·····························1 - 2 0

6단계: 데이터베이스 백업·······························1 - 2 0

7단계: 시스템 사용자 등록·······························1 - 2 0

8단계: 데이터베이스 성능 조정·····························1 - 2 0

오라클 소프트웨어 릴리스 식별·······························1 - 2 1

릴리스 번호 형식···································1 - 2 1

다른 오라클 소프트웨어 버전······························1 - 2 2

현재 릴리스 번호 점검·································1 - 2 2

2장 오라클 데이터베이스 생성

데이터베이스 생성 전 고려 사항·······························2 - 2

데이터베이스 생성 필요 조건·······························2 - 3

초기 데이터베이스 사용·································2 - 3

구 버전 데이터베이스 이전································2 - 3

오라클 데이터베이스 생성··································2 - 3

오라클 데이터베이스 생성 단계······························2 - 4

데이터베이스 생성: 예··································2 - 7

데이터베이스 생성 중에 발생한 문제 해결·························2 - 8

데이터베이스 삭제···································2 - 8

매개변수·········································2 - 9

D B _ NA M E과 D B _ D O M A I N······························2 - 9

C O N T RO L _ F I L E S··································2 - 1 0

i v

D B _ B L O C K _ S I Z E··································2 - 1 1

D B _ B L O C K _ B U F F E R S·······························2 - 1 1

P RO C E S S E S·····································2 - 1 2

RO L L B AC K _ S E G M E N T S······························2 - 1 2

사용권 매개변수····································2 - 1 2

L I C E N S E _ M A X _ S E S S I O N S와 L I C E N S E _ S E S S I O N S _ WA R N I N G··········2 - 1 3

L I C E N S E _ M A X _ U S E R S·······························2 - 1 3

데이터베이스 생성 후 고려 사항······························2 - 1 4

초기 조정 지침······································2 - 1 4

롤백 세그먼트 할당··································2 - 1 4

D B _ B L O C K _ L RU _ L ATCHES 수 선택·························2 - 1 5

I/O 분산·······································2 - 1 5

3장 시작과 종료

데이터베이스 시작·····································3 - 2

인스턴스 시작을 위한 준비································3 - 2

인스턴스 시작: 시나리오·································3 - 3

데이터베이스 가용성 변경··································3 - 7

인스턴스에 데이터베이스 마운트·····························3 - 7

닫힌 데이터베이스 열기·································3 - 7

읽기 전용 모드로 데이터베이스 열기···························3 - 8

열린 데이터베이스에 대한 액세스 제한··························3 - 8

데이터베이스 종료·····································3 - 9

NORMAL 옵션으로 종료·······························3 - 1 0

I M M E D I ATE 옵션으로 종료······························3 - 1 1

T R A N SAC T I O NAL 옵션으로 종료··························3 - 1 1

A B O RT 옵션으로 종료································3 - 1 2

데이터베이스 일시 중지 및 재개······························3 - 1 2

매개변수 파일 사용····································3 - 1 3

예제 매개변수 파일··································3 - 1 4

매개변수 파일 수···································3 - 1 4

분산 환경에서 매개변수 파일의 위치··························3 - 1 5

I I부 O racle 서버 구성

v

4장 O racle 프로세스 관리

서버 프로세스 설정·····································4 - 2

전용 서버 프로세스로의 접속 시기····························4 - 2

다중 스레드 서버 구조에 대한 O racle 구성·························4 - 3

M T S _ D I S PATCHERS: 디스패처의초기치 설정(필수)··················4 - 5

서버 프로세스 수정·····································4 - 6

공유 서버 프로세스의 최소 수 변경····························4 - 6

디스패처 프로세스 추가 및 제거·····························4 - 7

O racle 프로세스 추적···································4 - 7

O racle 인스턴스 프로세스 모니터링···························4 - 8

추적 파일, ALERT 파일및 백그라운드 프로세스····················4 - 1 0

체크포인트 프로세스 시작·······························4 - 1 2

병렬 질의 옵션에 대한 프로세스 관리····························4 - 1 2

질의 서버 관리····································4 - 1 3

질의 서버 프로세스 수의 변화·····························4 - 1 3

외부 프로시저에 대한 프로세스 관리····························4 - 1 4

세션 종료········································4 - 1 5

종료할 세션 식별···································4 - 1 6

활성 세션 종료····································4 - 1 6

비활성 세션 종료···································4 - 1 7

5장 제어 파일 관리

제어 파일에 대한 지침 사항·································5 - 2

제어 파일 이름 지정···································5 - 2

서로 다른 디스크 상의 제어 파일 다중화·························5 - 2

올바른 제어 파일 배치··································5 - 3

제어 파일의 크기 관리··································5 - 3

제어 파일 생성·······································5 - 3

초기 제어 파일 생성··································5 - 4

제어 파일의 추가 복사본 생성과 제어 파일 이름 바꾸기 및 위치 재지정···········5 - 5

새 제어 파일······································5 - 5

새 제어 파일 생성····································5 - 6

제어 파일 생성 후 문제 해결·································5 - 8

누락 또는 여분 파일 확인································5 - 8

C R E ATE CONTROLFILE 실행동안 오류 처리·····················5 - 9

v i

제어 파일 삭제·······································5 - 9

6장 온라인 리두 로그 관리

온라인 리두 로그란·····································6 - 2

리두 스레드······································6 - 2

온라인 리두 로그 내용·································6 - 2

O ra c l e의 온라인 리두 로그 기록 방법··························6 - 3

온라인 리두 로그 계획···································6 - 5

온라인 리두 로그 파일 다중화······························6 - 5

다른 디스크에 온라인 리두 로그 멤버 저장························6 - 9

온라인 리두 로그 멤버의 크기 설정····························6 - 9

온라인 리두 로그 파일 수 선택······························6 - 9

온라인 리두 로그 그룹 및 멤버 생성····························6 - 1 1

온라인 리두 로그 그룹 생성······························6 - 1 1

온라인 리두 로그 멤버 생성······························6 - 1 1

온라인 리두 로그 멤버의 이름 바꾸기 및 위치 재지정·····················6 - 1 2

온라인 리두 로그 그룹 및 멤버 삭제····························6 - 1 4

로그 그룹 삭제····································6 - 1 4

온라인 리두 로그 멤버 삭제······························6 - 1 5

로그 스위치 강제 시행···································6 - 1 6

리두 로그 파일의 블록 검증································6 - 1 6

온라인 리두 로그 파일 지우기·······························6 - 1 7

제한 사항·······································6 - 1 7

온라인 리두 로그에 대한 정보 나열·····························6 - 1 8

7장 아카이브된 리두 로그 관리

아카이브된 리두 로그란···································7 - 2

NOA RCHIVELOG 모드와A RCHIVELOG 모드중 선택···················7 - 4

N OA RCHIVELOG 모드로 데이터베이스 실행······················7 - 4

A RCHIVELOG 모드로 데이터베이스 실행························7 - 4

아카이브 기능 설정 및 해제·································7 - 7

초기 데이터베이스 아카이브 모드 설정··························7 - 7

데이터베이스 아카이브 모드 변경·····························7 - 7

자동 아카이브 기능 활성화································7 - 8

자동 아카이브 기능 비활성화·······························7 - 9

v i i

수동 아카이브 수행··································7 - 1 0

아카이브 대상 지정····································7 - 1 1

아카이브 대상 지정··································7 - 1 1

아카이브 대상 상태 이해································7 - 1 3

로그 전송 모드 지정····································7 - 1 4

정상 전송 모드····································7 - 1 5

대기 전송 모드····································7 - 1 5

아카이브 대상 고장 관리··································7 - 1 6

성공적인 대상의 최소 수 지정·····························7 - 1 7

고장난 대상에 다시 아카이브······························7 - 1 9

아카이브 성능 조정····································7 - 2 0

다중 A RCn 프로세스 지정·······························7 - 2 0

아카이브 버퍼 매개변수 설정······························7 - 2 2

아카이브된 리두 로그 정보 표시······························7 - 2 3

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석············7 - 2 5

LogMiner 사용법···································7 - 2 6

제한 사항·······································7 - 2 6

딕셔너리 파일 생성··································7 - 2 7

분석할 리두 로그 지정·································7 - 2 9

LogMiner 사용····································7 - 3 0

LogMiner 사용: 시나리오·······························7 - 3 2

8장 작업 대기열 관리

SNP 백그라운드프로세스·································8 - 2

다중 SNP 프로세스···································8 - 3

SNP 프로세스 시작···································8 - 3

작업 대기열 관리······································8 - 3

DBMS_JOB 패키지··································8 - 4

작업 대기열에 작업 보내기································8 - 4

작업 실행 방법·····································8 - 9

작업 대기열에서 작업 제거·······························8 - 1 1

작업 변경·······································8 - 1 1

중단된 작업······································8 - 1 2

강제 작업 실행····································8 - 1 4

작업 종료·······································8 - 1 4

v i i i

작업 대기열 정보 보기···································8 - 1 5

I I I부 데이터베이스 저장 영역

9장 테이블스페이스 관리

테이블스페이스 관리에 대한 지침 사항····························9 - 2

다중 테이블스페이스 사용································9 - 2

테이블스페이스 저장 영역 매개변수 지정·························9 - 3

사용자에게 테이블스페이스 할당량 지정·························9 - 3

테이블스페이스 생성····································9 - 3

지역적으로 관리되는 테이블스페이스 생성·························9 - 5

임시 테이블스페이스 생성································9 - 6

테이블스페이스 할당 관리··································9 - 8

테이블스페이스에 대한 저장 영역 설정 변경························9 - 8

사용 가능 영역 병합···································9 - 8

테이블스페이스 가용성 변경································9 - 1 0

테이블스페이스를 온라인으로 설정···························9 - 1 0

테이블스페이스를 오프라인으로 설정··························9 - 1 0

테이블스페이스를 읽기 전용으로 만들기···························9 - 1 2

필요 조건·······································9 - 1 3

읽기 전용 테이블스페이스를 쓸 수 있도록 만들기····················9 - 1 4

WORM 장치에서 읽기 전용 테이블스페이스 생성····················9 - 1 4

테이블스페이스 삭제····································9 - 1 4

D B M S _ S PACE_ADMIN 패키지사용····························9 - 1 6

시나리오 1······································9 - 1 6

시나리오 2······································9 - 1 7

시나리오 3······································9 - 1 7

시나리오 4······································9 - 1 7

데이터베이스 간 테이블스페이스 이동····························9 - 1 8

이동 가능한 테이블스페이스 소개····························9 - 1 8

현재 한계점······································9 - 2 0

1단계: 자체 포함 테이블스페이스 집합 선택·······················9 - 2 0

2단계: 이동 가능한 테이블스페이스 집합 생성······················9 - 2 2

3단계: 테이블스페이스 집합 이동····························9 - 2 3

4단계: 테이블스페이스 집합에 플러그인·························9 - 2 3

i x

객체 기능······································9 - 2 4

데이터 웨어하우징을 위한 분할 영역 이동 및 첨부: 예··················9 - 2 7

C D에 구조화된 데이터 등록······························9 - 2 9

여러 데이터베이스에서 동일한 테이블스페이스를 읽기 전용으로 마운트··········9-29

이동 가능한 테이블스페이스를 통해 현재까지의 기록 데이터 아카이브··········9 - 3 0

이동 가능한 테이블스페이스를 사용하여 TSPITR 수행·················9 - 3 0

테이블스페이스 정보 보기·································9 - 3 1

1 0장 데이터 파일 관리

데이터 파일 관리에 대한 지침 사항····························1 0 - 2

데이터 파일 수 결정·································1 0 - 2

데이터 파일 크기 설정································10-4

데이터 파일 제대로 배치하기·····························1 0 - 4

데이터 파일을 리두 로그 파일과 별도로 저장······················1 0 - 4

테이블스페이스에 데이터 파일 작성 및 추가························1 0 - 5

데이터 파일의 크기 변경·································1 0 - 5

데이터 파일의 자동 확장 활성화 및 비활성화······················1 0 - 5

데이터 파일의 크기 직접 재조정····························1 0 - 6

데이터 파일 가용성 변경·································1 0 - 7

A RCHIVELOG 모드에서 데이터 파일을 온라인으로 설정················1 0 - 8

N OA RCHIVELOG 모드에서 데이터 파일을 오프라인으로 설정·············1 0 - 8

데이터 파일 이름 바꾸기 및 위치 재지정··························1 0 - 9

단일 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정·············1 0 - 9

다중 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정············1 0 - 1 0

데이터 파일의 데이터 블록 검증·····························1 0 - 1 2

데이터 파일 정보 보기··································1 0 - 1 3

1 1장 데이터베이스 자원 관리자 사용

소개···········································1 1 - 2

데이터베이스 자원 관리자 패키지 사용···························1 1 - 3

D B M S _ R E S O U RC E _ M A NAGER 패키지 사용····················1 1 - 3

D B M S _ R E S O U RC E _ M A NAG E R _ P R I VS 패키지··················1 1 - 1 0

DBMS_SESSION 패키지를 사용하여 사용자의 자원 소비자 그룹 변경·········1 1 - 1 1

데이터베이스 자원 관리자 뷰······························1 1 - 1 2

x

1 2장 스키마 객체 관리에 대한 지침 사항

데이터 블록의 영역 관리·································12-2

PCTFREE 매개변수·································1 2 - 2

PCTUSED 매개변수·································1 2 - 4

관련된 P C T U S E D와 PCTFREE 값 선택·······················1 2 - 6

저장 영역 매개변수 설정·································1 2 - 7

지정할 수 있는 저장 영역 매개변수··························1 2 - 7

I N I T R A N S와 MAXTRANS 설정··························1 2 - 9

테이블스페이스의 세그먼트에 대한 기본 저장 영역 매개변수 설정············1 2 - 1 0

데이터 세그먼트에 대한 저장 영역 매개변수 설정···················1 2 - 1 0

인덱스 세그먼트에 대한 저장 영역 매개변수 설정···················1 2 - 1 0

LOB 세그먼트에 대한 저장 영역 매개변수 설정····················1 2 - 1 1

저장 영역 매개변수 값 변경·····························1 2 - 1 1

저장 영역 매개변수의 우선순위 이해·························1 2 - 1 1

영역 할당 해제·····································1 2 - 1 3

고수위 보기·····································1 2 - 1 3

영역 할당 해제 명령문 실행·····························1 2 - 1 3

데이터 유형의 영역 사용에 대한 이해···························1 2 - 1 7

O racle 데이터 유형 요약······························1 2 - 1 9

1 3장 분할된 테이블과 인덱스 관리

분할된 테이블과 인덱스란·································1 3 - 2

분할 방식········································1 3 - 2

범위 분할 방식 사용·································1 3 - 3

해시 분할 방식 사용·································1 3 - 4

조합 분할 방식 사용·································1 3 - 5

분할 영역 생성·····································1 3 - 9

분할 영역 유지 관리···································1 3 - 9

분할 영역 이동···································1 3 - 1 0

분할 영역 추가···································1 3 - 1 1

분할 영역 삭제···································1 3 - 1 2

분할 영역 합치기··································1 3 - 1 4

분할 영역 기본 속성 수정······························1 3 - 1 4

분할 영역 잘라버리기································1 3 - 1 5

분할 영역 분할···································1 3 - 1 7

x i

분할 영역 병합···································1 3 - 1 8

테이블 분할 영역 교환································1 3 - 1 8

인덱스 분할 영역 재구축·······························1 3 - 2 0

기록 테이블에서 시간 창 이동····························1 3 - 2 0

다단계 유지 관리 작업 중 응용 프로그램 정지·····················1 3 - 2 1

1 4장 테이블 관리

테이블 관리에 대한 지침 사항·······························1 4 - 2

테이블 생선 전 설계·································1 4 - 2

데이터 블록 영역이 사용되는 방법 지정························1 4 - 3

트랜잭션 입력 항목 매개변수 지정···························1 4 - 3

각 테이블의 위치 지정································1 4 - 3

테이블 생성 병렬화··································1 4 - 4

U N R E C OVERABLE 테이블 생성 시 고려 사항····················1 4 - 4

테이블 크기 측정 및 저장 영역 매개변수 설정·····················1 4 - 5

대규모 테이블 계획··································1 4 - 5

테이블 제한 사항···································1 4 - 6

테이블 생성·······································1 4 - 9

테이블 변경·······································1 4 - 1 0

테이블의 저장 영역 직접 할당······························1 4 - 1 1

테이블 삭제·······································1 4 - 1 2

열 삭제·······································1 4 - 1 3

인덱스 구성 테이블···································1 4 - 1 3

인덱스 구성 테이블이란·······························1 4 - 1 4

인덱스 구성 테이블 생성·······························1 4 - 1 6

인덱스 구성 테이블 유지 관리····························1 4 - 1 9

인덱스 구성 테이블 분석·······························1 4 - 2 1

인덱스 구성 테이블에 ORDER BY 절 사용······················1 4 - 2 2

인덱스 구성 테이블을 일반 테이블로 변환·······················1 4 - 2 2

1 5장 뷰, 시퀀스 및 동의어 관리

뷰 관리········································1 5 - 2

뷰 생성·······································1 5 - 2

조인 뷰 수정·····································1 5 - 4

뷰 바꾸기······································1 5 - 8

x i i

뷰 삭제·······································1 5 - 9

시퀀스 관리·······································1 5 - 9

시퀀스 생성·····································1 5 - 1 0

시퀀스 변경·····································1 5 - 1 0

시퀀스에 영향을 주는 초기화 매개변수························1 5 - 1 1

시퀀스 삭제·····································1 5 - 1 1

동의어 관리·······································1 5 - 1 1

동의어 생성·····································1 5 - 1 2

동의어 삭제·····································1 5 - 1 2

1 6장 인덱스 관리

인덱스 관리에 대한 지침 사항·······························1 6 - 2

테이블 데이터 삽입 후 인덱스 생성··························1 6 - 3

테이블 당 인덱스 수 제한·······························1 6 - 3

트랜잭션 입력 항목의 매개변수 지정··························1 6 - 4

인덱스 블록의 영역 사용 지정·····························1 6 - 4

각 인덱스에 대한 테이블스페이스 지정·························1 6 - 4

인덱스 생성 병렬화··································1 6 - 5

N O L O G G I N G으로 인덱스 생성 고려·························1 6 - 5

인덱스 크기 측정 및 저장 영역 매개변수 설정·····················1 6 - 5

제약 조건 비활성화 또는 삭제 전의 고려 사항·····················1 6 - 7

인덱스 생성·······································1 6 - 7

제약 조건과 관련된 인덱스 생성····························1 6 - 8

명시적으로 인덱스 생성································1 6 - 8

온라인 인덱스 생성··································1 6 - 9

함수 기준 인덱스 생성································1 6 - 9

기존 인덱스 재생성·································1 6 - 1 2

키 압축 인덱스 생성·································1 6 - 1 2

인덱스 변경·······································1 6 - 1 3

인덱스 영역 사용 모니터링································1 6 - 1 4

인덱스 삭제·······································1 6 - 1 5

1 7장 클러스터 관리

클러스터 관리에 대한 지침 사항······························1 7 - 2

클러스터에 적합한 테이블 선택····························1 7 - 4

x i i i

클러스터 키에 적합한 열 선택·····························1 7 - 4

데이터 블록의 영역 사용 지정·····························1 7 - 5

평균 클러스터 키와 이에 관련된 행에 필요한 영역 지정·················1 7 - 5

각 클러스터와 클러스터 인덱스 행의 위치 지정·····················1 7 - 5

클러스터 크기 측정 및 저장 영역 매개변수 설정····················1 7 - 6

클러스터 생성·····································1 7 - 6

클러스터화된 테이블 생성·······························1 7 - 7

클러스터 인덱스 생성································1 7 - 7

클러스터 변경······································1 7 - 8

클러스터 테이블과 클러스터 인덱스 변경························1 7 - 9

클러스터 삭제······································1 7 - 1 0

클러스터화된 테이블 삭제······························1 7 - 1 0

클러스터 인덱스 삭제································1 7 - 1 1

1 8장 해시 클러스터 관리

해시 클러스터 관리에 대한 지침 사항···························1 8 - 2

해싱의 장점·····································1 8 - 2

해싱의 단점·····································1 8 - 3

해시 클러스터에 필요한 크기 측정 및 저장 영역 매개변수 설정··············1 8 - 4

해시 클러스터 생성··································1 8 - 4

해시 클러스터 내에서 영역 사용 제어·························1 8 - 6

해시 클러스터 변경····································1 8 - 8

해시 클러스터 삭제····································1 8 - 9

1 9장 데이터 블록 훼손 감지와 복구

D B M S _ R E PAIR 패키지 내용·······························1 9 - 2

1단계: 훼손 감지와 보고·································1 9 - 2

D B M S _ R E PAIR: check_object와 admin_tables 프로시저사용············1 9 - 3

DB_VERIFY: 오프라인데이터베이스 검사 수행····················1 9 - 3

A NA LYZE: 훼손 보고································1 9 - 3

DB_BLOCK_CHECKING (블록검사 초기화 매개변수)················1 9 - 3

2단계: DBMS_REPAIR 사용의비용과 이점 평가·····················1 9 - 4

3단계: 객체를 사용 가능하게 만들기···························1 9 - 5

훼손 복구: fix_corrupt_blocks와skip_corrupt_blocks 프로시저사용·········1 9 - 5

x i v

훼손된 블록 건너뛰기의 의미·····························1 9 - 5

4단계: 훼손 복구와 손실 데이터 재구축0··························1 9 - 6

d u m p _ o r p h a n _ keys 프로시저를 사용한 데이터 복구··················1 9 - 6

re b u i l d _ freelists 프로시저를사용한 사용 가능 영역 목록 복구·············1 9 - 6

한계점과 제한 사항····································1 9 - 6

D B M S _ R E PAIR 프로시저································1 9 - 7

c h e c k _ o b j e c t····································1 9 - 7

f i x _ c o r r u p t _ b l o c k s·································1 9 - 8

d u m p _ o r p h a n _ key s·································1 9 - 9

re b u i l d _ fre e l i s t s··································1 9 - 1 0

s k i p _ c o r r u p t _ b l o c k s································1 9 - 1 1

a d m i n _ t a b l e s···································1 9 - 1 2

D B M S _ R E PAIR 예외 사항······························1 9 - 1 3

2 0장 스키마 객체에 대한 일반적 관리

단일 작업으로 다중 테이블과 뷰 생성···························2 0 - 2

스키마 객체 이름 바꾸기·································2 0 - 2

테이블, 인덱스 및 클러스터 분석·····························2 0 - 3

테이블, 인덱스 및 클러스터에 대한 통계 사용·····················2 0 - 4

테이블, 인덱스 및 클러스터 검증···························2 0 - 8

테이블과 클러스터의 체인화된 행 나열·························2 0 - 8

테이블과 클러스터 잘라버리기·······························2 0 - 9

트리거 활성화 및 비활성화································2 0 - 1 1

트리거 활성화····································2 0 - 1 2

트리거 비활성화···································2 0 - 1 2

무결성 제약 조건 관리··································2 0 - 1 3

무결성 제약 조건 상태································2 0 - 1 4

제약 조건 검사 지연·································2 0 - 1 6

연관된 인덱스를 가진 제약 조건 관리·························2 0 - 1 8

정의에 따른 무결성 제약 조건 설정··························2 0 - 1 8

기존의 무결성 제약 조건 수정····························2 0 - 2 0

무결성 제약 조건 삭제/·······························2 0 - 2 1

제약 조건 예외 사항 보고······························2 0 - 2 1

객체 종속성 관리···································2 0 - 2 3

뷰 직접 재컴파일··································2 0 - 2 5

x v

프로시저와 함수 직접 재컴파일····························2 0 - 2 5

패키지 직접 재컴파일································2 0 - 2 5

객체 이름 분석 관리··································2 0 - 2 5

데이터 딕셔너리의 저장 영역 매개변수 변경························2 0 - 2 6

데이터 딕셔너리의 구조·······························2 0 - 2 7

데이터 딕셔너리의 저장 영역 변경을 요구하는 오류··················2 0 - 2 9

스키마 객체 정보 나열·································2 0 - 2 9

딕셔너리 저장 영역 O racle 패키지··························2 0 - 3 0

예 1: 유형별로 스키마 객체 나열···························2 0 - 3 1

예 2: 열 정보 나열·································2 0 - 3 1

예 3: 뷰와 동의어의 종속성 나열···························2 0 - 3 2

예 4: 일반적인 세그먼트 정보 나열··························2 0 - 3 2

예 5: 일반적인 확장 영역 정보 나열·························2 0 - 3 2

예 6: 데이터베이스의 빈 영역(확장 영역) 나열····················2 0 - 3 3

예 7: 추가 확장 영역을 할당할 수 없는 세그먼트 나열················2 0 - 3 3

2 1장 롤백 세그먼트 관리

롤백 세그먼트 관리에 대한 지침 사항···························2 1 - 2

다중 롤백 세그먼트 사용·······························2 1 - 2

공용 및 전용 롤백 세그먼트 사이에서 선택·······················2 1 - 3

롤백 세그먼트 자동 획득 지정·····························2 1 - 3

적합한 롤백 세그먼트 크기 설정····························2 1 - 4

여러 개의 동일 크기 확장 영역을 가지는 롤백 세그먼트 생성···············2 1 - 5

각 롤백 세그먼트에 대한 최적의 확장 영역 수 설정···················2 1 - 5

롤백 저장 영역 위치 설정·······························2 1 - 7

롤백 세그먼트 생성····································2 1 - 7

새 롤백 세그먼트를 온라인으로 설정··························2 1 - 8

롤백 세그먼트에 대한 저장 영역 매개변수 지정·······················2 1 - 8

롤백 세그먼트 생성 시 저장 영역 매개변수 설정····················2 1 - 8

롤백 세그먼트의 저장 영역 매개변수 변경·······················2 1 - 9

롤백 세그먼트의 형식 변경 ······························2 1 - 9

롤백 세그먼트 직접 환원·······························2 1 - 1 0

롤백 세그먼트를 온라인 및 오프라인으로 설정·······················2 1 - 1 0

롤백 세그먼트를 온라인으로 설정··························2 1 - 1 1

롤백 세그먼트를 오프라인으로 설정·························2 1 - 1 2

x v i

트랜잭션을 롤백 세그먼트에 명시적으로 지정·······················2 1 - 1 3

롤백 세그먼트 삭제···································2 1 - 1 3

롤백 세그먼트 정보 모니터링·······························2 1 - 1 4

I V부 데이터베이스 보안

2 2장 보안 정책 구축

시스템 보안 정책····································2 2 - 2

데이터베이스 사용자 관리·······························2 2 - 2

사용자 인증·····································2 2 - 2

운영 체제 보안····································2 2 - 3

데이터 보안 정책·····································2 2 - 3

사용자 보안 정책·····································2 2 - 4

일반 사용자 보안···································2 2 - 4

최종 사용자 보안···································2 2 - 5

관리자 보안·····································2 2 - 7

응용 프로그램 개발자 보안······························2 2 - 9

응용 프로그램 관리자 보안······························2 2 - 1 1

암호 관리 정책·····································2 2 - 1 1

계정 잠금······································2 2 - 1 2

암호 변경 및 만기··································2 2 - 1 2

암호 기록······································2 2 - 1 4

암호 복잡성 검증··································2 2 - 1 4

감사 정책········································2 2 - 1 8

2 3장 사용자와 자원 관리

세션 및 사용자 사용권 지정································2 3 - 2

동시 사용 사용권 지정·································2 3 - 2

접속 권한······································2 3 - 3

최대 세션 수 설정···································2 3 - 4

세션 경고 한계 설정··································2 3 - 4

데이터베이스 실행 중 동시 사용 한계 변경·······················2 3 - 4

명명된 사용자 한계··································2 3 - 5

x v i i

사용권 지정 한계와 현재 값 보기···························2 3 - 6

사용자 인증·······································2 3 - 7

데이터베이스 인증··································2 3 - 8

외부 인·······································2 3 - 8

엔터프라이즈 인증··································2 3 - 1 0

O racle 사용자·····································2 3 - 1 1

사용자 생성·····································2 3 - 1 1

사용자 변경·····································2 3 - 1 5

사용자 삭제·····································2 3 - 1 6

프로파일로 자원 관리··································2 3 - 1 7

프로파일 생성····································2 3 - 1 8

프로파일 지정····································2 3 - 1 8

프로파일 변경····································2 3 - 1 9

조합 한계 사용···································2 3 - 1 9

프로파일 삭제····································2 3 - 2 1

자원 제한 활성화 및 비활성화····························2 3 - 2 1

데이터베이스 사용자와 프로파일 정보 나열························2 3 - 2 2

사용자와 프로파일 정보 나열: 예···························2 3 - 2 3

예제··········································2 3 - 2 6

2 4장 사용자 권한과 롤 관리

사용자 권한 식별·····································2 4 - 2

시스템 권한·····································2 4 - 2

객체 권한······································2 4 - 3

사용자 롤 관리······································2 4 - 4

롤 생성·······································2 4 - 4

미리 정의된 롤····································2 4 - 5

롤 인증·······································2 4 - 6

롤 삭제·······································2 4 - 8

사용자 권한과 롤 부여··································2 4 - 9

시스템 권한과 롤 부여································2 4 - 9

객체 권한과 롤 부여·································2 4 - 1 0

열에 권한 부여···································2 4 - 1 1

사용자 권한과 롤 철회··································2 4 - 1 2

시스템 권한과 롤 철회································2 4 - 1 2

x v i i i

객체 권한과 롤 철회·································2 4 - 1 2

권한 철회 효력···································2 4 - 1 4

사용자 그룹 P U B L I C에 대한 권한 부여 및 철회···················2 4 - 1 5

운영 체제나 네트워크를 사용한 롤 부여··························2 4 - 1 6

운영 체제 롤 식별 사용·······························2 4 - 1 7

운영 체제 롤 관리 사용·······························2 4 - 1 8

O S _ RO L E S = T RU E일 때 롤 부여 및 철회······················2 4 - 1 9

O S _ RO L E S = T RU E일 때 롤 활성화 및 비활성화···················2 4 - 1 9

운영 체제 롤 관리로 네트워크 접속 사용·······················2 4 - 1 9

권한과 롤 정보 나열··································2 4 - 2 0

권한과 롤 정보 나열: 예······························2 4 - 2 0

2 5장 데이터베이스 사용 감사

감사에 대한 지침 사항··································2 5 - 2

데이터베이스 또는 운영 체제를 통한 감사·······················2 5 - 2

감사 정보 관리····································2 5 - 2

데이터베이스 감사 트레일 뷰 생성 및 삭제·························2 5 - 4

감사 트레일 뷰 생성·································2 5 - 4

감사 트레일 뷰 삭제·································2 5 - 5

감사 트레일 정보 관리··································2 5 - 5

기본적으로 감사되는 이벤트······························2 5 - 7

감사 옵션 설정····································2 5 - 7

데이터베이스 감사 기능 활성화 및 비활성화······················2 5 - 1 3

감사 트레일 크기와 크기 증가 제어··························2 5 - 1 4

감사 트레일 보호··································2 5 - 1 6

데이터베이스 감사 트레일 정보 보기···························2 5 - 1 7

활성화된 명령문의 감사 옵션 목록 보기························2 5 - 1 8

활성화된 권한 감사 옵션 목록 보기··························2 5 - 1 8

특정 객체에 대해 활성화된 객체 감사 옵션 목록 보기·················2 5 - 1 9

기본 객체 감사 옵션 목록 보기····························2 5 - 1 9

감사 레코드 목록 보기······························2 5 - 1 9

AUDIT SESSION 옵션에대한 감사 레코드 목록 보기················2 5 - 2 0

데이터베이스 트리거를 사용한 감사 작업·························2 5 - 2 0

색인

x i x

x x

독자 제안서

관리자 설명서, 릴리스 8.1.5

오라클사에서는 이 설명서의 품질과 유용성에 관한 여러분의 의견과 제안을 환영합니다. 제안하신 내용

은 개정판에서 중요한 정보로 사용됩니다.

■ 잘못된 부분을 발견하셨습니까?

■ 내용 설명이 명확하게 되어 있습니까?

■ 어떤 부분에 대해 자세한 정보가 필요하십니까?

■ 예제들은 정확합니까? 좀더 많은 예제가 필요하십니까?

■ 이 설명서에서 가장 마음에 드는 부분은 무엇입니까?

잘못된 부분이 있거나 개선할 점에 대한 제안이 있으면 아래에 장, 단원, 제목, 페이지 번호를 기입해

다음으로 보내주시기 바랍니다.

우편: 서울시 영등포구 여의도동 27-3

대한투자신탁 빌딩 1 8층

한국 오라클 한글 매뉴얼 담당

전화: (02) 369-9500

팩스: (02) 780-1687

e - m a i l은 다음 주소를 사용하시기 바랍니다.

D o c T M @ k r. o ra c l e. c o m

x x i

x x i i

x x i i i

머리말

이 설명서는 오라클 데이터베이스 시스템 작동을 관리하는 데이터베이스 관리자를 위한 것으로“데이터베이스 관리자( D B A )”는 오라클 데이터베이스 시스템의 원활한 작동을 확인하고 사용 내역을 모니터할 책임이 있습니다. 데이터베이스 관리자의 책임은 1장에서 설명합니다.

주의 사항: O racle8i 관리자 설명서에는 O ra c l e 8과 O racle8 EnterpriseEdition 제품의 특성과 기능에 대해 설명하는 내용이 수록되어 있습니다.O ra c l e 8과 O racle8 Enterprise Edition은동일한 기본 기능을 가지고 있지만 몇 가지 고급 기능은 Enterprise Edition에서만 사용할 수 있고 그중 일부는 선택 사항입니다. 예를 들어, Recovery Manager를 사용하여자동화된 테이블스페이스 적시 복구를 수행하려면 Enterprise Edition이있어야 합니다.

O ra c l e 8과 O racle8 Enterprise Edition 간의 차이점 및 사용 가능한 기능과 옵션에 대한 내용은 O racle8i 입문서와 O racle8i Enterprise Editi-o n을 참조하십시오.

대상 독자

이 설명서는 관계형 데이터베이스 개념과 O ra c l e이 실행되는 운영 체제 환경에 익숙한 사용자가 읽는다는 가정 하에 설명합니다.

설치 및 이전 정보

관리자는 O racle 서버 소프트웨어를 설치하거나 기존의 오라클 데이터베이스를 새로운 형식(예를 들어, 버전 7 데이터베이스에서 O racle8 형식)으로 이전하기도 합니다.이 설명서는 설치 및 이전 설명서가 아닙니다.

설치 작업에 대해서는 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스나 응용 프로그램을 이전하려면 O racle8i Migration 설명서를 참조하십시오.

응용 프로그램 설계 정보

관리자뿐 아니라 O racle 사용 경험이 있는 사용자와 고급 데이터베이스 응용 프로그램 설계자도 이 설명서에서 유용한 정보를 찾을 수 있습니다.

하지만 데이터베이스 응용 프로그램 개발자는 O racle8i Application Dev e l o p e r’sGuide - Fundamentals와 오라클 데이터베이스 응용 프로그램을 개발하는데 사용할 도구나 언어 제품 설명서를 읽어야 합니다.

설명서 사용법

이 설명서를 읽는 모든 독자는 O racle8i 개념 설명서의 1장을 읽어야 합니다. 그 부분은 이 설명서에서 제공하는 자세한 정보의 기초가 되는 O ra c l e에 관련된 전반적인개념과 용어에 대해 다루고 있습니다. Oracle8i 개념 설명서의 나머지 부분은 O ra -cle 구조와 기능 및 작동법에 대해 자세하게 설명합니다.

구성

이 설명서는 다음과 같은 부와 장을 포함하고 있습니다.

x x i v

I부: 기본 데이터베이스 관리

이 장에서는 데이터베이스 관리자가 수행하는 소프트웨어 설치 및 데이터베이스 계획과같은 일반적인 작업에 대해 소개합니다.

이 장에서는 데이터베이스를 생성할 때 가장중요하게 고려해야 할 사항을 설명합니다. 데이터베이스 계획 단계에 있는 경우 이 장을참조하십시오.

3장“시작과 종료” 데이터베이스를 시작하거나 데이터베이스의가용성을 변경하거나 또는 데이터베이스를종료하려는 경우 이 장을 참조하십시오. 시작과 종료에 관련된 매개변수 파일도 이 장에서설명합니다.

I I부: Oracle 서버 구성

4장“O racle 프로세스 관리” 이 장에서는 전용 서버 프로세스 및 다중 스레드 서버 프로세스와 같은 각각 다른 O ra -cle 프로세스를 식별하는데 유용한 정보를 설명합니다. 프로세스를 구성, 수정, 추적 및관리할 때는 이 장을 참조하십시오.

5장“제어 파일 관리” 이 장에서는 제어 파일 이름 지정, 생성, 문제 해결 및 삭제 등과 같은 제어 파일 관리에대한 모든 측면을 설명합니다.

6장“온라인 리두 로그 관리” 이 장에서는 온라인 리두 로그 파일 계획, 생성, 이름 바꾸기, 삭제 또는 지우기 등과 같은 온라인 리두 로그 파일 관리에 대한 모든측면을 설명합니다.

아카이브 모드, 아카이브 기능 조정 및 보는방법에 대한 내용은 이 장을 참조하십시오.

8장“작업 대기열 관리” 작업 대기열을 사용하여 작업하기 전에 이 장을 참조하십시오. 작업 대기열에 대한 제출,제거, 변경 및 수정 작업 등 모든 측면을 설명합니다.

x x v

1장“오라클 데이터베이스 관리자”

2장“오라클 데이터베이스 생성”

7장“아카이브된 리두 로그 관리”

I I I부: 데이터베이스 저장 영역

이 장에서는 테이블스페이스 관리 시 수행하는 지침 사항을 제공하며 테이블스페이스 간의 데이터 생성, 관리, 변경, 삭제 및 이동방법을 설명합니다.

이 장에서는 데이터 파일 관리 시 수행하는지침 사항을 제공하며 데이터 파일에 대한정보를 생성, 변경, 이름 변경 및 보는 방법을 설명합니다.

이 장에서는 데이터베이스 자원 관리자를 사용하여 자원을 할당하는 방법을 설명합니다.

저장 영역 매개변수 설정, 영역의 할당 해제및 영역 관리에 대한 내용은 이 장을 참조하십시오.

이 장에서는 분할된 테이블과 인덱스에 대한개념과 생성 및 관리 방법을 설명합니다.

일반적인 테이블 관리 지침 사항뿐 아니라테이블 생성, 변경, 유지 관리 및 삭제에 대한 내용은 이 장을 참조하십시오.

이 장에서는 뷰, 시퀀스 및 동의어 관리에 대한 모든 측면을 설명합니다.

인덱스 생성, 변경, 모니터 및 삭제 작업을포함한 인덱스에 대한 일반적인 지침 사항은이 장을 참조하십시오.

클러스터 생성, 변경 및 삭제 작업 시 수행하는 일반적인 지침 사항은 이 장을 참조하십시오.

x x v i

9장“테이블스페이스 관리”

1 0장“데이터 파일 관리”

1 1장“데이터베이스 자원 관리자 사용”

1 2장“스키마 객체 관리에 대한 지침 사항”

1 3장“분할된 테이블과 인덱스관리”

1 4장“테이블 관리”

1 5장“뷰, 시퀀스 및 동의어관리”

1 6장“인덱스 관리”

1 7장“클러스터 관리”

1 8장“해시 클러스터 관리” 해시 클러스터 변경 또는 삭제 작업 시 수행하는 일반적인 지침 사항은 이 장을 참조하십시오.

1 9장“데이터 블록 훼손 감지와 이 장에서는 D B M S _ R E PAIR 패키지에 있는 프로시저를 사용하여 데이터 블록 훼손을감지하고 복구하는 방법에 대해 설명합니다.

2 0장“스키마 객체에 대한 일반 이 장에서는 스키마 관리에 대해 1 2장에서설명한 내용보다 상세한 측면을 다룹니다.테이블 분석, 테이블과 클러스터 잘라버리기, 데이터베이스 트리거, 무결성 제약 조건및 객체 종속성에 대한 내용은 이 장을 참조하십시오. 또한 이 장에서는 다수의 관련된예를 보여줍니다.

2 1장“롤백 세그먼트 관리” 롤백 세그먼트를 사용하여 작업 시 수행하는지침 사항은 이 장을 참조하십시오.

I V부: 데이터베이스 보안

2 2장“보안 정책 구축” 이 장에서는 시스템, 데이터 및 사용자 보안정책뿐 아니라 암호 관리에 관련된 특정 작업을 포함한 데이터베이스 보안에 대한 모든측면을 설명합니다.

2 3장“사용자와 자원 관리” 이 장에서는 세션과 사용자 사용권 지정 및사용자 인증을 설명하며 사용자와 자원 관리에 관련된 특정 작업의 예를 제공합니다.

2 4장“사용자 권한과 롤 관리” 이 장에서는 사용자 권한과 롤 관리의 모든측면에 대한 내용을 다룹니다. 권한과 롤 부여 및 철회 방법은 이 장을 참조하십시오.

2 5장“데이터베이스 사용 감사” 이 장에서는 감사 정보 생성, 관리 및 보는방법에 대해 설명합니다.

x x v i i

복구”

적 관리”

표기 규칙

이 단원에서는 이 설명서에 사용된 표기 규칙에 대해 다음 사항을 설명합니다.

■ 텍스트

■ 구문 다이어그램 및 표기법

■ 코드 예

텍스트

이 단원에서는 텍스트에 사용된 표기 규칙을 설명합니다.

대문자

대문자 텍스트는 명령어 키워드, 객체 이름, 매개변수, 파일 이름 등을 나타내는데 사용됩니다.

예를 들어, “전용 롤백 세그먼트를 생성할 때는 매개변수 파일의 RO L L B AC K _SEGMENTS 매개변수에이름을 지정해야 합니다.”

기울임꼴 문자

책 제목을 표시하거나 단어를 강조할 때 기울임꼴을 사용합니다.

구문 다이어그램 및 표기법

이 설명서에서 구문 다이어그램 및 표기법은 SQL 명령어, 함수, 힌트 및 기타 요소에 대한 구문을 나타냅니다. 이 단원에서는 구문 다이어그램과 예를 이해하는 방법과SQL 문을 작성하는 방법을 설명합니다.

키워드

키워드는 SQL 언어에서 특별한 의미를 가지는 용어입니다. 이 설명서의 구문 다이어그램에서 키워드는 대문자로 나타납니다. 사용자는 SQL 문 작성 시 대소문자를 구분하지 않는 경우를 제외하고 구문 다이어그램에 나타난 대로 정확하게 키워드를 사용해야 합니다. 예를 들어, CREATE TABLE 문을 시작하려면 C R E ATE TABLE 구문 다이어그램에 나타난 대로 C R E ATE 키워드를 사용해야 합니다.

매개변수

매개변수는 구문 다이어그램에서 사용자 입력란의 역할을 하며 소문자로 나타납니다.매개변수는 일반적으로 데이터베이스 객체 이름, Oracle 데이터 유형 이름 또는 표현

x x v i i i

식입니다. 구문 다이어그램에 매개변수가 있으면 SQL 문에 해당되는 유형의 객체나표현식과 대체하십시오. 예를 들어, CREATE TABLE 문을 작성하려면 구문 다이어그램의 table 매개변수 위치에 EMP 등과 같은 생성하려는 테이블 이름을 사용하십시오. (매개변수 이름은 텍스트에 기울임꼴로 나타납니다. )

다음 목록은 이 설명서의 구문 다이어그램에 나타나는 매개변수와 명령문에서 매개변수와 대체할 수 있는 값의 예를 보여줍니다.

코드 예

SQL 및 SQL*Plus 명령어와 명령문은 고정 너비 글꼴로 문단의 텍스트와 분리되어나타납니다.

INSERT INTO emp (empno, ename) VALUES (1000, ’JFEE’);

x x i x

매개변수 예

t a b l e e m p

‘t e x t’ ‘Employee R ec o r d s’

c o n d i t i o n ename > ‘A’

d a t e T O _ D A T E (

d ‘0 1 - J a n - 1 9 9 6’,

‘D D - M O N - Y Y Y Y’)

e x p r sal + 1000

i n t e g e r 7 2

r o w i d 0 0 0 00 46 2 . 0 0 0 1 . 0 0 0 1

s u b q u e r y SELECT ename

FROM emp

s t a t e m e n t _ n a m e s 1

b l o c k _ n a m e b 1 0

설명

대체 값은 매개변수에 지정된 유형의 객체

이름이어야 합니다.

대체 값은 작은 따옴표 안의 문자 리터럴

이어야 합니다.

대체 값은 TRUE 또는 F A L S E로 평가되는

조건이어야 합니다.

대체 값은 날짜 상수나 DATE 데이터 유형

의 표현식이어야 합니다.

대체 값은 임의의 데이터 유형의 표현식이

어야 합니다.

대체 값은 정수여야 합니다

대체 값은 데이터 유형 R O W I D의 표현식

이어야 합니다.

대체 값은 다른 SQL 문에 포함되는 S E L E -

CT 문이어야 합니다.

대체 값은 다른 SQL 문에 포함되는 S E L E -

CT 문이어야 합니다.

ALTER TABLESPACE users ADD DATAFILE ’users2.ora’ SIZE 50K;

예문에 쉼표나 따옴표 같은 문장 부호가 있을 수 있습니다. 예문의 모든 문장 부호는필수적입니다. 모든 예문은 세미콜론( ; )으로 마칩니다. 응용 프로그램에 따라 명령문의 마침 표시로 세미콜론 또는 다른 종결자가 필요하거나 필요하지 않을 수 있습니다.

예문의 대문자 단어는 O racle SQL 키워드를 나타냅니다. 그러나 명령문을 실행할때 키워드는 대소문자를 구분하지 않습니다.

예문의 소문자 단어는 예제의 문맥에만 제공되는 단어를 나타냅니다. 예를 들어, 소문자 단어는 테이블, 열 또는 파일 이름을 나타낼 수 있습니다.

x x x

I기본 데이터베이스 관리

1오라클 데이터베이스 관리자

이 장에서는 O racle 서버를 관리하는 데이터베이스 관리자의 의무에 대해 설명하며 다음내용을 다룹니다.

■ O racle 사용자 유형

■ 데이터베이스 관리자 보안 및 권한

■ 데이터베이스 관리자 인증

■ 암호 파일 관리

■ 데이터베이스 관리자 유틸리티

■ 데이터베이스 관리자의 우선 순위

■ 오라클 소프트웨어 릴리스 식별

오라클 데이터베이스 관리자 1 - 1

O racle 사용자 유형

O racle 사용자의 유형 및 의무는 사이트에 따라 다릅니다. 예를 들어, 대형 사이트에서는 데이터베이스 관리자의 임무를 몇몇 사람과 나눌 수 있습니다.

이 단원에서는 다음 내용을 다룹니다.

■ 데이터베이스 관리자

■ 보안 관리자

■ 응용 프로그램 개발자

■ 응용 프로그램 관리자

■ 데이터베이스 사용자

■ 네트워크 관리자

데이터베이스 관리자

오라클 데이터베이스 시스템은 대용량이고 많은 사용자가 사용하는 시스템이므로 특정인이나 일부 그룹에서 관리해야 합니다. 이들이 바로 데이터베이스 관리자( D B A )입니다. 데이터베이스 관리 작업을 수행하려면 데이터베이스마다 적어도 한 명 이상의 관리자가 있어야 합니다.

데이터베이스 관리자는 다음 작업을 수행합니다.

■ O racle 서버와 응용 프로그램 도구 설치 및 업그레이드

■ 데이터베이스 시스템의 시스템 저장 영역 할당 및 향후 필요한 저장 영역 계획

■ 응용 프로그램 개발자가 응용 프로그램을 설계한 후 기본 데이터베이스 저장 영역

구조(테이블스페이스) 생성

■ 응용 프로그램 개발자가 응용 프로그램을 설계한 후 기본 객체(테이블, 뷰, 인덱

스) 생성

■ 응용 프로그램 개발자가 요청하는 데이터베이스 구조 변경

■ 사용자 등록 및 시스템 보안 유지 관리

■ O racle 사용권 계약 준수 확인

■ 데이터베이스를 액세스하는 사용자 제어 및 모니터링

■ 데이터베이스 성능 모니터링 및 최적화

Oracle 사용자 유형

1 - 2 Oracle8i 관리자 설명서

■ 데이터베이스 정보 백업 및 복구 계획

■ 아카이브된 데이터를 테이프에 유지 관리

■ 데이터베이스 백업 및 복구

■ 오라클사에 기술 지원 문의

보안 관리자

어떤 경우에는 여러 사람이 보안 관리자 역할을 수행하기도 합니다. 보안 관리자는사용자 등록, 데이터베이스를 액세스하는 사용자 제어 및 모니터링, 시스템 보안을유지 관리합니다. 별도의 보안 관리자가 있다면 데이터베이스 관리자는 보안 관리자로서의 책임을 지지 않아도 됩니다.

응용 프로그램 개발자

데이터베이스 응용 프로그램을 설계하고 구현하는 응용 프로그램 개발자는 다음 작업을 수행합니다.

■ 데이터베이스 응용 프로그램 설계 및 개발

■ 응용 프로그램에 적합한 데이터베이스 구조 설계

■ 응용 프로그램에 적합한 저장 영역 요구 사항 예측

■ 응용 프로그램을 위한 데이터베이스 구조 변경 사항 명시

■ 데이터베이스 관리자에게 위의 정보 제공

■ 개발 중 응용 프로그램 조정

■ 개발 중 응용 프로그램 보안 방안 수립

응용 프로그램 관리자

대부분의 사이트에는 한 명 이상의 응용 프로그램 관리자가 있으며 응용 프로그램 관리자는 특정 응용 프로그램을 관리할 책임이 있습니다.

데이터베이스 사용자

일반 사용자는 응용 프로그램이나 유틸리티를 통해 데이터베이스를 사용합니다. 일반사용자는 다음과 같은 작업을 수행합니다.

■ 허용 범위 내에서 데이터 입력, 수정 및 삭제

Oracle 사용자 유형

오라클 데이터베이스 관리자 1 - 3

■ 데이터 보고서 생성

네트워크 관리자

일부 사이트에는 한 명 이상의 네트워크 관리자가 있습니다. 네트워크 관리자는 오라클 네트워킹 제품인 N e t 8을 관리할 책임이 있습니다.

참조: O racle8i Distributed Database Systems의“N e twork Ad m i n i s t ra t i o n”

데이터베이스 관리자 보안 및 권한

O racle 관리 업무를 수행하려면 데이터베이스에서 뿐만 아니라 해당 데이터베이스를실행하는 서버의 운영 체제에도 별도의 권한이 있어야 합니다. 데이터베이스 관리자계정에 대한 액세스는 엄격히 통제되어야 합니다.

이 단원에서는 다음 내용을 다룹니다.

■ 데이터베이스 관리자의 운영 체제 계정

■ 데이터베이스 관리자 사용자명

■ DBA 롤

데이터베이스 관리자의 운영 체제 계정

여러 데이터베이스 관리 업무를 수행하려면 운영 체제 명령어를 실행할 수 있어야 합니다. Ora c l e을 실행하는 운영 체제에 따라 운영 체제를 액세스할 수 있는 운영 체제계정이나 I D가 필요합니다. 이 경우 데이터베이스 관리자의 운영 체제 계정은 예를들어, 오라클 소프트웨어 설치 작업을 위해 일반 사용자보다 더 많은 운영 체제 권한이나 액세스 권한이 필요합니다. 데이터베이스 관리자는 O racle 파일을 자신의 계정에 저장할 필요는 없지만 이 파일에 대한 액세스 권한은 가지고 있어야 합니다.

Enterprise Manager에서운영 체제 권한이 부여된 Enterprise Manager 명령을사용하려면 어떤식으로든운영체제계정이나 I D가 구분되어야합니다.

참조: 데이터베이스 관리자의 계정을 구분하는 방법은 운영 체제에 따라 다릅니다. 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스 관리자 보안 및 권한

1 - 4 Oracle8i 관리자 설명서

데이터베이스 관리자 사용자명

O ra c l e을 설치하면 DBA 롤이 부여된 두 개의 사용자 계정이 데이터베이스와 함께자동으로 생성됩니다. 두 개의 사용자 계정은 다음과 같습니다.

■ SYS (초기 암호: CHANGE_ON_INSTA L L )

■ SYSTEM (초기 암호: MANAG E R )

위의 두 사용자명은 다음 단원에서 설명합니다.

주: 데이터 딕셔너리 테이블에 대한 잘못된 액세스를 방지하려면 오라클 데이터베이스를 생성하는 즉시 SYS 및 SYSTEM 사용자명의 암호를 변경해야 합니다.

일상적인 데이터베이스 관리 작업 수행 시 필요한 추가적인 데이터베이스 관리자 사용자명 작성이 필요합니다.

SYS

데이터베이스를 생성하면 DBA 롤이 부여된 사용자 계정 SY S가 자동으로 생성되며SY S의 초기 암호는 C H A N G E _ O N _ I N S TA L L입니다.

데이터베이스의 데이터 딕셔너리에 대한 모든 기본 테이블과 뷰는 SYS 스키마에 저장됩니다. 기본 테이블과 뷰는 O ra c l e을 운영하는데 꼭 필요합니다. SYS 스키마의테이블은 데이터 딕셔너리의 무결성 유지 관리를 위해 O ra c l e에 의해 처리됩니다. 다른 사용자나 데이터베이스 관리자는 이 테이블을 갱신할 수 없으며 어떤 사용자도 사용자 SYS 스키마에 테이블을 작성할 수 없습니다. (그러나 필요하다면 데이터 딕셔너리의 저장 영역 매개변수를 변경할 수 있습니다. )

대부분의 데이터베이스 사용자는 SYS 계정으로 접속하지 말아야 합니다. 하지만 오라클 기술 지원 담당자나 설명서에서 지시할 때는 SYS 계정을 사용하여 데이터베이스에 접속할 수 있습니다.

SYSTEM

데이터베이스를 생성하면 사용자 계정 SY S T E M이 자동으로 생성됩니다. SY S T E M은 데이터베이스에 대한 모든 시스템 권한을 가지고 있으며 암호는 M A NAG E R입니다.

SYSTEM 사용자명은 관리 정보를 화면으로 보여주는 추가 테이블과 뷰, 오라클 도구가 사용하는 내부 테이블과 뷰를 만듭니다. 일반 사용자들은 SYSTEM 스키마에테이블을 만들지 마십시오.

데이터베이스 관리자 보안 및 권한

오라클 데이터베이스 관리자 1 - 5

DBA 롤

이미 정의된“데이터베이스 관리자( D B A )”롤은 모든 오라클 데이터베이스를 생성할때 자동으로 생성됩니다. DBA 롤에는 모든 데이터베이스 시스템 권한이 들어 있습니다. 따라서 DBA 롤은 매우 강력하므로 모든 역할을 수행하는 데이터베이스 관리자에게만 부여해야 합니다.

데이터베이스 관리자 인증

데이터베이스 관리자는 데이터베이스를 시작하거나 종료하는 특정 작업을 수행해야합니다. 이러한 작업은 일반 사용자가 수행할 수 없으므로 데이터베이스 관리자의 사용자명은 더욱 안전한 인증 체계가 필요합니다.

이 단원에서는 다음 내용을 다룹니다.

■ 인증 방법 선택

■ 운영 체제 인증 사용

■ O S O P E R와 OSDBA

■ 인증 암호 파일 사용

인증 방법 선택

데이터베이스 관리자를 인증하는 다음 방법은 이전 O racle 버전에서 제공한CONNECT INTERNAL 구문을대신합니다.

■ 운영 체제 인증

■ 암호 파일

데이터베이스가 있는 동일한 시스템에서 데이터베이스를 지역적으로 관리할 것인지,단일 원격 클라이언트에서 여러 데이터베이스를 관리할 것인지에 따라 데이터베이스관리자 인증에 있어 운영 체제 인증을 사용할지 또는 암호 파일을 사용할지를 결정할수 있습니다. 그림 1 - 1은 데이터베이스 관리자 인증 체계 선택 방법을 나타냅니다.

데이터베이스 관리자 인증

1 - 6 Oracle8i 관리자 설명서

그림 1-1 데이터베이스관리자 인증 방법

대부분의 운영 체제에서 데이터베이스 관리자를 위한 OS 인증은 데이터베이스 관리자의 OS 사용자명을 특별한 그룹(UNIX 시스템에서는 DBA 그룹)으로 설정하거나OS 사용자명에 특별한 프로세스 권한을 부여합니다.

데이터베이스는 암호 파일을 사용하여 관리자 권한을 부여받은 데이터베이스 사용자명을 추적합니다.

참조: O racle8i 개념 설명서 29-3 페이지의“사용자 인증”

운영 체제 인증 사용

운영 체제 인증을 선택하면 운영 체제는 사용자가 데이터베이스 관리 작업을 수행할수 있도록 인증합니다.

1 . 운영 체제가 사용자를 인증하도록 설정합니다.

2 . 초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E이 기본값인 N O N E으로 설정되었는지 확인합니다.

3 . 인증된 사용자는 다음 명령 중 하나를 입력하여 지역 데이터베이스에 접속하거나보안 접속 하에서 원격 데이터베이스에 접속할 수 있어야 합니다.

CONNECT / AS SYSOPER

데이터베이스 관리자 인증

오라클 데이터베이스 관리자 1 - 7

OS 인증 사용

암호 파일 사용

보안 접속을가지

고 있습니까?OS 인증을

사용하겠습니까?

원격 데이터베이스 관리 지역 데이터베이스 관리

예 예

아니오 아니오

CONNECT / AS SYSDBA

이전 O racle 릴리스를 사용하여 I N T E R NA L로 접속했다면 3단계의 새 구문을 사용하여 접속할 수 있어야 합니다.

주: OS 인증을 사용하여 SY S O P E R나 SY S D B A로 접속할 때SY S O P E R나 SYSDBA 시스템 권한이 있어야 하는 것은 아닙니다.대신 서버는 운영 체제 레벨에서 데이터베이스 관리자에게 적합한 O S -D B A나 OSOPER 롤이 부여되었는지 확인합니다.

O S O P E R와 OSDBA

운영 체제 인증을 사용하면 두 개의 특별한 운영 체제 롤인 O S O P E R와 O S D B A가데이터베이스 관리자 로그인을 제어합니다.

O S O P E R 사용자는 STARTUP, SHUTDOWN, ALTER DATABASE OPEN/

MOUNT, ALTER DATABASE BACKUP, ARCHIVE LOG,

R E C O V E R를 수행할 수 있으며 RESTRICTED SESSION 권한을가질 수

있습니다.

O S D B A ADMIN OPTION 및 OSOPER 롤을 사용하여 모든 시스템 권한을 가집니

다. 사용자는 CREATE DATABASE와 발생 시간에 따른 복구를 수행할

수 있습니다.

O S O P E R와 O S D B A는 운영 체제에 따라 이름과 기능이 다를 수 있습니다.

O S O P E R와 OSDBA 롤은 운영 체제를 통해 사용자에게 부여될 수 있습니다.GRANT 문으로는 위의 두 롤을 부여하거나 취소 또는 삭제할 수 없습니다. 사용자가 관리자 권한으로 로그온하고 R E M O T E _ L O G I N _ PA S S W O R D F I L E을 N O N E으로 설정하면, Ora c l e은 운영 체제와 통신하여 먼저 O S D B A의 활성화를 시도하고 실패하면 O S O P E R를 시도합니다. 두 시도가 모두 실패하면 접속할 수 없습니다. 운영체제가 시스템 권한을 부여하는 방법은 운영 체제마다 다릅니다.

원격 데이터베이스 관리를 수행하려면 Net8 설명서를 참조하여 보안 접속 사용 여부를 결정해야 합니다. 사용 중인 N e t 8의 버전에 관계 없이 T C P / I P나 DECnet 같은가장 보편적인 접속 프로토콜은 안전하지 않습니다.

참조: 데이터베이스 관리자의 OS 인증에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스 관리자 인증

1 - 8 Oracle8i 관리자 설명서

인증 암호 파일 사용

사용자의 데이터베이스 관리를 인증하기 위해 암호 파일을 사용하려면 다음 단계를수행해야 합니다. 각 단계에 대한 자세한 내용은 이 장의 다음 단원에서 설명합니다.

1 . O R A PWD 유틸리티를 사용하여 암호 파일을 작성합니다.

ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users

2 . 초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E을 E XC L U S I V E로 설정합니다.

3 . S Q L을 사용하여 암호 파일에 사용자를 추가하여 데이터베이스 관리 작업을 수행할 각 사용자에게 적합한 권한을 부여합니다.

GRANT SYSDBA TO scott;GRANT SYSOPER TO scott;

SYSDBA 권한은 O S D B A와 동일한 작업을 수행하도록 합니다. 마찬가지로SY S O P E R권한도 O S O P E R와 동일한 작업을 수행하도록 합니다.

4 . 권한이 있는 사용자는 다음과 유사한 명령어를 사용하여 데이터베이스에 접속할수 있어야 합니다.

CONNECT scott/[email protected] AS SYSDBA

암호 파일 관리

암호 파일은 암호 파일 작성 유틸리티 O R A PW D를 사용하거나 선택된 운영 체제에서는 표준 설치 과정에서 만들 수 있습니다.

이 단원에서는 다음 내용을 다룹니다.

■ O R A PWD 사용

■ R E M O T E _ L O G I N _ PASSWORDFILE 설정

■ 암호 파일에 사용자 추가

■ 관리자 권한으로 접속

■ 암호 파일 유지 관리

암호 파일 관리

오라클 데이터베이스 관리자 1 - 9

참조: 암호 파일 설치를 위한 설치자 유틸리티 사용 정보는 사용자 운영 체제별 오라클 설명서를 참조하십시오.

ORAPWD 사용

매개변수 없이 암호 파일 작성 유틸리티를 실행하면 다음 예제 출력에서처럼 올바른명령어가 사용되었다는 메시지가 나타납니다.

orapwdUsage: orapwd file=<fname> password=<password> entries=<users>

wherefile - name of password file (mand),password - password for SYS and INTERNAL (mand),entries - maximum number of distinct DBAs and OPERs (opt),There are no spaces around the equal-to (=) character.

예를 들어, 다음 명령은 서로 다른 암호를 가진 3 0명의 권한이 부여된 사용자를 허용하는 AC C T. PW D라는 암호 파일을 작성합니다. SY S O P E R나 SY S D B A로 접속하는 사용자를 위해 파일의 암호는 S E C R E T으로 초기화됩니다.

ORAPWD FILE=acct.pwd PASSWORD=secret ENTRIES=30

다음은 O R A PWD 유틸리티에서 사용하는 매개변수입니다.

F I L E

작성되는 암호 파일의 이름을 설정합니다. 파일 이름은 경로명까지 정확하게 지정해야 하며 이 암호 파일은 사용자가 읽을 수 없는 파일로 암호화되어 저장됩니다. 이 매개변수는 지정되어야 합니다.

암호 파일에 사용하는 파일 이름의 유형은 운영 체제에 따라 다릅니다. 일부 플랫폼에서는 암호 파일이 특정 형식이어야 하고 특정 디렉토리에 위치해야 합니다. 다른플랫폼에서는 암호 파일의 이름과 위치 지정에 환경 변수를 사용할 수 있습니다. 플랫폼이 허용하는 이름과 위치에 대한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

O racle Pa rallel Serv e r로 여러 O racle 인스턴스를 실행한다면 각 인스턴스의 환경변수는 동일한 암호 파일을 가리켜야 합니다.

경고: 시스템 보안상 암호 파일과 암호 파일의 위치를 알려주는 환경 변수의 보안은 매우 중요합니다. 암호 파일이나 환경 변수를 액세스하는모든 사용자는 잠재적으로 접속 보안을 해칠 수 있습니다.

암호 파일 관리

1 - 1 0 Oracle8i 관리자 설명서

PA S S WO R D

SY S O P E R와 SY S D B A의 암호를 설정하는 매개변수입니다. 데이터베이스에 접속한다음 암호 변경을 위해 A LTER USER 명령어를 실행하면 데이터 딕셔너리와 암호파일에 저장된 암호가 모두 갱신됩니다. INTERNAL 사용자에게는역방향 호환성만이 허용됩니다. 이 매개변수는 지정되어야 합니다.

E N T R I E S

암호 파일에 최대 허용 입력 항목 수를 설정하는 매개변수로 SY S D B A나 SY S -O P E R로 데이터베이스에 접속할 수 있는 최대 사용자 수와 일치합니다. 암호 파일에사용자를 추가하거나 제거할 때 입력 항목을 다시 사용할 수 있습니다. 암호 파일이E XC L U S I V E려면 이 매개변수가 있어야 합니다.

경고: 한계를 초과해야 한다면 새 암호 파일을 작성해야 합니다. 필요하다고 생각되는 수보다 크게 설정하는 것이 안전합니다.

참조: 정확한 암호 파일 이름이나 운영 체제 이름을 지정하는데 사용되는 환경 변수이름을 알려면 운영 체제별 오라클 설명서를 참조하십시오.

R E M OT E _ LO G I N _ PA S S WORDFILE 설정

암호 파일을 작성할 때 초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E에적합한 값을 설정해야 합니다. 다음 설명을 참조하십시오.

주: 인스턴스나 데이터베이스를 시작하려면 Enterprise Manager를사용해야 합니다. 인스턴스 설정을 초기화하는 데이터베이스 이름과 매개변수 파일을 지정해야 합니다. Net8을 사용하여 올바른 원격 데이터베이스 이름을 지정할 수도 있습니다. 그러나 초기화 매개변수 파일과구성 파일 같은 관련 파일들은 클라이언트 시스템에 있어야 합니다. 즉,Enterprise Manager를 실행하는 시스템에 매개변수 파일이 있어야합니다.

암호 파일 관리

오라클 데이터베이스 관리자 1 - 1 1

NONE

매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E에 N O N E을 지정하면 O ra c l e은암호 파일이 없는 것처럼 작동합니다. 즉, 권한이 있는 사용자라도 비보안 접속을 할수 없습니다. NONE은 이 매개변수의 기본값입니다.

E XC L U S I V E

E XCLUSIVE 암호 파일은 하나의 데이터베이스에만 사용할 수 있습니다.E XCLUSIVE 파일만이 SY S O P E R나 SY S D B A가 아닌 다른 사용자명을 가질 수있습니다. 관리자가 E XCLUSIVE 암호 파일을 사용하면 개별 사용자에게SY S O P E R와 SYSDBA 시스템 권한을 부여하여 그 사용자가 자신의 사용자명으로데이터베이스에 접속하도록 합니다.

S H A R E D

SHARED 암호 파일은 여러 데이터베이스에서 사용할 수 있습니다. 그러나SHARED 암호 파일에 의해 인식되는 사용자는 SY S D B A와 SY S O P E R뿐입니다.SHARED 암호 파일에는 사용자를 추가할 수 없습니다. SY S D B A나 SYSOPER 시스템 권한이 필요한 모든 사용자는 동일한 이름( SY S )과 암호로 접속해야 합니다. 이옵션은 한 사람의 D B A가 여러 데이터베이스를 관리할 때 유용합니다.

제안 사항: 보안 레벨을 강화하려면 암호 파일을 작성한 즉시 R E M -O T E _ L O G I N _ PASSWORDFILE 파일 초기화 매개변수를 E XC L U -S I V E로 설정해야 합니다.

암호 파일에 사용자 추가

사용자가 SY S D B A나 SYSOPER 권한을 가지면 암호 파일에 그 사용자의 이름과권한 정보가 추가됩니다. 서버에 E XCLUSIVE 암호 파일이 없으면 즉, 초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E이 S H A R E D나 N O N E으로 설정되어있으면 SY S D B A나 SYSOPER 권한을 부여할 때 오류 메시지가 나타납니다.

사용자가 두 권한 중 하나라도 가지고 있는 동안에는 사용자 이름이 암호 파일에 남아 있습니다. 사용자로부터 위의 권한을 철회하면 사용자 이름이 암호 파일에서 제거됩니다.

암호 파일을 작성하여 새 사용자를 추가하려면 다음과 같이 하십시오.

1 . 암호 파일 작성을 위한 명령을 수행합니다.

2. 초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E을 E XC L U S I V E로 설정합니다.

암호 파일 관리

1 - 1 2 Oracle8i 관리자 설명서

3 . 다음 예처럼 SYSDBA 권한으로 접속합니다.

CONNECT SYS/change_on_install AS SYSDBA

4 . 필요하다면 인스턴스를 시작하여 데이터베이스를 작성하거나 기존 데이터베이스를 마운트하여 엽니다.

5. 필요하다면 사용자를 생성합니다. 데이터베이스 관리자 자신과 적합한 다른 사용자에게 SY S D B A나 SYSOPER 권한을 부여합니다.

6 . 위에서 지정한 사용자들은 암호 파일에 추가되어 SYS 대신 사용자명과 암호를사용하여 SY S D B A나 SYSOPER 권한으로 데이터베이스에 접속할 수 있습니다. 비록 암호 파일을 사용하더라도 OS 인증 기준을 만족하는 OS 인증 사용자의 접속을 막을 수는 없습니다.

SYS O P E R와 SYSDBA 권한 부여 및 철회

서버가 E XCLUSIVE 암호 파일을 사용하고 있다면 다음과 같이 GRANT 명령어를사용하여 사용자에게 SY S D B A나 SYSOPER 시스템 권한을 부여합니다.

GRANT SYSDBA TO scott;

R E VOKE 명령어를 사용하여 사용자로부터 SY S D B A나 SYSOPER 시스템 권한을철회합니다.

REVOKE SYSDBA FROM scott;

SY S D B A나 SY S O P E R는 가장 강력한 데이터베이스 권한이므로 A D M I NO P T I O N을 사용하지 않습니다. SYSDBA 또는 I N T E R NA L로 접속한 사용자만이다른 사용자에게 SY S D B A나 SYSOPER 시스템 권한을 부여할 수 있습니다. 이것은 R E VO K E의 경우에도 마찬가지입니다. 롤은 데이터베이스를 시작한 후에만 사용할 수 있으므로 롤에 이 권한을 부여할 수는 없습니다. SY S D B A와 SYSOPER 데이터베이스 권한을 운영 체제 롤과 혼동하지 마십시오. SY S D B A와 SY S O P E R는 완전히 독립적인 기능입니다.

참조: 시스템 권한에 대한 자세한 내용은 2 4장“사용자 권한과 롤 관리”를 참조하십시오.

암호 파일 멤버 나열

V $PWFILE_USERS 뷰를 사용하여 데이터베이스에 대해 SY S D B A나 SY S O P E R시스템 권한을 부여받은 사용자를 알아봅니다. 다음은V $PWFILE_USERS 뷰로 알수 있는 항목입니다.

암호 파일 관리

오라클 데이터베이스 관리자 1 - 1 3

USERNAME

암호 파일에 의해 인식된 사용자 이름

SYSDBA

이 항목이 T RU E로 설정되어 있으면 사용자는 SYSDBA 시스템 권한으로 로그온할수 있습니다.

SYSOPER

이 항목이 T RU E로 설정되어 있으면 사용자는 SYSOPER 시스템 권한으로 로그온할 수 있습니다.

관리자 권한으로 접속

사용자명과 암호를 사용하여 SY S D B A나 SYSOPER 권한으로 접속하면 접속한 사용자명과 연관된 스키마가 아닌 SY S의 기본 스키마로 접속됩니다.

관리자 권한으로 접속: 예

예를 들어, 사용자 S C O T T가 다음 명령어를 실행했다고 가정합시다.

CONNECT scott/tigerCREATE TABLE scott_test(name VARCHAR2(20));

S C O T T가 다음 명령어를 실행합니다.

CONNECT scott/tiger AS SYSDBASELECT * FROM scott_test;

위의 경우 S C O T T _ T E S T가 없다는 오류 메시지가 나타납니다. 이것은 SCOTT 스키마에 테이블을 만들어 놓고 SYS 스키마를 기본적으로 참조하기 때문입니다.

비보안 원격 접속

권한을 부여받은 사용자가 비보안 접속으로 O ra c l e에 접속하려면 다음 조건을 만족해야 합니다.

■ 접속하고 있는 서버에 암호 파일이 있어야 합니다.

■ SY S D B A나 SYSOPER 시스템 권한이 있어야 합니다.

■ 사용자명과 암호를 사용하여 접속해야 합니다.

암호 파일 관리

1 - 1 4 Oracle8i 관리자 설명서

지역 및 보안 원격 접속

권한이 있는 사용자가 지역 접속 및 보안 원격 접속으로 O ra c l e에 접속하려면 다음조건을 만족해야 합니다.

■ 앞에서 언급한 비보안 접속에 대한 조건을 만족하면 암호 파일을 사용하여 접속할

수 있습니다.

■ 서버가 암호 파일을 사용하지 않거나 사용자에게 SYSDBA 또는 SYSOPER 권

한이 없어 암호 파일에 등록되지 않았다면 운영 체제는 권한을 가지고 접속하기

위해 사용자의 운영 체제 이름을 인증해야 합니다. 이러한 유형의 인증은 운영 체

제마다 다릅니다.

운영 체제 인증에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

참조: 1-9 페이지“암호 파일 관리”

암호 파일 유지 관리

이 단원에서는 암호 파일의 상태 변경을 피하는 방법과 암호 파일 확장, 위치 재지정및 제거 방법을 설명합니다.

암호 파일 사용자 수 확장

사용자에게 SY S D B A나 SYSOPER 시스템 권한을 부여하려고 할 때 파일 전체 오류( O R A - 1 9 9 6 )가 발생하면 더 큰 암호 파일을 작성하고 사용자들에게 권한을 다시부여해야 합니다.

암호 파일을 바꾸려면 다음과 같이 하십시오.

1. V $PWFILE_USERS 뷰를 질의하여 SY S D B A나 SYSOPER 권한이 있는 사용자를 기록합니다.

2 . 데이터베이스를 종료합니다.

3 . 기존 암호 파일을 삭제합니다.

4 . 1-10 페이지“O R A PWD 사용”에서 설명한 방법대로 O R A PWD 유틸리티를 사용하여 새 암호 파일을 작성합니다. ENTRIES 매개변수에충분히 큰 값을 설정합니다.

5 . 1-12 페이지“암호 파일에 사용자 추가”의 지침을 수행합니다.

암호 파일 관리

오라클 데이터베이스 관리자 1 - 1 5

암호 파일의 위치 재지정

암호 파일을 작성한 후에도 사용자의 선택에 따라 암호 파일의 위치를 재지정할 수있습니다. 암호 파일의 위치를 재지정한 후 해당 환경 변수를 새 경로명에 재설정해야 합니다. 운영 체제가 이전에 정의된 경로명을 사용하고 있다면 암호 파일의 위치를 변경할 수 없습니다.

암호 파일 제거

사용자 인증을 위해 암호 파일을 더 이상 사용하지 않는다면 암호 파일을 삭제하고초기화 매개변수 R E M O T E _ L O G I N _ PA S S W O R D F I L E을 N O N E으로 재설정할 수있습니다. 암호 파일을 제거한 후에는 운영 체제가 인증할 수 있는 사용자만이 데이터베이스 관리 작업을 수행할 수 있습니다.

경고: R E M O T E _ L O G I N _ PAS S WO R D F I L E = E XC L US I V E나S H A R E D로 데이터베이스나 인스턴스를 마운트했다면 암호 파일을 제거하거나 수정하지 마십시오. 제거하거나 수정하면 암호 파일을 사용하여 원격 접속할 수 없게 됩니다. REMOTE_LOGIN_PAS S WO R DF I L E을 바꾸어도 시간 기록과 체크섬이 잘못되어 있으므로 새 암호 파일을 사용할 수 없습니다.

암호 파일 상태 변경

암호 파일 상태는 암호 파일에 저장됩니다. 암호 파일을 처음 만들었을 때 암호 파일의 기본 상태는 S H A R E D입니다. 사용자는 매개변수 R E M O T E _ L O G I N _PA S S W O R D F I L E을 설정하여 암호 파일의 상태를 변경할 수 있습니다. 인스턴스를시작할 때 O ra c l e은 클라이언트 시스템에 저장되어 있는 초기화 매개변수 파일에서이 매개변수 값을 읽어들입니다. 데이터베이스를 마운트하면 O ra c l e은 매개변수 값과암호 파일에 저장되어 있는 값을 비교합니다. 두 값이 일치하지 않으면 파일에 저장되어 있는 값을 겹쳐씁니다.

경고: 실수로 E XC L USIVE 암호 파일이 S H A R E D로 변경되지 않도록주의해야 합니다. 다중 클라이언트에서 인스턴스를 시작하게 하려면 각클라이언트가 모두 초기화 매개변수 파일을 가지고 있어야 하며 매개변수 R E M O T E _ L O G I N _ PAS S WO R D F I L E의 값이 모두 동일한 값으로설정되어야 합니다. 그렇지 않으면 인스턴스를 시작한 위치에 따라 암호파일의 상태가 변경됩니다.

암호 파일 관리

1 - 1 6 Oracle8i 관리자 설명서

데이터베이스 관리자 유틸리티

O racle 서버를 유지 관리하고 제어하는데 사용할 수 있는 유틸리티에는 여러 가지가있습니다.

이 단원에서는 다음 내용을 다룹니다.

■ S Q L * L o a d e r

■ E x p o r t와 I m p o r t

S Q L * Loader

S Q L * L o a d e r는 오라클 데이터베이스 관리자와 일반 사용자 모두가 사용하는 유틸리티입니다. SQL*Loader는 표준 운영 체제 파일 즉, 텍스트나 C 데이터 형식에서 데이터를 읽어 오라클 데이터베이스 테이블에 로드합니다.

참조: O racle8i Utilities

E x p o r t와 I m p o r t

O racle 형식 데이터를 오라클 데이터베이스로, 오라클 데이터베이스에서 O racle 데이터 형식으로 이동하는 유틸리티입니다. 예를 들어, 엑스포트 파일은 데이터베이스 데이터를 아카이브하거나 동일한 또는 다른 운영 체제에서 실행하는 서로 다른 오라클데이터베이스 사이에서 데이터를 이동할 수 있습니다.

참조: O racle8i Utilities

데이터베이스 관리자의 우선 순위

일반적으로 데이터베이스 시스템을 시작하고 실행하며 유지 관리하기 위해 일련의 작업을 수행합니다.

다음은 모든 유형의 컴퓨터 시스템에서 O racle 서버와 데이터베이스를 구성하는데 필요한 단계별 작업입니다. 다음은 각 단계에 대한 자세한 설명입니다.

오라클 서버를 구성하려면 다음과 같이 하십시오.

■ 1단계: 오라클 소프트웨어 설치

■ 2단계: 데이터베이스 서버 하드웨어 평가

■ 3단계: 데이터베이스 계획

■ 4단계: 데이터베이스 생성 및 열기

■ 5단계: 데이터베이스 설계 구현

데이터베이스 관리자의 우선 순위

오라클 데이터베이스 관리자 1 - 1 7

■ 6단계: 데이터베이스 백업

■ 7단계: 시스템 사용자 등록

■ 8단계: 데이터베이스 성능 조정

주: 새 릴리스로 이전하려면 설치하기 전에 기존의 업무용 데이터베이스를 백업합니다. 기존의 업무용 데이터베이스 보존에 대한 자세한 내용은 O racle8i Migra t i o n을 참조하십시오.

1단계: 오라클 소프트웨어 설치

데이터베이스 관리자는 O racle 서버 소프트웨어와 전위 도구, 데이터베이스를 액세스하기 위해 사용할 데이터베이스 응용 프로그램을 설치해야 합니다. 분산 처리 설치를한 경우 중앙 컴퓨터가 데이터베이스를 제어하며 데이터베이스 도구와 응용 프로그램은 원격 시스템에서 실행됩니다. 이 경우 원격 시스템을 O ra c l e을 실행하는 컴퓨터로접속할 때 필요한 O racle Net8 드라이버를설치해야 합니다.

참조: 자세한 내용은 1-21 페이지“오라클 소프트웨어 릴리스 식별”을 참조하십시오.

제품 설치에 대한 특별한 요구 사항과 지침은 사용자 운영 체제별 오라클 설명서 또는전위 도구 및 Net8 드라이버 설치 설명서를 참조하십시오.

2단계: 데이터베이스 서버 하드웨어 평가

설치 작업을 마친 후 O ra c l e과 응용 프로그램이 컴퓨터 자원을 최상으로 사용할 수있는 방법을 평가해야 합니다. 평가 작업으로 다음 정보를 알 수 있습니다.

■ O ra c l e과 데이터베이스에 사용할 수 있는 디스크 드라이브 수

■ O ra c l e과 데이터베이스에서 사용할 수 있는 전용 테이프 드라이브가 있는 경우 테

이프 드라이브 수

■ O racle 인스턴스가 사용할 수 있는 메모리 용량(시스템의 구성 설명서 참조)

3단계: 데이터베이스 계획

데이터베이스 관리자는 다음 항목에 대해 계획을 세워야 합니다.

데이터베이스 관리자의 우선 순위

1 - 1 8 Oracle8i 관리자 설명서

■ 데이터베이스의 논리적 저장 영역 구조

■ 전체 데이터베이스 설계

■ 데이터베이스 백업 전략

데이터베이스의 논리적 저장 영역 구조가 시스템 성능과 다양한 데이터베이스 관리작업에 영향을 주는 것을 고려하여 계획하는 것은 매우 중요합니다. 예를 들어, 데이터베이스에 테이블스페이스를 만들기 전에 테이블스페이스를 구성할 데이터 파일의수와 데이터 파일을 물리적으로 저장할 위치(디스크 드라이브 위치) 및 각 테이블스페이스에 저장할 정보 유형을 알아야 합니다. 전체 데이터베이스의 논리적 저장 영역구조를 계획하는 과정에서 데이터베이스를 실제로 만들어 실행했을 때 이 구조에 미칠 영향을 고려해야 합니다. 데이터베이스의 논리적 저장 영역 구조는 다음 항목에영향을 줍니다.

■ O ra c l e을 실행하는 컴퓨터의 성능

■ 데이터 액세스 작업 중의 데이터베이스 성능

■ 데이터베이스 백업 및 복구 절차의 효율성

데이터베이스 객체와 각 객체의 저장 영역 속성 간의 관계를 설정하십시오. 데이터베이스를 생성하기 전에 객체와 객체의 물리적 저장 영역 간의 관계를 계획하여 데이터베이스 성능에 직접적인 영향을 줄 수 있습니다. 데이터베이스 확장도 계획해야 합니다.

분산 데이터베이스 환경에서 이 계획 단계는 매우 중요합니다. 자주 액세스하는 데이터의 물리적 위치는 응용 프로그램 성능에 큰 영향을 줍니다.

위의 설계 단계에서 데이터베이스 백업 전략을 세우십시오. 백업 효율을 향상시키기위해 이미 계획한 데이터베이스의 논리적 저장 영역 구조와 데이터베이스 설계를 변경해야 할 수도 있습니다.

관계형 데이터베이스와 분산 데이터베이스 설계는 이 설명서에 없는 내용입니다. 데이터베이스 설계에 익숙하지 않다면 업계에서 승인하는 데이터베이스에 대한 산업 표준 자료를 참조하십시오.

참조: 데이터베이스의 논리적 저장 영역 구조와 객체 생성 및 무결성 제약 조건은 9장부터 2 1장을 참조하십시오.

4단계: 데이터베이스 생성 및 열기

마지막으로 데이터베이스 설계를 결정한 다음 데이터베이스를 생성하고 정상적인 사용을 위해 데이터베이스를 열 수 있습니다. 운영 체제에 따라 O ra c l e을 설치하는 중에

데이터베이스 관리자의 우선 순위

오라클 데이터베이스 관리자 1 - 1 9

이미 데이터베이스를 생성했을 수도 있습니다. Oracle 설치 중에 데이터베이스를 생성한 경우에는 인스턴스를 시작하고 데이터베이스를 마운트한 다음 초기 데이터베이스를 열면 됩니다.

O racle 설치 중 운영 체제가 초기 데이터베이스를 생성했는지 알아보려면 설치 설명서나 사용자 설명서를 참조하십시오. 설치 중에 데이터베이스를 생성하지 않았거나데이터베이스를 추가로 생성하려면 2장을 참조하십시오.

참조: 데이터베이스와 인스턴스를 시작하고 종료하는 절차는 3장에서 설명합니다.

5단계: 데이터베이스 설계 구현

데이터베이스를 만들고 시작한 다음 필요한 롤백 세그먼트와 테이블스페이스를 만들어 계획한 데이터베이스의 논리적 구조를 생성할 수 있습니다. 데이터베이스의 논리적 구조를 구축한 후 데이터베이스 객체를 생성할 수 있습니다.

참조: 데이터베이스의 논리적 저장 영역 구조와 객체 생성은 9장부터 2 1장을 참조하십시오.

6단계: 데이터베이스 백업

데이터베이스 구조를 생성한 다음 추가로 리두 로그 파일을 만들고 데이터베이스 전체를 백업(온라인 또는 오프라인)하며 향후 규칙적인 간격으로 실행할 데이터베이스백업 스케줄링 작업 등을 실행하여 계획한 백업 전략을 수행합니다.

참조: 백업 작업 사용자 정의와 복구 절차 수행은 O racle8i Backup and RecoveryG u i d e를 참조하십시오.

7단계: 시스템 사용자 등록

데이터베이스 구조를 백업한 다음 O racle 사용권 계약에 따라 데이터베이스 사용자를등록하고 사용자 롤을 생성하며 사용자에게 적합한 롤을 부여할 수 있습니다.

참조: 사용자 계정과 롤 생성, 사용권 계약 준수에 대한 내용은 2 2장부터 2 4장을 참조하십시오.

8단계: 데이터베이스 성능 조정

데이터베이스 시스템의 성능 최적화는 데이터베이스 관리자가 계속 책임져야 합니다.

데이터베이스 관리자의 우선 순위

1 - 2 0 Oracle8i 관리자 설명서

참조: 데이터베이스와 응용 프로그램 조정에 대한 내용은 O racle8i Tuning을 참조하십시오.

오라클 소프트웨어 릴리스 식별

오라클 제품은 항상 개발 및 변경 작업을 진행하고 있으므로 동일한 시점에서 여러릴리스의 제품을 사용할 수 있습니다. 최대 다섯 자리 숫자로 소프트웨어 버전을 확실히 식별할 수 있습니다.

이 단원에서는 다음 내용을 다룹니다.

■ 릴리스 번호 형식

■ 다른 오라클 소프트웨어 버전

■ 현재 릴리스 번호 점검

릴리스 번호 형식

O racle 서버 배포 테이프에“릴리스 8 . 1 . 5 . 1”이라는 레이블이 붙어 있을 경우, 번호는 다음을 의미합니다.

그림 1-2 Oracle 릴리스번호 예

버전 번호

8과 같은 버전 번호는 가장 일반적인 식별자입니다. 버전은 소프트웨어의 새로운 개정판을 나타내며 개정판 소프트웨어에는 대개 중요한 새 기능이 들어 있습니다.

유지 관리 릴리스 번호

유지 관리 릴리스 번호는 일반 버전의 서로 다른 릴리스를 표시하며 버전 8. 0에서처럼 0에서 시작합니다. 유지 관리 릴리스 번호는 기존 프로그램의 버그를 수정했거나새 기능을 추가했을 때 하나씩 증가합니다. 예를 들어, 8. 1은 버전 8의 첫 번째 유지관리 릴리스를 나타냅니다.

오라클 소프트웨어 릴리스 식별

오라클 데이터베이스 관리자 1 - 2 1

8.1.5.1버전 번호 특정 포트 패치

릴리스 번호

유지 관리 릴리스

번호

패치 릴리스 번호

패치 릴리스 번호

패치 릴리스 번호는 8 .1 . 5와 같이 객체 코드의 특정 레벨을 표시합니다. 이 번호는다음 유지 관리 릴리스까지 기다릴 수 없는 일련의 버그를 수정했음을 표시합니다.첫 번째 유지 관리 릴리스 배포물의 패치 릴리스 번호는 항상 0입니다.

특정 포트 패치 릴리스 번호

네 번째 번호, 때로는 다섯 번째 번호는 운영 체제 특성에 따라 변경한 소프트웨어의특정 응급 패치 릴리스를 표시하며 8 . 1 . 5 .1 또는 8 . 1 . 5 .1 . 3과 같이 사용할 수 있습니다. 응급 패치 제품은 심각한 특정 문제를 해결하기 위한 것으로 O ra c l e을 사용하는 모든 업체에 전달되지는 않습니다.

릴리스 번호 예

다음은 O ra c l e 8 i에서 사용할 수 있는 릴리스 번호입니다.

8.0.0 처음 배포되는 Oracle8i 제품

8.1.0 O r a c l e 8 i의 첫 번째 유지 관리 릴리스 제품

8.2.0 O r a c l e 8 i의 두 번째(전체에서 세 번째) 유지 관리 릴리스 제품

8.2.2 O r a c l e 8 i의 두 번째 유지 관리 릴리스 제품을 발표한 다음 두 번째 패치

릴리스 제품

다른 오라클 소프트웨어 버전

오라클사는 새 제품을 소개하고 기존 제품의 기능을 향상시켜 나가기 때문에 각 제품의 버전 번호는 독립적으로 증가합니다. 따라서 사용자는 O racle 서버 릴리스8.1.5.1 시스템에서 O racle Forms 버전 4.0.3, SQL*Plus 버전 3 . 1 . 9 ,P ro * F O RTRAN 버전 1.5.2 제품을 함께 사용할 수 있습니다. (이 버전들은 단지예로 사용한 숫자입니다. )

현재 릴리스 번호 점검

사용 중인 O ra c l e과 O ra c l e의 각 구성 요소 버전을 알아보기 위해 데이터 딕셔너리뷰 P RO D U C T _ C O M P O N E N T _ V E R S I O N을 질의하면 다음과 같이 나타납니다.(이 정보는 오라클로 지원 요청을 할 때 유용합니다. )

SELECT * FROM product_component_version;

PRODUCT VERSION STATUS------------------- --------------- ----------CORE 3.4.1.0.0 Production

오라클 소프트웨어 릴리스 식별

1 - 2 2 Oracle8i 관리자 설명서

NLSRTL 3.1.3.0.0 ProductionOracle8i Server 8.1.4.0.0 Beta ReleasePL/SQL 2.2.1.0.0 BetaTNS for SunOS: 2.1.4.0.0 Production5 rows selected

오라클 소프트웨어 릴리스 식별

오라클 데이터베이스 관리자 1 - 2 3

오라클 소프트웨어 릴리스 식별

1 - 2 4 Oracle8i 관리자 설명서

오라클 데이터베이스 생성 2 - 1

2오라클 데이터베이스 생성

이 장에서는 오라클 데이터베이스 생성에 필요한 각 단계를 나열하며 다음 내용을 다룹니다.

■ 데이터베이스 생성 전 고려 사항

■ 오라클 데이터베이스 생성

■ 매개변수

■ 데이터베이스 생성 후 고려 사항

■ 초기 조정 지침

2 - 2 Oracle8i 관리자 설명서

데이터베이스 생성 전 고려 사항

데이터베이스 생성 전 고려 사항

이 단원에서는 다음 내용을 다룹니다.

■ 데이터베이스 생성 필요 조건

■ 초기 데이터베이스 사용

■ 구 버전 데이터베이스 이전

데이터베이스 생성 시 여러 개의 운영 체제 파일을 준비하여 이러한 파일들이 오라클데이터베이스처럼 작동할 수 있도록 합니다. 관리자는 데이터베이스가 소유하는 데이터 파일 수 또는 데이터베이스를 액세스할 인스턴스 수에 관계없이 데이터베이스를한 번만 만들면 됩니다. 데이터베이스 생성은 기존 데이터베이스 정보를 지우고 동일한 이름과 물리적 구조를 가지는 새 데이터베이스를 만들 수 있습니다.

데이터베이스 생성에는 다음 작업이 포함됩니다.

■ 새 데이터 파일 생성 또는 이전 데이터 파일에 있는 데이터 지우기

■ 데이터베이스를 액세스하거나 사용할 때 필요한 정보 구조(데이터 딕셔너리) 생성

■ 데이터베이스가 사용할 제어 파일과 리두 로그 파일 생성 및 초기화

데이터베이스를 만들기 전에 다음을 고려하십시오.

■ 데이터베이스 테이블과 인덱스를 계획하고 각 테이블과 인덱스에 필요한 저장 영

역을 예측합니다.

■ 온라인 리두 로그와 아카이브된 리두 로그, 로그 파일이 차지할 저장 영역 크기

구성 및 백업 전략 등을 포함하여 새 데이터베이스 보호 방법을 계획합니다.

■ 데이터베이스 문자 집합을 선택합니다. 데이터베이스를 만들 때 데이터베이스 문

자 집합을 지정해야 합니다. 데이터베이스를 만든 후 문자 집합 선택을 변경하려

면 데이터베이스를 다시 만들어야 합니다. 따라서 사용할 문자 집합을 주의해서

선택하는 것이 좋습니다. 데이터 딕셔너리의 데이터를 포함하여 모든 문자 데이터

는 데이터베이스 문자 집합에 저장됩니다. 사용자들이 서로 다른 문자 집합을 사

용하여 데이터베이스를 액세스하는 경우, 데이터베이스 문자 집합은 사용자가 사

용하는 모든 문자 집합과 동일하거나 대집합이어야 합니다.

인스턴스 시작과 종료, 데이터베이스 마운트와 열기, 매개변수 파일 사용에 대한 원칙과 옵션을 잘 알아야 합니다.

참조: O racle8i National Language Support Guide

테이블, 인덱스, 저장영역관리에 대한내용은 1 2장부터 1 9장을참조하십시오.

오라클 데이터베이스 생성

오라클 데이터베이스 생성 2 - 3

온라인 리두 로그와 아카이브 리두 로그 및 데이터베이스 백업과 복구에 대한 내용은6장“온라인 리두 로그 관리”및 7장“아카이브된 리두 로그 관리”를 참조하십시오.

데이터베이스 생성 필요 조건

새 데이터베이스를 만들려면 다음 사항이 필요합니다.

■ 데이터베이스 관리자로서 충분히 작업할 수 있는 운영 체제 권한

■ O racle 인스턴스를 시작하기에 충분한 메모리

■ O ra c l e을 실행할 컴퓨터에 계획된 데이터베이스를 위한 충분한 디스크 저장 영역

초기 데이터베이스 사용

운영 체제에 따라 O racle 설치 과정에서 데이터베이스가 자동으로 생성되기도 합니다. 초기 데이터베이스를 사용하여 정보 관리 요구 사항에 맞게 사용자가 정의하거나, 초기 데이터베이스를 취소하고 하나 이상의 새 데이터베이스를 만들어 초기 데이터베이스를 대신할 수 있습니다.

구 버전 데이터베이스 이전

이전 O racle 버전을 사용하고 있다면 완전히 새로운 데이터베이스를 사용하려 할 때만 데이터베이스를 생성합니다. 새 데이터베이스를 원하지 않는다면 이전 O racle 버전에서 관리하는 기존 오라클 데이터베이스를 이전하여 새 오라클 소프트웨어 버전과함께 사용할 수 있습니다.

참조: 기존 데이터베이스 이전에 대한 내용은 O racle8i Migration 설명서를 참조하십시오.

기존 데이터베이스 이전에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를참조하십시오.

오라클 데이터베이스 생성

이 단원에서는 다음 내용을 다룹니다.

■ 오라클 데이터베이스 생성 단계

■ 데이터베이스 생성: 예

■ 데이터베이스 생성 중에 발생한 문제 해결

오라클 데이터베이스 생성

2 - 4 Oracle8i 관리자 설명서

■ 데이터베이스 삭제

오라클 데이터베이스 생성 단계

오라클 데이터베이스 생성 단계는 다음과 같습니다.

새 데이터베이스를 만들어 시스템이 사용할 수 있도록 하려면 다음과 같이 하십시오.

1 . 기존 데이터베이스를 백업합니다.

2 . 매개변수 파일을 만듭니다.

3 . 새 매개변수 파일을 편집합니다.

4 . 사용자 시스템의 인스턴스 식별자를 확인합니다.

5 . S Q L * P l u s를 실행하고 O ra c l e에 SY S D B A로 접속합니다.

6 . 인스턴스를 시작합니다.

7 . 데이터베이스를 만듭니다.

8 . 데이터베이스를 백업합니다.

참조: 위의 단계는 모든 운영 체제에서 데이터베이스를 생성하는 일반적인 내용입니다. 사용자 플랫폼에서 데이터베이스를 생성하는데 대한 내용은 사용자 운영 체제별오라클 설명서를 참조하십시오.

1단계: 기존 데이터베이스 백업. 오라클사는 새 데이터베이스를 만들다가 기존 파일

에 영향을 줄 수 있으므로 새 데이터베이스를 만들기 전에 기존 데이터베이스 전체를

백업할 것을 강력히 권장합니다. 매개변수 파일, 데이터 파일, 리두 로그 파일, 제어

파일이 백업되어야 합니다.

2단계: 매개변수 파일 생성. 오라클 데이터베이스의 인스턴스(시스템 글로벌 영역과

백그라운드 프로세스)를 시작하려면 매개변수 파일이 있어야 합니다.

시스템의 각 데이터베이스는 자신에게 해당하는 사용자 정의된 매개변수 파일을 최소한 하나는 가지고 있어야 합니다. 여러 데이터베이스에 동일한 매개변수 파일을 사용하지 마십시오.

만들려는 데이터베이스의 매개변수 파일을 생성하려면 운영 체제를 사용하여 배포 매체에 들어 있는 매개변수 파일의 복사본을 만듭니다. 복사한 매개변수 파일에 새 이름을 부여한 후에 새 데이터베이스에 맞게 매개변수 파일을 편집하거나 사용자가 정의할 수 있습니다.

참조: 매개변수 파일 복사에 대한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

주: 분산 처리 환경에서는 가끔 네트워크의 클라이언트 시스템에서Enterprise Manager가 실행됩니다. 클라이언트 시스템이Enterprise Manager를 실행하고 새 데이터베이스를 만들기 위해 사용된다면 현재 O ra c l e을 실행하는 컴퓨터에 있는 새 매개변수 파일을클라이언트 워크스테이션에 복사해야 합니다. 이 작업 절차는 운영 체제마다 다릅니다. 네트워크의 컴퓨터 사이에서 파일을 복사하는데 대한내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

3단계: 새 매개변수 파일 편집. 데이터베이스를 새로 만들려면 새 매개변수 파일의

다음 매개변수를 검사하고 편집합니다.

매개변수 설명

DB_NAME 2-9 페이지

DB_DOMAIN 2-9 페이지

CONTROL_FILES 2-10 페이지

DB_BLOCK_SIZE 2-11 페이지

DB_BLOCK_BUFFERS 2-11 페이지

PROCESSES 2-12 페이지

ROLLBACK_SEGMENTS 2-12 페이지

다음 사용권 매개변수도 편집해야 합니다.

매개변수 설명

LICENSE_MAX_SESSIONS 2-13 페이지

LICENSE_SESSION_WARNING 2-13 페이지

LICENSE_MAX_USERS 2-13 페이지

4단계: 사용자 시스템의 인스턴스 식별자 확인. 다른 데이터베이스가 있다면 O ra c l e

인스턴스 식별자를 확인합니다. 시스템에서 동시에 실행되는 다른 O racle 인스턴스와

혼동되지 않도록 하려면 데이터베이스 이름( D B _ NAME 값)과 O racle 인스턴스 식별

자가 일치해야 합니다.

자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

오라클 데이터베이스 생성 2 - 5

오라클 데이터베이스 생성

오라클 데이터베이스 생성

2 - 6 Oracle8i 관리자 설명서

5단계: SQL*Plus를 시작하여 O ra c l e에 S YS D B A로 접속. 데이터베이스에

SY S D B A로 접속합니다.

$ SQLPLUS /nologconnect username/password as sysdba

6단계: 인스턴스 시작. 데이터베이스를 마운트하지 않고도 인스턴스를 시작할 수 있

습니다.일반적으로 데이터베이스를 만드는 중에만 해당됩니다. STA RTUP 명령어에

NOMOUNT 옵션을 사용하십시오.

STARTUP NOMOUNT;

이 시점에서 데이터베이스는 생성되지 않습니다. 시스템 글로벌 영역( S GA )과 백그라

운드 프로세스는 새 데이터베이스 생성을 준비합니다.

7단계: 데이터베이스 생성. SQL 명령어 C R E ATE DATABASE 문을 사용하여 데

이터베이스를 새로 만듭니다. 선택적으로 데이터베이스 이름을 정하거나, 최대 파일

수를 설정하거나, 파일에 이름을 붙이거나, 파일 크기를 설정하는 등 명령문에서 매

개변수를 설정합니다.

C R E ATE DATABASE 문을 실행하여 다음 작업을 수행합니다.

■ 데이터베이스의 데이터 파일 생성

■ 데이터베이스의 제어 파일 생성

■ 데이터베이스의 리두 로그 파일 생성

■ SYSTEM 테이블스페이스와SYSTEM 롤백 세그먼트 생성

■ 데이터 딕셔너리 생성

■ SYS 사용자와 SYSTEM 사용자 생성

■ 데이터베이스에 데이터를 저장할 문자 집합 지정

■ 사용할 데이터베이스 마운트 및 열기

경고: 데이터 파일과 리두 로그 파일 이름이 다른 데이터베이스에서 사용하는 파일과 충돌하지 않도록 하십시오.

참조: 지역적으로 관리되는 SYSTEM 테이블스페이스로 데이터베이스를 만들 수도있습니다. 자세한 내용은 9-5 페이지“지역적으로 관리되는 SYSTEM 테이블스페이스로 데이터베이스 생성”을 참조하십시오.

오라클 데이터베이스 생성

오라클 데이터베이스 생성 2 - 7

8단계: 데이터베이스 백업. 매체 장애가 발생했을 때 복구에 필요한 모든 파일을 보

유할 수 있도록 데이터베이스 전체를 백업합니다.

참조: O racle8i Backup and Recovery Guide

매개변수 파일에 대한 자세한 내용은 3-13 페이지“매개변수 파일 사용”을 참조하십시오.

C R E ATE DATABASE 문, 문자 집합, 데이터베이스 생성에 대한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

데이터베이스 생성: 예

다음은 C R E ATE DATABASE 문의예입니다.

CREATE DATABASE testDATAFILE ‘test_system’ SIZE 10MLOGFILE GROUP 1 (‘test_log1a’, ‘test_log1b’) SIZE 500K,GROUP 2 (‘test_log2a’, ‘test_log2b’) SIZE 500K;

위의 예에서 M A X L O G F I L E S, MAXLOGMEMBERS, MAXDATA F I L E S,M A X L O G H I S T O RY, MAXINSTANCES 옵션은 운영 체제별 기본값을 사용하는것으로 가정합니다. 데이터베이스는 기본 모드인 N OA RC H I V E L O G와E XC L U S I V E로 마운트된 후에 열립니다.

위의 명령문에서 지정한 항목과 정보는 다음 특성을 갖는 데이터베이스를 만듭니다.

■ 새 데이터베이스 이름은 T E S T입니다.

■ 새 데이터베이스의 SYSTEM 테이블스페이스는 T E S T _ SY S T E M이라는 1 0 M B

데이터 파일로 구성됩니다.

■ 새 데이터베이스는 두 개의 온라인 리두 로그 그룹을 가지며 각 그룹은 5 0 0 K B의

멤버를 두 개씩 가집니다.

■ 새 데이터베이스는 매개변수 파일에 지정된 기존 제어 파일을 겹쳐쓰지 않습니다.

주: 데이터베이스 생성 중에 몇 가지 제한 사항을 설정할 수 있습니다.일부는 운영 체제 한계에 종속적이며 서로 영향을 주기도 합니다. 예를들어, MAXDATA F I L E S를 설정하면 O ra c l e은 처음에 데이터베이스에 하나의 데이터 파일만 있어도 M A X DATAFILES 파일명을 저장하는 제어 파일에 충분한 저장 영역을 할당합니다. 최대 제어 파일 크기는 제한되어 있으며 운영 체제에 의해 좌우되므로 모든 C R E AT EDATABASE 매개변수를 이론적 최대값으로 설정할 수는 없습니다.

참조: 데이터베이스 생성 동안의 제한 사항 설정에 대한 자세한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

운영 체제 제한 사항에 대한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스 생성 중에 발생한 문제 해결

데이터베이스를 만들지 못했다면 인스턴스를 종료하고 데이터베이스를 다시 만들기전에 C R E ATE DATABASE 문으로만든 모든 파일을 삭제합니다.

데이터베이스 생성 실패 원인인 오류를 수정한 다음“데이터베이스 생성: 예”로 복귀하십시오.

데이터베이스 삭제

데이터베이스를 삭제하려면 데이터베이스의 데이터 파일, 리두 로그 파일 및 제어 파일, 매개변수 파일, 아카이브된 로그 파일과 같은 모든 관련 파일을 제거합니다.

데이터베이스의 데이터 파일과 리두 로그 파일의 이름을 보려면 데이터 딕셔너리 뷰V $ DATA F I L E과 V $ L O G F I L E을 질의합니다.

참조: 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

2 - 8 Oracle8i 관리자 설명서

오라클 데이터베이스 생성

매개변수

오라클 데이터베이스 생성 2 - 9

매개변수

“오라클 데이터베이스 생성”단원의 3단계에서 설명했듯이 오라클은 매개변수의 최소집합을 변경하도록 제안합니다. 다음 단원에서 이러한 매개변수를 설명합니다.

■ D B _ NA M E과 D B _ D O M A I N

■ C O N T RO L _ F I L E S

■ D B _ B L O C K _ S I Z E

■ D B _ B L O C K _ B U F F E R S

■ P RO C E S S E S

■ RO L L B AC K _ S E G M E N T S

■ 사용권 매개변수

■ L I C E N S E _ M A X _ S E S S I O N S와 L I C E N S E _ S E S S I O N S _ WA R N I N G

■ L I C E N S E _ M A X _ U S E R S

D B _ N A M E과 DB_DOMAIN

데이터베이스 생성 전에 D B _ NA M E과 DB_DOMAIN 매개변수를 설정하여 데이터베이스의 전역 데이터베이스 이름(네트워크 구조 내의 이름과 위치)이 만들어집니다.생성 후에는 데이터베이스 이름을 쉽게 변경할 수 없습니다. DB_NAME 매개변수는데이터베이스 이름의 지역 이름 구성 요소를 결정하고, DB_DOMAIN 매개변수는네트워크 구조 내에서 도메인(논리적 위치)을 표시합니다. DB_NA M E과DB_DOMAIN 매개변수에 설정한 값의 조합은 네트워크 내에서 고유한 데이터베이스 이름을 구성합니다. 예를 들어, TEST. U S. AC M E. C O M이라는 전역 데이터베이스 이름을 가진 데이터베이스를 만들려면 새 매개변수 파일의 매개변수를 다음과 같이 편집합니다.

DB_NAME = TESTDB_DOMAIN = US.ACME.COM

D B _ NA M E은 여덟 자 이내의 텍스트 문자열로 설정되어야 합니다. 데이터베이스를만들 때 D B _ NA M E에 지정한 이름은 데이터베이스의 데이터 파일, 리두 로그 파일,제어 파일에 기록됩니다. 데이터베이스 인스턴스를 시작할 때 매개변수 파일의D B _ NAME 매개변수 값과 제어 파일의 데이터베이스 이름이 동일하지 않으면 데이터베이스를 시작할 수 없습니다.

D B _ D O M A I N은 데이터베이스를 생성할 네트워크 도메인을 지정하는 텍스트 문자열입니다. 일반적으로 데이터베이스를 소유하는 조직의 이름을 사용합니다. 새로 만들

매개변수

2 - 1 0 Oracle8i 관리자 설명서

려는 데이터베이스가 분산 데이터베이스 시스템의 일부라면 데이터베이스를 만들기전에 이 초기화 매개변수에 특별히 주의를 기울여야 합니다.

참조: 분산 데이터베이스에 대한 자세한 내용은 O racle8i Distributed DatabaseS y s t e m s를 참조하십시오.

CONTROL_FILES

새 매개변수 파일에 C O N T ROL_FILES 매개변수를 넣고 새 데이터베이스가 사용할제어 파일명 목록에 값을 설정합니다. Ora c l e이 데이터베이스의 제어 파일을 만들 때새 운영 체제 파일을 생성하도록 하려면 시스템의 기존 파일명과 C O N T RO L _FILES 매개변수에 나열된 파일명이 달라야 합니다. 데이터베이스의 제어 파일을 만들 때 O ra c l e이 기존 파일을 다시 사용하거나 겹쳐쓰도록 하려면 기존 파일명과C O N T ROL_FILES 매개변수에나열된 파일명이 일치해야 합니다.

경고: 이 옵션을 설정할 때 주의하십시오. 의도하지 않은 파일을 부주의하게 지정하여 C R E ATE DATA B ASE 문을 실행하면 파일의 기존 내용에 겹쳐쓰여집니다.

C O N T ROL_FILES 매개변수에 나열된 파일명이 없으면 O ra c l e은 기본 파일명을 사용합니다.

오라클사는 각 데이터베이스를 위해 적어도 두 개의 제어 파일을 분리된 디스크 드라이브에 저장하여 사용할 것을 권장합니다. 따라서 새 매개변수 파일의C O N T ROL_FILES 매개변수를지정할 때 다음 지침 사항을 준수하십시오.

■ C O N T ROL_FILES 매개변수에최소한 두 개의 파일명을 나열합니다.

■ 경로명을 포함한 전체 파일명을 지정하여 각 제어 파일을 분리된 디스크 드라이브

에 넣습니다.

주: 제어 파일의 파일 사양은 운영 체제마다 다릅니다. 제어 파일명은운영 체제에 관계없이 항상 경로명을 포함한 전체 파일명을 지정해야합니다.

7단계에서 C R E ATE DATABASE 문을 실행할 때 매개변수 파일의 C O N T RO L _FILES 매개변수에 나열된 제어 파일들이 생성됩니다.

매개변수

오라클 데이터베이스 생성 2 - 1 1

참조: C O N T ROL_FILES 매개변수의 기본 파일명은 운영 체제마다 다릅니다. 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

D B _ B LOCK_SIZE

O racle 서버의 기본 데이터 블록 크기는 운영 체제마다 다릅니다. 일반적으로O racle 데이터 블록 크기는 2K 또는 4 K로 기본 데이터 블록 크기가 적합합니다. 그러나 어떤 경우에는 더 큰 데이터 블록 크기가 디스크와 메모리 I / O (데이터 액세스및 저장)에 효율적입니다. 다음과 같은 경우에는 더 큰 데이터 블록 크기를 설정합니다.

■ O ra c l e이 대용량 메모리와 고속 디스크 드라이브가 장착된 시스템에서 실행되는

경우입니다. 예를 들어, 거대한 하드웨어 자원을 가진 대형 시스템이 제어하는 데

이터베이스는 4K 또는 더 큰 데이터 블록을 사용합니다.

■ O ra c l e을 실행하는 운영 체제가 작은 운영 체제 블록 크기를 사용합니다. 예를 들

어, 운영 체제 블록 크기가 1 K고 데이터 블록 크기도 이와 동일하면 O ra c l e은 일

상 작업 중에도 과다한 디스크 I / O를 수행합니다. 이 경우 최고의 성능을 위해 데

이터베이스 블록은 다중 운영 체제 블록으로 구성되어야 합니다.

데이터베이스 생성 중에 DB_BLOCK_SIZE 초기화 매개변수를 설정하여 블록 크기를 정합니다. 일단 데이터베이스를 만들면 데이터베이스를 다시 만들지 않고는 데이터 블록 크기를 변경할 수 없습니다. 운영 체제 블록 크기와 데이터베이스 블록 크기가 다르다면 데이터베이스 블록 크기를 운영 체제 블록 크기의 배수가 되도록 설정해야 합니다.

예를 들어, 운영 체제 블록 크기가 2K(2048 바이트)면 다음 초기화 매개변수DB_BLOCK_SIZE 설정은유효합니다.

DB_BLOCK_SIZE=4096

D B _ B L O C K _ S I Z E는 시스템 글로벌 영역( S GA )의 버퍼 캐시에 있는 데이터베이스버퍼 크기도 결정합니다.

참조: 기본 블록 크기에 대한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

D B _ B LOCK_BUFFERS

이 매개변수는 시스템 글로벌 영역( S GA )의 버퍼 캐시에 있는 버퍼 수를 결정합니다.버퍼 수는 캐시 성능에 영향을 줍니다. 캐시 크기를 더 크게 하면 수정된 데이터를 디스크에 기록하는 횟수가 줄어듭니다. 그러나 캐시 크기가 크면 메모리를 많이 사용하

게 되고 따라서 메모리 페이징이나 교체 횟수가 늘어납니다.

테이블, 인덱스, 롤백 세그먼트를 포함하여 응용 프로그램이 가장 빈번하게 액세스하는 데이터 블록 수를 예측합니다. 이 값이 캐시에 있어야 하는 최소 버퍼 수의 근사값입니다. 일반적으로 실질적인 최소 버퍼 수는 1 0 0 0에서 2 0 0 0입니다.

참조: 버퍼 캐시 조정에 대한 자세한 내용은 O racle8i Tuning을 참조하십시오.

PROCESSES

이 매개변수는 동시에 O ra c l e에 접속할 수 있는 운영 체제 프로세스의 최대 수를 결정합니다. 이 매개변수 값은 백그라운드 프로세스에 대해서는 5를, 각 사용자 프로세스에 대해서는 1을 포함해야 합니다. 예를 들어, 동시 사용자 수를 5 0명으로 하려면이 매개변수를 최소한 5 5로 설정해야 합니다.

R O L L B A C K _ S E G M E N TS

이 매개변수는 데이터베이스를 시작할 때 O racle 인스턴스가 획득하는 롤백 세그먼트목록입니다. 롤백 세그먼트를 이 매개변수 값처럼 나열합니다.

주의 사항: 설치 후 스키마 객체를 만들기 전에 SYSTEM 롤백 세그먼트 외에 SYSTEM 테이블스페이스에 최소한 하나의 롤백 세그먼트를만들어야 합니다.

참조: 사용자에게 필요한 롤백 세그먼트 수에 대한 자세한 내용은 O racle8i Tuning을 참조하십시오.

사용권 매개변수

O ra c l e에는 사이트에서 O racle 사용권 계약을 준수할 수 있도록 하는 기능이 있습니다. 사이트의 사용권이 동시 사용 방식으로 되어 있으면 데이터베이스 관리자는 동시에 인스턴스에 접속한 세션 수를 추적 및 제한할 수 있습니다. 해당 사이트의 사용권이 특정 사용자만 사용할 수 있도록 되어 있으면 관리자는 데이터베이스에 만들 수있는 특정 사용자 수를 제한할 수 있습니다. 이 기능을 사용하려면 사이트에서 어떤사용권을 부여받았는지와 최대 세션 수 또는 최대 지정 사용자 수를 알아야 합니다.일반적으로 사이트에서는 세션 사용권이나 특정 사용자 사용권 중 한 방식만을 사용합니다.

참조: 사용권 지정 관리에 대한 자세한 내용은 23-2 페이지“세션 및 사용자 사용권지정”을 참조하십시오.

2 - 1 2 Oracle8i 관리자 설명서

매개변수

매개변수

오라클 데이터베이스 생성 2 - 1 3

L I C E N S E _ M A X _ S E S S I O N S와 L I C E N S E _ S E S S I O N S _ WARNING

데이터베이스 관리자는 지정한 컴퓨터의 데이터베이스에 동시에 접속할 수 있는 세션수를 제한할 수 있습니다. 인스턴스당 동시에 접속할 수 있는 최대 세션 수를 설정하려면 다음과 같이 인스턴스를 시작하는 매개변수 파일에 L I C E N S E _ M A X _SESSIONS 매개변수를설정합니다.

LICENSE_MAX_SESSIONS = 80

LICENSE_MAX_SESSIONS 매개변수에는 동시에 접속할 수 있는 최대 세션 수뿐아니라 동시에 접속할 수 있는 세션 수의 경고 한계를 설정할 수 있습니다. 접속한 세션 수가 경고 한계에 도달하면 추가 사용자들이 최대 세션 수에 도달할 때까지 접속할 수는 있지만 O ra c l e이 접속한 사용자에게 경고를 보냅니다. 인스턴스당 경고 한계를 설정하려면 L I C E N S E _ S E S S I O N S _ WARNING 매개변수를 설정합니다.L I C E N S E _ S E S S I O N S _ WARNING 매개변수 값은 L I C E N S E _ M A X _ S E S S I O N S값보다 낮게 설정되어야 합니다.

Pa rallel Serv e r로 실행하는 인스턴스에 대해 각 인스턴스는 인스턴스마다 동시 사용한계값과 경고 한계값을 가질 수 있습니다. 그러나 각 인스턴스 한계값의 합은 사용권 계약서에 명시된 세션 수보다 작아야 합니다.

참조: Pa rallel Serv e r를 사용하는 경우 한계값 설정에 대한 자세한 내용은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

L I C E N S E _ M A X _ U S E R S

데이터베이스 관리자는 데이터베이스 사용자 수의 한계를 설정할 수 있습니다. 설정한 한계에 도달하면 더 이상 사용자를 만들 수 없습니다.

주: 이 처리 방법은 데이터베이스를 액세스하는 사용자가 고유한 사용자 이름을 가지며 서로 공유하는 사용자 이름이 없다고 가정합니다. 따라서 특정 사용자 방식으로 O racle 사용권을 부여받은 경우에는 여러사용자가 동일한 이름으로 로그인할 수 없습니다.

데이터베이스 사용자 수의 한계를 정하려면 다음과 같이 데이터베이스의 매개변수 파일에 LICENSE_MAX_USERS 매개변수를설정합니다.

LICENSE_MAX_USERS = 200

Pa rallel Serv e r에서 실행하는 경우 동일한 데이터베이스에 접속하는 모든 인스턴스는 동일하게 명명된 사용자 한계를 가져야 합니다.

참조: Pa rallel Serv e r를 사용하는 경우 한계값 설정에 대한 자세한 내용은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

데이터베이스 생성 후 고려 사항

2 - 1 4 Oracle8i 관리자 설명서

데이터베이스 생성 후 고려 사항

데이터베이스를 만들면 인스턴스가 실행되고 데이터베이스가 열려 데이터베이스를 정상적으로 사용할 수 있습니다. 데이터베이스 시스템에 여러 개의 데이터베이스가 있다면 이후 데이터베이스를 시작할 때 사용할 매개변수 파일을 지정해야 합니다.

데이터베이스와 함께 작업하기 위해 다른 오라클 제품을 설치할 계획이라면 각 제품에 대한 설치 명령을 참조하십시오. 일부 제품은 추가 데이터 딕셔너리 테이블을 만들어야 합니다. 추가 설치 제품에 대한 내용은 사용자 운영 체제별 오라클 설명서를참조하십시오. 일반적으로 데이터베이스의 데이터 딕셔너리에 테이블을 만들어 로드하기 위한 명령어 파일이 제공됩니다.

O racle 서버 배포 매체에는 사용자가 시스템을 사용하고, SQL을 학습하고, 추가 테이블, 뷰 또는 동의어를 만드는 다양한 SQL 파일이 들어 있을 수 있습니다.

새로 만든 데이터베이스에는 SY S와 SY S T E M, 두 사용자만이 있습니다. 데이터베이스를 만든 즉시 두 사용자명의 암호를 변경해야 합니다.

참조: 사용자 SY S와 SY S T E M에 대한 자세한 내용은 1-5 페이지“데이터베이스 관리자 사용자명”을 참조하십시오.

사용자 암호 변경에 대한 내용은 23-15 페이지“사용자 변경”을 참조하십시오.

초기 조정 지침

설치 후 즉시 O ra c l e에 대한 주요 조정 항목을 변경할 수 있습니다. 지침에 따르면실행 중에 O ra c l e을 조정하지 않아도 됩니다. 이 단원에서는 다음 설치 작업을 권장합니다.

■ 롤백 세그먼트 할당

■ D B _ B L O C K _ L RU _ L ATCHES 수 선택

■ I/O 분산

롤백 세그먼트 할당

롤백 세그먼트를 제대로 할당하면 데이터베이스 성능을 최적화하는데 도움이 됩니다.성능 최적화에 필요한 롤백 세그먼트 크기와 수는 응용 프로그램에 따라 다릅니다.O racle 서버에서 동시 트랜잭션 수에 준하여 할당할 롤백 세그먼트 수를 선택하는 지

초기 조정 지침

오라클 데이터베이스 생성 2 - 1 5

침은 O racle8i Tuning을 참조하십시오. 이러한 지침은 대부분의 응용 프로그램을함께 사용할 때 적합합니다.

롤백 세그먼트는 C R E ATE RO L L B ACK SEGMENT 문을 사용하여 만듭니다.

참조: C R E ATE RO L L B ACK SEGMENT 문에 대한 내용은 O racle8i SQL 참조서를 참조하십시오.

롤백 세그먼트 크기 선택

롤백 세그먼트 크기도 성능에 영향을 줄 수 있습니다. CREATE RO L L B AC KSEGMENT 문의 저장 영역 매개변수가 롤백 세그먼트 크기를 결정합니다. 롤백 세그먼트 크기는 트랜잭션의 롤백 입력 항목을 수용하기에 충분해야 합니다.

참조: 롤백 세그먼트 크기 선택에 대한 내용은 O racle8i Tuning을참조하십시오.

D B _ B LO C K _ L R U _ L ATCHES 수 선택

L RU 래치 사이의 경합은 많은 C P U를 탑재한 대칭형 멀티프로세서(SMP) 시스템의성능을 저하시킬 수 있습니다. LRU 래치는 버퍼 캐시에 있는 버퍼 교체를 제어합니다. SMP 시스템에서 O ra c l e은 L RU 래치 수를 자동으로 시스템에 탑재한 CPU 수의 절반으로 설정합니다. SMP 시스템이 아닌 경우 하나의 L RU 래치만으로도 충분합니다.

D B _ B L O C K _ L RU _ L ATCHES 초기화 매개변수에 L RU 래치 수를 지정할 수 있습니다. 이 매개변수는 이상적인 최대 L RU 래치 수를 설정합니다. 각 L RU 래치는 버퍼 집합을 제어하며 O ra c l e은 집합 사이에서 균형있게 교체 버퍼를 할당합니다.

참조: L RU 래치에 대한 자세한 내용은 O racle8i Tuning을 참조하십시오.

I/O 분산

I / O를 제대로 분산시키면 데이터베이스 성능이 극적으로 향상될 수 있습니다.O racle 설치 과정에서 I / O를 분산시킬 수 있습니다. Oracle 설치중에 I / O를 분산시키면 O ra c l e을 실행할 때 I / O를 분산시킬 필요가 없습니다.

다음은 O ra c l e을 설치할 때 I / O를 분산시키는 방법입니다.

■ 리두 로그 파일 배치

■ 데이터 파일 배치

■ 테이블과 인덱스 구분

■ 데이터 밀도(데이터 블록당 행 수)

참조: I / O를 분산시키는 방법은 O racle8i Tuning을 참조하십시오.

2 - 1 6 Oracle8i 관리자 설명서

초기 조정 지침

시작과 종료 3 - 1

3시작과 종료

이 장에서는 오라클 데이터베이스를 시작하고 종료하는 절차에 대해 설명하며 다음 내용을다룹니다.

■ 데이터베이스 시작

■ 데이터베이스 가용성 변경

■ 데이터베이스 종료

■ 데이터베이스 일시 중지 및 재개

■ 매개변수 파일 사용

3 - 2 Oracle8i 관리자 설명서

데이터베이스 시작

데이터베이스 시작

이 단원에서는 다음 내용을 다룹니다.

■ 인스턴스 시작을 위한 준비

■ 인스턴스 시작: 시나리오

데이터베이스 또는 인스턴스를 명령줄에서 시작하려면 S Q L * P l u s를 사용하여 관리자권한으로 O ra c l e에 접속한 다음 S TA RTUP 명령어를 실행하십시오. RecoveryM a n a g e r를 사용하여 S TA RT U P과 S H U T D OWN 명령어를 실행할 수도 있습니다.명령줄이 아닌 Enterprise Manager GU I를 사용할 경우에는 O racle EnterpriseManager Ad m i n i s t ra t o r’s Guide를 참조하십시오.

다음과 같은 다양한 방법으로 인스턴스와 데이터베이스를 시작할 수 있습니다.

■ 데이터베이스를 마운트하지 않고 인스턴스 시작

■ 데이터베이스를 닫은 상태에서 인스턴스를 시작하고 데이터베이스 마운트

■ 인스턴스를 시작하고 다음 모드로 데이터베이스를 마운트하여 열기

- 무제한 모드(모든 사용자 액세스 가능)

- 제한 모드(데이터베이스 관리자만 액세스 가능)

주: 다중 스레드 서버 프로세스로 데이터베이스에 접속했다면 데이터베이스 인스턴스를 시작할 수 없습니다.

인스턴스를 시작하거나 인스턴스를 시작한 즉시 완전 매체 복구를 시작하도록 설정할수 있습니다. 사용자 운영 체제가 O racle Pa rallel Serv e r를 지원하면 인스턴스를시작하고 데이터베이스를 배타 모드 또는 공유 모드로 마운트할 수 있습니다.

참조: OPS 환경에서 데이터베이스 시작에 대한 자세한 내용은 O racle8i Pa ra l l e lS e rver Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

SQL*Plus 명령어 구문에 대한 자세한 내용은 SQL*Plus 사용 설명서 및 참조서를참조하십시오.

R e c o v e ry Manager 명령어에 대한 자세한 내용은 O racle8i Backup and Rec-o v e ry Guide를 참조하십시오.

인스턴스 시작을 위한 `준비

인스턴스를 시작하기 전에 수행해야 할 작업이 있습니다.

1 . 데이터베이스에 접속하지 않고 다음을 입력하여 S Q L * P l u s를 시작합니다.

sqlplus /nolog

2. SY S D B A로 O ra c l e을 접속합니다.

connect username/password as sysdba

다중 스레드 서버를 통해서는 접속할 수 없습니다.

3 . S TA RTUP 명령어에 데이터베이스 이름과 매개변수 파일의 전체 경로를 지정하여 입력합니다.

STARTUP database_name PFILE=myinit.ora

PFILE 옵션을 지정하지 않으면 O ra c l e은 표준 매개변수 파일을 사용합니다. 데이터베이스 이름을 지정하지 않으면 O ra c l e은 인스턴스를 시작하는 매개변수 파일에 있는 D B _ NAME 값을 사용합니다.

참조: 파일명은 운영 체제마다 다르게 사용됩니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오.

D B _ NAME 매개변수에 대한 내용은 O racle8i Refe re n c e를 참조하십시오.

인스턴스 시작: 시나리오

다음 시나리오는 인스턴스를 시작할 수 있는 방법입니다.

주: 제어 파일, 데이터베이스 파일, 리두 로그 파일을 사용할 수 없으면 인스턴스를 시작할 때 오류가 발생합니다. 데이터베이스를 마운트하려고 할 때 C O N T ROL_FILES 매개변수에 의해 지정된 파일이 없거나 열 수 없으면 O ra c l e은 경고 메시지를 돌려주고 데이터베이스를 마운트하지 않습니다. 데이터베이스를 열려고 할 때 데이터 파일 또는 리두 로그 파일을 사용할 수 없거나 열 수 없으면 O ra c l e은 경고 메시지를 돌려주고 데이터베이스를 열지 않습니다.

데이터베이스를 마운트하지 않고 인스턴스 시작

데이터베이스 관리자는 데이터베이스를 마운트하지 않고도 인스턴스를 시작할 수 있습니다. 일반적으로 데이터베이스를 만드는 중에만 해당됩니다. STA RTUP 명령어에NOMOUNT 옵션을 사용하십시오.

STARTUP NOMOUNT;

데이터베이스 시작

시작과 종료 3 - 3

인스턴스 시작과 데이터베이스 마운트

데이터베이스 관리자는 특정 유지 관리 작업을 수행하고자 할 때 데이터베이스를 열지 않고도 인스턴스를 시작하고 데이터베이스를 마운트할 수 있습니다. 예를 들어,다음 작업을 하는 동안 데이터베이스는 마운트되어야 하지만 열면 안됩니다.

■ 데이터 파일 이름 바꾸기

■ 리두 로그 파일 추가, 삭제 또는 이름 바꾸기

■ 리두 로그 아카이브 옵션 활성화 및 비활성화

■ 전체 데이터베이스 복구 작업 수행

S TA RTUP 명령어에 MOUNT 옵션을 사용하여 데이터베이스를 열지 않은 상태에서인스턴스를 시작하고 데이터베이스를 마운트합니다.

STARTUP MOUNT;

인스턴스를 시작하고 데이터베이스를 마운트하여 열기

정상적인 데이터베이스 작업은 인스턴스를 시작하고 데이터베이스를 마운트하여 여는것을 의미합니다. 이 작업 방식을 통해 정당한 사용자는 데이터베이스에 접속하여 일반적인 데이터 액세스 작업을 수행할 수 있습니다.

S TA RTUP 명령어만 사용하여 인스턴스를 시작하고 데이터베이스를 마운트하여 엽니다.

STARTUP;

데이터베이스 시작 단계에서 액세스 제한

일반 사용자가 아닌 데이터베이스 관리자만이 사용할 수 있는 제한 모드로 인스턴스를 시작하거나 데이터베이스를 마운트하여 열 수 있습니다. 다음 작업을 수행할 때제한 모드로 데이터베이스를 시작합니다.

■ 인덱스 재구축과 같은 구조 유지 관리 작업 수행

■ 데이터베이스 데이터 엑스포트 또는 임포트 작업 수행

■ S Q L * L o a d e r로 데이터 로드 작업 수행

■ 임시로 일반 사용자가 데이터를 사용하지 못하도록 할 때

일반적으로 C R E ATE SESSION 시스템 권한이 있는 모든 사용자는 열린 데이터베이스에 접속할 수 있습니다. 제한 모드로 데이터베이스를 열면 C R E ATE SESSION과 RESTRICTED SESSION 시스템권한을 모두 가지고 있는 사용자만이 데이터베이스를 액세스할 수 있습니다. 데이터베이스 관리자에게만 R E S T R I C T E DSESSION 시스템 권한이 있어야 합니다.

데이터베이스 시작

3 - 4 Oracle8i 관리자 설명서

시작과 종료 3 - 5

데이터베이스 시작

S TA RTUP 명령어에 RESTRICT 옵션을 사용하여 제한 모드로 인스턴스를 시작하고, 선택적으로 데이터베이스를 마운트하여 엽니다.

STARTUP RESTRICT;

나중에 A LTER SYSTEM 문을 사용하여 RESTRICTED SESSION 기능 사용을불가능하게 할 수 있습니다.

참조: A LTER SYSTEM 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

인스턴스 강제 시작

비정상적인 상황에서 데이터베이스 인스턴스를 시작할 때 문제가 발생할 수 있습니다. 다음 경우에만 데이터베이스 인스턴스를 강제로 시작합니다.

■ S H U T D OWN NORMAL, SHUTDOWN IMMEDIATE 또는 S H U T D OW N

T R A N SAC T I O NA L을 사용하여 현재 실행 중인 인스턴스를 종료할 수 없는 경

■ 인스턴스를 시작할 때 문제가 발생한 경우

위의 상황이 발생하면 S TA RTUP 명령어에 F O RCE 옵션을 사용하여 새 인스턴스를시작하고, 선택적으로 데이터베이스를 마운트하고 열어 문제를 해결할 수 있습니다.

STARTUP FORCE;

인스턴스가 실행 중이면 S TA RTUP FORC E는 인스턴스를 다시 시작하기 전에A B O RT 모드로 종료합니다.

인스턴스 시작, 데이터베이스 마운트 및 완전 매체 복구 작업 시작

매체를 복구해야 한다면 S TA RTUP 명령어에 R E C OVER 옵션을 사용하여 인스턴스를 시작하고 데이터베이스를 인스턴스에 마운트한 다음 자동으로 복구하도록 할 수있습니다.

STARTUP OPEN RECOVER;

복구가 필요하지 않을 경우 복구를 수행하려고 하면 O ra c l e은 오류 메시지를 나타냅니다.

배타 모드 또는 병렬 모드에서 시작

O racle 서버가 동시에 여러 인스턴스를 단일 데이터베이스에 액세스할 수 있게 한다면 데이터베이스를 배타 모드로 마운트할지 병렬 모드로 마운트할지를 결정해야 합니다. 예를 들어, 다음을 실행하여 병렬 모드에서 데이터베이스를 열 수 있습니다.

STARTUP OPEN sales PFILE=INITSALE.ORA PARALLEL;

인스턴스와 데이터베이스 시작: 예

다음은 I N I T SA L E.ORA 매개변수 파일을 사용하여 인스턴스를 시작하고, s a l e s라는 데이터베이스를 마운트하여 배타 모드로 열어 관리자만이 액세스할 수 있도록 제한하는 명령문입니다. 데이터베이스관리자는 이미 관리자 권한으로 접속되었습니다.

STARTUP OPEN sales PFILE=INITSALE.ORA EXCLUSIVE RESTRICT;

운영 체제 시작 과정에서 데이터베이스 자동 시작

많은 사이트에서 시스템을 시작한 즉시 하나 이상의 O racle 인스턴스와 데이터베이스를 자동으로 시작하는 프로시저를 사용합니다. 이 프로시저는 각 운영 체제의 특성에따라 다릅니다.

원격 인스턴스 시작

사용자의 지역 O racle 서버가 분산 데이터베이스의 한 부분이라면 원격 인스턴스와데이터베이스를 시작해야 할 수도 있습니다. 원격 인스턴스를 시작하고 종료하는 과정은 통신 프로토콜과 운영 체제에 따라 크게 달라집니다.

참조: 권한이 없는 사용자가 데이터베이스를 사용할 수 있도록 하는 방법은 3-8 페이지“열린 데이터베이스에 대한 액세스 제한”을 참조하십시오.

제어 파일, 데이터베이스 파일과 리두 로그 복구에 대한 자세한 내용은 6장“온라인리두 로그 관리”와 7장“아카이브된 리두 로그 관리”를 참조하십시오.

현재 인스턴스를 중지함으로써 발생하는 부작용에 대한 자세한 내용은 3-12 페이지“A B O RT 옵션으로 종료”를 참조하십시오.

배타 모드 또는 병렬 모드에서 인스턴스를 시작하는 방법은 O racle8i Pa ra l l e lS e rver Concepts and Ad m i n i s t ration 설명서를 참조하십시오.

S TA RTUP 문에 옵션을 사용할 때 적용하는 제한 사항에 대한 자세한 내용은O racle8i SQL 참조서를참조하십시오.

자동 시작 프로시저에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스 시작

3 - 6 Oracle8i 관리자 설명서

시작과 종료 3 - 7

데이터베이스 가용성 변경

데이터베이스 가용성 변경

인스턴스를 시작하고 마운트한 데이터베이스를 열어 부분적으로 사용할 수 있게 함으로써 사용자들이 데이터베이스에 접속하여 사용하도록 할 수 있습니다. 다음 단원에서는 데이터베이스 가용성 변경 방법에 대해 설명합니다.

■ 인스턴스에 데이터베이스 마운트

■ 닫힌 데이터베이스 열기

■ 읽기 전용 모드로 데이터베이스 열기

■ 열린 데이터베이스에 대한 액세스 제한

인스턴스에 데이터베이스 마운트

특정 데이터베이스 관리 작업 수행 시 데이터베이스는 닫힌 채로 시작되고 인스턴스에 마운트되어야 합니다. 즉, 인스턴스를 시작하고 데이터베이스를 마운트하기만 하면 됩니다.

데이터베이스를 마운트할 때 데이터베이스 관리자는 데이터베이스를 이 인스턴스에배타적으로 마운트할지 다른 인스턴스에도 동시에 마운트할지를 지시해야 합니다.

SQL 문 A LTER DATA B A S E에 MOUNT 옵션을 사용하여 이미 시작된 인스턴스를 데이터베이스에 마운트합니다. 다음은 배타 모드에서 데이터베이스를 마운트하는명령문입니다.

ALTER DATABASE MOUNT;

참조: 데이터베이스를 마운트하고 닫아야 할 작업 목록과 한번에 인스턴스를 시작하고 데이터베이스를 마운트하는 프로시저는 3-4 페이지“인스턴스 시작과 데이터베이스 마운트”를 참조하십시오.

닫힌 데이터베이스 열기

마운트했으나 닫혀 있는 데이터베이스를 열어 일반 사용자들이 사용하도록 할 수 있습니다. SQL 명령어 A LTER DATABASE 문에 OPEN 옵션을 사용하여 마운트된 데이터베이스를 엽니다.

ALTER DATABASE OPEN;

C R E ATE SESSION 시스템 권한이 있는 정당한 O racle 사용자는 위의 명령문을 실행하여 데이터베이스에 접속할 수 있습니다.

3 - 8 Oracle8i 관리자 설명서

데이터베이스 가용성 변경

읽기 전용 모드로 데이터베이스 열기

읽기 전용 모드로 데이터베이스를 열면 데이터베이스를 질의할 수 있지만 온라인 데이터 내용을 변경할 수는 없습니다. 데이터베이스를 읽기 전용 모드로 열면 데이터파일과 리두 로그 파일에 쓸 수 없지만 데이터베이스 복구나 리두를 만들지 않는“상태”수정은 할 수 있습니다. 예를 들어, 데이터 파일을 오프라인 또는 온라인으로 설정할 수 있는데 이러한 작업은 데이터 내용에 영향을 주지 않습니다.

이상적으로, 읽기 전용과 복구 모드 간의 대기 데이터베이스를 대체할 때 데이터베이스를 읽기 전용으로 엽니다. 이들은 상호 배타 모드입니다.

다음은 데이터베이스를 읽기 전용 모드로 여는 명령문입니다.

ALTER DATABASE OPEN READ ONLY;

데이터베이스를 읽기 쓰기 가능 모드로도 열 수 있습니다.

ALTER DATABASE OPEN READ WRITE;

주: RESETLOGS 절에 READ ONLY 절을 사용할 수 없습니다.

참조: A LTER DATABASE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

읽기 전용 모드로 데이터베이스를 여는데 대한 자세한 개념 설명은 O racle8i 개념 설명서를 참조하십시오.

열린 데이터베이스에 대한 액세스 제한

정상적인 상황에서 C R E ATE SESSION 시스템 권한이 있는 모든 사용자는 인스턴스에 접속할 수 있습니다. 그러나 데이터베이스 관리자는 인스턴스를 제한 모드 또는무제한 모드 상태로 만들 수 있습니다. 인스턴스가 제한 모드 상태면 C R E AT ES E S S I O N과 RESTRICTED SESSION 시스템 권한을 모두 가지고 있는 사용자만이 인스턴스에 접속할 수 있습니다. 일반적으로 관리자에게만 R E S T R I C T E DSESSION 시스템 권한이 있습니다.

제한 모드는 다음 작업을 수행할 때 유용합니다.

■ 인덱스 재구축과 같은 구조 유지 관리 작업 수행

■ 데이터베이스 데이터 엑스포트 또는 임포트 작업 수행

■ S Q L * L o a d e r로 데이터 로드 작업 수행

시작과 종료 3 - 9

데이터베이스 종료

■ 임시로 일반 사용자가 데이터를 사용하지 못하도록 할 때

SQL 문 A LTER SY S T E M에 E NABLE RESTRICTED SESSION 옵션을사용하여 인스턴스를 제한 모드로 설정합니다. 제한 모드로 인스턴스를 설정한 후 관리 작업을 수행하기 전에 모든 현재 사용자 세션을 없애고자 할 수도 있습니다. ALT E RSY S T E M에 D I SABLE RESTRICTED SESSION 옵션을 사용하여 인스턴스를 제한 모드에서 빠져나오도록 합니다.

참조: 데이터베이스 인스턴스를 시작하고 데이터베이스를 마운트한 다음 제한 모드에서 여는 작업은 3-4 페이지“데이터베이스 시작 단계에서 액세스 제한”을 참조하십시오.

A LTER SYSTEM 문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

데이터베이스 종료

다음 단원에서는 종료 절차를 설명합니다.

■ NORMAL 옵션으로 종료

■ I M M E D I ATE 옵션으로 종료

■ T R A N SAC T I O NAL 옵션으로 종료

■ A B O RT 옵션으로 종료

SQL*Plus 명령어 S H U T D OW N을 사용하여 데이터베이스를 종료합니다. 제어는 데이터베이스가 종료될 때까지 데이터베이스를 종료하려는 세션으로 되돌아오지 않습니다. 종료되고 있는 경우 데이터베이스에 접속하려는 사용자에게는 다음과 같은 메시지가 나타납니다.

ORA-01090: shutdown in progress - connection is not permitted

주의 사항: 다중 스레드 서버 프로세스를 통해 데이터베이스에 접속했다면 데이터베이스를 종료할 수 없습니다.

3 - 1 0 Oracle8i 관리자 설명서

데이터베이스와 인스턴스를 종료하려면 먼저 SY S O P E R나 SY S D B A로 시스템에 접속해야 합니다. 그림 3 - 1은 한 은행 계정에서 다른 계정으로 송금하는 도중에 각각다른 S H U T D OWN 명령어가 입력되었을 경우에 발생하는 이벤트 시퀀스를 나타냅니다.

그림 3-1 다른 유형의 SHUTDOWN 도중에 발생하는 이벤트 시퀀스

NORMAL 옵션으로 종료

정상적인 데이터베이스 종료 작업은 다음 상태로 진행됩니다.

■ 종료 명령문을 실행하면 데이터베이스에 접속할 수 없습니다.

■ O ra c l e은 데이터베이스를 종료하기 전에 현재 접속하고 있는 모든 사용자가 데이터베이스에서 접속을 끊을 때까지 기다립니다.

송금

계정 잔고 확인

새로운자금 입금

이전 계정에서자금 제거

커밋

로그아웃

정상 종료 즉시 종료

데이터베이스

다운

데이터베이스

다운

데이터베이스

다운

트랜잭션 종료

데이터베이스 종료

■ 다시 시작하려 할 때는 인스턴스 복구 절차가 필요하지 않습니다.

S H U T D OWN 명령어에 NORMAL 옵션을 사용하여 데이터베이스를 정상적으로 종료합니다.

SHUTDOWN NORMAL;

I M M E D I ATE 옵션으로 종료

다음 상황에서만 데이터베이스를 즉시 종료합니다.

■ 바로 전원을 끊어야 할 경우

■ 데이터베이스나 응용 프로그램이 비정상적으로 작동할 경우

데이터베이스 즉시 종료 작업은 다음 상태로 진행됩니다.

■ 커밋되지 않은 모든 트랜잭션을 롤백합니다. (커밋되지 않은 긴 트랜잭션이 있다면 이 방법으로는 빨리 종료할 수 없습니다. )

■ O ra c l e은 현재 데이터베이스에 접속한 사용자가 접속을 끊을 때까지 기다리지 않습니다. 현재 실행 중인 트랜잭션을 롤백하고 접속한 모든 사용자의 접속을 끊어버립니다.

S H U T D OWN 명령어에 I M M E D I ATE 옵션을 사용하여 데이터베이스를 즉시 종료합니다.

SHUTDOWN IMMEDIATE;

주: S H U T D OWN IMMEDIATE 문은기존의 모든 휴지 접속을 끊고데이터베이스를 종료합니다. 그러나 결과를 기다리는 프로세스(예를 들어, 삽입, 선택 또는 갱신)를 실행하면 S H U T D OWN TRANSAC -T I O NAL 문은 접속을 끊기 전에 프로세스가 완료되도록 합니다.

TRANSACTIONAL 옵션으로 종료

활성 트랜잭션을 먼저 완료하도록 하면서 인스턴스의 종료를 계획적으로 수행하기 위해 S H U T D OWN 명령어에 T R A N SAC T I O NAL 옵션을 사용하여 수행할 수 있습니다.

SHUTDOWN TRANSACTIONAL;

데이터베이스 종료

시작과 종료 3 - 1 1

이 명령문을 보내면 명령문이 수행된 특정 인스턴스에 대해서는 클라이언트가 새 트랜잭션을 시작할 수 없습니다. 클라이언트가 새 트랜잭션을 시작하려고 하면 해당 클라이언트의 접속은 끊어집니다. 모든 트랜잭션이 커밋되거나 중지되면 인스턴스에 접속된 모든 클라이언트의 접속은 끊어집니다. 이 시점에서 인스턴스는 S H U T D OW NI M M E D I ATE 문이 보내졌을 때와 같이 종료됩니다.

트랜잭션 종료는 클라이언트의 작업이 손실되지 않도록 하며 동시에 모든 사용자가로그아웃하지 않아도 됩니다.

ABORT 옵션으로 종료 `

데이터베이스의 인스턴스를 중지하여 데이터베이스를 즉시 종료할 수 있습니다. 다음상황에서만 인스턴스를 중지합니다.

■ 데이터베이스나 데이터베이스 응용 프로그램이 정상적으로 실행되지 않고 다른 종료 작업도 실행할 수 없는 경우

■ 데이터베이스를 즉시 종료해야 할 경우(예를 들어, 1분 안에 전원을 내려야 할 경우)

■ 데이터베이스 인스턴스를 시작할 때 문제가 발생한 경우

인스턴스를중지하면 데이터베이스가종료되고다음과 같은결과를 야기합니다.

■ O ra c l e이 처리하고 있는 현재 클라이언트 SQL 문이 즉시 종료됩니다.

■ 커밋되지 않은 트랜잭션을 롤백하지 않습니다.

■ O ra c l e은 현재 데이터베이스에 접속한 사용자가 접속을 끊을 때까지 기다리지 않으며 모든 사용자의 접속을 끊어 버립니다.

데이터베이스를 정상 종료 옵션이나 즉시 종료 옵션으로도 종료할 수 없다면S H U T D OWN 명령어에 A B O RT 옵션을 사용하여 데이터베이스 인스턴스를 즉시 종료합니다.

SHUTDOWN ABORT;

데이터베이스 일시 중지 및 재개

A LTER SYSTEM SUSPEND 문은 인스턴스에 있는 모든 I / O (데이터 파일, 제어파일 및 파일 헤더)와 질의를 일시 중지합니다. 이때 진행 중인 트랜잭션을 처리하지않고도 데이터베이스 사본을 만들 수 있습니다. 다른 인스턴스를 일시 중지한 동안에는 새 인스턴스가 일시 중지되지 않을 수 있으므로 새 인스턴스를 시작하지 마십시오.

데이터베이스 일시 중지 및 재개

3 - 1 2 Oracle8i 관리자 설명서

A LTER SYSTEM RESUME 문을 사용하여 정상 데이터베이스 작업을 재개합니다.

일시 중지/재개 기능은 디스크나 파일을 이중화한 다음 이중화를 분할할 수 있는 시스템에 유용합니다. 쓰기 작업 동안 기존의 데이터베이스에서 이중화된 디스크를 분할할 수 없는 시스템을 사용한다면 일시 중지/재개 기능을 사용하여 분할 작업을 쉽게 할 수 있습니다. 하지만 일시 중지된 데이터베이스 사본이 커밋되지 않은 갱신 내용을 포함할 수 있으므로 일시 중지/재개 기능은 정상 종료 작업에 대해 단순한 대체작업은 아닙니다.

다른 인스턴스에서 S U S P E N D와 RESUME 문을 실행할 수 있습니다. 예를 들어,인스턴스 1, 2, 3이 실행 중이고 인스턴스 1에서 SUSPEND 문을 실행했다면 인스턴스 1, 2, 3에서 RESUME 문을 실행하여 동일한 효과를 줄 수 있습니다.

S US P E N D와 R E S U M E을 사용하여 이중화 분할 작업을 쉽게 하려면 다음과 같이 하십시오.

1 . A LTER TA B L E S PACE BEGIN BACKUP 문을 사용하여 데이터베이스 테이블스페이스를 핫 백업 모드로 만듭니다.

2 . 디스크 쓰기 작업 동안 이중화 시스템에 이중화 분할 문제가 있으면 A LT E RSYSTEM SUSPEND 문을실행합니다.

3 . 이중화를 분할합니다.

4 . A LTER SYSTEM RESUME 문을실행하여 데이터베이스를재개합니다.

5 . A LTER TA B L E S PACE END BACKUP 문을 사용하여 테이블스페이스의 핫백업 모드를 해제합니다.

6 . 일반 백업과 같이 제어 파일을 복사하고 온라인 리두 로그를 아카이브합니다.

경고: 테이블스페이스를 핫 백업 모드로 만들기 위한 대체로S USPEND 문을 사용하지 마십시오.

참조: A LTER SYSTEM SUSPEND/RESUME 및A LTER TA B L E S PACE 문에대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

매개변수 파일 사용

다음 단원에서는 매개변수 파일 사용에 대해 설명합니다.

■ 예제 매개변수 파일

■ 매개변수 파일 수

매개변수 파일 사용

시작과 종료 3 - 1 3

■ 분산 환경에서 매개변수 파일의 위치

인스턴스를 시작하려면 O ra c l e은 매개변수 파일을 읽어야 합니다. 매개변수 파일은인스턴스 구성 매개변수 목록이 수록되어 있는 텍스트 파일입니다. 모든 경우에 해당되지는 않지만 일반적으로 매개변수 파일명은 I N I T.ORA 또는 I N I Ts i d. O R A입니다. sid는 운영 체제마다 다릅니다.

주: O racle Enterprise Manager를 사용하는 경우 초기화 매개변수파일에 대한 대체로 저장된 구성을 사용하는 방법은 O racle Enter-prise Manager Ad m i n i s t ra t o r’s Guide를 참조하십시오.

기본 텍스트 편집기로 매개변수 파일의 매개변수 값을 편집할 수 있지만 편집 방법은운영 체제마다 다릅니다. 초기화 매개변수에 대한 자세한 내용은 O ra c l e 8 iR e fe re n c e를 참조하십시오.

O ra c l e은 파일에 있는 국가별 언어 지원(NLS) 매개변수에 지정한 문자열 리터럴을데이터베이스 문자 집합에 있는 것으로 간주합니다.

참조: 초기화 매개변수 파일에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

예제 매개변수 파일

예제 매개변수 파일 I N I T.ORA 또는 I N I Ts i d. O R A는 O racle 배포 제품에 들어 있습니다. 이 예제 파일에 수록되어 있는 매개변수는 오라클 데이터베이스 초기 설치에적당한 값으로 설정되어 있습니다. 관리자는 O ra c l e을 어느 정도 사용한 후에 매개변수 값을 바꾸려고 할 것입니다.

참조: 매개변수 파일을 사용하여 데이터베이스 성능을 최적화하는 내용은 O ra c l e 8 iTuning 설명서를 참조하십시오.

매개변수 파일 수

오라클 데이터베이스는 자신과 대응하는 매개변수 파일을 적어도 하나는 가지고 있어야 합니다. 매개변수 파일에 있는 매개변수 D B _ NA M E과 C O N T RO L _ F I L E S는 특정 데이터베이스에 적합해야 합니다. 하나의 데이터베이스에 여러 개의 매개변수 파일이 있을 수 있습니다. 예를 들어, 단일 데이터베이스에 여러 개의 서로 다른 매개변수 파일을 사용하여 서로 다른 상황에서 데이터베이스 성능을 최적화할 수 있습니다.

매개변수 파일 사용

3 - 1 4 Oracle8i 관리자 설명서

분산 환경에서 매개변수 파일의 위치

데이터베이스를 액세스하는데 사용하는 클라이언트에서 데이터베이스 인스턴스를 시작하려면 데이터베이스의 매개변수 파일을 읽을 수 있어야 합니다. 따라서 클라이언트를 실행하는 컴퓨터에 항상 데이터베이스의 매개변수 파일을 저장합니다.

분산 환경으로 설치하지 않으면 O ra c l e과 클라이언트는 동일한 컴퓨터로 실행합니다.이 컴퓨터는 디스크 드라이브 중 하나에 매개변수 파일을 저장합니다. 그러나 분산환경으로 설치하면 지역 클라이언트 워크스테이션은 원격 시스템에 저장되어 있는 데이터베이스를 관리할 수 있습니다. 분산 데이터베이스를 구성하면 지역 클라이언트시스템에 각 데이터베이스에 대응하는 매개변수 파일의 복사본을 각각 저장해야 합니다.

참조: 분산 환경의 O racle 관리에 대한 자세한 내용은 O racle8i DistributedDatabase Systems를참조하십시오.

매개변수 파일 사용

시작과 종료 3 - 1 5

매개변수 파일 사용

3 - 1 6 Oracle8i 관리자 설명서

IIO racle 서버 구성

Oracle 프로세스 관리 4 - 1

4O racle 프로세스 관리

이 장에서는 O racle 인스턴스 프로세스를 관리하는 방법을 설명하며 다음 내용을 다룹니다.

■ 서버 프로세스 설정

■ 다중 스레드 서버 구조에 대한 O racle 구성

■ 서버 프로세스 수정

■ O racle 프로세스 추적

■ 병렬 질의 옵션에 대한 프로세스 관리

■ 외부 프로시저에 대한 프로세스 관리

■ 세션 종료

서버 프로세스 설정

사용자 프로세스가 데이터베이스 응용 프로그램을 실행하고, 별개의 구분된 서버 프로세스가 각 사용자를 위한 응용 프로그램과 관련된 O racle 서버를 실행할 때 이러한별개의 서버 프로세스가 전용 서버 프로세스입니다. (그림 4-1 참조) Ora c l e은 이러한 구성으로 자동 설치됩니다. 운영 체제가 전용 서버 프로세스 구성에서 O ra c l e을지원할 수 있으면 다중 스레드 서버 프로세스도 지원할 수 있습니다.

그림 4-1 Oracle 전용서버 프로세스

전용 서버 프로세스로의 접속 시기

가능하다면 사용자는 디스패처를 통해 인스턴스에 접속하여 인스턴스 실행에 필요한프로세스 수를 낮게 유지해야 합니다. 그러나 다음과 같은 경우 사용자와 관리자는

4 - 2 Oracle8i 관리자 설명서

서버 프로세스 설정

사용자프로세스

사용자프로세스

응용 프로그램코드

Oracle 서버코드

Oracle 서버코드

응용 프로그램코드

클라이언트 워크스테이션

데이터베이스 서버

전용서버

프로세스

시스템 글로벌영역

프로그램인터페이스

전용 서버 프로세스를 사용하여 인스턴스에 명시적으로 접속해야 합니다

■ 일괄처리 작업을 보낼 때 (예를 들어, 작업이 서버 프로세스에 휴지 시간을 거의허용하지 않을 때)

■ 데이터베이스에서 Enterprise Manager를 사용하여 시작, 종료 또는 매체 복구를 수행할 때

■ R e c o v e ry Manager를 사용하여 데이터베이스를 백업, 복원 또는 복구할 때

전용 서버 접속을 요청하려면 사용자는 S E RV E R = D E D I CATED 절을 Net8 TNS접속 문자열에 포함해야 합니다.

참조: Net8 접속 문자열 구문에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서와 Net8 Ad m i n i s t ra t o r’s Guide를 참조하십시오.

초기화 매개변수와 매개변수 파일에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

다중 스레드 서버 구조에 대한 O racle 구성

전용 서버 프로세스를 가진 주문 입력 항목 시스템을 생각해 봅시다. 고객은 판매원이 데이터베이스에 주문을 입력하는 것과 같이 주문을 넣습니다. 대부분의 트랜잭션의 경우 판매원은 전화 상에서 고객과 통화 중이며 판매원의 사용자 프로세스의 전용서버 프로세스는 휴지 상태로 남습니다. 서버 프로세스는 대부분의 트랜잭션 동안은필요하지 않으며 휴지 서버 프로세스가 시스템 자원을 보유하므로 다른 판매원이 주문을 입력하면 시스템은 더 느려집니다.

다중 스레드 서버 구조는 각 접속에 대한 전용 서버 프로세스의 필요성을 제거합니다. (그림 4-2 참조) 적은 수의 공유 서버 프로세스만으로도 많은 전용 서버가 처리하는 양을 처리할 수 있습니다. 또한 각 사용자가 필요로 하는 메모리 양이 상대적으로 적어지므로 메모리와 프로세스 관리 필요성이 적어지고 보다 많은 사용자를 지원할 수 있습니다.

Oracle 프로세스 관리 4 - 3

다중 스레드 서버 구조에 대한 Oracle 구성

그림 4-2 Oracle 다중스레드 서버 프로세스

다중 스레드 서버 구성으로 시스템을 설정하려면 네트워크 리스너 프로세스를 시작하고 M T S _ D I S PATCHERS 초기화 매개변수를 설정합니다. 이 매개변수는 디스패처의초기치를 설정하는 필수 매개변수입니다.

초기화 매개변수를 설정한 다음 다중 스레드 서버 구성을 사용할 인스턴스를 다시 시작합니다. 다중 스레드 서버 구조는 N e t 8을 필요로 합니다. 다중 스레드 서버를 대상으로 하는 사용자 프로세스는 O racle 인스턴스와 동일한 시스템에 있을 때도 N e t 8을통해 접속해야 합니다.

4 - 4 Oracle8i 관리자 설명서

다중 스레드 서버 구조에 대한 Oracle 구성

사용자프로세스

디스패처 프로세스

응용 프로그램코드

데이터베이스 서버

클라이언트 워크스테이션

Oracle 서버 코드

공유서버

프로세스

시스템 글로벌영역

요구 대기열 응답 대기열

참조: 네트워크 리스너 프로세스 시작 및 관리에 대한 자세한 내용은 O ra c l e 8 iDistributed Database Systems와O racle Net8 Ad m i n i s t ra t o r’s Guide를 참조하십시오.

M TS _ D I S PATCHERS: 디스패처의 초기치 설정(필수)

M T S _ D I S PATCHERS 매개변수는 인스턴스가 시작할 때 시작되는 디스패처 프로세스 수를 제어합니다. 인스턴스를 시작하기 전에 각 네트워크 프로토콜에 대해 시작할디스패처 수를 예측해야 합니다.

M T S _ D I S PATCHERS 매개변수를설정할 때 유효한 프로토콜을 포함할 수 있습니다.

각 인스턴스에 대한 디스패처 프로세스 수는 관리자가 데이터베이스로부터 원하는 성능과 프로세스당 접속 수에 대한 호스트 운영 체제의 (운영 체제마다 다른) 한계 및네트워크 프로토콜당 요구되는 접속 수에 따라 다릅니다.

인스턴스는 동시에 데이터베이스 시스템에 있는 사용자 수만큼 접속할 수 있어야 합니다. 인스턴스를 시작한 후 필요하다면 추가 디스패처 프로세스를 시작할 수 있습니다.

참조: 디스패처 프로세스에 대한 자세한 내용은 4-7 페이지“디스패처 프로세스 추가및 제거”를 참조하십시오.

디스패처 프로세스의 초기치 계산

사용자 운영 체제에서 프로세스당 가능한 접속 수를 아는 경우 다음 공식을 사용하여네트워크 프로토콜당 인스턴스를 시작할 때 생성할 디스패처 프로세스의 초기치를 계산합니다.

number maximum number of concurrent sessionsof = CEIL ( )dispatchers connections per dispatcher

주: 디스패처당 접속 수는 운영 체제마다 다릅니다.

예를 들어, 일반적으로 9 0 0명의 사용자가 T C P / I P를 통해 동시에 시스템에 접속하고6 0 0명의 사용자는 S PX를 통해 접속하고 프로세스당 2 5 5개의 접속을 지원한다고 가정하면 M T S _ D I S PATCHERS 매개변수는 다음과 같이 설정해야 합니다.

MTS_DISPATCHERS = “(PROTOCOL=TCP) (DISPATCHERS=4)”MTS_DISPATCHERS = “(PROTOCOL=SPX) (DISPATCHERS=3)”

Oracle 프로세스 관리 4 - 5

다중 스레드 서버 구조에 대한 Oracle 구성

예 1 디스패처에 사용되는 IP 주소를 지정하려면 다음을 입력합니다.

MTS_DISPATCHERS=“(ADDRESS=(PARTIAL=TRUE)(PROTOCOL=TCP)\(HOST=144.25.16.201))(DISPATCHERS=2)”

그러면 H O S T = 1 4 4 . 2 5 . 1 6 . 2 0 1에서 대기하는 두 개의 디스패처가 시작됩니다. 이때호스트는 디스패처가 액세스할 수 있는 카드여야 합니다.

예 2 디스패처의 정확한 위치를 지정하려면 P O RT를 다음과 같이 추가합니다.

MTS_DISPATCHERS=“(ADDRESS=(PARTIAL=TRUE)(PROTOCOL=TCP)\(HOST=144.25.16.201)(PORT=5000))(DISPATCHERS=1)”

MTS_DISPATCHERS=“(ADDRESS=(PARTIAL=TRUE)(PROTOCOL=TCP)\(HOST=144.25.16.201)(PORT=5001))(DISPATCHERS=1)”

주: I N I T.ORA 파일에 여러 M T S _ D I S PAT C H E R S를 지정할 수 있지만 서로 인접해야 합니다. MTS_DISPAT C H E R S의 기본값은 1입니다.

서버 프로세스 수정

이 단원에서는 인스턴스를 시작한 후 변경할 수 있는 사항을 설명하며 다음 내용을다룹니다.

■ 공유 서버 프로세스의 최소 수 변경

■ 디스패처 프로세스 추가 및 제거

공유 서버 프로세스의 최소 수 변경

인스턴스를 시작한 후 SQL 명령어 A LTER SY S T E M을 사용하여 공유 서버 프로세스의 최소 수를 변경할 수 있습니다.

결과적으로 O ra c l e은 지정한 최소 한계보다 많은 공유 서버가 있을 경우 휴지 상태에있는 서버를 종료합니다.

M T S _ S E RV E R S를 0으로 설정하는 경우 O ra c l e은 휴지 상태가 되는 모든 현재 서버를 종료하고 M T S _ S E RV E R S를 증가시킬 때까지 새 서버를 시작하지 않습니다.따라서 M T S _ S E RV E R S를 0으로 설정하면 효과적으로 다중 스레드 서버를 작동하지못하게 할 수 있습니다.

공유서버프로세스의최소수를제어하려면A LTER SYSTEM 권한이있어야 합니다.

4 - 6 Oracle8i 관리자 설명서

서버 프로세스 수정

다음 명령문은 공유 서버 프로세스의 수를 2로 설정합니다.

ALTER SYSTEM SET MTS_SERVERS = 2

디스패처 프로세스 추가 및 제거

인스턴스에서 디스패처 프로세스 수를 제어할 수 있습니다. V $Q U E U E,V $D I S PATCHER 및 V $D I S PAT C H E R _ R ATE 뷰에서 디스패처 프로세스의 부하가 계속 높게 나타나면 사용자 요청의 경로를 지정하는 추가 디스패처 프로세스를 시작하여 성능을 향상시킬 수 있습니다. 디스패처 수가 M T S _ M A X _ D I S PAT C H E R수와 같아질 때까지 새 디스패처를 시작할 수 있습니다. 반대로 디스패처의 부하가계속 낮게 나타나면 디스패처 수를 줄여 성능을 향상시킬 수 있습니다.

디스패처 프로세스 수를 변경하려면 SQL 명령어 A LTER SY S T E M을 사용합니다.특정 프로토콜의 디스패처 수를 변경해도 다른 프로토콜의 디스패처에는 영향을 주지않습니다.

M T S _ D I S PATCHERS 매개변수에 지정된 프로토콜에 대해 새 디스패처 프로세스를시작하거나 새로운 M T S _ D I S PATCHERS 구성을 추가할 수 있습니다. 따라서 디스패처가 있는 프로토콜에 대해서는 디스패처를 추가하고 현재 디스패처가 없는 프로토콜에 대해서는 디스패처를 시작할 수 있습니다.

특정 프로토콜에 대한 디스패처 수를 줄이면 디스패처는 즉시 제거되지 않습니다.O ra c l e은 디스패처를 종료하여 M T S _ D I S PAT C H E R S에 지정한 한계 이하로 디스패처 수를 줄입니다.

디스패처 프로세스 수를 제어하려면 A LTER SYSTEM 권한이 있어야 합니다.

다음은 M T S _ D I S PAT C H E R S가 이전에 1로 구성되었던 S PX 프로토콜에 대해 디스패처 프로세스를 추가하는 예입니다.

ALTER SYSTEMSET MTS_DISPATCHERS = ‘(INDEX=1) (PRO=SPX)’;

참조: 다중스레드 서버조정에 대한자세한 내용은 O racle8i Tuning을참조하십시오.

O racle 프로세스 추적

O racle 인스턴스에는 필요한 경우 추적해야 하는 백그라운드 프로세스가 많이 있습니다. 이 단원에서는 이러한 프로세스를 추적하는 방법을 설명하며 다음 내용을 다룹니다.

Oracle 프로세스 관리 4 - 7

Oracle 프로세스 추적

■ O racle 인스턴스 프로세스 모니터링

■ 추적 파일, ALERT 파일 및 백그라운드 프로세스

■ 체크포인트 프로세스 시작

참조: O racle 프로세스조정에 대한자세한 내용은 O racle8i Tuning을참조하십시오.

O racle 인스턴스 프로세스 모니터링

모니터는 데이터베이스 작업과 자원 사용 추적 방법을 제공합니다. 여러 모니터를 동시에 작동시킬 수 있습니다. 표 4 - 1에는 O racle 프로세스를 추적할 수 있는Enterprise Manager 모니터가나열되어 있습니다.

표 4-1 Enterprise Manager 모니터

잠금 모니터링

표 4 - 2는 인스턴스 내에서 진행 중인 트랜잭션의 잠금 정보 모니터에 대한 두 가지방법을 설명합니다.

표 4-2 Oracle 모니터기능

4 - 8 Oracle8i 관리자 설명서

Oracle 프로세스 추적

모니터 이름 설명

프로세스 프로세스 모니터는 현재 데이터베이스 인스턴스를 통해 데이터베이

스에 액세스하고 있는 클라이언트-서버, 사용자, 서버 및 백그라운

드 프로세스를 포함한 모든 Oracle 프로세스에 대한 정보를 요약합

니다.

세션 세션 모니터는 접속된 각 Oracle 세션의 세션 I D와 상태를 나타냅

니다.

모니터 이름 설명

Enterprise Manager Enterprise Manager/GUI의 모니터 기능은 인스턴스에 대한 잠금

모니터 정보를 나타내는 두 개의 모니터인 잠금 및 래치 모니터를 제공합니

다.

UTLLOCKT.SQL UTLLOCKT.SQL 스크립트는 트리 구조 형태로 간단한 문자 잠금

대기 그래프를 표시합니다. 스크립트는 Enterprise Manager 또는

S Q L * P l u s와 같은 ad hoc 질의 도구를 사용하여 잠금 대기 중인 시

스템의 세션과 해당 블로킹 잠금을 인쇄합니다. 이 스크립트 파일의

위치는 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서

를 참조하십시오. (보조 스크립트인 C A T B L O C K . S Q L은

U T L L O C K T . S Q L에서 필요로 하는 잠금 뷰를 생성하므로

U T L L O C K T . S Q L을 실행하기 전에 실행해야 합니다. )

동적 성능 테이블 모니터링

동적 성능 테이블에 생성된 다음 뷰는 O racle 인스턴스 프로세스를 모니터하는데 유용합니다.

다음은 동적 성능 테이블의 하나인 V $D I S PAT C H E R에 대한 일반적인 질의입니다.출력은 시스템에 있는 각 디스패처 프로세스의 프로세싱 부하를 나타냅니다.

SELECT (busy/(busy + idle)) * 100 ”% OF TIME BUSY”FROM v$dispatcher;

O racle 백그라운드 프로세스와 운영 체제 백그라운드 프로세스 구분

한 컴퓨터에서 동시에 많은 오라클 데이터베이스를 실행하는 경우 O ra c l e은 인스턴스의 프로세스 이름을 지정하는 방법을 제공합니다. 백그라운드 프로세스 이름 앞에는각 인스턴스의 프로세스 집합을 구분하는 인스턴스 식별자가 붙습니다.

예를 들어, TEST라는 인스턴스는 다음 이름이 붙은 백그라운드 프로세스를 가질 수도 있습니다.

Oracle 프로세스 관리 4 - 9

Oracle 프로세스 추적

뷰(모니터) 이름 설명

V $CIRCUIT 디스패처와 서버를 통한 사용자 접속의 가상 선로에 대한 정보

가 들어 있습니다.

V $QUEUE 다중 스레드 메시지 대기열에 대한 정보가 들어 있습니다.

V $DISPATCHER 디스패처 프로세스에 대한 정보가 들어 있습니다.

V $DISPATCHER_RATE 디스패처 프로세스에 대한 속도 통계가 들어 있습니다.

V $SHARED_SERVER 공유 서버 프로세스에 대한 정보가 들어 있습니다.

V $SQLAREA 공유 SQL 영역에 대한 통계와 SQL 문자열당 하나의 행이 들

어 있습니다. 또한 메모리 내에 구문 분석되어 실행 준비가 된

SQL 문에 대한 통계도 있습니다.

V $SESS_IO 사용자 세션에 대한 입출력 통계가 들어 있습니다.

V $LATCH 상위가 없는 래치에 대한 통계와 상위 래치에 대한 요약 통계

가 들어 있습니다.

V $SYSSTAT 시스템 통계가 들어 있습니다.

■ O R A _ T E S T _ D BW R

■ O R A _ T E S T _ L GW R

■ O R A _ T E S T _ S M O N

■ O R A _ T E S T _ P M O N

■ O R A _ T E S T _ R E C O

■ O R A _ T E S T _ L C K 0

■ O R A _ T E S T _ A RC H

■ O R A _ T E S T _ D 0 0 0

■ O R A _ T E S T _ S 0 0 0

■ O R A _ T E S T _ S 0 0 1

참조: 뷰와 동적 성능 테이블에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

인스턴스 식별자와 O racle 프로세스 이름 형식에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

추적 파일, ALERT 파일 및 백그라운드 프로세스

각 서버와 백그라운드 프로세스는 연관된 추적 파일에 기록할 수 있습니다. 프로세스가 내부 오류를 감지하면 추적 파일에 오류 정보를 넣습니다. 추적 파일에 기록된 일부 정보는 데이터베이스 관리자를 위한 것이며 다른 정보는 O racle Wo r l d W i d eS u p p o r t를 위한 것입니다. 추적 파일 정보는 응용 프로그램과 인스턴스 조정에도 사용됩니다.

A L E RT 파일은 특별한 추적 파일입니다. 데이터베이스의 A L E RT 파일은 메시지와오류 시간 순서에 따른 기록으로 다음을 포함합니다.

■ 발생한 모든 내부 오류(ORA-600), 블록 훼손 오류(ORA-1578), 교착 상태 오류( O R A - 6 0 )

■ C R E AT E / A LT E R / D ROP DATA B A S E / TA B L E S PAC E / RO L L B AC KSEGMENT SQL 문과 S TA RT U P, SHUTDOWN 및 A RCHIVE LOG 등과같은 관리 작업

■ 공유 서버와 디스패처 프로세스 기능과 관련된 일부 메시지 및 오류

■ 스냅샷을 자동으로 화면에 다시 표시하는 동안 발생한 오류

4 - 1 0 Oracle8i 관리자 설명서

Oracle 프로세스 추적

■ 데이터베이스와 인스턴스를 시작할 때의 모든 초기화 매개변수 값

O ra c l e은 많은 시스템이 콘솔에 정보를 나타내지만 A L E RT 파일을 사용하여 운영자의 콘솔에 정보를 나타내는 대신 이러한 특수 작업의 기록을 보존합니다. 작업이 성공적이면 A L E RT 파일에 시간 기록과 함께“c o m p l e t e d”라는 메시지가 기록됩니다.

추적 파일 사용

인스턴스의 A L E RT 파일과 다른 추적 파일을 주기적으로 확인하여 백그라운드 프로세스의 오류 발생 여부를 알 수 있습니다. 예를 들어, 로그 기록자 프로세스( L GW R )가 그룹 멤버에 기록할 수 없으면 문제의 특성을 나타내는 오류 메시지가 L GWR 추적 파일과 데이터베이스의 A L E RT 파일에 기록됩니다. 그러한 오류 메시지가 발견되면 매체 또는 입출력 문제가 발생한 것으로 즉시 수정해야 합니다.

O ra c l e은 다른 중요한 통계 외에 초기화 매개변수 값을 A L E RT 파일에 기록합니다.예를 들어, 인스턴스를 정상적으로 또는 긴급하게 중지하지 않고 종료하면, Ora c l e은인스턴스가 시작된 후 인스턴스에 동시에 접속된 세션의 최대 수를 A L E RT 파일에기록합니다. 이 최대 수로 O racle 세션 사용권 업그레이드의 필요성 여부를 알 수 있습니다.

추적 파일의 위치 지정

백그라운드 프로세스에 대한 모든 추적 파일과 A L E RT 파일은 초기화 매개변수B AC KG RO U N D _ D U M P _ D E S T에서 지정한 대상에 기록됩니다. 서버 프로세스에대한 모든 추적 파일은 초기화 매개변수 U S E R _ D U M P _ D E S T에 의해 지정된 대상에 기록됩니다. 추적 파일 이름은 운영 체제마다 다르지만 대개 L GW R과 RECO 같은 파일을 기록하는 프로세스 이름을 포함합니다.

추적 파일의 크기 제어

초기화 매개변수 M A X _ D U M P _ F I L E _ S I Z E를 사용하여 모든 추적 파일( A L E RT 파일 제외)의 최대 크기를 제어할 수 있습니다. 이 한계치는 운영 체제 블록 수로 설정됩니다. ALERT 파일의크기를 제어하려면 더 이상 필요하지 않은 파일을 직접 삭제해야 합니다. 그렇지 않으면 O ra c l e은 계속 파일을 추가합니다. 아카이브된 복사본을먼저 생성하고자 할 수도 있지만 인스턴스를 실행하는 동안 A L E RT 파일을 안전하게삭제할 수 있습니다.

Oracle 프로세스 관리 4 - 1 1

Oracle 프로세스 추적

O ra c l e의 추적 파일 기록 시점 제어

백그라운드 프로세스는 항상 적합한 시기에 추적 파일에 기록합니다. 그러나 추적 파일은 초기화 매개변수 S Q L _ T R AC E가 T RU E로 설정된 경우에만 내부 오류 발생 시기록되는 것에 추가하여 서버 프로세스를 위해 기록됩니다.

S Q L _ T R AC E의 현재 값에 관계없이 각 세션은 SQL 명령어 A LTER SESSION에SET SQL_TRACE 매개변수를 사용하여 연관된 서버 프로세스를 위한 로깅 추적을활성화하거나 비활성화할 수 있습니다.

ALTER SESSION SET SQL_TRACE TRUE;

다중 스레드 서버의 경우 디스패처를 사용하고 있는 각 세션은 공유 서버 프로세스에경로가 지정되며, 추적 정보는 세션에서 추적을 활성화한 경우(또는 오류가 발생한경우)에만 서버의 추적 파일에 기록됩니다. 따라서 디스패처를 사용하여 접속된 특정세션을 추적하려면 일부 공유 서버 추적 파일을 조사해야 할 수도 있습니다. 서버 프로세스에 대한 SQL 추적 기능이 상당한 시스템 오버헤드를 발생시킬 수 있으므로 통계를 수집할 때만 활성화합니다.

참조: 추적파일이름에대한내용은사용자운영체제별오라클설명서를참조하십시오.

A LTER SESSION 명령어에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

체크포인트 프로세스 시작

체크포인트 프로세스( C K P T )가 활성화되지 않으면 로그 기록자 프로세스( L GW R )가최근 체크포인트를 반영하는 모든 제어 파일 및 데이터 파일의 헤더 갱신을 담당합니다. 체크포인트를 완료하는데 필요한 시간을 줄이려면 특히 데이터베이스가 많은 데이터 파일로 이루어진 경우 데이터베이스 매개변수 파일의 C H E C K P O I N T _ P RO -CESS 매개변수를 T RU E (기본값은 FA L S E )로 설정하여 CKPT 백그라운드 프로세스를 활성화해야 합니다.

병렬 질의 옵션에 대한 프로세스 관리

이 단원에서는 O ra c l e이 병렬 질의 옵션을 사용하여 병렬 프로세싱을 수행하는 방법을 설명하며 다음 내용을 다룹니다. 이 구성에서 O ra c l e은 다중 질의 서버 프로세스간 특정 유형의 SQL 문을 처리하는 작업을 나눌 수 있습니다.

■ 질의 서버 관리

■ 질의 서버 프로세스 수의 변화

4 - 1 2 Oracle8i 관리자 설명서

병렬 질의 옵션에 대한 프로세스 관리

참조: 병렬 질의 옵션에 대한 자세한 내용은 O racle8i Tuning을참조하십시오.

질의 서버 관리

인스턴스를 시작하면 O racle 서버는 모든 질의 조정 관리자가 사용할 수 있는 질의서버 프로세스 풀을 생성합니다. PA R A L L E L _ M I N _ S E RVERS 초기화 매개변수를사용하여 인스턴스를 시작할 때 O racle 서버가 생성하는 질의 서버 프로세스 수를 지정합니다.

질의 서버 프로세스는 실행 단계 동안 하나의 명령문과 연관됩니다. 그 명령문이 완전히 처리되면 해당 질의 서버 프로세스를 다른 명령문 처리를 위해 사용할 수 있습니다. 질의 조정 관리자 프로세스는 모든 결과 데이터를 명령문을 발생한 사용자 프로세스로 돌려줍니다.

질의 서버 프로세스 수의 변화

인스턴스에 의해 동시에 처리되는 SQL 문의 볼륨이 크게 변경되면 O racle 서버는풀의 질의 서버 프로세스 수를 자동으로 변경하여 이 볼륨을 수용합니다.

이 볼륨이 증가하면 O racle 서버는 추가 질의 서버 프로세스를 자동으로 생성하여 들어오는 명령문을 처리합니다. 인스턴스에 대한 질의 서버 프로세스의 최대 수는 초기화 매개변수 PA R A L L E L _ M A X _ S E RV E R S에 의해 지정됩니다.

볼륨이 계속 감소하면 O racle 서버는 PA R A L L E L _ S E RVER_IDLE_TIME 초기화매개변수에 의해 지정된 기간 동안 휴지 상태로 있는 질의 서버 프로세스를 종료합니다. Oracle 서버는 질의 서버 프로세스의 휴지 기간에 관계없이 PA R A L L E L _ M I N _S E RVERS 값 이하로 풀의 크기를 줄이지는 않습니다.

풀의 모든 질의 서버가 점유되고 최대 수의 질의 서버가 시작되면 질의 조정 관리자는 계속 명령문을 처리합니다.

참조: 질의 서버의 인스턴스 풀 모니터와 초기화 매개변수의 적정 값 결정에 대한 자세한 내용은 O racle8i Tuning을참조하십시오.

Oracle 프로세스 관리 4 - 1 3

병렬 질의 옵션에 대한 프로세스 관리

외부 프로시저에 대한 프로세스 관리

오라클 데이터베이스에서 C 함수를 호출하기 위한 공유 라이브러리를 가질 수 있습니다. 이 단원에서는 이러한 외부 프로시저 호출을 위한 환경 설정 방법에 대해 설명합니다.

주: 꼭 필요하지는않지만설치시 이러한작업을수행하는것이좋습니다.

데이터베이스 관리자는 해당 라이브러리에 대한 권한을 응용 프로그램 개발자에게 부여하고, 응용 프로그램 개발자는 외부 프로시저를 작성한 다음 특정 외부 프로시저에대한 실행 권한을 다른 사용자에게 부여합니다.

외부 프로시저 호출을 위한 환경을 설정하려면 다음과 같이 하십시오.

1 . 리스너 프로세스(연속적으로 E X T P ROC 프로세스)에 접속할 수 있도록 하는 입력 항목을 추가하여 t n s n a m e s . o ra 파일을 편집합니다.

2 . “외부 프로시저 리스너”에 대한 입력 항목을 추가하여 l i s t e n e r. o ra 파일을 편집합니다.

3 . 외부 프로시저를 배타적으로처리하기 위해별도의 리스너 프로세스를 시작합니다.

4 . 리스너에 의해 생성된 E X T P ROC 프로세스는 리스너의 운영 체제 권한을 상속받습니다. 따라서 O ra c l e은 별도의 리스너 프로세스에 대한 권한을 제한하도록권장합니다. 프로세스는 데이터베이스 파일이나 O racle 서버 주소 영역에 읽거나쓸 수 있는 권한을 가지면 안됩니다.

또한 이러한 별도의 리스너 프로세스 소유자가 서버 실행 파일과 데이터베이스파일의 기본 소유자인“o ra c l e”이면 안됩니다.

5 . 아직 설치되지 않았으면 ex t p roc 실행 파일을 $ OR AC L E _ H O M E / b i n에 넣습니다.

외부 라이브러리(DLL 파일)는 정적으로 링크되어 있어야 합니다. 즉, 다른 외부 라이브러리(DLL 파일)에 있는 외부 심볼 참조 사항이 있으면 안됩니다. 이러한 심볼들이 해결되지 않아 외부 프로시저가 실패할 수 있습니다.

t n s n a m e s . o ra의 입력 항목 예

다음은 외부 프로시저 리스너에 대한 t n s n a m e s . o ra의 입력 항목 예입니다.

extproc_connection_data = (DESCRIPTION = (ADDRESS = (PROTOCOL=IPC

(KEY=extproc_key))(CONNECT_DATA = (SID = extproc_agent)

4 - 1 4 Oracle8i 관리자 설명서

외부 프로시저에 대한 프로세스 관리

)

이 예를 포함한 모든 외부 프로시저 호출에서 입력 항목 이름 ex t p ro c _ c o n n e c t i -o n _ d a t a는 변경될 수 없습니다. 이름은 이 예에 나타난 것과 똑같이 입력되어야 합니다. 이 예의 ex t p ro c _ key에 지정되는 키는 l i s t e n e r. o ra 파일의 K E Y와 일치해야 합니다. 또한 이 예의 ex t p ro c _ a g e n t에 지정되는 SID 이름은 l i s t e n e r. o ra 파일의 S I D _ NAME 입력 항목과 일치해야 합니다.

l i s te n e r . o ra의 입력 항목 예

다음은 외부 프로시저에 대한 l i s t e n e r. o ra의 입력 항목 예입니다.

EXTERNAL_PROCEDURE_LISTENER =

(ADDRESS_LIST = (ADDRESS = (PROTOCOL=ipc)

(KEY=extproc_key))

)...SID_LIST_EXTERNAL_PROCEDURE_LISTENER =

(SID_LIST = (SID_DESC = (SID_NAME=extproc_agent)

(ORACLE_HOME=/oracle)(PROGRAM=extproc)

))

이 예에서 프로그램 이름은 ex t p ro c이고 변경될 수 없습니다. 이름은 이 예에 나타난 것과 똑같이 입력되어야 합니다. SID_NA M E은 t n s n a m e s . o ra 파일의 SID 이름과 일치해야 합니다. ORAC L E _ H O M E은 오라클 소프트웨어가 설치된 디렉토리로설정해야 합니다. ex t p ro c 실행 파일은 $O R AC L E _ H O M E / b i n에 있어야 합니다.

참조: 외부 프로시저에 대한 자세한 내용은 PL/SQL 사용 설명서 및 참조서를 참조하십시오.

세션 종료

어떤 상황에서는 현재 사용자 세션을 종료하고자 할 수도 있습니다. 예를 들어, 관리작업을 수행하기 위해 모든 비관리 세션을 종료해야 할 수도 있습니다.

이 단원에서는 세션 종료의 다양한 측면과 다음 내용을 다룹니다.

Oracle 프로세스 관리 4 - 1 5

세션 종료

■ 종료할 세션 식별

■ 활성 세션 종료

■ 비활성 세션 종료

세션이 종료되면 세션의 트랜잭션은 롤백되고, 잠금 및 메모리 영역과 같은 세션이보유한 자원은 즉시 해제되어 다른 세션에서 사용할 수 있습니다.

SQL 문 A LTER SYSTEM KILL SESSION을사용하여 현재 세션을 종료합니다.

다음 명령문은 S I D가 7이고 일련 번호가 1 5인 세션을 종료합니다.

ALTER SYSTEM KILL SESSION ’7,15’;

종료할 세션 식별

종료할 세션을 식별하려면 세션의 인덱스 번호와 일련 번호를 지정합니다. 세션 인덱스( S I D )와 일련 번호를 식별하려면V $SESSION 동적 성능 테이블을 질의해야 합니다.

다음 질의는 사용자 J WA R D에 대한 모든 세션을 식별합니다.

SELECT sid, serial#FROM v$session WHERE username = ’JWARD’;

SID SERIAL# STATUS--------- --------- --------

7 15 ACTIVE12 63 INACTIVE

O ra c l e에 대한 SQL 호출을 수행 중일 때 사용자 세션은 AC T I V E이며 O ra c l e에 대한 SQL 호출을 수행하지 않을 때는 I NAC T I V E입니다.

참조: 세션 상태 값에 대한 자세한 내용은 O racle8i Tuning을참조하십시오.

활성 세션 종료

사용자 세션이 종료될 때 O ra c l e에 대한 SQL 호출을 수행 중( AC T I V E )인 경우 트랜잭션은 롤백되며 사용자는 즉시 다음 메시지를 받게 됩니다.

ORA-00028: your session has been killed

4 - 1 6 Oracle8i 관리자 설명서

세션 종료

ORA-00028 메시지를 받은 후 데이터베이스에 재접속하기 전에 사용자가 추가 명령문을 보내면 O ra c l e은 다음 메시지를 돌려줍니다.

ORA-01012: not logged on

활성 세션을 인터럽트할 수 없는 경우(예를 들어, 네트워크 I / O를 수행 중이거나 트랜잭션을 롤백 중인 경우)에는 작업이 완료될 때까지 세션을 종료할 수 없습니다. 이경우 세션은 종료될 때까지 모든 자원을 보유합니다. 세션을 종료하기 위해 A LT E RSYSTEM 문을 발생시킨 세션은 종료를 위해 최대 6 0초를 기다립니다. 인터럽트할수 없는 작업이 1분을 경과하여 계속되면 A LTER SYSTEM 문을 실행한 사용자는세션이 종료되도록“m a r ke d”메시지를 받습니다. 종료되도록 표시된 세션은V $S E S S I O N에서 s t a t u s는“K I L L E D”로 s e rv e r는“P S E U D O”이외의 값으로 지정됩니다.

비활성 세션 종료

세션이 종료될 때 O ra c l e에 대한 SQL 호출을 수행하지 않는다면( I NAC T I V E )ORA-00028 메시지를즉시 돌려주지 않습니다. 메시지는 사용자가 종료된 세션을 계속 사용하려고 해야 나타납니다.

비활성 세션이 종료될 때 V $SESSION 뷰의 S TAT U S는“K I L L E D”입니다. 종료된세션에 대한 행은 사용자가 세션을 다시 사용하려고 하여 ORA-00028 메시지를받은후에 V $S E S S I O N으로부터 제거됩니다.

다음 예에서 관리자는 비활성 세션을 종료합니다.

SELECT sid,serial#,status,serverFROM v$sessionWHERE username = ’JWARD’;

SID SERIAL# STATUS SERVER---------- ------- -------- ---------

7 15 INACTIVE DEDICATED12 63 INACTIVE DEDICATED

2 rows selected.

ALTER SYSTEM KILL SESSION ’7,15’;Statement processed.

SELECT sid, serial#, status, serverFROM v$sessionWHERE username = ’JWARD’;

SID SERIAL# STATUS SERVER--------- -------- --------- --------

7 15 KILLED PSEUDO

Oracle 프로세스 관리 4 - 1 7

세션 종료

12 63 INACTIVE DEDICATED2 rows selected.

4 - 1 8 Oracle8i 관리자 설명서

세션 종료

제어 파일 관리 5 - 1

5제어 파일 관리

이 장에서는 데이터베이스에 대한 제어 파일 생성과 유지 관리 방법을 설명하며 다음 내용을 다룹니다.

■ 제어 파일에 대한 지침 사항

■ 제어 파일 생성

■ 제어 파일 생성 후 문제 해결

■ 제어 파일 삭제

5 - 2 Oracle8i 관리자 설명서

제어 파일에 대한 지침 사항

제어 파일에 대한 지침 사항

이 단원에서는 데이터베이스의 제어 파일을 관리하는데 필요한 지침 사항과 다음 내용을 다룹니다.

■ 제어 파일 이름 지정

■ 서로 다른 디스크 상의 제어 파일 다중화

■ 올바른 제어 파일 배치

■ 제어 파일의 크기 관리

제어 파일 이름 지정

데이터베이스 매개변수 파일의 C O N T ROL_FILES 초기화 매개변수를 사용하여 제어 파일의 이름을 지정합니다. CONTRO L _ F I L E S는 쉼표로 구분된 하나 이상의 제어 파일 이름을 나타냅니다. 인스턴스 시작 프로시저는 나열된 모든 파일을 인식하여엽니다. 인스턴스는 데이터베이스 작업을 하는 동안 모든 나열된 제어 파일을 유지관리합니다.

데이터베이스 작업 중 O ra c l e은 C O N T ROL_FILES 매개변수에 나열된 모든 파일에기록합니다.

서로 다른 디스크 상의 제어 파일 다중화

모든 오라클 데이터베이스는 최소한 서로 다른 디스크에 저장된 두 개의 제어 파일을가지고 있어야 합니다. 디스크 고장으로 인해 제어 파일이 훼손되면 연관된 인스턴스를 종료해야 합니다. 디스크 드라이브가 복구되면 훼손되지 않은 복사본을 사용하여제어 파일을 복원하고 인스턴스를 재시작합니다. 매체 복구는 필요하지 않습니다.

다중화된 제어 파일 기능

다음은 다중화된 제어 파일의 기능을 설명합니다.

■ 데이터베이스 매개변수 파일의 C O N T ROL_FILES 초기화 매개변수에 두 개 이상의 제어 파일을 나열합니다.

■ 데이터베이스 작업 중 O racle 서버는 C O N T ROL_FILES 매개변수에 나열된 첫번째 파일만 읽습니다.

■ 데이터베이스 작업 중 사용할 수 없는 제어 파일이 생기면 인스턴스는 더 이상 작동할 수 없으며 중지해야 합니다.

다중 제어 파일의 유일한 단점은 데이터 파일 추가 또는 데이터베이스 체크포인트 지정과 같이 제어 파일을 갱신하는 시간이 다소 길어진다는 것입니다. 그러나 이러한차이는 중요하지 않으며 특히 다중, 동시 쓰기를 수행할 수 있는 운영 체제의 경우 이로 인해 하나의 제어 파일만을 사용하는 것은 옳지 않습니다.

주의 사항: 오라클사에서는 데이터베이스가 최소한 두 개의 제어 파일을 각기 다른 디스크에 가질 것을 강력히 권합니다.

올바른 제어 파일 배치

제어 파일의 각 복사본을 각기 다른 디스크 드라이브에 저장해야 합니다. 또한 온라인 리두 로그가 다중화되면 온라인 리두 로그 그룹의 멤버를 저장하고 있는 모든 디스크 드라이브에 제어 파일 복사본을 저장해야 합니다. 그러면 모든 제어 파일과 온라인 리두 로그 그룹이 단일 디스크 고장으로 인해 손실될 위험을 최소화할 수 있습니다.

제어 파일의 크기 관리

제어 파일 크기의 주요 결정 요소는 연관된 데이터베이스를 생성하는 C R E AT EDATABASE 문에서 지정한 M A X DATA F I L E S, MAXLOGFILES, MAXLOG-M E M B E R S, MAXLOGHISTORY 및 M A X I N S TANCES 매개변수에 설정된 값입니다. 이러한 매개변수 값을 증가시키면 해당 데이터베이스 제어 파일의 크기가 증가됩니다.

참조: 제어 파일의 최대 크기는 운영 체제마다 다릅니다. 자세한 내용은 사용자 운영체제별 오라클 설명서를 참조하십시오.

제어 파일 생성

모든 오라클 데이터베이스는 제어 파일을 가집니다. 제어 파일은 데이터베이스의 물리적 구조를 기록하고 다음 사항을 포함합니다.

■ 데이터베이스 이름

■ 연관된 데이터베이스와 온라인 리두 로그 파일의 이름 및 위치

■ 데이터베이스 생성 시간 기록

■ 현재 로그 시퀀스 번호

■ 체크포인트 정보

제어 파일 생성

제어 파일 관리 5 - 3

5 - 4 Oracle8i 관리자 설명서

제어 파일 생성

오라클 데이터베이스의 제어 파일은 데이터베이스와 동시에 생성됩니다. 기본적으로데이터베이스를 생성하는 동안 적어도 하나의 제어 파일 복사본이 생성되어야 합니다. 일부 운영 체제에서 O ra c l e은 여러 개의 복사본을 생성합니다. 데이터베이스 관리자는 데이터베이스를 생성하는 동안 두 개 이상의 제어 파일 복사본을 생성해야 합니다. 또한 제어 파일을 손실했거나 제어 파일의 특정 설정값을 변경할 때는 추가 제어 파일을 생성하지 않아도 됩니다.

이 단원에서는 제어 파일 생성 방법과 다음 내용을 다룹니다.

■ 초기 제어 파일 생성

■ 제어 파일의 추가 복사본 생성과 제어 파일 이름 바꾸기 및 위치 재지정

■ 새 제어 파일

■ 새 제어 파일 생성

초기 제어 파일 생성

데이터베이스 생성 중에 사용하는 매개변수 파일의 C O N T ROL_FILES 매개변수에하나 이상의 제어 파일 이름을 지정하여 오라클 데이터베이스 초기 제어 파일을 생성합니다. CONTRO L _ F I L E S에 지정한 파일명은 전체 경로를 포함한 완전한 이름이어야 합니다. 파일명의 사양은 운영 체제마다 다릅니다.

데이터베이스를 생성할 때 지정된 이름을 가진 파일이 있다면 C R E ATE DATA -BASE 문에 C O N T ROLFILE REUSE 매개변수를 지정해야 합니다. 그렇지 않으면오류가 발생합니다. 또한 기존 제어 파일의 크기가 새 파일의 크기와 다르면 R E U S E옵션을 사용할 수 없습니다. 제어 파일의 크기는 제어 파일에 지정된 파일 수가 변경할 때뿐만 아니라 오라클 제품의 버전에 따라서도 달라집니다. 구성 매개변수M A X L O G F I L E S, MAXLOGMEMBERS, MAXLOGHISTORY, MAXDATA -FILES 및 M A X I N S TA N C E S는 제어 파일 크기에 영향을 줍니다.

데이터베이스를 생성하기 전에 C O N T RO L _ F I L E S에 파일명을 지정하지 않으면O ra c l e은 기본 파일명을 사용합니다. 기본 이름 또한 운영 체제마다 다릅니다.

C O N T ROL_FILES 매개변수의 값을 변경하여 제어 파일을 추가하거나 기존 제어파일의 이름 또는 위치를 변경할 수 있습니다.

참조: 제어 파일 지정에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

제어 파일 관리 5 - 5

제어 파일 생성

제어 파일의 추가 복사본 생성과 제어 파일 이름 바꾸기 및 위치 재지정

새 제어 파일을 추가하려면 기존 파일을 새 위치에 복사하고 제어 파일 목록에 파일이름을 추가합니다.

유사한 방법으로 파일을 새 이름 또는 위치에 복사하고 제어 파일 목록에서 파일 이름을 수정하여 기존 제어 파일의 이름을 바꿉니다.

두 경우 모두 수행 과정 동안 제어 파일이 변경되지 않도록 제어 파일을 복사하기 전에 인스턴스를 종료합니다.

현재 제어 파일의 추가 복사본을 다중화하거나 이동하려면 다음과 같이 하십시오.

1 . 데이터베이스를 종료합니다.

2 . 운영 체제 명령어를 사용하여 기존 제어 파일을 다른 위치로 복사합니다.

3 . 데이터베이스 매개변수 파일의 C O N T ROL_FILES 매개변수를 편집하여 새 제어 파일 이름을 추가하거나 기존 제어 파일명을 변경합니다.

4 . 데이터베이스를 재시작합니다.

새 제어 파일

C R E ATE CONTROLFILE 문을 사용하여 새 제어 파일을 생성할 수 있습니다. 이는 다음과 같은 상황에서 권장됩니다.

■ 데이터베이스의 모든 제어 파일이 영구적으로 훼손되었고 제어 파일의 백업이 없는 경우

■ 데이터베이스 이름, MAXLOGFILES, MAXLOGMEMBERS, MAXLOG-H I S T O RY, MAXDATAFILES 및 M A X I N S TA N C E S를 포함하여 원래C R E ATE DATABASE 문에서지정된 영구 데이터베이스 설정값 중 하나를 변경하고자 하는 경우

예를 들어, 분산 환경에서 다른 데이터베이스 이름과 충돌하는 경우 데이터베이스이름을 변경해야 하며, 앞서 언급한 매개변수들의 설정값이 너무 낮게 지정되었을때는 그 중 하나를 변경해야 합니다.

P ROD 데이터베이스(앞서 다른 데이터베이스 이름을 사용한 데이터베이스)의 새 제어 파일을 생성하는 명령문은 다음과 같습니다.

CREATE CONTROLFILESET DATABASE prodLOGFILE GROUP 1 (‘logfile1A‘, ‘logfile1B‘) SIZE 50K,GROUP 2 (‘logfile2A‘, ‘logfile2B‘) SIZE 50K

NORESETLOGSDATAFILE ‘datafile1‘ SIZE 3M, ‘datafile2‘ SIZE 5M

MAXLOGFILES 50MAXLOGMEMBERS 3MAXDATAFILES 200MAXINSTANCES 6ARCHIVELOG;

경고: C R E ATE CONTROLFILE 문은 지정된 데이터 파일과 온라인리두 로그 파일을 훼손시킬 가능성이 있습니다. 파일명을 생략하면 해당 파일의 데이터를 손실하거나 전체 데이터베이스에 대한 액세스 손실이 발생할 수 있습니다. 이 명령어는 주의하여 사용하고 다음 단원의 단계를 수행해야 합니다.

참조: C R E ATE CONTROLFILE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

새 제어 파일 생성

이 단원에서는 새 제어 파일을 생성하는 단계별 지침을 제공합니다.

새 제어 파일을 생성하려면 다음과 같이 하십시오.

1 . 데이터베이스의 모든 데이터 파일과 온라인 리두 로그 파일의 목록을 생성합니다.

데이터베이스 백업에 대한 권장 사항을 수행하고 있다면 데이터베이스의 현재 구조를 반영하는 데이터 파일과 온라인 리두 로그 파일의 목록이 생성되어 있어야합니다.

이러한 목록이 없고 제어 파일이 훼손되어 데이터베이스를 열 수 없다면 데이터베이스를 구성하는 모든 데이터 파일과 온라인 리두 로그 파일의 위치를 지정해야 합니다. 새 제어 파일이 생성되면 5단계에서 지정되지 않은 파일은 복구할 수없습니다. 뿐만 아니라 SYSTEM 테이블스페이스를 구성하는 임의 파일을 생략하면 데이터베이스를 복구할 수 없습니다.

2 . 데이터베이스를 종료합니다.

데이터베이스가 열려 있으면 가능한 보통 우선 순위로 데이터베이스를 종료합니다. 최후 수단을 사용해야 하는 경우에만 I M M E D I ATE 또는 A B O RT 옵션을사용하십시오.

3 . 데이터베이스의 모든 데이터 파일과 온라인 리두 로그 파일을 백업합니다.

4 . 새 인스턴스를 시작합니다. 그러나 데이터베이스를 마운트하거나 열지는 마십시오.

제어 파일 생성

5 - 6 Oracle8i 관리자 설명서

5 . C R E ATE CONTROLFILE 문을 사용하여 데이터베이스에 대한 새 제어 파일을 생성합니다.

새 제어 파일을 생성할 때 제어 파일뿐만 아니라 온라인 리두 로그 그룹도 손실되었다면 RESETLOGS 옵션을 선택합니다. 이 경우 리두 로그의 손실을 복구해야합니다. ( 8단계) 또한 데이터베이스 이름을 바꿨다면 RESETLOGS 옵션을 지정해야 하며 바꾸지 않았으면 NORESETLOGS 옵션을선택합니다.

6 . 오프라인 저장 영역 장치에 새 제어 파일의 백업을 저장합니다.

7 . 데이터베이스의 매개변수 파일을 편집합니다.

C O N T ROL_FILES 매개변수에 5단계와 6단계에서 생성한 모든 제어 파일(백업제어 파일은 제외)을 나타내도록 데이터베이스의 매개변수 파일을 편집합니다.

8 . 필요하다면 데이터베이스를 복구합니다.

복구의 일부로 제어 파일을 생성 중이라면 데이터베이스를 복구합니다. NO-RESETLOGS 옵션을 사용하여 새 제어 파일을 생성했다면( 5단계) 완전 폐쇄 데이터베이스 복구를 사용하여 데이터베이스를 복구할 수 있습니다.

RESETLOGS 옵션을 사용하여 새 제어 파일을 생성했다면 USING BAC K U PC O N T ROL FILE을 지정해야 합니다. 온라인 또는 아카이브된 리두 로그나 데이터 파일이 손실되었다면 해당 파일을 복구하는 절차를 사용합니다.

9 . 데이터베이스를 엽니다.

다음 방법 중 하나를 사용하여 데이터베이스를 여십시오.

■ 복구하지 않았다면 데이터베이스를 정상적으로 엽니다.

■ 8단계에서 닫힌 데이터베이스 복구를 수행했다면 데이터베이스를 시작합니다.

■ 제어 파일을 생성할 때 R E S E T L O G S를 지정했다면 R E S E T L O G S를 나타내는A LTER DATABASE 문을 사용합니다.

이제 데이터베이스가 열려 사용할 수 있습니다.

참조: 다음에 대한 자세한 내용은 O racle8i Backup and Recovery Guide를참조하십시오.

■ 데이터베이스 파일 나열

■ 데이터베이스의 모든 데이터 파일과 온라인 리두 로그 파일 백업

■ 온라인 리두 로그 파일 또는 아카이브된 리두 로그 파일 복구

■ 닫힌 데이터베이스 복구

제어 파일 생성

제어 파일 관리 5 - 7

5 - 8 Oracle8i 관리자 설명서

제어 파일 생성 후 문제 해결

제어 파일 생성 후 문제 해결

C R E ATE CONTROLFILE 문을 실행한 후 몇 가지 일반적인 오류가 발생할 수 있습니다. 이 단원에서는 가장 일반적인 제어 파일 사용 오류와 다음 내용을 다룹니다.

■ 누락 또는 여분 파일 확인

■ C R E ATE CONTROLFILE 실행동안 오류 처리

누락 또는 여분 파일 확인

새 제어 파일을 생성하거나 사용하여 데이터베이스를 연 후, ALERT 로그를 확인하여 O ra c l e이 데이터 딕셔너리에는 포함되지만 제어 파일에는 나열되지 않는 데이터파일 같은 데이터 딕셔너리와 제어 파일 간의 불일치를 감지했는지 알아봅니다.

데이터 파일이 데이터 딕셔너리에는 있지만 새 제어 파일에는 없다면 O ra c l e은M I S S I N G n n n n ( n n n n은 십진수로 된 파일 번호)이라는 이름으로 제어 파일에 위치표시자 입력 항목을 생성합니다. MISSINGnnnn은 제어 파일에서 오프라인으로 설정되어 매체 복구를 요구하는 상태로 표시됩니다.

다음의 두 가지 경우에만 M I S S I N G n n n n의 이름을 바꿔 해당 데이터 파일을 표시하여 실제 데이터 파일을 액세스하게 됩니다.

경우 1 : C R E ATE CONTROLFILE 문에 NORESETLOGS 옵션을 사용하여 새제어 파일을 생성하면 RESETLOGS 옵션 없이 데이터베이스를 열 수 있습니다. 이작업은 모든 리두 로그를 사용할 수 있는 경우에만 가능합니다.

경우 2 : C R E ATE CONTROLFILE 문에 RESETLOGS 옵션을 사용한 경우RESETLOGS 옵션으로 데이터베이스를 열어야 합니다. 그러나 M I S S I N G n n n n에해당하는 실제 데이터 파일은 읽기 전용 또는 정상 오프라인입니다.

한편 RESETLOGS 옵션을 사용하여 데이터베이스를 여는 것이 필수이며,M I S S I N G n n n n이 읽기 전용 또는 정상 오프라인이 아닌 데이터 파일에 해당된다면데이터 파일에서 RESETLOGS 결과에 의해 차단된 매체 복구를 요구하므로 이름을바꿔 해당 데이터 파일을 액세스할 수 없습니다. 이 경우 데이터 파일을 포함하는 테이블스페이스는 삭제되어야 합니다.

반대로 제어 파일에 나타난 데이터 파일이 데이터 딕셔너리에 없으면 O ra c l e은 새 제어 파일로부터 이에 대한 모든 참조 사항을 제거합니다. 두 경우 모두 O ra c l e은 상황

제어 파일 관리 5 - 9

제어 파일 삭제

을 설명하는 메시지를 A L E RT 파일에 남깁니다.

C R E ATE CONTROLFILE 실행 동안 오류 처리

새 제어 파일을 생성한 후 데이터베이스를 마운트하거나 열 때 O ra c l e이 오류 메시지(일반적으로 오류 ORA-01173, ORA-01176, ORA-01177, ORA-01215 또는O R A - 0 1 2 1 6 )를 보낸다면 가장 유력한 원인은 C R E ATE CONTROLFILE 문에서파일을 생략했거나 나열하면 안되는 파일을 포함시켰기 때문입니다. 이 경우 3단계에서 백업한 파일로 복구하고 올바른 파일명을 사용하여 4단계부터 반복해야 합니다.

제어 파일 삭제

데이터베이스로부터 제어 파일을 삭제할 수 있습니다. 예를 들어, 제어 파일의 위치가 적합하지 못한 경우입니다. 데이터베이스에는 항상 최소한 두 개의 제어 파일이있어야 합니다.

1 . 데이터베이스를 종료합니다.

2 . 데이터베이스 매개변수 파일의 C O N T ROL_FILES 매개변수를 편집하여 기존제어 파일 이름을 삭제합니다.

3 . 데이터베이스를 재시작합니다.

경고: 이 작업은 디스크에서 원하지 않는 제어 파일을 실제로 제거하지는 않습니다. 데이터베이스로부터 제어 파일을 삭제한 후 운영 체제 명령어를 사용하여 디스크에서 불필요한 파일을 제거해야 합니다.

제어 파일 삭제

5 - 1 0 Oracle8i 관리자 설명서

온라인 리두 로그 관리 6 - 1

6온라인 리두 로그 관리

이 장에서는 온라인 리두 로그 관리 방법을 설명하며 다음 내용을 다룹니다.

■ 온라인 리두 로그란

■ 온라인 리두 로그 계획

■ 온라인 리두 로그 그룹 및 멤버 생성

■ 온라인 리두 로그 멤버의 이름 바꾸기 및 위치 재지정

■ 온라인 리두 로그 그룹 및 멤버 삭제

■ 로그 스위치 강제 시행

■ 리두 로그 파일의 블록 검증

■ 온라인 리두 로그 파일 지우기

■ 온라인 리두 로그에 대한 정보 나열

참조: O racle Pa rallel Serv e r를 사용할 경우 인스턴스의 온라인 리두 로그 관리에 대한내용은 O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

체크포인트와 리두 로그가 인스턴스 복구에 주는 영향에 대한 자세한 내용은 O ra c l e 8 iT u n i n g을 참조하십시오.

6 - 2 Oracle8i 관리자 설명서

온라인 리두 로그란

온라인 리두 로그란

복구 작업에 가장 어려운 구조인 온라인 리두 로그는 데이터베이스에 발생한 모든 변경 내용을 저장하는 두 개 이상의 미리 할당된 파일로 구성됩니다. 오라클 데이터베이스의 모든 인스턴스에는 인스턴스 실패로부터 데이터베이스를 보호하는 연관된 온라인 리두 로그가 있습니다.

주: 오라클사에서는 온라인 리두 로그 백업은 권장하지 않습니다.

리두 스레드

각 데이터베이스 인스턴스는 자신의 온라인 리두 로그 그룹을 가집니다. 이러한 온라인 리두 로그 그룹은 다중화에 관계없이 온라인 리두의 인스턴스 스레드라고 합니다.일반 구성에서는 하나의 데이터베이스 인스턴스만 오라클 데이터베이스에 액세스할수 있으므로 하나의 스레드만 있습니다. 그러나 O racle Pa rallel Serv e r를 실행하면두 개 이상의 인스턴스가 하나의 데이터베이스에 액세스할 수 있습니다. 각 인스턴스는 자신의 스레드를 가집니다.

이 장에서는 O racle Pa rallel Serv e r를 사용하지 않는 경우 온라인 리두 로그를 구성하고 관리하는 방법에 대해 설명합니다. 따라서 모든 설명과 명령어의 예에서 스레드의 개수를 하나라고 가정합니다.

참조: O racle Pa rallel Serv e r로 온라인 리두 로그를 구성하는 방법은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

온라인 리두 로그 내용

온라인 리두 로그 파일은 리두 레코드로 채워집니다. 리두 입력 항목이라고도 하는리두 레코드는 변경 벡터 그룹으로 구성되며 각 변경 벡터에는 데이터베이스의 단일블록에 작성된 변경 내용에 대한 설명이 있습니다. 예를 들어, 관리자가 사원 테이블에 있는 급여 값을 변경하면 해당 테이블에 대한 데이터 세그먼트 블록, 롤백 세그먼트 데이터 블록 및 롤백 세그먼트의 트랜잭션 테이블의 변경 내용을 설명하는 변경벡터를 포함하는 리두 레코드를 생성합니다.

리두 입력 항목은 롤백 세그먼트를 포함해 데이터베이스의 변경 내용을 다시 구성하는데 사용할 수 있는 데이터를 기록합니다. 따라서 온라인 리두 로그는 롤백 데이터를 보호해 줍니다. 리두 데이터를 사용하여 데이터베이스를 복구하면 O ra c l e은 해당리두 레코드에 있는 변경 벡터를 읽어 관련 블록에 변경 내용을 적용합니다.

리두 레코드는 S GA의 리두 로그 버퍼에 순환 방식으로 넣어지며 O racle 백그라운드프로세스 로그 기록자( L GW R )에 의해 온라인 리두 로그 파일 중 하나에 기록됩니다.트랜잭션이 커밋될 때마다 L GW R은 S GA의 리두 로그 버퍼로부터 트랜잭션 리

두 레코드를 온라인 리두 로그 파일에 기록하고 시스템 변경 번호( S C N )가 커밋된 각트랜잭션에 대해 리두 레코드를 식별하도록 지정됩니다. 주어진 트랜잭션과 연관된모든 리두 레코드가 온라인 로그의 디스크 상에서 안전한 상태인 경우에만 사용자 프로세스에 해당 트랜잭션이 커밋되었음을 통보합니다.

리두 레코드는 해당 트랜잭션이 커밋되기 전에 온라인 리두 로그 파일에 기록될 수도있습니다. 리두 로그 버퍼가 채워지거나 다른 트랜잭션이 커밋되면 일부 리두 레코드가 커밋되지 않은 경우에도 L GW R은 리두 로그 버퍼에 있는 모든 리두 로그 입력 항목을 온라인 리두 로그 파일로 비웁니다. 필요한 경우 O ra c l e은 이러한 변경 내용을롤백할 수 있습니다.

O ra c l e의 온라인 리두 로그 기록 방법

데이터베이스의 온라인 리두 로그는 두 개 이상의 온라인 리두 로그 파일로 구성됩니다. Ora c l e은 한 파일이 아카이브되는 동안( A RCHIVELOG 모드인 경우) 다른 파일에 항상 기록할 수 있도록 최소한 두 개의 파일을 필요로 합니다.

L GW R은 온라인 리두 로그 파일에 순환 방식으로 기록합니다. 즉, 현재 온라인 리두로그 파일이 채워지면 L GW R은 다음으로 사용 가능한 온라인 리두 로그 파일에 기록을 시작합니다. 마지막으로 사용 가능한 온라인 리두 로그 파일이 채워지면L GW R은 첫 번째 온라인 리두 로그 파일로 복귀하여 기록하고 순환을 다시 시작합니다. 그림 6 - 1은 온라인 리두 로그 파일의 순환 기록 방식을 설명합니다. 각 행 옆에 있는 숫자는 L GW R이 각 온라인 리두 로그 파일에 기록하는 순서를 나타냅니다.

채워진 온라인 리두 로그 파일은 아카이브 기능 활성화 여부에 따라 L GW R이 재사용할 수 있습니다.

■ 아카이브 기능이 비활성화된( N OA RCHIVELOG 모드) 경우 채워진 온라인 리두로그 파일은 기록된 변경 내용이 데이터 파일에 기록되면 사용할 수 있습니다.

■ 아카이브 기능이 활성화된( A RCHIVELOG 모드) 경우 채워진 온라인 리두 로그파일은 기록된 변경 내용이 데이터 파일에 기록되고 그 파일이 아카이브되면L GW R이 사용할 수 있습니다.

온라인 리두 로그 관리 6 - 3

온라인 리두 로그란

그림 6-1 LGWR에의한 온라인 리두 로그 파일의 순환 사용

활성(현재) 및 비활성 온라인 리두 로그 파일

O ra c l e은 항상 온라인 리두 로그 파일 중 하나만 사용하여 리두 로그 버퍼로부터 기록된 리두 레코드를 저장합니다. LGW R이 기록하고 있는 온라인 리두 로그 파일을현재 온라인 리두 로그 파일이라고 합니다.

인스턴스 복구 시 필요한 온라인 리두 로그 파일은 활성 온라인 리두 로그 파일이라고 합니다. 인스턴스 복구 시 필요하지 않은 파일은 비활성 온라인 리두 로그 파일이라고 합니다.

아카이브 기능이 활성화된 경우 O ra c l e은 A RC n이 파일 내용을 아카이브할 때까지활성 온라인 로그 파일을 재사용하거나 겹쳐쓸 수 없습니다. 아카이브 기능이 비활성화된 경우 마지막 온라인 리두 로그 파일이 채워지면 첫 번째 사용 가능 활성 파일을겹쳐 쓰면서 계속 기록합니다.

6 - 4 Oracle8i 관리자 설명서

온라인 리두 로그란

L G W R

온라인 리두로그 파일 # 1

온라인 리두로그 파일 # 2

온라인 리두로그 파일 # 3

1 , 4 , 7 ,…

2 , 5 , 8 ,…

3 , 6 , 9 ,…

로그 스위치 및 로그 시퀀스 번호

로그 스위치란 O ra c l e이 하나의 온라인 리두 로그 파일에 쓰기를 종료하고 다른 파일에 쓰기를 시작하는 시점입니다. 로그 스위치는 항상 현재 온라인 리두 로그 파일이완전히 채워지고 쓰기 작업이 다음 온라인 리두 로그 파일에 계속되어야 하는 경우발생합니다. 로그 스위치를 수동으로 강제 시행할 수도 있습니다.

O ra c l e은 로그 스위치가 발생하고 L GW R이 쓰기 시작할 때마다 각 온라인 리두 로그 파일에 새 로그 시퀀스 번호를 할당합니다. Ora c l e이 온라인 리두 로그 파일을 아카이브하면 그 아카이브된 로그는 로그 시퀀스 번호를 보유하게 됩니다. 사용을 위해다시 순환되는 온라인 리두 로그 파일은 다음 사용 가능한 로그 시퀀스 번호가 부여됩니다.

각 온라인 또는 아카이브된 리두 로그 파일은 자신의 로그 시퀀스 번호로 고유하게식별됩니다. 고장, 인스턴스 또는 매체 복구 중에 O ra c l e은 필요한 아카이브된 리두로그 파일과 온라인 리두 로그 파일의 로그 시퀀스 번호를 사용하여 오름차순으로 리두 로그 파일을 적절하게 적용합니다.

온라인 리두 로그 계획

이 단원에서는 데이터베이스 인스턴스의 온라인 리두 로그를 구성할 때 고려해야 할지침 사항과 다음 내용을 다룹니다.

■ 온라인 리두 로그 파일 다중화

■ 다른 디스크에 온라인 리두 로그 멤버 저장

■ 온라인 리두 로그 멤버의 크기 설정

■ 온라인 리두 로그 파일 수 선택

온라인 리두 로그 파일 다중화

O ra c l e은 인스턴스의 온라인 리두 로그 파일이 손실되는 것을 막기 위해 인스턴스의온라인 리두 로그 파일을 다중화하는 기능을 제공합니다. 온라인 리두 로그 파일을다중화할 때 L GW R은 동일한 리두 로그 정보를 여러 개의 동일 온라인 리두 로그 파일에 기록하여 단일 지점의 리두 로그 실패로부터 손실을 막아줍니다

주: 오라클사에서는 리두 로그 파일을 다중화할 것을 권장합니다. 복구가 필요한 경우 로그 파일 데이터가 손실되면 치명적일 수 있습니다.

온라인 리두 로그 관리 6 - 5

온라인 리두 로그 계획

그림 6-2 다중화된 온라인 리두 로그 파일

대응 온라인 리두 로그 파일을 그룹이라 하고 그룹의 각 온라인 리두 로그 파일은 멤버라 합니다. 그림 6 - 2에서 A _ L O G 1과 B _ L O G 1은 그룹 1의 멤버이고 A _ L O G 2와B _ L O G 2는 그룹 2의 멤버입니다. 그룹의 각 멤버는 정확히 동일한 크기여야 합니다.

그룹의 각 멤버는 L GW R에 의해 할당된 동일 로그 시퀀스 번호로 표시되므로 동시에 활성화되거나 L GW R에 의해 동시에 기록됩니다. 그림 6 - 2에서 L GW R은 먼저B _ L O G 1과 함께 A _ L O G 1에 기록한 다음 B - L O G 2와 함께 A _ L O G 2에 기록합니다.L GW R은 다른 그룹의 멤버(예를 들어, A_LOG1과 B _ L O G 2 )에 동시에 기록하지않습니다.

온라인 리두 로그 실패에 대한 응답

L GWR 그룹의 멤버에 기록할 수 없을 때마다 O ra c l e은 해당 멤버를 못 쓰게 됨으로표시하고 L GWR 추적 파일과 데이터베이스의 경고 파일에 오류 메시지를 기록하여액세스할 수 없는 파일의 문제를 나타냅니다. LGW R은 임의의 온라인 리두 로그 멤버를 사용할 수 없을 때 그 원인에 따라 다르게 반응합니다.

6 - 6 Oracle8i 관리자 설명서

온라인 리두 로그 계획

디스크A

A _ L O G 1

L G W R

A _ L O G 2

디스크B

B _ L O G 1

B _ L O G 2

그룹 1

그룹 2

그룹 1

그룹 2

1 , 3 , 5 ,…

2 , 4 , 6 ,…

올바른 구성과 잘못된 구성

단일 지점의 온라인 리두 로그 실패로부터 손실을 막기 위해 다중화된 온라인 리두로그는 이상적인 대칭 구조입니다. 즉, 온라인 리두 로그의 모든 그룹은 동일한 수의멤버를 가집니다. 그러나 O ra c l e에서 다중화된 온라인 리두 로그는 대칭 구조가 아니어도 됩니다. 예를 들어, 다른 그룹은 두 멤버를 가지는데 한 그룹은 한 멤버만을 가질 수 있습니다. 이러한 구성은 일부 온라인 리두 로그 멤버에는 일시적으로 영향을주지만 다른 멤버는 손상시키지 않는 디스크 고장으로부터 보호해 줍니다.

인스턴스의 온라인 리두 로그에 대한 유일한 요구 사항은 적어도 두 그룹을 가져야한다는 것입니다. 그림 6 - 3은 다중화된 온라인 리두 로그의 올바른 구성과 잘못된 구성을 보여줍니다. 두 번째 구성은 한 그룹만 가지므로 잘못된 구성입니다.

온라인 리두 로그 관리 6 - 7

온라인 리두 로그 계획

상태

L G W R이 적어도 하나의 그룹 멤버에 기록할 수 있

는 경우

그룹이 아카이브되어야 하기 때문에 로그 스위치

에서 L G W R이 다음 그룹을 액세스할 수 없는 경우

L G W R이 매체 고장 때문에 로그 스위치에서 다음

그룹의 모든 멤버를 액세스할 수 없는 경우

L G W R이 그룹의 멤버에 기록하고 있는 동안 모든

멤버를 갑자기 액세스할 수 없게 된 경우

반응

정상적으로 기록을 진행합니다. LGWR은 그룹의

사용 가능한 멤버에 기록하고 사용 불가능한 멤버

는 무시합니다.

데이터베이스 작업이 해당 그룹을 사용할 수 있을

때까지 또는 그룹이 아카이브될 때까지 일시적으로

중지합니다.

O r a c l e은 오류를 돌려주고 데이터베이스 인스턴스

는 종료됩니다. 이 경우 관리자는 온라인 리두 로그

파일의 손실로부터 데이터베이스에 대한 매체 복구

를 수행해야 할 수도 있습니다.

데이터베이스 체크포인트가 손실된 리두 로그(이

예에서 현재 로그는 아님) 다음에 발생했다면

O r a c l e이 리두 로그에 기록된 데이터를 데이터 파

일에 저장했으므로 매체 복구는 필요하지 않습니

다. 액세스할 수 없는 리두 로그 그룹을 삭제하면

됩니다. Oracle이 잘못된 로그를 아카이브하지 않

은 경우 ALTER DATABASE CLEAR UNARCHI-

VED LOG를 사용하여 해당 로그를 삭제하기 전에

아카이브 기능을 비활성화 합니다.

O r a c l e은 오류를 돌려주고 데이터베이스 인스턴스

는 즉시 종료됩니다. 이 경우 관리자는 매체 복구를

수행해야 할 수도 있습니다. 로그를 포함한 매체가

실제로 손실되지 않은 경우 (예를 들어, 로그에 대

한 드라이브를 실수로 끈 경우) 매체 복구를 수행할

필요가 없습니다. 이 경우 해당 드라이브를 다시 켜

고 O r a c l e이 인스턴스 복구를 수행하도록 하면 됩

니다.

그림 6-3 다중화된 온라인 리두 로그의 올바른 구성과 잘못된 구성

6 - 8 Oracle8i 관리자 설명서

온라인 리두 로그 계획

디스크A

A _ L O G 1

A _ L O G 2

A _ L O G 3

그룹 1

그룹 2

그룹 3

그룹 1

그룹 2

그룹 3

디스크B

B _ L O G 1

B _ L O G 2

B _ L O G 3

올바른 구성

디스크A

A _ L O G 1그룹 1

그룹 2

그룹 3

디스크B

B _ L O G 1

잘못된 구성

다른 디스크에 온라인 리두 로그 멤버 저장

다중화된 온라인 리두 로그를 설정할 때 그룹의 멤버를 서로 다른 디스크에 저장합니다. 그러면 단일 디스크가 고장나도 L GW R은 그룹의 한 멤버를 제외한 나머지 멤버는 액세스할 수 있으므로 인스턴스가 계속 작동할 수 있습니다.

리두 로그를 아카이브할 경우 온라인 리두 로그 멤버를 여러 디스크에 분산시켜 백그라운드 프로세스 L GW R과 A RCn 간의 경합을 제거합니다. 예를 들어, 두 개의 이중 온라인 리두 로그 멤버 그룹이 있다면 서로 다른 디스크에 각각의 멤버를 저장하고 아카이브 대상을 다섯 번째 디스크로 설정합니다. 이렇게 하면 L GW R (멤버에 쓰기)과 A RC n (멤버 읽기) 간에 경합이 없습니다.

데이터 블록과 리두 레코드를 기록할 때 경합을 줄이려면 데이터 파일과 온라인 리두로그 파일이 서로 다른 디스크에 있어야 합니다.

참조: 온라인 리두 로그가 백업 및 복구에 주는 영향에 대한 자세한 내용은 O ra c l e 8 iBackup and Recovery Guide를참조하십시오.

온라인 리두 로그 멤버의 크기 설정

온라인 리두 로그 파일의 크기를 설정할 때는 리두 로그의 아카이브 여부를 고려해야합니다. 매체의 사용되지 않은 최소 공간을 사용하여 채워진 그룹이 단일 오프라인저장 매체(테이프 또는 디스크)에 아카이브될 수 있도록 온라인 리두 로그 파일의 크기를 지정해야 합니다. 예를 들어, 테이프당 채워진 온라인 리두 로그 그룹을 하나만저장할 수 있고 테이프 저장 용량의 4 9 %가 사용되지 않았다고 합시다. 이 경우에는온라인 리두 로그 파일의 크기를 약간 감소시켜 테이프당 두 개의 로그 그룹을 저장할 수 있도록 하는 것이 좋습니다.

온라인 리두 로그의 다중화된 그룹의 경우 동일 그룹의 멤버는 동일한 크기여야 합니다. 서로 다른 그룹의 멤버는 서로 다른 크기를 가질 수 있으나 그룹 간에 파일 크기를 다르게 하는 것은 아무런 이점이 없습니다. 체크포인트가 로그 스위치 사이에 발생하도록 설정하지 않았다면 체크포인트가 일정한 간격으로 발생하도록 모든 그룹의크기를 동일하게 합니다.

참조: 온라인 리두 로그 파일의 기본 크기는 운영 체제마다 다릅니다. 자세한 내용은사용자 운영 체제별 오라클 설명서를 참조하십시오.

온라인 리두 로그 파일 수 선택

데이터베이스 인스턴스에 대해 적당한 온라인 리두 로그 파일 수를 결정하는 가장 좋은 방법은 서로 다른 구성을 검사하는 것입니다. LGW R의 리두 로그 정보 쓰기를 방

온라인 리두 로그 관리 6 - 9

온라인 리두 로그 계획

해하지 않고 가능한 최소 그룹을 두는 것이 최적의 구성입니다.

어떤 경우 데이터베이스 인스턴스는 두 개의 그룹만을 요구할 수 있습니다. 다른 경우 데이터베이스 인스턴스는 L GW R이 순환 그룹을 항상 사용할 수 있도록 하기 위해 추가 그룹을 요구할 수도 있습니다. 검사 시 현재 온라인 리두 로그 구성이 만족스러운지의 여부를 결정하는 가장 쉬운 방법은 L GWR 추적 파일 및 데이터베이스 경고 로그의 내용을 점검하는 것입니다. 체크포인트가 완료되지 않았거나 그룹이 아카이브되지 않아 L GW R이 그룹을 자주 기다려야 한다는 메시지가 나타나면 그룹을 추가합니다.

인스턴스의 온라인 리두 로그 구성을 설정하거나 변경하기 전에 온라인 리두 로그 파일 수를 제한할 수 있는 매개변수를 고려하십시오. 데이터베이스에 추가할 수 있는온라인 리두 로그 파일 수를 제한하는 세 개의 매개변수는 다음과 같습니다.

■ C R E ATE DATABASE 문에서 사용되는 MAXLOGFILES 매개변수는 데이터베이스당 온라인 리두 로그 파일 그룹의 최대 수를 결정합니다. 그룹 값의 범위는 1에서 MAXLOGFILES 사이입니다. 이상위 한계를 무효화하는 유일한 방법은 데이터베이스 또는 제어 파일을 재생성하는 것입니다. 따라서 데이터베이스를 생성하기 전에이 한계를고려해야합니다. CREATE DATABASE 문에M A X L O G F I L E S를 지정하지 않으면 O ra c l e은 운영 체제별 기본값을 사용합니다.

■ 매개변수 파일의 LOG_FILES 초기화 매개변수는 현재 인스턴스 지속 기간 동안온라인 리두 로그 파일 그룹의 최대 수를 일시적으로 감소시킬 수 있습니다. 그러나 L O G _ F I L E S가 M A X L O G F I L E S를 무효화하여 한계를 증가시킬 수는 없습니다. LOG_FILES가 데이터베이스 매개변수 파일에 설정되어 있지 않으면O ra c l e은 운영 체제별 기본값을 사용합니다.

■ C R E ATE DATABASE 문에서 사용되는 MAXLOGMEMBERS 매개변수는 그룹당 최대 멤버 수를 결정합니다. MAXLOGFILES와같이 이 상위 한계를 무효화하는 유일한 방법은 데이터베이스 또는 제어 파일을 재생성하는 것입니다. 따라서 데이터베이스를 생성하기 전에 이 한계를 고려해야 합니다. CREATE DATA -BASE 문에 MAXLOGMEMBERS 매개변수를 지정하지 않으면 O ra c l e은 운영체제 기본값을 사용합니다.

참조: M A X L O G F I L E S와 MAXLOGMEMBERS 매개변수 및 LOG_FILES 초기화 매개변수의 기본값과 올바른 값에 대한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

6 - 1 0 Oracle8i 관리자 설명서

온라인 리두 로그 계획

온라인 리두 로그 그룹 및 멤버 생성

데이터베이스 생성 도중 또는 이후에 온라인 리두 로그 파일의 그룹과 멤버를 만들 수있습니다. 데이터베이스의온라인 리두 로그 계획을 세워 데이터베이스 생성에 필요한온라인 리두 로그 파일의 그룹과 멤버를 모두 생성합니다. 새로운 온라인 리두 로그그룹과 멤버를 생성하려면 A LTER DATABASE 시스템권한이 있어야 합니다.

어떤 경우에는 온라인 리두 로그 파일의 그룹과 멤버를 추가로 만들어야 할 수도 있습니다. 예를 들어, 온라인 리두 로그에 그룹을 추가하여 리두 로그 그룹의 가용성 문제를 해결할 수 있습니다. 데이터베이스는 최대 MAXLOGFILES 그룹을 가질 수있습니다.

온라인 리두 로그 그룹 생성

SQL 문 A LTER DATA B A S E에 ADD LOGFILE 매개변수를 사용하여 새 온라인리두 로그 파일 그룹을 생성합니다.

데이터베이스에 새 리두 로그 그룹을 추가하는 명령문은 다음과 같습니다.

ALTER DATABASE ADD LOGFILE (‘/oracle/dbs/log1c.rdo’, ‘/oracle/dbs/lo- g2c.rdo’) SIZE 500K;

주: 새 로그 멤버의 전체 경로를 포함한 파일명을 지정하여 운영 체제파일이 생성될 위치를 나타냅니다. 그렇지 않으면 파일은 데이터베이스서버의 기본 디렉토리에 작성되며 이 기본 디렉토리는 운영 체제마다다릅니다. 기존 운영 체제 파일을 재사용하려면 파일 크기를 지정하지않아도 됩니다.

A LTER DATABASE 문에 ADD LOGFILE 옵션을 사용하여 G ROUP 옵션과 그룹을 식별하는 번호를 지정할 수 있습니다.

ALTER DATABASE ADD LOGFILE GROUP 10 (‘/oracle/dbs/log1c.rdo’, ’/oracle/dbs/log2c.rdo‘)SIZE 500K;

그룹 번호를 사용하여 리두 로그 그룹을 보다 쉽게 관리할 수 있습니다. 그러나 그룹번호는 1과 MAXLOGFILES 사이여야 합니다. 리두 로그 파일 그룹 번호를 건너뛰면 안됩니다. (즉, 10, 20, 30 등으로그룹 번호를 지정하지 마십시오.) 그렇지 않으면 데이터베이스 제어 파일의 영역이 소모됩니다.

온라인 리두 로그 멤버 생성

어떤 경우 완전한 온라인 리두 로그 파일 그룹을 만들지 않아도 됩니다. 그룹이 이미있지만 예를 들어, 디스크 고장으로 인해 하나 이상의 그룹 멤버가 삭제되어 완전하

온라인 리두 로그 관리 6 - 1 1

온라인 리두 로그 그룹 및 멤버 생성

지 않을 수도 있습니다. 이 경우에는 기존 그룹에 새 멤버를 추가할 수 있습니다.

SQL 문 A LTER DATA B A S E에 ADD LOG MEMBER 매개변수를 사용하여 기존 그룹에 대한 새 온라인 리두 로그 멤버를 생성합니다.

리두 로그 그룹 번호 2에 새 리두 로그 멤버를 추가하는 명령문은 다음과 같습니다.

ALTER DATABASE ADD LOGFILE MEMBER ‘/oracle/dbs/log2b.rdo’ TO GROUP 2;

파일명은 지정해야 하지만 크기는 지정할 필요가 없습니다. 새 멤버 크기는 그룹의기존 멤버 크기에 의해 결정됩니다.

A LTER DATABASE 명령어를사용할 때 다음 예처럼 TO 매개변수에 그룹의 다른멤버를 지정하는 방법으로 대상 그룹을 식별할 수도 있습니다.

ALTER DATABASE ADD LOGFILE MEMBER ‘/oracle/dbs/log2c.rdo’ TO (‘/oracle/dbs/log2a.rdo’, ‘/oracle/dbs/log2b.rdo’);

주: 새 로그 멤버의 경로명을 포함한 전체 파일명을 지정하여 운영 체제 파일이 생성될 위치를 나타냅니다. 그렇지 않으면 파일은 데이터베이스 서버의 기본 디렉토리에 작성됩니다.

온라인 리두 로그 멤버의 이름 바꾸기 및 위치 재지정

온라인 리두 로그 멤버의 이름을 바꿔 위치를 변경할 수 있습니다. 이러한 절차는 예를 들어, 현재 일부 온라인 리두 로그 파일에 의해 사용되는 디스크를 제거하거나 데이터 파일과 많은 온라인 리두 로그 파일이 동일한 디스크에 저장되어 있어 경합을줄이기 위해 분리할 때 필요합니다.

온라인 리두 로그 멤버의 이름을 바꾸려면 A LTER DATABASE 시스템 권한이 있어야 합니다. 또한 원하는 위치에 파일을 복사하는 운영 체제 권한 및 데이터베이스를 열고 백업하는 권한도 필요합니다.

온라인 리두 로그 멤버의 이름을 바꾸기 전에 먼저 새 온라인 리두 로그 파일이 있는지 확인하십시오.

경고: 다음 단계는 데이터베이스 제어 파일의 내부 파일 포인터만을 수정하며 실제 운영 체제 파일의 이름을 바꾸거나 만들지는 않습니다. 컴퓨터의 운영 체제를 사용하여 기존 온라인 리두 로그 파일을 새 위치에복사해야 합니다.

6 - 1 2 Oracle8i 관리자 설명서

온라인 리두 로그 멤버의 이름 바꾸기 및 위치 재지정

온라인 리두 로그 멤버의 이름을 바꾸려면 다음과 같이 하십시오.

1 . 데이터베이스를 백업합니다.

온라인 리두 로그 멤버의 이름 바꾸기 또는 위치 재지정과 같은 데이터베이스의구조적인 변경을 수행하기 전에 작업을 수행하는 동안 문제가 발생할 경우를 대비하여 제어 파일을 포함하여 데이터베이스를 완전하게 백업합니다.

2 . 온라인 리두 로그 파일을 새 위치로 복사합니다.

온라인 리두 로그 멤버와 같은 운영 체제 파일은 운영 체제 명령어로 복사해야합니다. 파일 복사에 대한 자세한 내용은 사용자 운영 체제별 설명서를 참조하십시오.

주: S Q L * P l u s를 종료하지 않은 채 HOST 명령어를 사용하여 파일을복사하는 운영 체제 명령어를 실행할 수 있습니다.

3 . 온라인 리두 로그 멤버의 이름을 바꿉니다.

A LTER DATABASE 문에R E NAME FILE 절을 사용하여 데이터베이스의 온라인 리두 로그 파일의 이름을 바꿉니다.

4 . 정상적으로 작동하도록 데이터베이스를 엽니다.

온라인 리두 로그 변경 내용은 다음 데이터베이스가 열릴 때 반영됩니다. 데이터베이스를 열려면 현재 인스턴스를 종료하거나 (데이터베이스가 현재 인스턴스에의해 열려 있는 경우) 현재 인스턴스를 사용하고 있는 데이터베이스를 엽니다.

5 . 제어 파일을 백업합니다.

예방책으로 일련의 온라인 리두 로그 파일의 이름을 바꾸거나 위치를 재지정한후 즉시 데이터베이스의 제어 파일을 백업합니다.

다음은 온라인 리두 로그 멤버의 이름을 바꾸는 예입니다. 그러나 먼저 다음 상황을가정합니다.

■ 데이터베이스가현재인스턴스에의해마운트되어있지만 닫혀있습니다.

■ 로그 파일은 d i s k a와 d i s k b라는 두 디스크에 있습니다.

■ 온라인 리두 로그는 이중화되어 있습니다. 한 그룹은 멤버 / d i s k a / l o g s/ l o g 1 a . r d o와 / d i s k b / l o g s / l o g 1 b . r d o로, 두 번째 그룹은 멤버 /diska /logs/ l o g 2 a . r d o와 / d i s k b / l o g s / l o g 2 b . r d o로 구성됩니다.

온라인 리두 로그 관리 6 - 1 3

온라인 리두 로그 멤버의 이름 바꾸기 및 위치 재지정

■ d i s k a에 저장한 온라인 리두 로그 파일의 위치를 d i s k c로 재지정해야 합니다. 새파일 이름은 새 위치 / d i s k c / l o g s / l o g 1 c . r d o와 / d i s k c / l o g s / l o g 2 c . r d o를 반영합니다.

d i s k a의 / d i s k a / l o g s / l o g 1 a . r d o와 / d i s k a / l o g s / l o g 2 a . r d o 파일을 d i s k c의 새파일 / d i s k c / l o g s / l o g 1 c . r d o와 / d i s k c / l o g s / l o g 2 c . r d o로 복사해야 합니다.

ALTER DATABASE RENAME FILE ‘/diska/logs/log1a.rdo’, ‘/diska/logs/log2a.rdo’ TO‘/diskc/logs/log1c.rdo’, ‘/diskc/logs/log2c.rdo’;

온라인 리두 로그 그룹 및 멤버 삭제

어떤 경우에는 전체 온라인 리두 로그 멤버 그룹을 삭제하고자 할 수도 있습니다. 예를 들어, 인스턴스의 온라인 리두 로그에 있는 그룹 수를 줄이고자 할 수 있습니다.다른 경우에는 하나 이상의 특정 온라인 리두 로그 멤버를 삭제하려 할 수도 있습니다. 예를 들어, 디스크 고장이 발생한 경우 O ra c l e이 액세스할 수 없는 파일에 쓰기를 시도하지 않도록 고장난 디스크에 있는 모든 온라인 리두 로그 파일을 삭제해야할 수도 있습니다. 그 외에 예를 들어, 파일이 부적합한 위치에 저장된 경우와 같이특정 온라인 리두 로그 파일이 필요 없게 될 수도 있습니다.

로그 그룹 삭제

온라인 리두 로그 그룹을 삭제하려면 A LTER DATABASE 시스템 권한이 있어야합니다. 온라인 리두 로그 그룹을 삭제하기 전에 다음과 같은 제한 사항과 예방책을고려해야 합니다.

■ 그룹에 있는 멤버 수에 관계없이 인스턴스는 적어도 두 개의 온라인 리두 로그 파일 그룹을 필요로 합니다. (그룹은 하나 이상의 멤버입니다. )

■ 활성 그룹이 아닌 경우에만 온라인 리두 로그 그룹을 삭제할 수 있습니다. 활성그룹을 삭제해야 한다면 먼저 로그 스위치가 발생하도록 합니다. 6-16 페이지“로그 스위치 강제 시행”을 참조하십시오.

■ 삭제하기 전에 온라인 리두 로그 그룹이 아카이브(아카이브 기능이 활성화된 경우)되었는지 확인합니다. 아카이브 실행 여부를 보려면 SQL*Plus 명령어A RCHIVE LOG 문에 LIST 매개변수를 사용합니다.

SQL 문 A LTER DATA B A S E에 D ROP LOGFILE 절을 사용하여 온라인 리두 로그 그룹을 삭제합니다.

리두 로그 그룹 번호 3을 삭제하는 명령문은 다음과 같습니다.

ALTER DATABASE DROP LOGFILE GROUP 3;

6 - 1 4 Oracle8i 관리자 설명서

온라인 리두 로그 그룹 및 멤버 삭제

데이터베이스에서 온라인 리두 로그 그룹을 삭제하면 운영 체제 파일은 디스크에서제거되지 않습니다. 대신 데이터베이스 구조에서 그룹 멤버를 삭제하는 해당 데이터베이스의 제어 파일이 갱신됩니다. 온라인 리두 로그 그룹을 삭제한 후 성공적으로삭제되었는지 확인한 다음 해당 운영 체제 명령어를 사용하여 삭제된 온라인 리두 로그 파일을 제거합니다.

온라인 리두 로그 멤버 삭제

온라인 리두 로그 멤버를 삭제하려면 A LTER DATABASE 시스템 권한이 있어야합니다.

개별적인 온라인 리두 로그 멤버를 삭제하기 전에 다음과 같은 제한 사항과 예방책을고려해야 합니다.

■ 온라인 리두 로그 파일을 삭제하여 다중화된 온라인 리두 로그가 일시적으로 비대칭 구조가 될 수 있습니다. 예를 들어, 이중화된 온라인 리두 로그 파일 그룹을 사용할 때 다른 모든 그룹이 각각 두 멤버를 가지고 있는 경우에도 그룹의 한 멤버를 삭제할 수 있습니다. 그러나 모든 그룹이 최소한 두 멤버를 가지도록 이러한상황을 즉시 수정하여 온라인 리두 로그에 대해 가능한 단일 실패 지점을 제거해야 합니다.

■ 그룹에 있는 멤버 수에 관계없이 인스턴스는 적어도 두 개의 유효한 온라인 리두로그 파일 그룹을 필요로 합니다. (그룹은 하나 이상의 멤버로 구성됩니다.) 삭제할 멤버가 그룹의 마지막 멤버인 경우 다른 멤버가 유효하게 될 때까지 그 멤버를삭제하지 마십시오. 리두 로그 파일의 상태를 보려면 V $LOGFILE 뷰를 사용합니다. Ora c l e에서 액세스할 수 없으면 리두 로그 파일은 I N VALID 상태가 됩니다. Ora c l e에서 리두 로그 파일이 완전하지 않거나 올바르지 않다고 생각하면S TALE 상태가 됩니다. 효력을 상실한 로그 파일은 다음에 그룹이 활성화되면 다시 유효하게 됩니다.

■ 활성 그룹의 일부가 아닌 경우에만 온라인 리두 로그 멤버를 삭제할 수 있습니다.활성 그룹의 멤버를 삭제하려면 먼저 로그 스위치를 강제로 발생시킵니다.

■ 멤버를 삭제하기 전에 온라인 리두 로그 멤버가 속한 그룹이 아카이브(아카이브기능이 활성화된 경우)되었는지 확인합니다. 아카이브 실행 여부를 보려면SQL*Plus 명령어 A RCHIVE LOG에 LIST 매개변수를 사용합니다.

SQL 명령어 A LTER DATABASE 문에 D ROP LOGFILE MEMBER 절을 사용하여 특정 비활성 온라인 리두 로그 멤버를 삭제합니다.

리두 로그 / o r a c l e / d b s / l o g 3 c . r d o를 삭제하는 명령문은 다음과 같습니다.

온라인 리두 로그 관리 6 - 1 5

온라인 리두 로그 그룹 및 멤버 삭제

ALTER DATABASE DROP LOGFILE MEMBER ‘/oracle/dbs/log3c.rdo’;

온라인 리두 로그 멤버가 데이터베이스에서 삭제될 때 운영 체제 파일은 디스크에서삭제되지 않습니다. 대신 데이터베이스 구조에서 멤버를 삭제하는 해당 데이터베이스의 제어 파일이 갱신됩니다. 온라인 리두 로그 파일을 삭제한 후 성공적으로 삭제되었는지 확인한 다음 운영 체제 명령어를 사용하여 삭제된 온라인 리두 로그 파일을제거합니다.

참조: 활성 그룹 멤버 삭제에 대한 내용은 다음 단원“로그 스위치 강제 시행”을 참조하십시오.

SQL*Plus 명령어 구문에 대한 자세한 내용은 SQL*Plus 사용 설명서 및 참조서를참조하십시오.

로그 스위치 강제 시행

L GW R이 한 온라인 리두 로그 그룹에 쓰기를 중지하고 다른 그룹에 쓰기를 시작할때 로그 스위치가 발생합니다. 기본적으로 로그 스위치는 현재 온라인 리두 로그 파일 그룹이 채워지면 발생합니다.

로그 스위치를 강제로 시행하여 현재 활성 그룹을 비활성화하고 온라인 리두 로그 유지 관리 작업에 사용 가능하도록 할 수 있습니다. 예를 들어, 현재 활성 그룹을 삭제하려 해도 그룹이 비활성화될 때까지 삭제할 수 없습니다. 또한 그룹 멤버가 완전히채워지기 전 특정 시각에 현재 활성 그룹을 아카이브해야 하는 경우 로그 스위치를강제로 시행하려 할 수 있습니다. 이 옵션은 채우는데 시간이 많이 걸리는 대용량 온라인 리두 로그 파일을 사용하는 구성에서 유용합니다.

로그 스위치를 강제로 시행하려면 A LTER SYSTEM 권한이 있어야 합니다. SQL문 A LTER SY S T E M에 SWITCH LOGFILE 옵션을사용하여 로그 스위치를 강제로 시행합니다.

로그 스위치를 강제로 시행하는 명령문은 다음과 같습니다.

ALTER SYSTEM SWITCH LOGFILE;

참조: O racle Pa rallel Serv e r로 로그 스위치를 강제로 시행하는 방법은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

리두 로그 파일의 블록 검증

체크섬을 사용하여 리두 로그 파일의 블록을 검증하도록 O ra c l e을 구성할 수 있습니다. 초기화 매개변수 L O G _ B L O C K _ C H E C K S U M을 T RU E로 설정하여 리두 로그블록 점검을 활성화합니다. LOG_BLOCK_CHECKSUM의기본값은 FA L S E입니다.

6 - 1 6 Oracle8i 관리자 설명서

로그 스위치 강제 시행

리두 로그 블록 점검을 활성화하면 O ra c l e은 현재 로그에 쓰여진 각각의 리두 로그블록에 대한 체크섬을 계산합니다. Ora c l e은 체크섬을 블록의 헤더에 기록합니다.

O ra c l e은 체크섬을 사용하여 리두 로그 블록의 훼손 부분을 찾아냅니다. Ora c l e은블록을 아카이브 로그 파일에 기록할 때와 복구 중 아카이브된 로그에서 블록을 읽을때 리두 로그 블록 검증을 시도합니다.

아카이브를 시도하는 동안 O ra c l e이 리두 로그 블록에서 훼손 부분을 발견하면 시스템은 그룹의 다른 멤버에서 블록을 읽으려고 합니다. 리두 로그 그룹의 모든 멤버에서 블록이 훼손되면 아카이브를 진행할 수 없습니다.

온라인 리두 로그 파일 지우기

리두 로그 블록 점검을 활성화하면 O ra c l e은 아카이브하기 전에 각각의 블록을 검증합니다. 특정 리두 로그 블록이 그룹의 모든 멤버에서 훼손되면 아카이브를 중지합니다. 결국 아카이브를 재개할 수 있을 때까지 모든 리두 로그가 채워지고 데이터베이스 작업이 중지됩니다.

이 경우 SQL 문 A LTER DATA B A S E...CLEAR LOGFILE을 사용하여 훼손된리두 로그를 지우고 아카이브되는 것을 막을 수 있습니다. 지워진 리두 로그는 아카이브되지 않아도 사용할 수 있습니다.

리두 로그 그룹 번호 3의 로그 파일을 지우는 명령문은 다음과 같습니다.

ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;

제한 사항

아카이브 여부에 관계없이 리두 로그 파일을 지울 수 있습니다. 그러나 아카이브되지않았다면 A LTER DATABASE CLEAR LOGFILE 문에 키워드 U NA RC H I -V E D를 포함시켜야 합니다.

백업 복구에 필요한 로그 파일을 지우면 더 이상 백업을 복구할 수 없습니다. Ora c l e은 복구할 수 없는 백업에 대해 설명하는 메시지를 경고 로그에 기록합니다.

주: 아카이브되지 않은 리두 로그 파일을 지웠다면 데이터베이스를 다시 백업해야 합니다.

오프라인 테이블스페이스를 온라인으로 설정하는데 필요한 아카이브되지 않은 리두로그 파일을 지웠다면 A LTER DATABASE CLEAR LOGFILE 문에U N R E C O -VERABLE DATAFILE 절을 사용합니다.

온라인 리두 로그 관리 6 - 1 7

온라인 리두 로그 파일 지우기

오프라인 테이블스페이스를 온라인으로 설정하는데 필요한 리두 로그를 지웠다면 테이블스페이스를 다시 온라인으로 설정할 수 없습니다. 테이블스페이스를 삭제하거나불완전한 복구를 수행해야 합니다. 오프라인으로 설정된 테이블스페이스는 복구를 필요로 하지 않습니다.

참조: A LTER DATABASE 문에대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

온라인 리두 로그에 대한 정보 나열

V $L O G, V $LOGFILE 및 V $THREAD 뷰를 사용하여 데이터베이스의 온라인 리두 로그에 대한 정보를 볼 수 있습니다. V $THREAD 뷰는 특히 Pa rallel Serv e r관리자가 관심을 갖는 영역입니다.

다음 질의는 Pa rallel Server 없이 사용되는 데이터베이스의 온라인 리두 로그에 대한 정보를 보여줍니다.

SELECT group#, bytes, members FROM sys.v $log;

GROUP# BYTES MEMBERS ---------- ---------- ----------

1 81920 22 81920 2

그룹의 모든 멤버 이름을 보려면 다음 질의를 사용합니다.

SELECT * FROM sys.v$logfileWHERE group# = 2;

GROUP# STATUS MEMBER---------- ---------- ----------

2 LOG2A2 STALE LOG2B2 LOG2C

S TAT U S가 멤버에 대해 공백이면 해당 파일은 사용 중입니다.

6 - 1 8 Oracle8i 관리자 설명서

온라인 리두 로그에 대한 정보 나열

7아카이브된 리두 로그 관리

이 장에서는 리두 데이터를 아카이브하는 방법을 설명하며 다음 내용을 다룹니다.

■ 아카이브된 리두 로그란

■ N OA RCHIVELOG 모드와 A RCHIVELOG 모드 중 선택

■ 아카이브 기능 설정 및 해제

■ 아카이브 대상 지정

■ 로그 전송 모드 지정

■ 아카이브 대상 고장 관리

■ 아카이브 성능 조정

■ 아카이브된 리두 로그 정보 표시

■ L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

참조: Pa rallel Serv e r로 O ra c l e을 사용하는 경우 OPS 환경에서의 아카이브 기능에 대한 추가 정보는 O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

아카이브된 리두 로그 관리 7 - 1

아카이브된 리두 로그란

관리자는 O ra c l e에서 아카이브된 리두 로그라고 하는 온라인 리두 로그 파일의 채워진 그룹을 하나 이상의 오프라인 대상에 저장할 수 있습니다. 아카이브는 온라인 리두 로그를 아카이브된 리두 로그로 조정하는 프로세스입니다. 백그라운드 프로세스A RC n은 아카이브 작업을 자동화합니다. 다음 작업에 아카이브된 로그를 사용할 수있습니다.

■ 데이터베이스 복구

■ 대기 데이터베이스 갱신

■ LogMiner 유틸리티를통해 현재까지의 데이터베이스 기록 정보 얻기

아카이브된 리두 로그 파일은 온라인 리두 로그 그룹의 채워진 동일 멤버 중 하나의복사본이며 그룹의 동일 멤버에 있는 리두 입력 항목을 포함하고 그룹의 고유한 로그시퀀스 번호도 보존합니다. 예를 들어, 온라인 리두 로그를 다중화하고 그룹 1이A _ L O G 1과 B_LOG1 멤버 파일을 포함하면 A RC n은 이들 동일 멤버 중 하나를 아카이브합니다. A_LOG1이 손상되면 A RC n은 동일 B _ L O G 1을 아카이브할 수 있습니다.

아카이브 기능이 활성화되면 L GW R은 온라인 리두 로그 그룹이 아카이브될 때까지재사용하여 겹쳐 쓸 수 없습니다. 따라서 아카이브된 리두 로그는 아카이브 기능을활성화하여 생성된 모든 그룹의 복사본을 포함합니다. 그림 7 - 1은 A RC n이 리두 로그를 아카이브하는 방법을 보여줍니다.

7 - 2 Oracle8i 관리자 설명서

아카이브된 리두 로그란

그림 7-1 온라인 리두 로그의 아카이브

경고: 오라클에서는 현재의 온라인 로그는 복사하지 않을 것을 권장합니다. 현재의 온라인 로그를 복사한 다음 해당 복사본을 복원할 경우 복사본은 리두 스레드 끝에 나타납니다. 추가 리두가 스레드에 생성될 수있으므로, 리두 로그 복사본을 제공하여 복구를 실행하려 할 경우 복구가 리두 스레드 끝을 잘못 감지하고 조기 종료되어 데이터베이스를 손상시킬 수 있습니다. 현재 온라인 로그 내용을 백업하는 가장 좋은 방법은항상 온라인 로그를 아카이브한 다음 아카이브된 로그를 백업하는 것입니다.

아카이브된 리두 로그 관리 7 - 3

아카이브된 리두 로그란

LOG1(비활성)

LOG2(비활성)

LOG3(비활성)

LOG4(비활성)

LOG5(활성)

ARC0 ARC1 ARC2

대상1

대상2

LGWR

N O A RCHIVELOG 모드와A RCHIVELOG 모드중 선택

이 단원에서는 사용자의 데이터베이스를 실행하기 위해 N OA RCHIVELOG 또는A RCHIVELOG 모드를 선택할 때 고려해야 할 사항을 설명하며 다음 내용을 다룹니다.

■ N OA RCHIVELOG 모드로 데이터베이스 실행

■ A RCHIVELOG 모드로 데이터베이스 실행

N O A R C H I V E LOG 모드로 데이터베이스 실행

N OA RCHIVELOG 모드로 데이터베이스를 실행하면 온라인 리두 로그의 아카이브기능을 사용할 수 없습니다. 데이터베이스 제어 파일은 채워진 그룹이 아카이브될 필요가 없음을 나타냅니다. 따라서 채워진 그룹이 비활성화되고 로그 스위치가 발생한후 그룹은 L GW R에 의해 즉시 재사용될 수 있습니다.

데이터베이스에서 실행 중인 응용 프로그램의 가용성 및 신뢰성 요구 사항에 따라 온라인 리두 로그 파일의 채워진 그룹에 대한 아카이브 기능의 활성화 여부를 선택합니다. 디스크 고장 시에 데이터베이스에 있는 모든 데이터를 보존하려면 A RC H I V E L -OG 모드를 사용합니다. 채워진 온라인 리두 로그 파일의 아카이브 작업은 추가적인관리 작업 수행을 필요로 할 수 있습니다.

N OA RCHIVELOG 모드는 매체 고장 시에는 데이터베이스를 보호하지 못하지만 인스턴스 실패 시에는 데이터베이스를 보호합니다. 온라인 리두 로그 그룹에 저장된 데이터베이스에 대한 가장 최근의 변경 사항만이 인스턴스 복구에 사용됩니다. 즉,N OA RCHIVELOG 모드를 사용하면 가장 최근에 데이터베이스를 전체 백업했을 때의 상태로만 데이터베이스를 복원(복구 아님)할 수 있습니다. 전체 백업 이후에 수행된 트랜잭션은 복구할 수 없습니다.

또한 N OA RCHIVELOG 모드에서는 온라인 테이블스페이스 백업을 수행할 수 없으며 이전에 데이터베이스가 A RCHIVELOG 모드로 작동하는 중에 만든 온라인 테이블스페이스 백업도 사용할 수 없습니다. 데이터베이스가 닫혀 있는 동안 수행된 데이터베이스 전체 백업만을 사용하여 N OA RCHIVELOG 모드로 작동하는 데이터베이스를 복원할 수 있습니다. 따라서 N OA RCHIVELOG 모드로 데이터베이스를 사용하기로 한 경우 정기적으로 자주 전체 데이터베이스를 백업해야 합니다.

A R C H I V E LOG 모드로 데이터베이스 실행

A RCHIVELOG 모드로 데이터베이스를 실행하면 온라인 리두 로그의 아카이브 기능을 사용할 수 있습니다. 데이터베이스 제어 파일은 채워진 온라인 리두 로그 파일 그

7 - 4 Oracle8i 관리자 설명서

NOARCHIVELOG 모드와 ARCHIVELOG 모드 중 선택

룹이 아카이브될 때까지 L GW R이 이 그룹을 사용할 수 없음을 나타냅니다. 리두 로그 스위치가 발생한 후에 바로 채워진 그룹을 아카이브할 수 있습니다.

채워진 그룹의 아카이브 기능은 다음과 같은 장점을 가집니다.

■ 온라인 리두 로그 파일과 아카이브된 리두 로그 파일이 함께 있는 데이터베이스백업은 운영 체제나 디스크 고장 시에 커밋된 모든 트랜잭션을 복구할 수 있도록합니다.

■ 데이터베이스가 열려 있는 동안 수행된 백업과 아카이브된 로그를 유지하는 경우정상적인 시스템 사용 시 수행된 백업을 사용할 수 있습니다.

■ 원래 데이터베이스의 아카이브된 리두 로그를 대기 데이터베이스에 계속 적용하여대기 데이터베이스의 현재 내용을 유지할 수 있습니다.

채워진 온라인 리두 로그 그룹을 아카이브할 방법을 결정합니다. 채워진 온라인 리두로그 파일을 자동으로 아카이브하도록 인스턴스를 구성하거나 관리자가 수동으로 아카이브할 수 있습니다. 일반적으로 편리함과 효율성 면에서 자동 아카이브 작업이 가장 좋은 방법입니다. 그림 7 - 2는 채워진 그룹을 아카이브하는 프로세스(그림에서는A RC n )가 데이터베이스 온라인 리두 로그를 생성하는 방법을 나타냅니다.

아카이브된 리두 로그 관리 7 - 5

NOARCHIVELOG 모드와 ARCHIVELOG 모드 중 선택

그림 7-2 ARCHIVELOG 모드에서온라인 리두 로그 파일 사용

분산 데이터베이스 복구 분산 데이터베이스의 모든 데이터베이스가 A RC H I V E L O G모드에서 작동하는 경우 통합된 분산 데이터베이스 복구를 수행할 수 있습니다. 그러나 분산 데이터베이스의 임의의 데이터베이스가 N OA RCHIVELOG 모드에서 실행된다면 모든 데이터베이스의 일관성을 위해 전역 분산 데이터베이스 복구는N OA RCHIVELOG 모드에서 작동하는 데이터베이스의 최근 전체 백업으로 제한됩니다.

참조: 아카이브될 때 리두 로그 블록을 검증하도록 구성할 수도 있습니다. 자세한 내용은 6-16 페이지“리두 로그 파일의 블록 검증”을 참조하십시오.

7 - 6 Oracle8i 관리자 설명서

NOARCHIVELOG 모드와 ARCHIVELOG 모드 중 선택

0 0 0 1 0 0 0 2

0 0 0 1

0 0 0 3

로그 0 0 0 2로그 0 0 0 1 로그 0 0 0 3 로그 0 0 0 4

0 0 0 2

0 0 0 1

ARCn ARCn ARCn

LGWR LGWR LGWRLGWR

시간

온라인리두 로그파일

아카이브된리두 로그파일

아카이브 기능 설정 및 해제

이 단원에서는 아카이브 형태에 대해 설명하며 다음 내용을 다룹니다.

■ 초기 데이터베이스 아카이브 모드 설정

■ 데이터베이스 아카이브 모드 변경

■ 자동 아카이브 기능 활성화

■ 자동 아카이브 기능 비활성화

■ 수동 아카이브 수행

참조: O racle 설치 중에 데이터베이스가 자동으로 생성되면 데이터베이스의 초기 아카이브 모드는 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오.

초기 데이터베이스 아카이브 모드 설정

데이터베이스를 생성하는 작업의 일부로 데이터베이스의 초기 아카이브 모드를 C R E -ATE DATABASE 문에서 설정합니다. 일반적으로 생성할 때 발생하는 리두 정보는아카이브하지 않아도 되므로 데이터베이스를 생성할 때는 기본 모드인 N OA RC H I V -ELOG 모드를 사용할 수 있습니다. 데이터베이스를 생성한 후 초기 아카이브 모드변경 여부를 결정하십시오.

데이터베이스 아카이브 모드 변경

데이터베이스의 아카이브 모드를 N OA RC H I V E L O G와 A RCHIVELOG 모드 사이에서 전환하려면 SQL 문 A LTER DATA B A S E에 A RCHIVELOG 또는 N OA RC -HIVELOG 옵션을 사용합니다. 데이터베이스의 아카이브 모드를 N OA RC H I V E L -O G에서 A RCHIVELOG 모드로 전환하는 명령문은 다음과 같습니다.

ALTER DATABASE ARCHIVELOG;

데이터베이스의 아카이브 모드를 전환하기 전에 다음 작업을 수행합니다.

1 . 데이터베이스 인스턴스를 종료합니다.

데이터베이스의 아카이브 모드를 전환하기 전에 열려 있는 데이터베이스를 닫고마운트를 해제하며 관련된 모든 인스턴스를 종료해야 합니다. 데이터 파일이 매체 복구를 필요로 하면 아카이브 기능을 비활성화할 수 없습니다.

2 . 데이터베이스를 백업합니다.

데이터베이스에 주요 변경 작업을 수행하기 전에 항상 데이터베이스를 백업해야모든 문제로부터 데이터베이스를 보호할 수 있습니다.

아카이브된 리두 로그 관리 7 - 7

아카이브 기능 설정 및 해제

3 . 새 인스턴스를 시작하고 데이터베이스를 마운트합니다. (테이터베이스를 열지는마십시오.)

아카이브 기능을 활성화하거나 비활성화하려면 데이터베이스를 마운트해야 하지만 열지는 말아야 합니다.

주: O racle Pa rallel Serv e r를 사용하는 경우 데이터베이스의 아카이브 모드를 전환하려면 하나의 인스턴스를 사용하여 데이터베이스를 배타적으로 마운트해야 합니다.

4 . 데이터베이스의 아카이브 모드를 전환합니다.

데이터베이스의 아카이브 모드를 전환하려면 A LTER DATABASE 명령어를 사용한후 정상 작동을 위해 데이터베이스를 엽니다. ARCHIVELOG 모드로 전환했다면O ra c l e이 온라인 리두 로그 파일 그룹이 채워지는 대로 자동으로 아카이브할 것인지를 결정하는 아카이브 옵션도 설정해야 합니다.

채워진 그룹을 아카이브하려면 사용자 운영 체제에 따라 몇 단계를 더 실행해야 합니다. 사용자 시스템에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

참조: O racle Pa rallel Serv e r를 사용할 때 아카이브 모드 전환에 대한 자세한 내용은 O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

자동 아카이브 기능 활성화

운영 체제에 따라 온라인 리두 로그를 자동으로 아카이브하도록 할 수 있습니다. 이옵션을 사용하면 O ra c l e이 자동으로 그룹을 아카이브하므로 그룹이 채워진 후 그룹을복사하는 작업이 필요하지 않습니다. 이러한 편리성 때문에 자동 아카이브 기능은 아카이브 작업에 가장 좋은 방법입니다.

인스턴스 시작 전후에 자동 아카이브 기능을 활성화할 수 있습니다. 인스턴스 시작후 자동 아카이브 기능을 활성화하려면 관리자 권한으로 O ra c l e에 접속해야 합니다.

경고: O ra c l e은 데이터베이스가 A RCHIVELOG 모드에 있지 않으면로그 파일을 자동으로 아카이브하지 않습니다.

참조: 자동 아카이브 기능을 활성화할 때 항상 아카이브될 리두 로그 대상과 파일 이름 형식을 지정해야 합니다. 7-11 페이지“아카이브 대상 지정”을 참조하십시오. 자동 아카이브 기능이 활성화된 경우에도 수동 아카이브를 수행할 수 있습니다. 7-10페이지“수동 아카이브 수행”을 참조하십시오.

7 - 8 Oracle8i 관리자 설명서

아카이브 기능 설정 및 해제

인스턴스 시작 시 자동 아카이브 기능 활성화

인스턴스가 시작될 때마다 채워진 그룹을 자동으로 아카이브하도록 하려면 초기화 매개변수 L O G _ A RC H I V E _ S TA RT를 데이터베이스의 매개변수 파일에 포함시키고 다음과 같이 T RU E로 설정합니다.

LOG_ARCHIVE_START=TRUE

새로운 값은 데이터베이스가 다시 시작될 때 적용됩니다.

인스턴스 시작 후 자동 아카이브 기능 활성화

현재 인스턴스를 종료하지 않고 채워진 온라인 리두 로그 그룹을 자동으로 아카이브하도록 하려면 SQL 문 A LTER SY S T E M에 A RCHIVE LOG STA RT 매개변수를사용합니다. 선택적으로 아카이브 대상을 포함할 수 있습니다.

ALTER SYSTEM ARCHIVE LOG START;

A LTER SYSTEM 메소드를 사용하면 자동 아카이브 기능을 활성화하기 위해 인스턴스를 종료하지 않아도 됩니다. 그러나 인스턴스가 종료되고 자동 아카이브 기능이활성화된 후 재시작되면 인스턴스는 매개변수 파일의 설정값을 사용하여 다시 초기화되므로 자동 아카이브 기능을 활성화하거나 비활성화할 수 있습니다.

자동 아카이브 기능 비활성화

언제든지 온라인 리두 로그 그룹의 자동 아카이브 기능을 비활성화할 수 있습니다.그러나 자동 아카이브 기능을 비활성화하면 적합한 시기에 온라인 리두 로그 파일 그룹을 수동으로 아카이브해야 합니다. 데이터베이스를 A RCHIVELOG 모드에서 실행하고 자동 아카이브 기능을 비활성화하며 모든 온라인 리두 로그 파일 그룹이 채워졌지만 아카이브되지 않았다면 L GW R은 리두 로그 입력 항목을 계속 작성하기 위해비활성 온라인 리두 로그 그룹을 재사용할 수 없습니다. 따라서 데이터베이스 작업은필요한 아카이브 작업을 수행할 때까지 일시적으로 중지됩니다.

자동 아카이브 기능은 인스턴스를 시작할 때나 시작한 후에 비활성화할 수 있습니다.인스턴스를 시작한 후에 자동 아카이브 기능을 비활성화하려면 관리자 권한으로 접속해야 하며 A LTER SYSTEM 권한이있어야 합니다.

인스턴스 시작 시 자동 아카이브 기능 비활성화

데이터베이스 인스턴스가 시작될 때마다 채워진 온라인 리두 로그 그룹의 자동 아카이브 기능을 비활성화하려면 데이터베이스 매개변수 파일의 L O G _ A RC H I V E _S TA RT 매개변수를 다음과 같이 FA L S E로 설정합니다.

LOG_ARCHIVE_START=FALSE

아카이브된 리두 로그 관리 7 - 9

아카이브 기능 설정 및 해제

새로운 값은 데이터베이스가 다시 시작될 때 적용됩니다.

인스턴스 시작 후 자동 아카이브 기능 비활성화

현재 인스턴스를 종료하지 않고 채워진 온라인 리두 로그 그룹의 자동 아카이브 기능을 비활성화하려면 SQL 문 A LTER SY S T E M에 A RCHIVE LOG STOP 매개변수를 사용합니다. 아카이브 기능을 중지시키는 명령문은 다음과 같습니다.

ALTER SYSTEM ARCHIVE LOG STOP;

자동 아카이브 기능을 비활성화하려고 할 때 A RC n이 리두 로그 그룹을 아카이브하고 있는 경우 A RC n은 현재 그룹을 아카이브하는 작업은 완료하지만 다음에 채워지는 온라인 리두 로그 그룹을 아카이브하는 작업을 시작하지는 않습니다.

자동 아카이브 기능을 비활성화하기 위해 인스턴스를 종료하지 않아도 됩니다. 그러나 인스턴스가 종료되고 자동 아카이브 기능이 비활성화된 후 재시작되면 인스턴스는매개변수 파일의 설정값을 사용하여 다시 초기화되므로 자동 아카이브 기능을 활성화하거나 비활성화할 수 있습니다.

수동 아카이브 수행

데이터베이스를 A RCHIVELOG 모드에서 작동하면 채워진 온라인 리두 로그 파일의비활성 그룹을 아카이브해야 합니다. 자동 아카이브 기능의 활성화 여부에 관계없이수동으로 온라인 리두 로그 그룹을 아카이브할 수 있습니다.

■ 자동 아카이브 기능이 비활성화된 경우 채워진 온라인 리두 로그 파일 그룹을 적합한 시기에 수동으로 아카이브해야 합니다. 모든 온라인 리두 로그 그룹이 채워졌지만 아카이브되지 않았다면 L GW R은 리두 로그 입력 항목을 계속 작성하기위해 비활성 온라인 리두 로그 멤버 그룹을 재사용할 수 없습니다. 따라서 데이터베이스 작업은 필요한 아카이브 작업을 수행할 때까지 일시적으로 중지됩니다.

■ 자동 아카이브 기능이 활성화되었지만 채워진 온라인 리두 로그 멤버의 비활성 그룹을 다른 위치로 다시 아카이브하려면 수동 아카이브 기능을 사용할 수 있습니다. 수동으로 아카이브 작업을 완료하기 전에 인스턴스는 리두 로그 그룹을 재사용할 수 있으며 그 결과 파일을 겹쳐 쓰게 됩니다. 이 경우 O ra c l e은 A L ERT 파일에 오류 메시지를 넣습니다.

채워진 온라인 리두 로그 그룹을 수동으로 아카이브하려면 관리자 권한으로 접속해야합니다. SQL 문 A LTER SY S T E M에 A RCHIVE LOG 절을 사용하여 채워진 온라인 리두 로그 파일을 수동으로 아카이브합니다. 아카이브되지 않은 모든 로그 파일을 아카이브하는 명령문은 다음과 같습니다.

ALTER SYSTEM ARCHIVE LOG ALL;

7 - 1 0 Oracle8i 관리자 설명서

아카이브 기능 설정 및 해제

참조: O racle Pa rallel Serv e r를 사용할 때에는 수동 아카이브 기능 또는 자동 아카이브 기능을 사용하는 모든 경우에 스레드를 지정해야 합니다. 자세한 내용은O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

아카이브 대상 지정

리두 로그를 아카이브할 때 아카이브할 대상을 결정합니다. 사용자는 아카이브 정보에 액세스하는 고정된 뷰를 사용하는 작업뿐 아니라 다양한 대상의 상태에 대해 잘알고 있어야 합니다.

아카이브 대상 지정

로그 대상을 단일화할 것인지 다중화 즉, 하나 이상의 위치로 로그를 아카이브할 것인지 결정해야 합니다.

다음과 같은 초기화 매개변수를 설정하여 기본 데이터베이스의 아카이브된 로그에 대한 위치 수를 지정합니다.

첫 번째 방법은 L O G _ A RCHIVE_DEST_n (n은 1에서 5까지의 정수) 매개변수를사용하여 하나에서 다섯 개까지의 서로 다른 아카이브 대상을 지정하는 것입니다. 숫자 접미어가 붙은 각각의 매개변수는 각 대상을 고유하게 식별합니다. 예를 들어,L O G _ A RCHIVE_ DEST_1, LOG_ARCHIVE_DEST_2 등과같습니다.

이러한 키워드를 사용하여 L O G _ A RC H I V E _ D E S T _ n의 위치를 지정합니다.

아카이브된 리두 로그 관리 7 - 1 1

아카이브 대상 지정

매개변수 호스트 예

L O G _ AR CH I V E _ D E S T _ n 원격 또는 L O G _ AR CHIVE_DEST_1 = ‘LOCATION = /disk1

( n은 1에서 5까지의 정수) 로컬 / a r c’

L O G _ AR CH I V E _D EST_2 = ‘S E R V IC E = standby1’

L O G _ AR CH I V E _ D E S T와 로컬만 L O G _ AR CH I V E _D EST = /ora cl e / a r c

L O G _ AR CHIVE_DUPLEX_DEST LOG_AR CH I V E _D UP L E X _D EST = /bak

키워드 지시 사항 예

LO CA T I O N 로컬 파일 시스템 위치 L O G _A RCHIVE_DEST_1 = ‘LOCATION = /arc’

S E R V I C E Net8 서비스 이름을 L O G _A RCHIVE_DEST_2 = ‘SERVICE = standby1’

통한 원격 아카이브

L O CATION 키워드를 사용하는 경우 운영 체제에 대한 적합한 경로명을 지정합니다. SERV I C E를 지정하면 O ra c l e은 t n s n a m e s . o r a 파일을 통해 넷 서비스 이름을접속 설명자로 변환합니다. 설명자는 원격 데이터베이스로 접속하는데 필요한 정보를포함합니다. 서비스 이름은 O ra c l e이 대기 데이터베이스에 대한 제어 파일의 현재까지의 로그 기록을 제대로 갱신하도록 연관된 데이터베이스 S I D를 가져야 합니다.

두 번째 방법은 L O G _ A RCHIVE_DEST 매개변수를 사용하여 기본 아카이브 대상을지정하고 L O G _ A RC H I V E _ D U P L E X _ D E S T를 사용하여 선택적인 2차 위치를 결정하는 것으로, 이 방법을 통해 두 위치의 최대값을 결정할 수 있습니다. Ora c l e은 리두 로그를 아카이브할 때마다 위의 두 매개변수 집합으로 지정된 모든 대상에 리두로그를 아카이브합니다.

L O G _ A RC H I V E _ D E S T _ n을 사용하여 아카이브된 리두 로그의 대상을 설정하려면다음과 같이 하십시오.

1 . S Q L * P l u s를 사용하여 데이터베이스를 종료합니다.

SHUTDOWN IMMEDIATE;

2 . L O G _ A RCHIVE_DEST_n 매개변수를 편집하여 1에서 5까지의 아카이브 위치를 지정합니다. LOCATION 키워드는 운영 체제별 경로명을 지정합니다. 예를들어, 다음과 같이 입력합니다.

LOG_ARCHIVE_DEST_1 = ’LOCATION = /disk1/archive’LOG_ARCHIVE_DEST_2 = ’LOCATION = /disk2/archive’LOG_ARCHIVE_DEST_3 = ’LOCATION = /disk3/archive’

대기 데이터베이스를 아카이브하려면 S E RVICE 키워드를 사용하여 t n s n a m e s .o ra 파일에 있는 적합한 넷 서비스 이름을 지정합니다. 예를 들어, 다음과 같이입력합니다.

LOG_ARCHIVE_DEST_4 = ’SERVICE = standby1’

3. 파일 이름의 일부로 로그 시퀀스 번호를 포함하는 % s와 스레드 수를 포함하는 % t를 사용하여 L O G _ A RC H I V E _ F O R M AT 매개변수를 편집합니다. 대문자(% S및 % T)를 사용하면 파일 이름 왼쪽부터 0으로 채워 넣습니다. 예를 들어, 다음과같이 입력합니다.

LOG_ARCHIVE_FORMAT = arch%s.arc

예를 들어, 위의 설정은 다음과 같이 로그 시퀀스 번호 100, 101 및 1 0 2의 아카이브된 로그를 생성합니다.

/disk1/archive/arch100.arc, /disk1/archive/arch101.arc, /disk1/archive/arch102.arc/disk2/archive/arch100.arc, /disk2/archive/arch101.arc, /disk2/archive/arch102.arc/disk3/archive/arch100.arc, /disk3/archive/arch101.arc, /disk3/archive/arch102.arc

7 - 1 2 Oracle8i 관리자 설명서

아카이브 대상 지정

L O G _ A RCHIVE_DEST 및 L O G _ A RC H I V E _ D U P L E X _ D E S T를 사용하여 아카이브된 리두 로그의 대상을 설정하려면 다음과 같이 하십시오.

1 . S Q L * P l u s를 사용하여 데이터베이스를 종료합니다.

SHUTDOWN IMMEDIATE;

2 . L O G _ A RCHIVE_DEST 및 L O G _ A RCHIVE_DUPLEX_DEST 매개변수에대한 대상을 지정합니다. (ALTER SYSTEM 명령어를 사용하여 L O G _ A RC -H I V E _ D U P L E X _ D E S T를 동적으로 설정할 수도 있습니다.) 예를 들어, 다음과같이 입력합니다.

LOG_ARCHIVE_DEST = ’/disk1/archive’LOG_ARCHIVE_DUPLEX_DEST = ’/disk2/archive’

3. 파일 이름의 일부로 로그 시퀀스 번호를 포함하는 % s와 스레드 수를 포함하는 % t를 사용하여 L O G _ A RC H I V E _ F O R M AT 매개변수를 편집합니다. 대문자(% S및 % T)를 사용하면 파일 이름 왼쪽부터 0으로 채워 넣습니다. 예를 들어, 다음과같이 입력합니다.

LOG_ARCHIVE_FORMAT = arch_%t_%s.arc

예를 들어, 위의 설정은 다음과 같이 스레드 1에 로그 시퀀스 번호 100 및 1 0 1의아카이브된 로그를 생성합니다.

/disk1/archive/arch_1_100.arc, /disk1/archive/arch_1_101.arc/disk2/archive/arch_1_100.arc, /disk2/archive/arch_1_100.arc

참조: 대기 데이터베이스에 아카이브하는 것에 대한 자세한 내용은 O racle8i Back-up and Recovery Guide를참조하십시오.

아카이브 대상 상태 이해

L O G _ A RC H I V E _ D E S T _ S TATE_n (n은 1에서 5까지의 정수) 매개변수는 지정된대상의 상태를 식별합니다. 대상 매개변수는 E NA B L E과 D E F E R라는 두 개의 값을가질 수 있습니다. ENA B L E은 O ra c l e이 대상을 사용할 수 있다는 것을 나타내는반면 D E F E R는 O ra c l e이 대상을 사용해서는 안된다는 것을 나타냅니다.

각 아카이브 대상은 세 가지 가변 특성을 가집니다.

■ 적합/부적합: 디스크 위치나 서비스 이름 정보 지정 여부를 나타냅니다.

■ 사용 가능/사용 불가능: Ora c l e이 대상 정보를 사용해야 하는지의 여부를 나타냅니다.

아카이브된 리두 로그 관리 7 - 1 3

아카이브 대상 지정

■ 활성/비활성: 대상을 액세스하는데 문제가 있는지의 여부를 나타냅니다.

여러 대상 상태가 가능합니다. V $A RCHIVE_DEST 뷰를 질의하여 각 인스턴스에대한 현재의 대상 상태 정보를 얻습니다. 가장 최근에 입력된 매개변수 정의에 액세스할 수 있습니다. 매개변수 정의가 반드시 완전한 아카이브 대상 데이터를 포함해야하는 것은 아닙니다.

뷰에 나타나는 상태 정보는 표 7 - 1과 같습니다.

표 7-1 대상 상태

참조: V $A RCHIVE_DEST 및 아카이브 대상 매개변수에 대한 자세한 내용은O racle8i Refe re n c e를 참조하십시오.

로그 전송 모드 지정

아카이브된 로그를 대상으로 전송하는 모드에는 정상 아카이브 전송 모드와 대기 전송 모드라는 두 가지 모드가 있습니다. 정상 전송은 전송 파일을 로컬 디스크에 포함

7 - 1 4 Oracle8i 관리자 설명서

로그 전송 모드 지정

적합 사용 가능 활성 상태 의미

FALSE N/A N / A I N A C T I V E 사용자가 대상 정보를 제공하지 않았거나 삭제했습니

TRUE TRUE T R U E V A L I D 사용자가 대상을 제대로 초기화하였고 이 대상은 아카

이브에 대해 사용 가능합니다.

TRUE TRUE F A L S E E R R O R 대상 파일을 생성하거나 작성하는 중에 오류가 발생하

였습니다. 오류 데이터를 참조하십시오.

TRUE FALSE TRUE D E F E R RE D 사용자가 대상을 수동으로 그리고 일시적으로 비활성

화했습니다.

TRUE FALSE F A L S E D I S A B L E D 사용자가 오류 발생 후 대상을 수동으로 그리고 일시

적으로 비활성화했습니다. 오류 데이터를 참조하십시

오.

N/A N/A N/A 매개변수 오류가 발생하였습니다. 오류 데이터를 참조

하십시오. 일반적으로 이러한 상태는 L O G _ A R C H I V E _

S T A R T가 설정되지 않았을 때만 나타납니다.

B A D

P A R A M

시킵니다. 대기 전송은 전송 파일을 네트워크를 통해 로컬 또는 원격 대기 데이터베이스에 포함시킵니다.

정상 전송 모드

정상 전송 모드에서 아카이브 대상은 데이터베이스 서버의 다른 디스크 드라이브입니다. 이러한 구성에서 아카이브는 인스턴스에 필요한 다른 파일과 문제를 일으키지 않고 빠르게 완료하므로 그룹이 L GW R에 사용 가능하게 될 수 있습니다. LOG_ARC -HIVE_DEST_n 또는 L O G _ A RCHIVE_DEST 매개변수로대상을 지정합니다.

이상적으로는 아카이브된 리두 로그 파일 및 해당 데이터베이스 백업을 로컬 디스크에서 테이프와 같은 값싼 오프라인 저장 영역 매체로 영구적으로 이동해야 합니다.아카이브된 로그의 우선 가치는 데이터베이스 복구에 있으므로 기본 데이터베이스가손상되는 경우에 대비해 이러한 로그를 안전하게 보관해야 합니다.

대기 전송 모드

대기 전송 모드에서 아카이브 대상은 로컬 또는 원격 대기 데이터베이스입니다.

경고: 로컬 디스크에서 대기 데이터베이스를 유지 관리할 수 있습니다.그러나 오라클사에서는 대기 데이터베이스를 원격 사이트에서 유지 관리하여 손상 보호를 최대화할 것을 권장합니다.

관리되는 복구 모드로 대기 데이터베이스를 작동하는 경우 전송된 아카이브 로그를자동으로 적용하여 원본 데이터베이스와 동기화하여 대기 데이터베이스를 유지할 수있습니다.

파일을 성공적으로 대기 데이터베이스에 전송하려면 A RCn 또는 서버 프로세스는 다음 작업을 수행해야 합니다.

■ 원격 위치 인식

■ 원격 파일 서버(RFS) 프로세스로 아카이브된 로그 전송

각 A RCn 프로세스는 각 대기 대상에 대해 해당 R F S를 생성합니다. 예를 들어, 세개의 A RCn 프로세스가 두 개의 대기 데이터베이스를 아카이브하면 O ra c l e은 여섯개의 RFS 접속을 설정합니다.

N e t 8을 사용하여 네트워크를 통해 원격 위치로 아카이브된 로그를 전송할 수 있습니다. Net8 서비스 이름을 대상 속성으로 지정하여 원격 아카이브를 나타내면 O ra c l e은 S E RV I C E _ NAME 매개변수로 설정한 서비스 이름을 t n s n a m e s . o ra 파일을 통해

아카이브된 리두 로그 관리 7 - 1 5

로그 전송 모드 지정

접속 설명자로 변환합니다. 설명자는 원격 데이터베이스로 접속하는데 필요한 정보를포함합니다. 서비스 이름은 O ra c l e이 대기 데이터베이스에 대한 제어 파일의 현재까지의 로그 기록을 제대로 갱신하도록 연관된 데이터베이스 S I D를 가져야 합니다.

RFS 프로세스는 대상 노드에서 실행되며 A RCn 클라이언트에 대해 네트워크 서버의역할을 합니다. 본질적으로 A RC n이 정보를 R F S에 넣으면 R F S는 정보를 대기 데이터베이스로 전송합니다.

RFS 프로세스는 원격 대상을 아카이브할 때 필요하며 다음 작업을 수행해야 합니다.

■ A RCn 프로세서로부터 네트워크 입출력 소모

■ S TA N D BY _ A RCHIVE_DEST 매개변수를 사용하여 대기 데이터베이스에 대한파일 이름 생성

■ 원격 사이트에서 로그 파일 채움

■ 대기 데이터베이스의 제어 파일 갱신(이후에 복구 관리자는 복구를 위해 제어 파일을 사용할 수 있습니다. )

아카이브된 리두 로그는 데이터베이스와 똑같은 복사본인 대기 데이터베이스를 유지관리하는데 필수적입니다. 데이터베이스를 대기 아카이브 모드에서 작동할 수 있으며원본 데이터베이스로부터 아카이브된 리두 로그를 가진 대기 데이터베이스를 자동으로 갱신합니다.

참조: 대기 데이터베이스에 대한 자세한 내용은 O racle8i Backup and RecoveryG u i d e의 관련 장을 참조하십시오.

N e t 8에 대한 내용은 Net8 Ad m i n i s t ra t o r’s Guide를 참조하십시오.

아카이브 대상 고장 관리

때때로 아카이브 대상이 고장나서 자동 아카이브 모드에서 작동할 때 문제를 일으킬수 있습니다. 대상 고장과 관련된 문제를 최소화하기 위해 O ra c l e 8 i는 다음을 지정하도록 합니다.

■ O ra c l e이 성공적으로 아카이브해야 하는 대상의 최소 수

■ A RC n이 고장난 대상을 다시 아카이브하려고 시도하는 시기와 빈도

7 - 1 6 Oracle8i 관리자 설명서

아카이브 대상 고장 관리

성공적인 대상의 최소 수 지정

선택적 매개변수 L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T=n ( n은 1에서 5까지의정수)은 온라인 로그 파일을 다시 사용하기 전에 O ra c l e이 리두 로그 그룹을 성공적으로 아카이브해야 하는 대상의 최소 수를 결정합니다. 기본값은 1입니다.

필수 대상과 선택적 대상 지정

L O G _ A RCHIVE_DEST_n 매개변수를 사용하여 대상 속성을 O P T I O NA L (기본)또는 M A N DAT O RY로 지정할 수 있습니다. LOG_ARC H I V E _ M I N _ S U C C E E D _D E S T=n 매개변수는 모든 M A N DAT O RY 대상에 대기 대상이 아닌 O P T I O NA L대상을 일부 추가하여 L GW R이 온라인 로그를 겹쳐 쓸 것인지를 결정합니다.

매개변수 설정 방법을 결정할 때 다음 사항에 주의하십시오.

■ 대상에 M A N DAT O RY를 지정하지 않으면 O P T I O NA L을 지정한 것과 동일합니다.

■ O P T I O NAL 또는 M A N DAT O RY를 선언할 수 있는 적어도 하나의 로컬 대상을가지고 있어야 합니다.

■ L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T의 최소값이 1이므로 L O G _ A RC H -I V E _ M I N _ S U C C E E D _ D E S T=n을 사용할 때 적어도 하나의 로컬 대상이 운영상 M A N DAT O RY로 취급됩니다.

■ M A N DAT O RY 대기 대상을 포함하여 M A N DAT O RY 대상이 고장나면 L O G _A RCHIVE_MIN_SUCCEED_DEST 매개변수가부적합하게 됩니다.

■ L O G _ A RCHIVE_MIN_SUCCEED_DEST 값은 대상의 수보다 클 수 없으며M A N DAT O RY 대상의 수에 O P T I O NAL 로컬 대상의 수를 더한 값보다 클 수도 없습니다.

■ M A N DAT O RY 대상이 D E F E R이고 O ra c l e이 아카이브된 로그를 대기 사이트에 전송하지 않고 온라인 로그를 겹쳐 쓴 경우 대기 대상에 로그를 수동으로 전송해야 합니다

L O G _ A RCHIVE_DEST 및 L O G _ A RCHIVE_DUPLEX_DEST 매개변수를 사용하여 대상을 필수적 또는 선택적으로 결정할 수도 있습니다. 다음 규칙에 주의하십시오.

■ L O G _ A RC H I V E _ D E S T를 통해 선언된 대상은 필수적입니다.

아카이브된 리두 로그 관리 7 - 1 7

아카이브 대상 고장 관리

■ L O G _ A RC H I V E _ D U P L E X _ D E S T를 통해 선언된 대상이 L O G _ A RC H I V E _M I N _ S U C C E E D _ D E S T = 1이면 선택이고 L O G _ A RC H I V E _ M I N _ S U C C E -E D _ D E S T=2면 필수입니다.

예제 시나리오

예제 시나리오를 통해 가장 쉽게 L O G _ A RC H I V E _ D E S T _ n과 L O G _ A RC H I V E _MIN_SUCCEED_DEST 매개변수 사이의 관계를 알 수 있습니다. 예 1에서는O P T I O NA L로 각각을 선언한 세 개의 로컬 대상으로 아카이브합니다. 표 7 - 2는 예에서 L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T=n이 가질 수 있는 값을 보여줍니다.

표 7-2 예 1의 LOG_ARCHIVE_MIN_SUCCEED_DEST 값

이 예는 사용자가 L O G _ A RCHIVE_DEST_n 매개변수를사용하여 대상을 M A N D -AT O RY로 명시적으로 설정하지 않아도 O ra c l e은 L O G _ A RC H I V E _ M I N _ S U C C E -E D _ D E S T가 1, 2 또는 3으로 설정될 때 이 위치를 성공적으로 아카이브하는 것을보여줍니다.

예 2에서 다음과 같은 경우를 고려하십시오.

■ 두 개의 M A N DAT O RY 대상을 지정합니다.

■ 두 개의 O P T I O NAL 대상을 지정합니다.

■ 대상은 대기 데이터베이스가 아닙니다.

7 - 1 8 Oracle8i 관리자 설명서

아카이브 대상 고장 관리

값 의미

1 O r a c l e은 적어도 하나의 OPTIONAL 대상이 성공한 경우에만 로그 파일을 다시 사용할 수 있

습니다.

2 O r a c l e은 적어도 두 개의 OPTIONAL 대상이 성공한 경우에만 로그 파일을 다시 사용할 수 있

습니다.

3 Oracle은 모든 OPTIONAL 대상이 성공한 경우에만 로그 파일을 다시 사용할 수 있습니다.

4 오류: 값이 대상의 수보다 큽니다.

5 오류: 값이 대상의 수보다 큽니다.

표 7 - 3은 L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T=n이 가질 수 있는 값을 보여줍니다.

표 7-3 예 2의 LOG_ARCHIVE_MIN_SUCCEED_DEST 값

이 예에서는 아카이브할 L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T를 더 작은 수로설정했는지의 여부에 관계없이 O ra c l e은 M A N DAT O RY로 지정한 대상에 아카이브해야 합니다.

참조: 아카이브에 관련한 L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T=n이나 다른매개변수에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

고장난 대상에 다시 아카이브

L O G _ A RCHIVE_DEST_n 매개변수의 REOPEN 속성을 사용하여 A RC n이 오류발생 후 고장난 대상에 다시 아카이브를 시도할 것인지 여부와 시기를 결정합니다.R E O P E N은 OPEN 오류뿐 아니라 모든 오류에 적용됩니다.

R E O P E N=n은 A RC n이 고장난 대상을 다시 열기 전에 최소 시간(초)을 설정합니다. n의 기본값은 3 0 0초입니다. 값이 0이면 REOPEN 옵션을 해제하는 것과 같습니다. 즉, ARC n은 고장난 후 아카이브를 시도하지 않습니다. REOPEN 키워드를 지정하지 않으면 A RC n은 오류 발생 후 대상을 다시 열지 않습니다.

R E O P E N을 사용하여 아카이브된 로그를 다시 접속하고 전송하려고 시도하는 횟수의한계를 지정할 수 없습니다. REOPEN 시도가 성공하든 실패하든 REOPEN 정보는다시 설정됩니다.

O P T I O NAL 대상에 R E O P E N을 지정하는 경우 오류가 있으면 O ra c l e은 온라인 로그를 겹쳐 쓸 수 있습니다. MANDAT O RY 대상에 대해 R E O P E N을 지정하는 경우O rac l e은 성공적으로 아카이브할 수 없을 때 제품 데이터베이스를 정지합니다. 이 시나리오는 다음과 같은 작업을 수행해야 합니다.

■ 고장난 대상에 수동으로 아카이브합니다.

아카이브된 리두 로그 관리 7 - 1 9

아카이브 대상 고장 관리

값 의미

1 O r a c l e은 값을 무시하고 MANDATORY 대상의 수를 사용합니다. (이 예에서, 2)

2 O r a c l e은 OPTIONAL 대상이 성공하지 못해도 로그 파일을 다시 사용할수 있습니다.

3 O r a c l e은 적어도 하나의 OPTIONAL 대상이성공한 경우에만 로그를 다시 사용할 수 있습니다.

4 Oracle은 OPTIONAL 대상이 둘 다 성공한 경우에만 로그를 다시 사용할 수 있습니다.

5 오류: 값이 대상의 수보다 큽니다.

■ 대상을 지연시키거나 선택적으로 지정하거나 서비스를 변경하여 대상을 변경합니다.

■ 대상을 삭제합니다.

REOPEN 키워드를 사용할 때 다음 사항에 주의하십시오.

■ A RC n은 로그 파일의 시작부터 아카이브 작업을 시작할 때에만 대상을 다시 열고작업 중일 때에는 대상을 다시 열지 않습니다. ARC n은 항상 시작부터 로그 복사를 다시 시도합니다.

■ REOPEN 시간이 지정되거나 기본값으로 주어지지 않으면 A RC n은 기록된 오류시간과 REOPEN 간격을 더한 시간이 현재 시간보다 짧은지 검사합니다. 현재 시간보다 짧다면 A RC n은 로그 복사를 다시 시도합니다.

■ REOPEN 절을 AC T I V E = T RU E인 대상 상태에 성공적으로 영향을 주지만VALID 및 E NABLED 상태는 변경되지 않습니다.

아카이브 성능 조정

대부분의 데이터베이스의 경우 A RC n은 전체 시스템 성능에 영향을 주지 않습니다.그러나 일부 대규모 데이터베이스를 사용하는 사이트에서는 아카이브하면 시스템 성능에 영향을 줄 수 있습니다. 한편, ARC n이 작업을 매우 빠르게 수행하면 A RC n이실행되는 동안 아카이브 작업이 CPU 주기를 사용하므로 전체 시스템 성능이 저하될수 있습니다. 이에 반해서, ARC n이 작업을 매우 느리게 수행하면 시스템 성능에 미치는 영향은 적지만 리두 로그 파일을 아카이브하는 시간은 길어집니다. 모든 리두로그 그룹이 아카이브되기를 기다리고 있어 사용할 수 없다면 병목 현상이 발생할 것입니다.

다음과 같은 방법을 사용하여 아카이브 작업을 조정합니다.

■ 다중 A RCn 프로세스 지정

■ 아카이브 버퍼 매개변수 설정

참조: 데이터베이스 조정에 대한 자세한 내용은 O racle8i Tuning을참조하십시오.

다중 ARCn 프로세스 지정

각 데이터베이스 인스턴스에 대해 최대 1 0개의 A RCn 프로세스를 지정합니다. 매개변수 L O G _ A RC H I V E _ M A X _ P RO C E S S E S =n ( n은 1에서 1 0까지의 정수)을 설정하여 시작 시나 실행 시간에 여러 처리 기능을 활성화합니다. 기본적으로 매개변수는0으로 설정되어 있습니다.

L GW R은 A RCn 프로세스의 수를 자동으로 증가시키므로 현재의 수로 현재 작업 로드를 처리하는 것이 충분하지 않을 수 있습니다. 매개변수는 A RCn 프로세스의 초기

7 - 2 0 Oracle8i 관리자 설명서

아카이브 성능 조정

숫자를 지정하거나 현재의 숫자를 증가시키거나 감소시키도록 되어 있습니다.

다중 프로세스를 생성하면 특히 다음과 같은 상황에 유용합니다.

■ 두 개 이상의 온라인 리두 로그를 사용합니다.

■ 하나 이상의 대상을 아카이브합니다.

다중 A RCn 프로세싱은 L GW R이 여러 온라인 리두 로그를 통해 단일 A RCn 프로세스보다 빠르게 전환할 때 발생하는 병목 현상을 방지하여 비활성 로그를 여러 대상에 작성할 수 있습니다. 각 A RCn 프로세스는 한 번에 하나의 비활성 로그에서만 작업하지만 지정된 각 대상에 아카이브해야 합니다.

예를 들어, 다섯 개의 온라인 리두 로그 파일을 유지 관리하면 세 개의 A RCn 프로세스를 사용하여 인스턴스를 시작하도록 결정할 수 있습니다. LGW R이 활발히 로그파일 중 하나에 작성할 때 A RCn 프로세스는 동시에 세 개까지 비활성 로그 파일을다양한 대상에 아카이브할 수 있습니다. 다음 그림과 같이 A RC n의 각 인스턴스는단일 로그 파일을 책임지고 있고 정의된 대상 모두에 이 파일을 아카이브합니다.

아카이브된 리두 로그 관리 7 - 2 1

아카이브 성능 조정

그림 7-3 다중 아카이브 프로세스 사용

아카이브 버퍼 매개변수 설정

이 단원에서는 조정을 위해 아카이브 버퍼 초기화 매개변수를 사용하는 측면에 대해설명하며 다음 내용을 다룹니다.

■ 시스템 성능에 미치는 영향 최소화

■ 아카이브 속도 개선

아카이브 작업을 조정하여 병목 현상이 발생하지 않는 범위 내에서 아카이브를 가능한 느리게 수행하거나 시스템 성능이 그다지 저하되지 않는 범위 내에서 아카이브를되도록 빨리 수행할 수도 있습니다. 이렇게 하려면 초기화 매개변수 L O G _ A RC H -I V E _ B U F F E R S (아카이브에 할당되는 버퍼 수)와 L O G _ A RC H I V E _ B U F F E R _ S I -Z E (각 버퍼의 크기)의 값을 조정해야 합니다.

주: L O G _ A RCHIVE_BUFFERS 또는 L O G _ A RC H I V E _ B U F F E R _S I Z E의 값을 변경하면 다음에 인스턴스를 시작할 때 새로운 값이 적용됩니다.

7 - 2 2 Oracle8i 관리자 설명서

아카이브 성능 조정

대상2

대상1

LGWR

LOG1(비활성)

LOG2(비활성)

LOG3(비활성)

LOG4(비활성)

LOG5(활성)

ARC0 ARC1 ARC2

시스템 성능에 미치는 영향 최소화

시스템을 리두 로그하도록 대기시키지 않고 가능한 느리게 A RCn 작업을 수행하려면아카이브 버퍼 수( L O G _ A RC H I V E _ B U F F E R S )를 1로 설정하고 각각의 버퍼 크기( L O G _ A RC H I V E _ B U F F E R _ S I Z E )를 가능한 최대로 설정하여 시작합니다.

A RC n이 작업하는 동안 시스템 성능이 크게 저하되면 A RC n이 실행될 때 시스템 성능이 더 이상 저하되지 않을 때까지 L O G _ A RCHIVE_BUFFER_SIZE 값을줄입니다.

주: 아카이브 속도를 매우 느리게 설정하려고 하지만 O ra c l e이 리두로그 파일이 재사용되기 전에 아카이브되도록 대기시켜야 하는 경우 추가 리두 로그 파일 그룹을 생성할 수 있습니다. 그룹을 추가하면O ra c l e은 항상 그룹을 사용할 수 있습니다.

아카이브 속도 개선

아카이브 성능을 향상시키려면 여러 개의 아카이브 버퍼를 사용하여 A RCn 프로세스를 아카이버 프로세스가 출력 로그를 쓰는 동시에 아카이브 로그를 읽을 수 있도록합니다. LOG_ARC H I V E _ B U F F E R S를 2로 설정할 수 있지만 매우 빠른 테이프 드라이브의 경우에는 3 이상으로 설정할 수 있습니다. 그런 다음 아카이브 버퍼 크기를알맞은 수로 설정한 후 시스템 성능을 손상시키지 않는 범위 내에서 원하는 만큼 빠르게 아카이브되도록 아카이브 버퍼 크기를 증가시킵니다.

참조: 최대값은 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오. LOG_ARCHIVE 매개변수에 대한 자세한 내용은 O racle8i Refe re n c e를참조하십시오.

아카이브된 리두 로그 정보 표시

아카이브된 리두 로그에 대해 유용한 정보를 포함하는 고정된 뷰가 여러 개 있습니다.

아카이브된 리두 로그 관리 7 - 2 3

아카이브된 리두 로그 정보 표시

고정된뷰 설명

V $D A T A B A S E 데이터베이스가 ARCHIVELOG 모드에 있는지N OA RCHIVELOG 모드에 있

는지 식별합니다.

예를 들어, 다음 질의는 아카이브해야 하는 온라인 리두 로그 그룹을 표시합니다.

SELECT group#, archivedFROM sys.v$log;

GROUP# ARC---------- ---1 YES2 NO

현재의 아카이브 모드를 보려면 V $DATABASE 뷰를 질의합니다.

SELECT log_mode FROM sys.v$database;

LOG_MODE------------NOARCHIVELOG

또한 SQL 문 A RCHIVE LOG LIST는 접속된 인스턴스에 대한 아카이브 정보를보여줍니다.

ARCHIVE LOG LIST;

7 - 2 4 Oracle8i 관리자 설명서

아카이브된 리두 로그 정보 표시

고정된뷰 설명

V $AR CHIVED_LOG 제어 파일에서 현재까지의 아카이브된 로그 정보를 표시합니다. 복구 카

탈로그를 사용하는 경우 R C_ARCHIVED_LOG 뷰에 이와 유사한 정보가

있습니다.

V $AR CHIVE_DEST 현재의 인스턴스, 모든 아카이브 대상 및 대상의 현재 값, 모드, 상태를

설명합니다.

V $B A C K U P _R EDOLOG 아카이브된 로그의 백업에 대한 정보가 있습니다. 복구 카탈로그를 사용

하는 경우 R C _ B A C K U P _R ED O L O G에 이와 유사한 정보가 있습니다.

V $LOG 데이터베이스에 대한 온라인 리두 로그 그룹을 모두 표시하고 아카이브되

어야 하는 그룹을 표시합니다.

V $LOG_HISTORY 아카이브된 로그와 아카이브된 각각의 로그에 대한 SCN 범위 등과 같은

로그 기록 정보가 포함되어 있습니다.

Database log mode ARCHIVELOGAutomatic archival ENABLEDArchive destination destinationOldest online log sequence 30Next log sequence to archive 32Current log sequence number 33

위의 정보는 현재 인스턴스의 아카이브된 리두 로그 설정값에 대해 필요한 모든 정보를 나타냅니다.

■ 데이터베이스는 현재 A RCHIVELOG 모드에서작동하고 있습니다.

■ 자동 아카이브 기능이 활성화되어 있습니다.

■ 아카이브된 리두 로그의 대상 (운영 체제에 따라 다릅니다. )

■ 가장 오래된 채워진 온라인 리두 로그 그룹의 시퀀스 번호는 3 0입니다.

■ 다음에 아카이브될 채워진 온라인 리두 로그 그룹의 시퀀스 번호는 3 2입니다.

■ 현재 온라인 리두 로그 파일의 시퀀스 번호는 3 3입니다.

N ext log sequence to arc h i v e로 출력된 시퀀스 번호보다 크고 C u r rent log seq-uence number로 출력된 시퀀스 번호보다 작은 리두 로그 그룹을 모두 아카이브해야 합니다. 예를 들어, 위의 정보는 시퀀스 번호가 3 2인 온라인 리두 로그 그룹이 아카이브되어야 함을 나타냅니다.

참조: 데이터 딕셔너리 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

O racle 유틸리티 L o g M i n e r를 사용하면 선택 기준에 준한 온라인 리두 로그와 아카이브된 리두 로그에 포함된 정보를 읽을 수 있습니다. LogMiner의 완전한 관계형SQL 인터페이스는 아카이브된 리두 로그 파일의 복원 없이 데이터베이스의 완전한현재까지 기록 뷰에 대한 직접 액세스를 제공합니다.

이 단원에서는 다음 내용을 다룹니다.

■ LogMiner 사용법

■ 제한 사항

■ 딕셔너리 파일 생성

■ 분석할 리두 로그 지정

■ LogMiner 사용

■ 인덱스 구성 테이블

아카이브된 리두 로그 관리 7 - 2 5

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

■ LogMiner 사용: 시나리오

LogMiner 사용법

L o g M i n e r는 논리적 손상을 식별하고 실행을 취소하는데 특히 유용합니다.L o g M i n e r는 리두 로그 파일의 내용을 데이터베이스에 대해 수행되는 논리적 연산을나타내는 SQL 문으로 변환하여 리그 로그 파일을 처리합니다. 그런 다음 V $L O G -MNR_CONTENTS 뷰는 원래의 작업을 나타내는 재구성된 SQL 문( S Q L _ R E D O열)과 작업을 실행 취소하는 해당 SQL 문(SQL_UNDO 열)을 나열합니다. 원래의변경 사항을 데이터베이스로 롤백하도록 SQL_UNDO 문을 적용합니다.

또한 V $LOGMNR_CONTENTS 뷰를사용하여 다음 작업을 수행할 수 있습니다.

■ 불완전한 복구를 수행하는데 필요한 시간 또는 S C N을 정확히 나타내어 데이터베이스에 논리적 손상이 시작된 시기를 알아냅니다.

■ 특정 테이블에 대한 변경 사항을 추적합니다.

■ 특정 사용자가 작성한 변경 사항을 추적합니다.

■ 데이터 액세스 패턴을 매핑합니다.

■ 조정과 용량 계획을 위해 아카이브된 데이터를 사용합니다.

참조: LogMiner 데이터 딕셔너리 뷰에 대한 자세한 내용은 O racle8i Refe r n e c e를참조하십시오.

제한 사항

L o g M i n e r는 LogMiner 전용의 다음과 같은 사용 및 호환성 요구 사항을 가집니다.

■ O racle 8.1 이후 버전에서만 실행합니다.

■ 동일한 데이터베이스 문자 집합을 사용하고 인스턴스 분석 시 동일한 하드웨어 플랫폼에서 실행하는 버전 8.0 이후의 데이터베이스에서 리두 로그 파일을 분석합니다.

■ PL/SQL 패키지로 생성된 딕셔너리를 참고하여 리두 로그 파일 내용을 완전히 분석합니다. 딕셔너리를 사용하면 L o g M i n e r가 내부 객체 식별자와 객체 이름 및외부 데이터 형식에 대한 데이터 유형을 변환할 수 있습니다.

■ 기본 테이블의 DML 작업에 대한 정보를 얻습니다. 다음 작업은 지원하지 않습니다.

7 - 2 6 Oracle8i 관리자 설명서

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

■ 인덱스 구성 테이블

■ 클러스터화된 테이블/인덱스

■ 스칼라가 아닌 데이터 유형

■ 체인화된 행

딕셔너리 파일 생성

L o g M i n e r는 데이터베이스 마운트 여부에 관계없이 O racle 인스턴스에서 실행됩니다. LogMiner는 딕셔너리 파일을 사용합니다. 딕셔너리 파일은 파일이 생성된 시간뿐 아니라 파일을 생성한 데이터베이스를 나타내는 특별한 파일입니다. 이 딕셔너리파일은 반드시 필요한 것은 아니지만 생성하는 것이 좋습니다.

딕셔너리 파일이 없는 경우 등가 SQL 문은 객체 이름에 대한 O racle 내부 객체의I D를 사용하며 열 값을 1 6진법 데이터로 나타냅니다. 예를 들어, 다음과 같은 S Q L문의 경우:

INSERT INTO emp(name, salary) VALUES (’John Doe’, 50000);

L o g M i n e r는 다음과 같이 표시합니다.

insert into Object#2581(col#1, col#2) values (hextoraw(’ 4 a 6 f 6 8 6 e 2 0 4 4 6 f 6 5’), hextoraw(’c306’));”

데이터베이스를 마운트한 다음 딕셔너리 정보를 외부 파일로 추출하여 딕셔너리 파일을 생성합니다. 분석하려는 로그 파일을 생성하는 동일한 데이터베이스에서 딕셔너리파일을 생성해야 합니다. 일단 생성되면 리두 로그를 분석하는데 딕셔너리 파일을 사용할 수 있습니다.

딕셔너리 파일을 생성할 때 다음을 지정합니다.

■ D I C T I O NA RY _ F I L E NA M E으로 딕셔너리 파일 이름 지정

■ D I C T I O NA RY _ L O CAT I O N으로 파일 위치 지정

O racle8i 데이터베이스에서딕셔너리 파일을 생성하려면 다음과 같이 하십시오.

1. i n i t . o r a 매개변수 U T L _ F I L E _ D I R를 설정하여 PL/SQL 프로시저가 사용할디렉토리를 지정합니다. 이 매개변수를 참조하지 않으면 프로시저는 실패합니다.예를 들어, / o r a c l e / l o g s를 사용하여 다음과 같이 설정합니다.

UTL_FILE_DIR = /oracle/logs

2. S Q L * P l u s를 사용하여 분석하려는 파일의 데이터베이스를 마운트한 다음 엽니다. 예를 들어, 다음을 입력합니다.

아카이브된 리두 로그 관리 7 - 2 7

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

STARTUP

3 . PL/SQL 프로시저 D B M S _ L O G M N R _ D. B U I L D를 실행합니다. 딕셔너리에 대한 파일 이름과 파일에 대한 디렉토리 경로명을 지정합니다. 이 프로시저는 로그파일을 분석하는데 사용해야 하는 딕셔너리 파일을 생성합니다. 예를 들어,/ o r a c l e / l o g s에서 dictionary.ora 파일을 생성하려면 다음을 입력합니다.

EXECUTE dbms_logmnr_d.build(dictionary_filename =>’dictionary.ora’,dictionary_location => ’/oracle/logs’);

O racle8 데이터베이스에서딕셔너리 파일을 생성하려면 다음과 같이 하십시오.

L o g M i n e r는 8.1 이후 릴리스의 데이터베이스에서만 실행할 수 있지만 릴리스 8 . 0의데이터베이스에서 리두 로그를 분석하여 이를 사용할 수 있습니다.

1. O racle8i 데이터베이스에서 $ O R A C L E _ H O M E / r d b m s / a d m i n 디렉토리에 포함되어있는 d b m s l o g m n r d . s q l 스크립트를 운영 체제 유틸리티를 사용하여 O racle8 데이터베이스의 동일한 디렉토리로 복사합니다. 예를 들어, 다음을 입력합니다.

% cp /8.1/oracle/rdbms/admin/dbmslogmnrd.sql /8.0/oracle/rdbms/admin/dbmslogmnrd.sql

2 . S Q L * P l u s를 사용하여 분석하려는 파일이 있는 데이터베이스를 마운트하고 엽니다. 예를 들어, 다음을 입력합니다.

STARTUP

3 . 8.0 데이터베이스의 복사된 dbmslogmnrd.sql 스크립트를 실행하여 D B M S _ L -OGMNR_D 패키지를 생성합니다. 예를 들어, 다음을 입력합니다.

@dbmslogmnrd.sql

4. i n i t . o r a 매개변수 U T L _ F I L E _ D I R을 설정하여 PL/SQL 패키지가 사용할 디렉토리를 지정합니다. 이 매개변수를 참조하지 않으면 프로시저는 실패합니다.예를 들어, / 8 . 0 / o r a c l e / l o g s를 사용하여 다음을 설정합니다.

UTL_FILE_DIR = /8.0/oracle/logs

5 . PL/SQL 프로시저 D B M S _ L O G M N R _ D. B U I L D를 실행합니다. 딕셔너리에 대한 파일 이름과 파일에 대한 디렉토리 경로명을 지정합니다. 이 프로시저는 로그파일을 분석하는데 사용해야 하는 딕셔너리 파일을 생성합니다. 예를 들어,/ 8 . 0 / o r a c l e / l o g s에서 dictionary.ora 파일을 생성하려면 다음을 입력합니다.

EXECUTE dbms_logmnr_d.build(dictionary_filename =>’dictionary.ora’,dictionary_location => ’/8.0/oracle/logs’);

7 - 2 8 Oracle8i 관리자 설명서

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

참조: D B M S _ L O G M N R _ D에 대한 내용은 O racle8i Supplied Packages Refe r -e n c e를 참조하십시오.

분석할 리두 로그 지정

딕셔너리 파일이 생성되었다면 리두 로그 분석을 시작할 수 있습니다. 첫 번째 단계는 ADD_LOGFILE 프로시저를 사용하여 분석하려는 로그 파일을 지정하는 것입니다. 다음 옵션을 사용하십시오.

■ NEW: 새로운 목록 생성

■ ADDFILE: 목록에 리두 로그 추가

■ R E M OVEFILE: 목록에서 리두 로그 제거

L o g M i n e r를 사용하려면 다음과 같이 하십시오.

1. S Q L * P l u s를 사용하여 데이터베이스 마운트 여부에 관계없이 O racle 인스턴스를시작합니다. 예를 들어, 다음을 입력합니다.

startup

2. D B M S _ L O G M N R.ADD_LOGFILE 프로시저를 실행할 때 NEW 옵션을 지정하여 로그 목록을 생성합니다. 예를 들어, / o r a c l e / l o g s / l o g 1 . f를 지정하려면다음을 입력합니다.

execute dbms_logmnr.add_logfile(LogFileName => ’/oracle/logs/log1.f’,Options => dbms_logmnr.NEW);

3. 보다 많은 로그를 추가하려면 ADDFILE 옵션을 지정하여 추가합니다. 예를 들어, / o r a c l e / l o g s / l o g 2 . f를 추가하려면 다음을 입력합니다.

execute dbms_logmnr.add_logfile(LogFileName => ’/oracle/logs/log2.f’,Options => dbms_logmnr.ADDFILE);

4. 로그를 제거하려면 R E M OVEFILE 옵션을 지정하여 제거합니다. 예를 들어,/ o r a c l e / l o g s / l o g 2 . f를 제거하려면 다음을 입력합니다.

execute dbms_logmnr.add_logfile(LogFileName => ’/oracle/logs/log2.f’,Options => dbms_logmnr.REMOVEFILE);

참조: D B M S _ L O G M N R에 대한 내용은 O racle8i Supplied Packages Refe re n c e를 참조하십시오.

아카이브된 리두 로그 관리 7 - 2 9

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

LogMiner 사용

딕셔너리 파일을 작성하였고 분석할 로그를 지정하였으면 L o g M i n e r를 시작하여 분석을 시작할 수 있습니다. 다음 옵션을 사용하여 시작 시에 검색 범위를 좁힐 수 있습니다.

L o g M i n e r를 시작하였으면 분석하는데 다음 데이터 딕셔너리 뷰를 사용할 수 있습니다.

L o g M i n e r를 사용하려면 다음과 같이 하십시오.

1 . D B M S _ L O G M N R. S TA RT_LOGMNR 프로시저를 실행하여 LogMiner 유틸리티를 시작합니다. 예를 들어, / o r a c l e / d i c t i o n a r y . o r a를 사용하여 L o g M i -n e r를 시작하려면 다음을 입력합니다.

execute dbms_logmnr.start_logmnr(DictFileName =>’/oracle/dictionary.ora’);

선택적으로 StartTime 및 EndTime 매개변수를 설정하여 시간을 기준으로 데이터를 필터링합니다. 프로시저에는 날짜 값을 설정해야 하므로 T O _ DATE 함수를 사용하여 다음 예와 같이 날짜와 시간을 지정합니다.

execute dbms_logmnr.start_logmnr(DictFileName => ’/oracle/dictionary.ora’,StartTime => to_date(’01-Jan-98 08:30:00’, ’DD-MON-YYYY HH:MI:SS’)EndTime => to_date(’01-Jan-1998 08:45:00’, ’DD-MON-YYYY HH:MI:SS’ ) ) ;

7 - 3 0 Oracle8i 관리자 설명서

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

옵션 지정

StartScn SCN 범위의 시작

EndScn SCN 범위의 끝

S t a r t T i m e 시간 간격의 시작

E n d T i m e 시간 간격의 끝

DictFileName 딕셔너리 파일의 이름

뷰 디스플레이 정보 내용

V $LOGMNR_DICTIONARY 사용 중인 딕셔너리 파일

V $LOGMNR_PARAMETERS L o g M i n e r에 대한 현재 매개변수 설정 내용

V $L O G M N R _ F I L E S 분석 중인 리두 로그 파일 종류

V $L O G M N R _ C O N T E N T S 분석 중인 리두 로그 파일의 내용

StartScn 및 EndScn 매개변수를 사용하여 다음 예와 같이 S C N을 기준으로 데이터를 필터링합니다.

execute dbms_logmnr.start_logmnr(DictFileName => ’/oracle/dictionary.ora’,StartScn => 100,EndScn => 150);

2 . V $LOGMNR_CONTENTS 테이블을통해 출력 내용을 봅니다. LogMiner 매체 복구에 적용되는 것과 동일한 순서인 SCN 순서로 모든 행을 되돌려 줍니다.예를 들어, 다음 질의는 작업에 대한 정보를 나열합니다.

SELECT operation, sql_redo FROM v$logmnr_contents;

OPERATION SQL_REDO

--------- -----------------------------------------

I N T E R N A L

I N T E R N A L

START set transaction read write;

UPDATE update SYS.UNDO$ set NAME = ’RS0’, USER# = 1, FILE# = 1, BLOCK# = 2450, SCNBAS =

COMMIT commit;

START set transaction read write;

UPDATE update SYS.UNDO$ set NAME = ’RS0’, USER# = 1, FILE# = 1, BLOCK# = 2450, SCNBAS =

COMMIT commit;

START set transaction read write;

UPDATE update SYS.UNDO$ set NAME = ’RS0’, USER# = 1, FILE# = 1, BLOCK# = 2450, SCNBAS =

COMMIT commit;

11 rows selected.

참조: D B M S _ L O G M N R에 대한 내용은 O racle8i Supplied Packages Refe re n c e를 참조하십시오.

LogMiner 데이터 딕셔너리 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

다른 데이터베이스에서 아카이브된 리두 로그 파일 분석 데이터베이스의 인스턴스에서 L o g M i n e r를 실행하여 다른 데이터베이스의 리두 로그 파일을 분석할 수 있습니다. 다른 데이터베이스에서 아카이브된 리두 로그 파일을 분석하려면 L o g M i n e r는다음 작업을 수행해야 합니다.

■ 리두 로그 파일과 동일한 데이터베이스에서 생성되고 동일한 데이터베이스 문자집합으로 생성된 딕셔너리 파일에 액세스해야 합니다.

■ 로그 파일을 생성한 플랫폼과 동일한 하드웨어 플랫폼에서 실행해야 합니다. 플랫폼은 동일한 시스템에 있지 않아도 됩니다.

■ O racle 8.0 이후 버전에서 복구 작업에 적용될 수 있는 리두 로그 파일을 사용해야 합니다.

아카이브된 리두 로그 관리 7 - 3 1

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

LogMiner 사용: 시나리오

이 단원에서는 다음과 같은 LogMiner 시나리오를다룹니다.

■ 사용자 추적

■ 테이블 액세스 통계 계산

사용자 추적

이 예에서 데이터베이스 사용자 중 한 명인 J O E D E VO가 특정한 시간 범위 내에 데이터베이스에 만든 모든 변경 내용을 보려면 다음 단계로 작업을 수행합니다.

■ 1단계: 딕셔너리 생성

■ 2단계: 로그 추가 및 검색 범위 제한

■ 3단계: LogMiner 시작및 데이터 분석

1단계: 딕셔너리 생성 L o g M i n e r를 사용하여 J O E D E VO의 데이터를 분석하려면L o g M i n e r를 시작하기 전에 딕셔너리 파일을 생성해야 합니다.

다음을 수행하도록 결정합니다.

■ 딕셔너리 파일 o r c 1 d i c t . o r a를 호출합니다.

■ 딕셔너리를 디렉토리 / u s e r / l o c a l / d b s에 넣습니다.

■ 초기화 매개변수 U T L _ F I L E _ D I R을 / u s e r / l o c a l / d b s로 설정합니다.

# Set the initialization parameter UTL_FILE_DIR in the init.ora fileUTL_FILE_DIR = /user/local/dbs

# Start SQL*Plus and then connect to the databaseconnect system/manager

# Open the database to create the dictionary filestartup

# Create the dictionary fileexecute dbms_logmnr_d.build(dictionary_filename => ’orcldict.ora’,dictionary_location => ’/usr/local/dbs’);

# The dictionary has been created and can be used latershutdown;

7 - 3 2 Oracle8i 관리자 설명서

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

2단계: 로그 추가 및 검색 범위 제한 딕셔너리가 생성되면 특정 시간에 생긴 변경 사항을 볼 것을 결정합니다. 다음 작업을 수행하십시오.

■ 로그 l o g 1 o r c 1 . o r a를 사용하고 지정하기 위한 로그 파일 목록을 생성합니다.

■ l o g 2 o r c 1 . o r a 로그를 목록에 추가합니다.

■ L o g M i n e r를 시작하고 1 9 9 8년 1월 1일 오전 8시 3 0분에서 8시 4 5분 사이로 검색 범위를 제한합니다.

# Start SQL*Plus, connect as SYSTEM, then start the instanceconnect system/managerstartup nomount

# Supply the list of logfiles to the reader. The Options flag is set# to indicate this is a new list.

execute dbms_logmnr.add_logfile(Options => dbms_logmnr.NEW,LogFileName => ’log1orc1.ora’);

# Add a file to the existing list. The Options flag is clear to# indicate that you are adding a file to the existing list

execute dbms_logmnr.add_logfile(Options => dbms_logmnr.ADDFILE,LogFileName => ’log2orc1.ora’);

3단계: LogMiner 시작및 데이터 분석 이 때에는 V $LOGMNR_CONTENTS 테이블이 질의에 사용될 수 있습니다. 급여 테이블에서 사용자 J O E D E VO가 변경한모든 내용을 찾도록 결정합니다. JOEDEVO가 자신의 이전 급여를 삭제하고 새로인상된 급여를 삽입하는 두 가지 작업을 요청했다는 것을 발견하면 이 작업의 실행을취소하는데 필요한 데이터를 갖게 됩니다. (이런 경우 J O E D E VO를 해고하는 것이정당합니다!)

# Start the LogMiner. Limit the search to the specified time range.execute dbms_logmnr.start_logmnr(DictFileName => ’orcldict.ora’,StartTime => to_date(’01-Jan-98 08:30:00’, ’DD-MON-YYYY HH:MI:SS’)EndTime => to_date(’01-Jan-1998 08:45:00’, ’DD-MON-YYYY HH:MI:SS’));

SELECT sql_redo, sql_undo FROM v$logmnr_contentsWHERE username = ’JOEDEVO’ AND tablename = ’SALARY’;

# The following data is displayed (properly formatted)

SQL_REDO SQL_UNDO-------- --------delete * from SALARY insert into SALARY(NAME,EMPNO, SAL)

아카이브된 리두 로그 관리 7 - 3 3

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

where EMPNO = 12345 values (’JOEDEVO’, 12345,500)and ROWID = ’AAABOOAABAAEPCABA’;

insert into SALARY(NAME, EMPNO, SAL) delete * from SALARYvalues(’JOEDEVO’,12345,2500) where EMPNO = 12345

and ROWID = ’ A A A B O O A A B A A E P C A B A’;2 rows selected

테이블 액세스 통계 계산

O racle RDBMS로 생성된 리두 로그는 데이터베이스에 생긴 모든 변경 사항의 현재까지 기록을 포함합니다. 리두 로그를 마이닝하여 데이터베이스를 조정하는데 사용될수 있는 대량의 정보를 생성할 수 있습니다. 예를 들어, 직접 마케팅 데이터베이스를관리하고 8월의 2주 동안 이윤이 발생하는데 고객과의 접촉이 얼마나 생산적인지를알아낼 수 있습니다.

먼저, LogMiner를시작하고 시간 범위를 지정합니다.

execute dbms_logmnr.start_logmnr(StartTime => ’07-Aug-98’,EndTime => ’15-Aug-98’,DictFileName => ’/usr/local/dict.ora’);

다음, 사용자는 V $ L O G M N R _ C O N T E N T S를 질의하여 지정된 시간 범위에서 수정된 테이블을 알아냅니다.

select seg_owner, seg_name, count(*) as Hits fromV$LOGMNR_CONTENTS where seg_name not like ’%$’ group byseg_owner, seg_name;

SEG_OWNER SEG_NAME Hits--------- -------- ----CUST ACCOUNT 384SCOTT EMP 12SYS DONOR 12UNIV DONOR 234UNIV EXECDONOR 325UNIV MEGADONOR 32

참조: V $LOGMNR_CONTENTS 또는 다른 LogMiner 뷰나 초기화 매개변수에대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

D B M S _ L O G M N R.ADD_LOGFILE 또는 다른 PL/SQL 패키지에 대한 내용은O racle8i Supplied Packages Refe re n c e를 참조하십시오.

7 - 3 4 Oracle8i 관리자 설명서

L o g M i n e r를 사용하여 온라인 리두 로그와 아카이브된 리두 로그 분석

작업 대기열 관리 8-1

8작업 대기열 관리

이 장에서는 작업 대기열을 사용하여 PL/SQL 코드를 주기적으로 실행하는 방법을 설명하며 다음 내용을 다룹니다.

■ SNP 백그라운드 프로세스

■ 작업 대기열 관리

■ 작업 대기열 정보 보기

SNP 백그라운드 프로세스

8 - 2 Oracle8i 관리자 설명서

SNP 백그라운드 프로세스

이 단원에서는 SNP 백그라운드 프로세스와 작업 대기열 관리에서의 SNP 백그라운드 프로세스의 역할과 다음 내용을 다룹니다.

■ 다중 SNP 프로세스

■ SNP 프로세스 시작

작업 대기열을 사용하여 루틴이 주기적으로 수행되도록 일정을 잡을 수 있습니다. 루틴은 임의의 PL/SQL 코드입니다. 작업 일정을 잡으려면 작업을 작업 대기열로 보내고 실행할 빈도를 지정합니다. 또한 보낸 작업을 변경하거나 사용할 수 없도록 하거나 삭제할 수 있습니다.

다중 프로세스 O racle 시스템은 성능을 극대화하고 보다 많은 사용자를 수용하기 위해 백그라운드 프로세스라는 추가 프로세스를 사용합니다. 백그라운드 프로세스는 백그라운드 프로세스를 사용하지 않는다면 각 사용자 프로세스마다 실행하는 여러O racle 프로그램이 처리해야 할 기능을 통합합니다. 백그라운드 프로세스는 비동기적으로 입출력을 수행하며 다른 O racle 프로세스를 모니터하여 보다 나은 성능과 신뢰도를 위한 병렬성의 증가를 가져옵니다.

SNP 백그라운드 프로세스는 작업 대기열을 실행합니다. SNP 프로세스는실행이 예정된 대기열의 작업을 주기적으로 호출하여 실행합니다. 백그라운드에서 대기열 작업을 처리하려면 실행 중인 SNP 프로세스가 최소한 하나는 있어야 합니다.

SNP 백그라운드 프로세스는 한 SNP 프로세스의 실패로 인해 인스턴스가 실패하지않는다는 점에서 O ra c l e의 다른 백그라운드 프로세스와 다릅니다. SNP 프로세스가실패하면 O ra c l e은 이를 재시작합니다.

시스템을 제한 모드로 시작한 경우 SNP 백그라운드 프로세스는 작업을 실행시키지않습니다. 하지만 다음과 같이 A LTER SYSTEM 명령어를 사용하여 이 기능을 활성화 또는 비활성화할 수 있습니다.

ALTER SYSTEM ENABLE RESTRICTED SESSION;ALTER SYSTEM DISABLE RESTRICTED SESSION;

제한 세션이 활성화되면 SNP 백그라운드 프로세스는 작업을 실행시키지 않고 제한세션이 비활성화되면 SNP 백그라운드 프로세스는 작업을 실행시킵니다.

참조: SNP 백그라운드 프로세스에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

작업 대기열 관리

작업 대기열 관리 8-3

다중 SNP 프로세스

인스턴스는 S N P 0에서 S N P 9까지와 S N PA에서 S N P Z까지 최대 3 6개의 SNP 프로세스를 가질 수 있습니다. 인스턴스에 여러 SNP 프로세스가 있으면 실행 중인 대기열의 작업은 이러한 프로세스를 통해 공유되므로 성능이 향상됩니다. 그러나 개별 작업은 임의의 한 시점에 하나의 프로세스에 의해서만 실행되어야 합니다. 단일 작업은여러 SNP 프로세스에서 동시에 처리될 수 없습니다.

SNP 프로세스 시작

작업 대기열 초기화 매개변수를 사용하여 SNP 백그라운드 프로세스 작동을 제어할 수있습니다. 인스턴스를 위해 초기화 매개변수 파일에 매개변수를 설정하면 설정된 매개변수는 다음 번 해당 인스턴스를 시작할 때 효과를 가집니다.

표 8 - 1은 작업 대기열 초기화 매개변수를 설명합니다.

표 8-1 작업 대기열 초기화 매개변수

작업 대기열 관리

이 단원에서는 작업 대기열 관리의 다양한 측면과 다음 내용을 다룹니다.

■ DBMS_JOB 패키지

■ 작업 대기열에 작업 보내기

■ 작업 실행 방법

■ 작업 대기열에서 작업 제거

매개변수 이름 설명

JOB_QUEUE_INTERVAL 기본값: 6 0 (초)

값의 범위: 1 . . . 3 6 0 0 (초)

다중 인스턴스: 서로 다른 값을 가질 수 있음

인스턴스의 SNP 백그라운드 프로세스에 대한 호출

간격을 설정합니다.

J O B _ Q U E U E _ P R O C E S S E S 기본값: 0

값의 범위: 0 . . . 3 6

다중인스턴스: 서로다른값을가질수 있음

인스턴스당 SNP 백그라운드 프로세스의 수를 설정합

니다.

작업 대기열 관리

8 - 4 Oracle8i 관리자 설명서

■ 작업 변경

■ 중단된 작업

■ 강제 작업 실행

■ 작업 종료

DBMS_JOB 패키지

작업 대기열의 작업 일정을 잡고 관리하려면 DBMS_JOB 패키지의 프로시저를 사용합니다. 작업 대기열 사용에 관련된 데이터베이스 권한은 없습니다. 작업 대기열 프로시저를 실행할 수 있는 모든 사용자는 작업 대기열을 사용할 수 있습니다. 표 8 - 2는DBMS_JOB 패키지의 작업 대기열 프로시저를 나열합니다.

표 8-2 DBMS_JOB 패키지프로시저

작업 대기열에 작업 보내기

작업 대기열에 새로운 작업을 보내려면 DBMS_JOB 패키지의 SUBMIT 프로시저를사용합니다.

DBMS_JOB.SUBMIT( job OUT BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE DEFAULT SYSDATE,

설명프로시저 페이지

REMOVE

CHANGE

NEXT_DATE

WHAT

INTERVAL

BROKEN

RUN

8-11 페이지

8-12 페이지

8-12 페이지

8-12 페이지

8-11 페이지

8-11 페이지

8-13 페이지

SUBMIT 8-11 페이지작업을 작업 대기열로 보냅니다.

지정된 작업을 변경합니다. 작업 설명, 작업

실행 시간 또는 작업 실행 간격을 변경할 수

있습니다.

작업 대기열에서 지정된 작업을 제거합니다.

지정된 작업에 대한 설명을 변경합니다.

지정된 작업에 대한 다음 실행 시간을 변경

합니다.

지정된 작업에 대한 실행 간격을 변경합니다.

작업을 실행할 수 없게 합니다. 중단된 작업

으로 표시되면 O r a c l e은 해당 작업을 실행

하지 않습니다.

지정된 작업을 강제로 실행합니다

작업 대기열 관리

interval IN VARCHAR2 DEFAULT ‘null’, no_parse IN BOOLEAN DEFAULT FALSE)

SUBMIT 프로시저는 사용자가 보낸 작업 번호를 돌려줍니다. 표 8 - 3은 프로시저의매개변수를 설명합니다.

표 8-3 DBMS_JOB.SUBMIT에대한 매개변수

예를 들어, 새로운 작업을 작업 대기열로 보내면 작업은 D B M S _ D D L. A NA LY Z E _OBJECT 프로시저를 호출하여 D Q U O N . ACCOUNTS 테이블의 최적기 통계를 생성합니다. 통계는 ACCOUNTS 테이블에 있는 행의 절반을 표본으로 해서 얻을 수있습니다. 작업은 2 4시간마다 실행됩니다.

VARIABLE jobno number;b e g i n

2 > D B M S _ J O B . S U B M I T ( : j o b n o ,3 > ’d b m s _ d d l . a n a l y z e _ o b j e c t (’’ T A B L E ’’,4> ’’DQUON’’, ’’ACCOUNTS’’,5> ’’ESTIMATE’’, NULL, 50);’6> SYSDATE, ’SYSDATE + 1’);7> commit;

작업 대기열 관리 8-5

매개변수 설명

job 작성한 작업에 할당된 식별자입니다. 작업 번호를 사용하여 작업

을 변경하거나 제거해야 합니다.

작업 번호에 대한 자세한 내용은 8-7 페이지“작업 번호”를 참조

하십시오.

what 실행할 PL/SQL 코드입니다.

작업 정의에 대한 자세한 내용은 8-7 페이지“작업 정의”를 참조

하십시오.

next_date 작업이 실행될 다음 날짜로 기본값은 S Y S D A T E입니다.

interval 작업을 실행할 다음 시기를 계산하는 날짜 함수로 기본값은

N U L L입니다. INTERVAL은 적합한 미래 시점 또는 NULL 값을

계산해야 합니다.

실행 간격 지정 방법에 대한 자세한 내용은 8-8 페이지“작업 실행

간격”을 참조하십시오.

no_parse 플래그로 기본값은 F A L S E입니다.

N O _ P A R S E가 F A L S E (기본값)로 설정되면 O r a c l e은 작업과 관련

된 프로시저를 구문 분석합니다. NO_PARSE가 T R U E로 설정되

면 O r a c l e은 처음으로 작업할 때 작업과 연관된 프로시저를 분석

합니다. 예를 들어, 작업과 연관된 테이블을 작성하기 전에 작업

을 보내려면 N O _ P A R S E를 T R U E로 설정합니다.

8> end;9> /

Statement processed.print jobnoJOBNO---------14144

작업 환경

작업을 작업 대기열로 보내거나 작업 정의를 변경할 때 O ra c l e은 다음과 같은 환경특성을 기록합니다.

■ 현재 사용자

■ 작업을 보내거나 변경하는 사용자

■ 현재 스키마

■ M AC 권한(해당하는 경우)

또한 O ra c l e은 다음과 같은 NLS 매개변수를 기록합니다.

■ N L S _ L A N GUAG E

■ N L S _ T E R R I T O RY

■ N L S _ C U R R E N C Y

■ N L S _ I S O _ C U R R E N C Y

■ N L S _ N U M E R I C _ C H A R AC T E R S

■ N L S _ DAT E _ F O R M AT

■ N L S _ DAT E _ L A N GUAG E

■ N L S _ S O RT

O ra c l e은 작업을 실행할 때마다 이러한 환경 특성을 복원합니다. NLS_L A N GUAG E와 N L S _ T E R R I T O RY 매개변수는 지정되지 않은 NLS 매개변수의기본값입니다.

DBMS_SQL 패키지와 A LTER SESSION 명령어를 사용하여 작업 환경을 변경할수 있습니다.

8 - 6 Oracle8i 관리자 설명서

작업 대기열 관리

작업 및 임포트/엑스포트

작업을 임포트하거나 엑스포트할 수 있습니다. 따라서 한 데이터베이스에서 작업을정의하여 다른 데이터베이스에 보낼 수 있습니다. 작업을 임포트하거나 엑스포트할때 작업 번호, 환경 및 정의는 변경되지 않습니다.

주: 임포트할 작업 번호가 데이터베이스에 있는 작업 번호와 일치하면해당 작업을 임포트할 수 없으므로 데이터베이스에 새 작업처럼 보내야합니다.

작업 소유자

작업 대기열에 작업을 보내면 O ra c l e은 보낸 사람을 그 작업의 소유자로 식별합니다.작업 소유자만이 작업을 변경하거나 강제로 실행할 수 있으며 대기열에서 작업을 제거할 수 있습니다.

작업 번호

작업 번호로 대기열 작업을 식별합니다. 작업을 보낼 때 작업 번호는 시퀀스SY S. J O B S E Q에서 자동으로 생성됩니다.

작업에 작업 번호가 할당되면 그 번호는 변경되지 않습니다. 작업을 엑스포트하거나임포트할 때도 작업 번호는 그대로 유지됩니다.

작업 정의

작업 정의는 SUBMIT 프로시저의 W H AT 매개변수에 지정된 PL/SQL 코드입니다.

일반적으로 작업 정의는 프로시저에 대한 단일 호출이며 프로시저 호출은 임의의 매개변수를 가질 수 있습니다.

주: 작업 정의에서 문자열 주위에는 두 개의 작은 따옴표를 사용합니다. 작업 정의 끝에는 항상 세미콜론을 넣습니다.

작업 대기열 관리 8-7

작업 대기열 관리

O ra c l e이 작업 정의에서 인식하는 특수 매개변수 값이 있습니다. 표 8 - 4는 이러한 매개변수를 나열합니다.

표 8-4 작업 정의에 대한 특수 매개변수 값

다음은 유효한 작업 정의 예입니다.

‘myproc(‘’10-JAN-82’’, next_date, broken);’‘scott.emppackage.give_raise(‘’JFEE’’, 3000.00);’‘dbms_job.remove(job);’

작업 실행 간격

I N T E RVAL 날짜 함수는 작업이 실행되기 바로 전에 계산됩니다. 작업이 성공적으로완료되면 I N T E RVA L에서 계산된 날짜가 새 N E X T _ DAT E가 됩니다. INTERVA L날짜 함수의 결과가 N U L L이고 작업이 성공적으로 완료되면 대기열에서 작업이 삭제됩니다.

작업을 설정한 간격에 따라 주기적으로 실행해야 하는 경우 I N T E RVAL 매개변수에‘SY S DATE + 7’과 같은 날짜 표현식을 사용합니다. 예를 들어, 실행 간격을 월요일에‘SY S DATE + 7’로 설정했으나 네트워크 장애와 같은 이유로 목요일까지 작업을실행하지 못한 경우 월요일이 아닌 매주 목요일에‘SY S DATE + 7’을 실행합니다.

마지막 실행에 관계없이 항상 특정 시간(예를 들어, 매주 월요일)에 자동으로 작업하게하려면 I N T E RVA L과 N E X T _ DATE 매개변수에 날짜 표현식을 ‘N E X T _DAY ( T RU N C ( SY S DAT E ) ,“M O N DAY”)’와 같이지정해야합니다.

8 - 8 Oracle8i 관리자 설명서

작업 대기열 관리

매개변수 모드 설명

job IN 현재 작업 번호

next_date IN/OUT 다음 작업 실행 날짜로 기본값은 S Y S D A T E입니다.

broken IN/OUT 중단 여부의 작업 상태를 나타내는 매개변수로 I N

값은 F A L S E입니다.

표 8 - 5는 작업 실행 간격에 사용되는 몇 가지 일반적인 날짜 표현식을 나열합니다.

표 8-5 일반적인작업 실행 간격

주: N E X T _ DATE 또는 I N T E RVA L을 지정할 때 날짜 리터럴과 문자열을 작은 따옴표로 묶어야 합니다. 또한 I N T E RVAL 값도 작은 따옴표로 묶어야 합니다.

데이터베이스 링크 및 작업

데이터베이스 링크를 사용하는 작업을 보내는 경우 링크는 사용자명과 암호를 포함해야 합니다. 익명의 데이터베이스 링크는 성공할 수 없습니다.

참조: DBMS_SQL 패키지에 대한 자세한 내용은 O racle8i Supplied Pa c k a g e sR e fe re n c e를 참조하십시오.

작업 실행 방법

SNP 백그라운드 프로세스는 작업을 실행합니다. 작업 실행을 위해 프로세스는 작업을 실행할 세션을 생성합니다.

SNP 프로세스가 작업을 실행할 때 작업은 보낸 환경과 동일한 환경에서 소유자의 기본 권한을 사용하여 실행됩니다.

D B M S _ J O B. RUN 프로시저를 사용하여 작업을 강제로 실행하면 사용자 프로세스가작업을 실행합니다. 사용자 프로세스가 작업을 실행할 때 기본 권한만을 사용하며 롤을 통해 부여된 권한은 사용할 수 없습니다.

작업 대기열 잠금

O ra c l e은 작업 대기열 잠금을 사용하여 작업이 한번에 하나의 세션에서만 실행되도록합니다. 세션은 작업을 실행할 때 해당 작업에 대한 작업 대기열(JQ) 잠금을 획득합니다.

작업 대기열 관리 8-9

작업 대기열 관리

날짜 표현식 계산

‘SYSDATE + 7‘ 마지막 실행으로부터 정확히 7일

‘SYSDATE + 1/48‘ 3 0분마다

‘ N E X T _ D A Y ( T R U N C ( S Y S D A T E ) , 매주 월요일 오후 3시

‘‘MONDAY‘‘) + 15/24‘

‘ N E X T _ D A Y ( A D D _ M O N T H S 각 4분기의첫 번째 목요일

(TRUNC(SYSDATE, ‘‘Q‘‘), 3),

‘ ‘ T H U R S D A Y ‘ ‘ ) ‘

작업 대기열 관리

8 - 1 0 Oracle8i 관리자 설명서

JQ 잠금 정보 해석 Enterprise Manager Lock Monitor 또는데이터 딕셔너리의뷰 잠금을 사용하여 현재 세션이 보유하고 있는 잠금 정보를 조사할 수 있습니다.

다음 질의는 JQ 잠금을 보유한 모든 세션의 세션 식별자, 잠금 유형 및 잠금 식별자를 나열합니다.

SELECT sid, type, id1, id2FROM v$lockWHERE type = ‘JQ‘;

SID TY ID1 ID2---------- -- ---------- ----------

12 JQ 0 141441 row selected.

위의 질의에서 잠금을 보유하고 있는 세션의 식별자는 1 2입니다. ID1 잠금 식별자는JQ 잠금에 대해 항상 0입니다. ID2 잠금 식별자는 세션이 실행하고 있는 작업의 작업 번호입니다.

작업 실행 오류

작업이 실패하면 실패에 대한 정보가 추적 파일과 경고 로그에 기록됩니다. Ora c l e은메시지 번호 O R A - 1 2 0 1 2를 기록하며 실패한 작업의 작업 번호를 포함합니다.

다음은 대기열 작업을 성공적으로 실행할 수 없는 경우입니다.

■ 작업을 실행할 SNP 백그라운드 프로세스가 없는 경우

■ 네트워크 또는 인스턴스를 실패한 경우

■ 작업을 실행할 때 이례적인 경우

작업 실패 및 실행 시간 O ra c l e이 실행을 시도하는 동안 작업에서 오류가 발생하면O ra c l e은 재실행을 시도합니다. 각 시도 사이의 간격을 두 배로 하여 첫 번째 시도는1분 후, 두 번째 시도는 2분 후, 세 번째 시도는 4분 후 등으로 계속합니다. 재시도간격이 설정된 실행 간격을 초과하면 O ra c l e은 정상 실행 간격으로 작업 재시도를 계속합니다. 그러나 작업 실행을 1 6번 실패하면 O ra c l e은 자동으로 작업이 중단된 것을표시하고 더 이상 실행하려고 하지 않습니다.

따라서 작업이 1 6번 실패하기 전에 작업 실행을 방해하는 문제를 해결하면 O ra c l e은결국 해당 작업을 재실행할 것입니다.

참조: 뷰 잠금에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

잠금에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

작업 대기열에서 작업 제거

작업 대기열에서 작업을 제거하려면 DBMS_JOB 패키지의 R E M OVE 프로시저를사용합니다.

DBMS_JOB.REMOVE(job IN BINARY_INTEGER)

다음 명령문은 작업 대기열에서 작업 번호 1 4 1 4 4를 제거합니다.

DBMS_JOB.REMOVE(14144);

제한 사항

작업 대기열에서 현재 실행 중인 작업을 제거할 수 있습니다. 그러나 작업은 인터럽트되지 않으며 현재 실행을 완료합니다.

자신이 소유한 작업만 제거할 수 있습니다. 소유하지 않은 작업을 제거하려고 하면작업 대기열에 해당 작업이 없다는 메시지를 받게 됩니다.

작업 변경

DBMS_JOB 패키지의 프로시저 C H A N G E, WHAT, NEXT_DATE 또는I N T E RVA L을 사용하여 작업 대기열로 보낸 작업을 변경합니다.

다음은 작업 식별자가 1 4 1 4 4인 작업을 3일마다 실행하는 예입니다.

DBMS_JOB.CHANGE(14144, null, null, ‘SYSDATE + 3’);

제한 사항

자신이 소유한 작업만 변경할 수 있습니다. 소유하지 않은 작업을 변경하려고 하면작업 대기열에 해당 작업이 없다는 메시지를 받게 됩니다.

CHANGE 구문

D B M S _ J O B.CHANGE 프로시저를 호출하여 작업과 연관된 사용자 정의 매개변수를 변경할 수 있습니다. 표 8 - 3은 프로시저의 매개변수를 설명합니다.

DBMS_JOB.CHANGE( job IN BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE,interval IN VARCHAR2)

작업 대기열 관리 8-11

작업 대기열 관리

CHANGE 프로시저를 호출할 때 N U L L을 W H AT, NEXT_DATE 또는I N T E RVA L에 지정하면 현재 값은 그대로 유지됩니다.

주: CHANGE 프로시저에 W H AT 매개변수를 사용하여 작업 정의를변경하면 O ra c l e은 현재 환경을 기록합니다. 이것이 작업의 새로운 환경이 됩니다.

W H AT 구문

D B M S _ J O B. W H AT 프로시저를 호출하여 작업 정의를 변경할 수 있습니다. 표 8 - 3은 프로시저의 매개변수를 설명합니다.

DBMS_JOB.WHAT( job IN BINARY_INTEGER,what IN VARCHAR2)

주: W H AT 프로시저를 실행하면 O ra c l e은 현재 환경을 기록합니다.이것이 작업의 새로운 환경이 됩니다.

N E X T _ D ATE 구문

D B M S _ J O B. N E X T _ DATE 프로시저를 호출하여 O ra c l e이 작업을 실행할 다음 날짜를 변경할 수 있습니다. 표 8 - 3은 프로시저의 매개변수를 설명합니다.

DBMS_JOB.NEXT_DATE( job IN BINARY_INTEGER,next_date IN DATE)

I N T E R VAL 구문

D B M S _ J O B. I N T E RVAL 프로시저를 호출하여 작업 실행 간격을 변경할 수 있습니다. 표 8 - 3은 프로시저의 매개변수를 설명합니다.

DBMS_JOB.INTERVAL( job IN BINARY_INTEGER, interval IN VARCHAR2)

중단된 작업

작업은 중단되거나 중단되지 않은 것으로 표시됩니다. Ora c l e은 중단된 작업에 대해서는 실행하려고 하지 않습니다. 그러나 D B M S _ J O B. RUN 프로시저를 호출하여 중단된 작업을 강제로 실행할 수 있습니다.

작업을 보낼 때 그것은 중단되지 않은 것으로 간주됩니다.

8 - 1 2 Oracle8i 관리자 설명서

작업 대기열 관리

다음 두 경우에는 작업이 중단됩니다.

■ O ra c l e에서 1 6번 시도 후 성공적인 작업 실행을 실패한 경우

■ D B M S _ J O B. B ROKEN 프로시저를 사용하여 작업을 중단된 것으로 표시한 경우

작업이 중단되거나 중단되지 않은 것으로 표시하려면 DBMS_JOB 패키지의B ROKEN 프로시저를 사용합니다. 표 8 - 4는 프로시저의 매개변수를 설명합니다.

DBMS_JOB.BROKEN( job IN BINARY_INTEGER, broken IN BOOLEAN,next_date IN DATE DEFAULT SYSDATE)

다음 예는 작업 1 4 1 4 4를 중단되지 않은 것으로 표시하고 다음 실행 날짜를 다음 월요일로 설정합니다.

DBMS_JOB.BROKEN(14144, FALSE, NEXT_DAY(SYSDATE, ‘MONDAY‘));

작업이 중단된 것으로 표시되면 O ra c l e은 사용자가 작업을 중단되지 않은 것으로 표시하거나 D B M S _ J O B. RUN 프로시저를 호출하여 작업을 강제로 실행하게 할 때까지 작업 실행을 시도하지 않습니다.

제한 사항

자신이 소유한 작업만을 중단된 것으로 표시할 수 있습니다. 소유하지 않은 작업을표시하려고 하면 작업 대기열에 해당 작업이 없다는 메시지를 받게 됩니다.

중단된 작업 실행

작업이 1 6번 실패하면 O ra c l e은 작업을 중단된 것으로 표시합니다. 실패 원인을 해결하면 다음 방법 중 하나로 작업을 실행할 수 있습니다.

■ D B M S _ J O B. RU N을 호출하여 강제로 작업 실행

■ D B M S _ J O B. B RO K E N을 호출하여 작업을 중단되지 않은 것으로 표시하고O ra c l e이 작업을 실행하도록 대기

D B M S _ J O B. RUN 프로시저를 호출하여 작업을 강제로 실행하면 O ra c l e은 즉시 실행합니다. 작업이 성공하면 O ra c l e은 작업이 중단되지 않은 것으로 표시하고 실패한실행 횟수를 재설정합니다.

RUN 또는 B ROKEN 호출에 의해 작업 중단 상태를 표시하는 플래그가 재설정되면예정된 실행 간격에 따라 작업 실행이 재개됩니다.

작업 대기열 관리 8-13

작업 대기열 관리

강제 작업 실행

작업을 직접 실행하고자 할 때도 있습니다. 예를 들어, 중단된 작업의 원인을 해결하면 즉시 작업을 강제로 실행하여 테스트하려고 할 수 있습니다.

DBMS_JOB 패키지의 RUN 프로시저를 사용하여 작업을 강제로 실행합니다.O ra c l e은 작업이 중단된 것으로 표시된 경우에도 작업 실행을 시도합니다.

DBMS_JOB.RUN( job IN BINARY_INTEGER)

D B M S _ J O B. RU N을 사용하여 작업을 실행하면 O ra c l e은 다음 실행 날짜를 다시계산합니다. 예를 들어, NEXT_DATE 값‘SY S DAT E’와 I N T E RVAL 값‘SY S DATE + 7’을 사용하여 월요일에 작업을 작성하면 작업은 월요일부터 시작해서매 7일마다 실행됩니다. 그러나 수요일에 RU N을 실행하면 다음 실행 날짜는 다음수요일이 됩니다.

주: 작업을 강제로 실행하면 현재 세션에서 실행됩니다. 작업을 실행하여 세션의 패키지를 다시 초기화합니다.

제한 사항

자신이 소유한 작업만을 실행할 수 있습니다. 소유하지 않은 작업을 실행하려고 하면작업 대기열에 해당 작업이 없다는 메시지를 받게 됩니다.

다음 명령문은 사용자 세션의 작업 1 4 1 4 4를 실행하고 다음 실행 날짜를 다시 계산합니다.

DBMS_JOB.RUN(14144);

RUN 프로시저는 암시적인 커밋을 포함하므로 RU N을 사용하여 작업을 실행하면 롤백할 수 없습니다.

작업 종료

작업을 중단된 것으로 표시하고 그 작업을 실행하고 있는 세션을 식별하여 세션에 대한 접속을 끊으면 작업을 종료할 수 있습니다. Ora c l e에서 재실행하려고 하지 않도록작업을 중단된 것으로 표시해야 합니다.

V $S E S S I O N을 사용하여 작업이 실행되는 세션을 식별한 후 SQL 명령어 A LT E RSYSTEM 문을 사용하여 세션 접속을 끊을 수 있습니다.

참조: 작업 및 세션에 대한 정보 보기 예는 다음 단원“작업 대기열 정보 보기”를 참조하십시오.

8 - 1 4 Oracle8i 관리자 설명서

작업 대기열 관리

V $S E S S I O N에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

작업 대기열 정보 보기

표 8 - 6의 데이터 딕셔너리 뷰를 사용하여 작업 대기열의 작업에 대한 정보를 볼 수있습니다.

표 8-6 작업 대기열 정보를 보기 위한 뷰

예를 들어, 작업 상태와 실패한 실행에 대한 정보를 나타낼 수 있습니다. 다음 예제

질의는 사용자가 보낸 각 작업에 대한 작업 번호, 다음 실행 시간, 실패 및 중단 상태

목록을 작성합니다.

SELECT job, next_date, next_sec, failures, brokenFROM user_jobs;

JOB NEXT_DATE NEXT_SEC FAILURES B---------- --------- -------- ---------- -

9125 01-NOV-94 00:00:00 4 N14144 24-OCT-94 16:35:35 0 N41762 01-JAN-00 00:00:00 16 Y

3 rows selected.

또한 현재 실행 중인 작업에 대한 정보를 나타낼 수 있습니다. 다음 예제 질의는 세션식별자, 작업 번호, 작업을 보낸 사용자와 현재 실행 중인 모든 작업의 시작 시간을나열합니다.

SELECT sid, r.job, log_user, r.this_date, r.this_secFROM dba_jobs_running r, dba_jobs jWHERE r.job = j.job;

S I D J O B L O G _ U S E R T H I S _ D A T E T H I S _ S E C---------- ---------- -------------------- --------- --------1 2 1 4 1 4 4 J F E E 2 4 - O C T - 9 4 1 7 : 2 1 : 2 42 5 8 5 3 6 S C O T T 2 4 - O C T - 9 4 1 6 : 4 5 : 1 2

2 rows selected.

참조: 데이터 딕셔너리 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

작업 대기열 관리 8-15

작업 대기열 정보 보기

뷰 설명

DBA_JOBS 데이터베이스에 있는 모든 작업을 나열합니다.

USER_JOBS 사용자가 소유한 모든 작업을 나열합니다.

DBA_JOBS_RUNNING 데이터베이스에서 현재 실행 중인 모든 작업을 나열합

니다. 이 뷰는 V $L O C K과 J OB $를 조인합니다.

8 - 1 6 Oracle8i 관리자 설명서

작업 대기열 정보 보기

III데이터베이스 저장 영역

9테이블스페이스 관리

이 장에서는 다양한 측면의 테이블스페이스 관리를 설명하며 다음 내용을 다룹니다.

■ 테이블스페이스 관리에 대한 지침 사항

■ 테이블스페이스 생성

■ 테이블스페이스 할당 관리

■ 테이블스페이스 가용성 변경

■ 테이블스페이스를 읽기 전용으로 만들기

■ 테이블스페이스 삭제

■ D B M S _ S PACE_ADMIN 패키지 사용

■ 데이터베이스 간 테이블스페이스 이동

■ 테이블스페이스 정보 보기

테이블스페이스 관리 9 - 1

테이블스페이스 관리에 대한 지침 사항

오라클 데이터베이스의 테이블스페이스로 작업하기 전에 다음 단원에서 다루는 지침사항을 잘 알아야 합니다.

■ 다중 테이블스페이스 사용

■ 테이블스페이스 저장 영역 매개변수 지정

■ 사용자에게 테이블스페이스 할당량 지정

다중 테이블스페이스 사용

다중 테이블스페이스를 사용하면 데이터베이스 작업을 보다 융통성 있게 수행할 수있습니다. 예를 들어, 데이터베이스가 다중 테이블스페이스를 가지면 다음 작업을 수행할 수 있습니다.

■ 데이터 딕셔너리 데이터로부터 사용자 데이터 분리

■ 한 응용 프로그램의 데이터로부터 다른 응용 프로그램의 데이터 분리

■ I/O 경합을 줄이기 위해 서로 다른 테이블스페이스의 데이터 파일을 별도의 디스크 드라이브에 저장

■ 사용자 데이터로부터 롤백 세그먼트 데이터를 분리하여 단일 디스크 고장으로 인한 영구적인 데이터 손실 방지

■ 개별 테이블스페이스를 오프라인 또는 온라인으로 설정

■ 고도의 갱신 작업, 읽기 전용 작업 또는 임시 세그먼트 저장과 같은 특정 유형의데이터베이스 사용을 위해 테이블스페이스 예약

■ 개별 테이블스페이스 백업

일부 운영 체제에서는 동시에 열 수 있는 파일 수를 제한하는데 이러한 제한은 동시에 온라인으로 설정할 수 있는 테이블스페이스 수에 영향을 줍니다. 운영 체제의 한계값을 초과하지 않도록 테이블스페이스를 효율적으로 계획해야 합니다. 필요한 만큼만 테이블스페이스를 생성하고 가능한 적은 수의 파일로 테이블스페이스를 생성합니다. 테이블스페이스의 크기를 늘릴 때는 작은 데이터 파일을 많이 만들기 보다는 한두 개의 큰 데이터 파일을 추가하거나 자동 확장 옵션이 지정된 데이터 파일을 작성해야 합니다.

위에서 언급한 내용에 따라 데이터를 검토하고 데이터베이스 설계에 필요한 테이블스페이스 수를 결정하십시오.

테이블스페이스 관리에 대한 지침 사항

9 - 2 Oracle8i 관리자 설명서

테이블스페이스 저장 영역 매개변수 지정

새 테이블스페이스를 생성할 때 테이블스페이스에서 생성될 객체에 대한 기본 저장영역 매개변수를 지정할 수 있습니다. 객체를 생성할 때 지정된 저장 영역 매개변수는 객체를 포함하는 테이블스페이스의 기본 저장 영역 매개변수를 무효화합니다. 그러나 객체를 생성할 때 저장 영역 매개변수를 지정하지 않으면 객체 세그먼트는 자동으로 테이블스페이스의 기본 저장 영역 매개변수를 사용합니다.

테이블스페이스에 포함될 일반적인 객체 크기(예상 크기)를 설명하는 테이블스페이스의 기본 저장 영역 매개변수를 설정해야 합니다. 특별하고 예외적인 객체를 생성할때 다른 저장 영역 매개변수를 지정할 수 있습니다.

주: 새 테이블스페이스에 대한 기본 저장 영역 매개변수를 지정하지 않으면 O ra c l e의 기본 저장 영역 매개변수가 테이블스페이스의 기본 저장 영역 매개변수가 됩니다.

참조: 객체 크기 측정에 대한 자세한 내용은 1 1장부터 1 7장을 참조하십시오.

사용자에게 테이블스페이스 할당량 지정

테이블, 클러스터, 스냅샷, 인덱스 및 다른 객체를 생성할 사용자에게 객체를 생성할권한과 테이블스페이스에 객체의 세그먼트를 보유하는 할당량(영역 허용 또는 한계값)을 부여합니다. 보안 관리자는 데이터베이스 사용자에게 객체를 생성할 권한을 부여하고 필요한 경우 테이블스페이스 할당량을 데이터베이스 사용자에게 지정해야 합니다.

참조: 데이터베이스 사용자에게 테이블스페이스 할당량을 지정하는 방법에 대한 자세한 내용은 23-13 페이지“테이블스페이스할당량 지정”을 참조하십시오.

테이블스페이스 생성

테이블스페이스를 생성하는 단계는 운영 체제마다 다릅니다. 대부분의 운영 체제에서는 새 테이블스페이스를 생성하거나 데이터 파일을 추가하여 테이블스페이스를 변경할 때 크기와 전체 경로를 지정한 파일명을 표시해야 합니다. 각각의 상황에서O ra c l e은 지정한 대로 데이터 파일을 자동으로 할당하고 포맷합니다. 그러나 일부 운영 체제에서는 설치 전에 데이터 파일을 작성해야 합니다.

테이블스페이스 생성

테이블스페이스 관리 9 - 3

데이터베이스에서 첫 번째 테이블스페이스는 항상 SYSTEM 테이블스페이스입니다.따라서 데이터베이스에서 첫 번째 데이터 파일은 데이터베이스가 생성되는 동안SYSTEM 테이블스페이스에대해 자동으로 할당됩니다.

다음과 같은 경우 새 테이블스페이스를 생성할 수 있습니다.

■ 관련된 데이터베이스에 더 많은 디스크 저장 영역을 할당하여 데이터베이스를 확장하려는 경우

■ 다른 데이터베이스 데이터와는 별도로 특정 유형의 데이터를 저장할 논리적 저장영역 구조를 생성해야 하는 경우

데이터베이스의 전체 크기를 늘리려면 새 테이블스페이스를 추가하는 대신 기존 테이블스페이스에 데이터 파일을 추가할 수 있습니다.

주: 현재 인스턴스가 SYSTEM 롤백 세그먼트를 포함하여 적어도 두개의 롤백 세그먼트를 가지지 않으면 테이블스페이스에 데이터를 넣을수 없습니다.

새 테이블스페이스를 생성하려면 SQL 문 C R E ATE TA B L E S PAC E를 사용하십시오. 테이블스페이스를 생성하려면 C R E ATE TA B L E S PACE 시스템 권한이 있어야합니다.

예를 들어, 다음 특성을 가진 R B _ S E G S (데이터베이스에 대한 롤백 세그먼트를 보유하는) 테이블스페이스를 생성합니다.

■ 새 테이블스페이스의 데이터는 50M 크기의 단일 데이터 파일에 포함됩니다.

■ 테이블스페이스에 생성되는 세그먼트의 기본 저장 영역 매개변수는 명시적으로 설정됩니다.

■ 생성된 테이블스페이스는 오프라인 상태입니다.

RB_SEGS 테이블스페이스를생성하는 명령문은 다음과 같습니다.

CREATE TABLESPACE rb_segsDATAFILE ’datafilers_1’ SIZE 50MDEFAULT STORAGE (

INITIAL 50KNEXT 50KMINEXTENTS 2MAXEXTENTS 50PCTINCREASE 0)

OFFLINE;

테이블스페이스를 생성할 때 전체 파일명을 지정하지 않으면 해당 데이터 파일은O R A C L E _ H O M E / d b s 디렉토리에 생성됩니다.

테이블스페이스 생성

9 - 4 Oracle8i 관리자 설명서

참조: 테이블스페이스 초기 생성에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

데이터 파일 추가에 대한 자세한 내용은 10-5 페이지“테이블스페이스에 데이터 파일작성 및 추가”를 참조하십시오.

C R E ATE TA B L E S PACE 문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

지역적으로 관리되는 테이블스페이스 생성

일반적으로 테이블스페이스는“딕셔너리로 매핑”되어 있습니다. 이것은 테이블스페이스가 영역 사용을 추적하는데 SQL 딕셔너리 테이블을 사용함을 의미합니다. 반면 지역적으로 관리되는 테이블스페이스는 사용된 영역과 사용 가능 영역을 추적하는데SQL 딕셔너리를 사용하는 대신 비트맵을 사용합니다.

지역적으로 관리되는 테이블스페이스를 생성하여 사용하면 다음과 같은 장점이 있습니다.

■ 영역 작업의 동시 수행을 향상시킵니다.

비트 값을 (할당은 0에서 1로, 할당 해제는 1에서 0으로) 변경하여 영역을 할당하거나 할당 해제합니다.

■ 영역 관리 작업 중 순환 사항을 예측합니다.

■ 대기 데이터베이스에 있는 임시 테이블스페이스 관리를 지원합니다.

■ 데이터 딕셔너리에 대한 사용자 의존성을 줄여 줍니다.

필요한 정보는 세그먼트 헤더와 비트맵 블록에 저장되어 있습니다.

다음 명령문은 T B S _ 1이라는 지역적으로 관리되는 테이블스페이스를 생성합니다. 모든 확장 영역은 1 2 8 K이며 비트맵에서 각 비트는 64 블록으로 이루어집니다.

CREATE TABLESPACE tbs_1 DATAFILE ’file_1.f’BITMAP ALLOCATION UNIFORM SIZE 128K;

참조: 지역적으로 관리되는 테이블스페이스 생성에 대한 자세한 구문은 O ra c l e 8 iSQL 참조서를 참조하십시오.

지역적으로 관리되는 SYSTEM 테이블스페이스로데이터베이스 생성

지역적으로 관리되는 SYSTEM 테이블스페이스로 데이터베이스를 생성할 수 있습니다. 그러나 이 데이터베이스에 대한 롤백 세그먼트는 일정하게 관리되는 지역적 관리테이블스페이스에서 생성되어야 합니다. 지역적으로 관리되는 SYSTEM 테이블스페이스는 항상 시스템에서 관리합니다. 또한 이후에 O racle 8.1 이전 버전으로는 되돌릴 수 없습니다.

테이블스페이스 생성

테이블스페이스 관리 9 - 5

9 - 6 Oracle8i 관리자 설명서

참조: 지역적으로 관리되는 SYSTEM 테이블스페이스로 데이터베이스를 생성하는 방법에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

임시 테이블스페이스 생성

다중 정렬 작업의 동시 수행을 개선하거나 오버헤드를 감소하거나 O racle 영역 관리작업을 피하려는 경우에는 임시 테이블스페이스를 생성할 수 있습니다.

임시 테이블스페이스 내에서 주어진 인스턴스와 테이블스페이스에 대한 모든 정렬 작업은 단일 정렬 세그먼트를 공유합니다. 정렬 세그먼트는 주어진 테이블스페이스 내에서 정렬 작업을 수행하는 모든 인스턴스에 있습니다. 임시 테이블스페이스에는 영구적인 객체를 저장할 수 없습니다. 임시 테이블스페이스 정렬 세그먼트의 저장 영역할당 및 할당 해제는 V $S O RT_SEGMENT 테이블을 통해 볼 수 있습니다.

테이블스페이스를 생성하는 동안 테이블스페이스를 임시 테이블스페이스로 지정하는명령문은 다음과 같습니다.

CREATE TABLESPACE tablespace TEMPORARY;

기존 테이블스페이스를 임시 테이블스페이스로 지정하는 명령문은 다음과 같습니다.

ALTER TABLESPACE tablespace TEMPORARY;

주: 임시 테이블스페이스를 오프라인으로 설정할 수 있습니다. 임시 테이블스페이스를 다시 온라인으로 바꿔도 임시 상태에는 영향을 주지 않습니다.

참조: C R E ATE TA B L E S PAC E와 A LTER TA B L E S PACE 문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

V $S O RT _ S E G M E N T에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

O racle 영역 관리에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

임시 데이터 파일

임시 데이터 파일은 영구 데이터 파일과는 달리 D B A _ DATA_FILES 뷰에 나타나지않습니다. 대신 DBA_TEMP_FILES 뷰에 나타나는데, 이 뷰는 임시 데이터 파일에대한 정보를 포함한다는 점을 제외하면 D B A _ DATA_FILES 뷰와 유사합니다. SQL에서 임시 테이블스페이스에 속하는 파일은 DATA F I L E S가 아닌 T E M P F I L E S로식별됩니다.

테이블스페이스 생성

참조: 임시 데이터 파일과 D B A _ T E M P _ F I L E S에 대한 자세한 내용은 O ra c l e 8 iR e fe re n c e를 참조하십시오.

지역적으로 관리되는 임시 테이블스페이스 생성

데이터베이스의 세션 지속 기간 동안 스키마 객체를 포함하는 영역을 할당하려는 경우 지역적으로 관리되는 임시 테이블스페이스를 생성할 수 있습니다.

지역적으로 관리되는 임시 테이블스페이스를 생성하려면 C R E ATE TA B L E S PAC E시스템 권한이 있어야 합니다.

다음 명령문은 각 확장 영역이 1 6 M인 임시 테이블스페이스를 생성합니다. 기본 데이터베이스 블록 크기는 2 K입니다. 맵에 있는 각 비트는 하나의 확장 영역을 나타내므로 각 비트는 8,000 블록을 매핑합니다.

CREATE TEMPORARY TABLESPACE tbs_1 TEMPFILE ’file_1.f’BITMAP ALLOCATION UNIFORM SIZE 16M;

참조: 지역적으로 관리되는 임시 테이블스페이스 생성에 대한 자세한 내용은 O ra -cle8i SQL 참조서를참조하십시오.

지역적으로 관리되는 임시 테이블스페이스 변경

지역적으로 관리되는 임시 테이블스페이스에 데이터 파일 또는 임시 파일을 변경하거나 추가할 수 있습니다.

다음 명령문은 지역적으로 관리되는 임시 테이블스페이스에 파일을 추가합니다.

ALTER TABLESPACE tbs_1ADD TEMPFILE ’file_1.f’;

다음 명령문은 임시 파일을 오프라인으로 설정한 다음 온라인으로 설정합니다.

ALTER DATABASE TEMPFILE ’temp_file_1.f’ OFFLINE;ALTER DATABASE TEMPFILE ’temp_file_1.f’ ONLINE;

다음 명령문은 임시 파일 T E M P _ F I L E _ 1 . F의 크기를 1 2 K로 다시 조정합니다.

ALTER DATABASE TEMPFILE ’temp_file_1.f’ RESIZE 12K;

다음 명령문은 임시 파일을 삭제합니다.

ALTER DATABASE TEMPFILE ’temp_file_1.f’ DROP;

참조: 지역적으로 관리되는 임시 테이블스페이스에 사용되는 명령문에 대한 자세한내용은 O racle8i SQL 참조서를참조하십시오.

테이블스페이스 관리 9 - 7

테이블스페이스 생성

9 - 8 Oracle8i 관리자 설명서

테이블스페이스 할당 관리

이 단원에서는 테이블스페이스 할당 관리를 설명하며 다음 내용을 다룹니다.

■ 테이블스페이스에 대한 저장 영역 설정 변경

■ 사용 가능 영역 병합

테이블스페이스에 대한 저장 영역 설정 변경

테이블스페이스의 기본 저장 영역 매개변수를 변경하여 테이블스페이스에서 이후에생성할 객체의 기본 지정 사항을 변경할 수 있습니다. 테이블스페이스에서 연속적으로 생성한 객체의 기본 저장 영역 매개변수를 변경하려면 SQL 문 A LT E RTA B L E S PAC E를 사용하십시오. 테이블스페이스의 기본 저장 영역 매개변수를 변경하려면 A LTER TA B L E S PACE 시스템 권한이 있어야 합니다.

ALTER TABLESPACE usersDEFAULT STORAGE (INITIAL 50KNEXT 50KMINEXTENTS 2MAXEXTENTS 20PCTINCREASE 50);

테이블스페이스의 기본 저장 영역 매개변수에 대한 새로운 값은 테이블스페이스 내에서 세그먼트에 대해 할당된 이후에 사용될 확장 영역에만 영향을 줍니다.

사용 가능 영역 병합

테이블스페이스 세그먼트에 대한 영역은 확장 영역을 사용하여 관리하며 확장 영역은특정 수의 연속적인 데이터 블록으로 이루어져 있습니다. 테이블스페이스 세그먼트에새 확장 영역을 할당하는 경우 필요한 확장 영역 크기에 가장 근접한 사용 확장 영역을 사용하게 됩니다. 따라서 커다란 빈 확장 영역이 단편화되거나 작고 연속적인 빈확장 영역이 하나의 큰 확장 영역으로 병합됩니다. (그림 9-1 참조) 그러나 사용 가능 영역의 연속적인 할당 및 할당 해제는 테이블스페이스를 단편화하며 큰 확장 영역의 할당을 보다 어렵게 만듭니다. 기본적으로 S M O N (시스템 모니터) 프로세스는 백그라운드에서 테이블스페이스의 빈 확장 영역을 계속 병합합니다. 원한다면 S M O N병합 기능을 비활성화할 수도 있습니다.

테이블스페이스 할당 관리

테이블스페이스 관리 9 - 9

그림 9-1 사용 가능 영역 병합

영역의 단편화가 심하면(연속적인 영역이 디스크 상에서 비연속적으로 나타나면) 사용 가능 영역을 단일 영역 트랜잭션으로 병합할 수 있습니다. 여덟 번째의 병합 수행마다 영역 트랜잭션이 커밋되며 다른 트랜잭션은 영역을 할당하거나 할당을 해제할수 있습니다. 테이블스페이스를 병합하려면 A LTER TA B L E S PACE 권한이 있어야합니다. 다음 명령문을 사용하여 테이블스페이스 단위로 모든 사용 가능한 빈 확장영역을 더 큰 연속적인 확장 영역으로 병합할 수 있습니다.

ALTER TABLESPACE tablespace COALESCE;

또한 이 명령어를 사용하면 S M O N과 확장 영역 할당 병합 기능을 보조함으로써 매우 단편화된 테이블스페이스에서 영역 할당 성능을 향상시킬 수 있습니다. 이 명령어를 실행해도 동일한 테이블스페이스에 액세스하는 다른 사용자는 영향을 받지 않습니다. COALESCE 옵션은 A LTER TA B L E S PACE 문의 다른 옵션과 마찬가지로 배타적이어서 지정되면 이 옵션만이 명령문 실행에 영향을 줍니다.

테이블스페이스 정보 보기

테이블스페이스에서 병합 가능한 확장 영역에 대한 통계를 나타내려면 D B A _F R E E _ S PAC E _ C OALESCED 뷰를 볼 수 있습니다. 특정 테이블스페이스에서 영역병합의 필요성을 알아보려면 이 뷰를 질의합니다.

참조: D B A _ F R E E _ S PAC E _ C OA L E S C E D에 대한 내용은 O racle8i Refe re n c e를참조하십시오.

테이블스페이스 할당 관리

입력

출력

입력

출력

EXTENT 1

EXTENT 2

F = 빈 데이터블록U = 사용한데이터블록

J F E E 1 .O R A

테이블스페이스 가용성 변경

오프라인 테이블스페이스를 온라인으로 설정하여 데이터베이스 사용자가 테이블스페이스 내의 스키마 객체를 사용할 수 있도록 합니다. 또한 데이터베이스가 열린 상태에서 온라인 테이블스페이스를 오프라인으로 설정하여 데이터베이스의 이 부분을 일시적으로 일반 사용이 불가능하게 하고 나머지 부분은 열어 사용 가능하도록 할 수있습니다. 이 단원에서는 다음 내용을 다룹니다.

■ 테이블스페이스를 온라인으로 설정

■ 테이블스페이스를 오프라인으로 설정

테이블스페이스를 온라인으로 설정

데이터베이스가 열려 있으면 오라클 데이터베이스의 테이블스페이스를 온라인으로 설정할 수 있습니다. 단, 데이터 딕셔너리는 O ra c l e이 항상 사용할 수 있어야 하므로SYSTEM 테이블스페이스는항상 온라인 상태여야 합니다. 테이블스페이스는 일반적으로 온라인이므로 데이터베이스 사용자는 이 안에 들어 있는 데이터를 사용할 수 있습니다.

데이터베이스가 열린 상태에서 오프라인 테이블스페이스를 온라인으로 설정하려면SQL 문 A LTER TA B L E S PAC E를 사용하십시오. 테이블스페이스를 온라인으로 설정하려면 M A NAGE TA B L E S PACE 시스템 권한이 있어야 합니다.

주: 온라인으로 설정된 테이블스페이스를 A LTER TA B L E S PAC EOFFLINE 문에 NORMAL 옵션을 사용하여“확실하게”오프라인으로 설정할 수 없다면 온라인으로 설정하기 전에 먼저 테이블스페이스에서 매체 복구를 수행해야 합니다. 그렇지 않으면 O ra c l e은 오류를 돌려주고 테이블스페이스는 오프라인으로 남게 됩니다.

USERS 테이블스페이스를온라인으로 설정하는 명령문은 다음과 같습니다.

ALTER TABLESPACE users ONLINE;

테이블스페이스를 오프라인으로 설정

다음과 같은 경우 테이블스페이스를 오프라인으로 설정할 수 있습니다.

■ 데이터베이스의 일부를 사용할 수 없게 하고 나머지 부분에 대해서는 정상적으로액세스할 수 있도록 할 경우

■ 테이블스페이스가 온라인 상태로 사용 중일 때 백업할 수 있다 해도 오프라인 테이블스페이스를 백업할 경우

9 - 1 0 Oracle8i 관리자 설명서

테이블스페이스 가용성 변경

테이블스페이스 관리 9 - 1 1

■ 응용 프로그램을 갱신하거나 유지 관리하는 동안 응용 프로그램과 관련된 테이블그룹을 일시적으로 사용하지 못하도록 할 경우

데이터베이스가 열린 상태에서 온라인 테이블스페이스를 오프라인으로 설정하려면SQL 명령어 A LTER TA B L E S PAC E를 사용합니다. 테이블스페이스를 오프라인으로 설정하려면 M A NAGE TA B L E S PACE 시스템 권한이 있어야 합니다.

테이블스페이스를 오프라인으로 설정할 때 다음 우선순위를 지정할 수 있습니다.

정상 오프라인 테이블스페이스의 모든 데이터 파일에 오류 조건이 없다면 테이블스페이스를 정상적으로 오프라인으로 설정할 수있습니다. 쓰기 오류가 발생하면 테이블스페이스의 모든데이터 파일을 오프라인으로 설정할 수 없습니다. 정상오프라인 우선순위에서 O ra c l e은 테이블스페이스가 오프라인으로 설정될 때 모든 데이터 파일에 대해 체크포인트를 수행합니다.

임시 오프라인 테이블스페이스에서 하나 이상의 파일에 오류 조건이 있어도 테이블스페이스를 일시적으로 오프라인으로 설정할수 있습니다. 임시 오프라인 우선순위에서 O ra c l e은 아직 오프라인이 아닌 데이터 파일을 오프라인으로 설정하며 체크포인트를 수행합니다.

임시 옵션을 사용하지만 오프라인 파일이 없는 경우 테이블스페이스를 다시 온라인으로 설정하기 위해 매체 복구를 수행하지 않아도 됩니다. 그러나 쓰기 오류로 인해 테이블스페이스의 하나 이상의 파일이 오프라인이고 일시적으로 테이블스페이스를 오프라인으로 설정하려면 테이블스페이스를 다시 온라인으로 설정하기 전에 복구해야 합니다.

즉시 오프라인 O ra c l e이 데이터 파일에 대해 체크포인트를 수행하지 않아도 테이블스페이스를 즉시 오프라인으로 설정할 수 있습니다. 즉시 오프라인 우선순위에서 테이블스페이스를온라인으로 설정하기 전에 매체 복구를 수행해야 합니다.데이터베이스가 N OA RCHIVELOG 모드에서 실행되고있다면 테이블스페이스를 즉시 오프라인으로 설정할 수없습니다.

테이블스페이스 가용성 변경

9 - 1 2 Oracle8i 관리자 설명서

경고: 테이블스페이스를 오프라인으로 설정해야 하는 경우 가능하다면정상 옵션(기본)을 사용하십시오. 그러면 불완전 매체 복구 후에 A LT -ER DATA B ASE OPEN RESETLOGS 문을사용하여 리두 로그 시퀀스를 재설정한다 해도 테이블스페이스를 온라인으로 되돌릴 때 복구하지 않아도 됩니다.

테이블스페이스를 정상적으로 오프라인으로 설정할 수 없을 경우에만 임시 오프라인옵션을 사용합니다. 이 경우 오류로 인해 오프라인된 파일만을 테이블스페이스가 온라인으로 설정되기 전에 복구해야 합니다. 정상 옵션과 임시 옵션을 모두 시도해 본후에만 테이블스페이스에 즉시 오프라인 옵션을 사용합니다.

다음은 USERS 테이블스페이스를정상적으로 오프라인으로 설정하는 예입니다.

ALTER TABLESPACE users OFFLINE NORMAL;

참조: 온라인 테이블스페이스를 오프라인으로 설정하기 전에 테이블스페이스에 현재사용 중인 롤백 세그먼트가 포함되어 있는지 확인합니다. 자세한 내용은 21-12 페이지“롤백 세그먼트를 오프라인으로 설정”을 참조하십시오.

테이블스페이스를 읽기 전용으로 만들기

이 단원에서는 테이블스페이스를 읽기 전용으로 만드는 방법을 설명하며 다음 내용을다룹니다.

■ 필요 조건

■ 읽기 전용 테이블스페이스를 쓸 수 있도록 만들기

■ WORM 장치에서 읽기 전용 테이블스페이스 생성

테이블스페이스를 읽기 전용으로 만들면 테이블스페이스 데이터 파일에 대한 쓰기 작업을 방지할 수 있습니다. 테이블스페이스를 읽기 전용으로 만든 후에 백업본을 받아놓아야 합니다.

SQL 문 A LTER TA B L E S PAC E를 사용하여 테이블스페이스를 읽기 전용으로 변경합니다. 이때 사용자는 테이블스페이스를 읽기 전용으로 만드는 A LTER TA B L E -S PACE 시스템 권한이 있어야 합니다. FLIGHTS 테이블스페이스를 읽기 전용으로만드는 명령문은 다음과 같습니다.

ALTER TABLESPACE flights READ ONLY

테이블스페이스를 읽기 전용으로 만든 후에 관련 파일을 읽기 전용 매체에 복사할 수있습니다. 그런 다음 새 위치를 지정하려면 SQL 문 A LTER DATABASE RENA -M E을 사용하여 제어 파일의 데이터 파일 이름을 바꿔야 합니다.

테이블스페이스를 읽기 전용으로 만들기

읽기 전용 테이블스페이스는 온라인도 아니고 오프라인도 아닙니다. ALT E RTA B L E S PACE 문에 O N L I N E이나 OFFLINE 옵션을 실행해도 테이블스페이스의읽기 전용 상태는 변경되지 않습니다. 오히려 테이블스페이스에 있는 모든 데이터 파일을 온라인이나 오프라인으로 설정하는 결과를 초래합니다.

A LTER TA B L E S PAC E...READ ONLY 문은 읽기 전용 작업을 수행하기 전에 활성 트랜잭션 완료를 기다립니다. 따라서 사용자는 테이블스페이스를 읽기 전용으로만들기 전에 트랜잭션 완료를 기다리지 않아도 됩니다.

필요 조건

테이블스페이스를 읽기 전용으로 만들기 전에 다음 조건이 충족되어야 합니다. 이러한 제한 사항을 충족시키는 가장 쉬운 방법은 제한 모드에서 이 기능을 수행하여RESTRICTED SESSION 시스템 권한을 가진 사용자만이 로그온하도록 하는 것입니다.

■ 테이블스페이스는 온라인 상태여야 합니다.

테이블스페이스에 적용해야 하는 실행 취소 정보가 없음을 확인해야 합니다.

■ 테이블스페이스에 활성 롤백 세그먼트가 없어야 합니다.

SYSTEM 테이블스페이스는 SYSTEM 롤백 세그먼트를 포함하므로 읽기 전용으로 만들 수 없습니다. 또한 읽기 전용 테이블스페이스의 롤백 세그먼트에 액세스할수 없으므로 테이블스페이스를 읽기 전용으로 만들기 전에 롤백 세그먼트를 삭제하는 것이 좋습니다.

■ 테이블스페이스는 현재 온라인 백업을 수행하지 않아야 합니다. 백업이 완료되면테이블스페이스에 있는 모든 데이터 파일의 헤더 파일이 갱신되기 때문입니다.

■ C O M PATIBLE 초기화 매개변수는 7.1.0 이상의 값으로 설정되어야 합니다.

읽기 전용 테이블스페이스에 있는 데이터에 액세스할 때 보다 나은 성능 제공을 위해읽기 전용으로 만들기 직전에 테이블스페이스에 있는 테이블의 모든 블록에 액세스할질의를 수행하고자 할 수도 있습니다. 각 테이블에 대해 실행되는 S E L E C TC O U N T ( * )와 같은 간단한 질의는 테이블스페이스에 있는 데이터 블록에 가장 효율적으로 계속 액세스할 수 있도록 합니다. 이렇게 되면 O ra c l e이 가장 최근에 블록을수정한 트랜잭션 상태를 검사하지 않아도 됩니다.

경고: 읽기 전용 테이블스페이스에 속하는 데이터 파일의 이름을 바꾸거나 크기를 조정할 수 없습니다.

참조: 읽기 전용 테이블스페이스에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

테이블스페이스 관리 9 - 1 3

테이블스페이스를 읽기 전용으로 만들기

읽기 전용 테이블스페이스를 쓸 수 있도록 만들기

테이블스페이스를 생성하면 읽거나 쓸 수 있습니다. 읽기 전용 테이블스페이스를 다시 읽기 쓰기 가능 테이블스페이스로 변경하려면 SQL 명령어 A LTER TA B L E S PA -C E를 사용합니다. 이때 사용자는 읽기 전용 테이블스페이스를 읽기 쓰기 가능 테이블스페이스로 변경하는 A LTER TA B L E S PACE 시스템 권한이 있어야 합니다.FLIGHTS 테이블스페이스를쓸 수 있도록 만드는 명령문은 다음과 같습니다.

ALTER TABLESPACE flights READ WRITE;

읽기 전용 테이블스페이스를 쓸 수 있도록 만들면 데이터 파일에 대한 제어 파일을갱신하므로 복구 시 시작 지점으로 데이터 파일의 읽기 전용 버전을 사용할 수 있습니다.

필요 조건

이 명령어를 실행하려면 테이블스페이스에 있는 모든 데이터 파일이 온라인 상태여야합니다. 데이터 파일을 온라인으로 설정하려면 A LTER DATABASE 명령어에DATAFILE ONLINE 옵션을 사용합니다. V $DATAFILE 뷰는 데이터 파일의 현재 상태를 나열합니다.

WORM 장치에서 읽기 전용 테이블스페이스 생성

갱신하지 않아도 되는 읽기 전용 파일이 있을 때 W O R M ( Write Once ReadM a ny) 장치에서 읽기 전용 테이블스페이스를 생성하려면 다음과 같이 하십시오.

1 . 다른 장치에 쓸 수 있는 테이블스페이스를 생성한 다음 테이블스페이스에 속하는객체를 생성하여 데이터를 넣습니다.

2 . A LTER TA B L E S PACE 명령어에 READ ONLY 옵션을 실행하여 테이블스페이스를 읽기 전용으로 변경합니다.

3 . 테이블스페이스의 데이터 파일을 WORM 장치에 복사한 다음 운영 체제 명령어를사용하여 파일을 복사합니다.

4 . 테이블스페이스를 오프라인으로 설정합니다.

5 . WORM 장치에 복사한 데이터 파일 이름과 일치하도록 데이터 파일 이름을 바꿉니다. 데이터 파일 이름을 바꾸면 제어 파일 이름도 변경됩니다.

6 . 테이블스페이스를 온라인으로 설정합니다.

테이블스페이스 삭제

테이블스페이스와 이에 대한 내용이 더 이상 필요하지 않다면 데이터베이스에서 테이블스페이스와 내용(테이블스페이스에 포함된 세그먼트)을 삭제할 수 있습니다. 오라

9 - 1 4 Oracle8i 관리자 설명서

테이블스페이스 삭제

클 데이터베이스의 테이블스페이스는 SYSTEM 테이블스페이스를 제외하고는 모두삭제할 수 있습니다. 테이블스페이스를 삭제하려면 D ROP TA B L E S PACE 시스템권한이 있어야 합니다.

경고: 테이블스페이스를 삭제하면 테이블스페이스의 데이터를 복구할수 없습니다. 따라서 삭제할 테이블스페이스에 포함된 모든 데이터가 이후에 필요한지 확인해야 합니다. 또한 데이터베이스에서 테이블스페이스를 삭제하기 전과 후에 데이터베이스를 완전히 백업해야 합니다. 그러면 테이블스페이스를 실수로 삭제했거나 테이블스페이스를 삭제한 후데이터베이스에 문제가 발생해도 데이터베이스를 복구할 수 있습니다.

테이블스페이스를 삭제할 때 관련된 데이터베이스의 제어 파일에 있는 파일 포인터만삭제됩니다. 삭제된 테이블스페이스를 구성하는 데이터 파일은 계속 존재합니다. 이전에 사용한 디스크 영역을 사용 가능하도록 하려면 이 절차를 완료한 후 올바른 운영 체제 명령어를 사용하여 삭제된 테이블스페이스의 데이터 파일을 삭제합니다.

활성 세그먼트가 들어 있는 테이블스페이스는 삭제할 수 없습니다. 예를 들어, 테이블스페이스의 테이블이 현재 사용 중이거나 테이블스페이스에 활성 롤백 세그먼트가포함되어 있을 경우에는 테이블스페이스를 삭제할 수 없습니다. 즉, 테이블스페이스를 삭제하기 전에 오프라인으로 설정해야 합니다.

테이블스페이스를 삭제한 후 테이블스페이스의 입력 항목은 데이터 딕셔너리에 남아있지만 ( D B A _ TA B L E S PACES 뷰 참조) 테이블스페이스 상태는 I N VA L I D로 변경됩니다.

테이블스페이스를 삭제하려면 SQL 명령어 D ROP TA B L E S PAC E를 사용합니다. 세그먼트를 포함하는 USERS 테이블스페이스를삭제하는 명령문은 다음과 같습니다.

DROP TABLESPACE users INCLUDING CONTENTS;

테이블스페이스가 비어 있으면 (모든 테이블, 뷰 또는 다른 구조를 포함하지 않음)[Including Contained Objects] 확인란을선택하지 않아도 됩니다. 테이블스페이스가 다른 테이블스페이스의 테이블에 있는 외래 키로 언급되는 기본 키나 고유 키를가지는 테이블을 포함하거나 하위 테이블의 FOREIGN KEY 제약 조건을 단계적으로 삭제하려는 경우 [Cascade Drop of Integrity Constraints] 확인란을선택하여테이블스페이스를 삭제합니다.

D ROP TA B L E S PACE 문에 CA S CADE CONSTRAINTS 옵션을 사용하여 하위테이블의 FOREIGN KEY 제약 조건을 단계적으로 삭제합니다.

테이블스페이스 관리 9 - 1 5

테이블스페이스 삭제

참조: 테이블스페이스를 오프라인으로 설정하는데 대한 자세한 내용은 9-10 페이지“테이블스페이스를 오프라인으로 설정”을 참조하십시오.

D ROP TA B L E S PACE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

DBMS_SPACE_ADMIN 패키지사용

D B M S _ S PACE_ADMIN 패키지는 관리자에게 결함 진단과 복구 기능을 제공합니다.다음 시나리오는 문제를 진단하고 해결하는데 D B M S _ S PACE_ADMIN 패키지를 사용하는 일반적인 상황에 대해 설명합니다.

D B M S _ S PACE_ADMIN 패키지는다음 프로시저를 포함하고 있습니다.

■ S E G M E N T _ V E R I F Y

■ S E G M E N T _ C O R RU P T

■ S E G M E N T _ D RO P _ C O R RU P T

■ S E G M E N T _ D U M P

■ TA B L E S PAC E _ V E R I F Y

■ TA B L E S PAC E _ R E B U I L D _ B I T M A P S

■ TA B L E S PAC E _ F I X _ B I T M A P S

■ TA B L E S PAC E _ M I G R AT E _ T O _ B I T M A P

■ TA B L E S PAC E _ M I G R AT E _ F RO M _ B I T M A P

참조: 이러한 프로시저에 대한 자세한 내용은 O racle8i Supplied Pa c k a g e sR e fe re n c e를 참조하십시오.

시나리오 1

TA B L E S PACE_VERIFY 프로시저는 세그먼트가 비트맵에“사용 가능”으로 표시된블록을 할당했음을 확인합니다. 그러나 세그먼트 간 중첩은 보고하지 않습니다.

이 시나리오에서는 다음 작업을 수행합니다.

■ SEGMENT_EXTENT_MAP_DUMP 프로시저를 호출하여 관리자가 세그먼트에 할당한 범위를 덤프합니다.

9 - 1 6 Oracle8i 관리자 설명서

DBMS_SPACE_ADMIN 패키지 사용

테이블스페이스 관리 9 - 1 7

■ 각 범위에 대해 TA B L E S PACE_MAKE_USED 옵션으로 TA B L E S PAC E _ F I X _BITMAPS 프로시저를 호출하여 영역을 사용됨으로 표시합니다.

시나리오 2

비트맵에“사용 가능”으로 표시된 세그먼트 블록이 있으므로 세그먼트를 삭제할 수없습니다. 시스템은 자동으로 세그먼트를 손상됨으로 표시합니다.

이 시나리오에서는 다음 작업을 수행합니다.

■ SEGMENT_CHECK_ALL 옵션으로 SEGMENT_VERIFY 프로시저를 호출합니다. 중첩이 보고되지 않으면 다음 작업을 수행합니다.

■ SEGMENT_EXTENT_MAP_DUMP 프로시저를 호출하여 관리자가 세그먼트에 할당한 범위를 덤프합니다.

■ 각 범위에 대해 TA B L E S PACE_MAKE_FREE 옵션으로 TA B L E S PAC E _FIX_BITMAPS 프로시저를호출하여 영역을“사용 가능”으로 표시합니다.

■ S E G M E N T _ D RO P _ C O R RUPT 프로시저를 호출하여 S EG $ 입력 항목을 삭제합니다.

시나리오 3

TA B L E S PACE_VERIFY 프로시저는 일부 중첩 사항을 보고합니다. 실제 데이터 중일부는 이전의 내부 오류에 준하여 제거되어야 합니다.

제거할 객체를 선택한 후 T1 테이블을 예로 들어 다음 작업을 수행합니다.

■ T 1과 중첩하는 모든 객체 목록을 만듭니다.

■ 테이블 T 1을 삭제합니다. 필요한 경우 S E G M E N T _ D RO P _ C O R RUPT 프로시저를 호출하여 실행합니다.

■ T 1과 중첩된 모든 객체에 대해 SEGMENT_VERIFY 프로시저를 호출합니다.필요한 경우 TA B L E S PACE_FIX_BITMAPS 프로시저를 호출하여 해당 비트맵을 사용됨으로 표시합니다.

■ TA B L E S PACE_VERIFY 프로시저를 다시 실행하여 문제 해결 여부를 확인합니다.

시나리오 4

비트맵 블록 집합에 매체 손상이 발생했습니다.

이 시나리오에서는 다음 작업을 수행합니다.

■ 모든 비트맵 블록 또는 한 블록만 손상된 경우에는 단일 블록에서 TA B L E S PAC E_REBUILD_MAPS 프로시저를호출합니다.

DBMS_SPACE_ADMIN 패키지 사용

■ TA B L E S PACE_VERIFY 프로시저를 호출하여 비트맵의 일관성 여부를 확인합니다.

참조: D B M S _ S PACE_ADMIN 패키지에 대한 자세한 내용은 O racle8i SuppliedPackages Refe re n c e를 참조하십시오.

데이터베이스 간 테이블스페이스 이동

이 단원에서는 데이터베이스 간 테이블스페이스 이동 방법에 대해 설명하며 다음 내용을 다룹니다.

■ 이동 가능한 테이블스페이스 소개

■ 현재 한계점

■ 1단계: 자체 포함 테이블스페이스 집합 선택

■ 2단계: 이동 가능한 테이블스페이스 집합 생성

■ 3단계: 테이블스페이스 집합 이동

■ 4단계: 테이블스페이스 집합에 플러그인

■ 객체 기능

■ 데이터 웨어하우징을 위한 분할 영역 이동 및 첨부: 예

■ C D에 구조화된 데이터 등록

■ 여러 데이터베이스에서 동일한 테이블스페이스를 읽기 전용으로 마운트

■ 이동 가능한 테이블스페이스를 통해 현재까지의 기록 데이터 아카이브

■ 이동 가능한 테이블스페이스를 사용하여 TSPITR 수행

이동 가능한 테이블스페이스 소개

주: 이동 가능한 테이블스페이스 집합을 생성하려면 O racle8i Enter-prise Edition이 있어야 합니다. 그러나 E n t e r p r i s e, Work gro u p또는 Pe rsonal Oracle8i 중 임의의 O racle 판을 사용하여 이동 가능한 테이블스페이스 집합을 오라클 데이터베이스로 플러그인할 수 있습니다.

이동 가능한 테이블스페이스를 사용하여 오라클 데이터베이스의 일부를 이동하여 다른 오라클 데이터베이스로“플러그인”할 수 있고 특히, 데이터베이스 간 테이블스페이스를 이동할 수 있습니다. 테이블스페이스 이동 기능은 특히 다음과 같은 경우에유용합니다.

9 - 1 8 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

■ O LTP 시스템에서 데이터 웨어하우스 스테이징 시스템으로 데이터 공급

■ 스테이징 시스템에서 데이터 웨어하우스와 데이터 마트 갱신

■ 중앙 데이터 웨어하우스로부터 데이터 마트 로드

■ O LT P와 데이터 웨어하우스 시스템을 효율적으로 아카이브

■ 내부 고객과 외부 고객에게 데이터 등록

이동 가능한 테이블스페이스를 통해 동일한 데이터를 임포트/엑스포트 또는 로드 해제/로드를 수행하는 것보다 훨씬 빠르게 데이터를 이동할 수 있습니다. 테이블스페이스 이동 작업은 데이터 파일을 복사하고 테이블스페이스의 구조 정보를 통합하기만하면 되기 때문입니다. 또한 이동 가능한 테이블스페이스를 사용하여 인덱스 데이터를 이동할 수 있으므로 테이블 데이터를 임포트하거나 로드할 때 수행해야 하는 인덱스 재구축 작업을 방지해 줍니다.

테이블스페이스 집합을 이동하거나 복사하려면 다음 작업을 수행해야 합니다.

■ 1단계: 자체 포함 테이블스페이스 집합 선택

■ 2단계: 이동 가능한 테이블스페이스 집합 생성

이동 가능한 집합은 이동될 테이블스페이스 집합에 대한 데이터 파일과 테이블스페이스 집합에 대한 구조 정보를 포함하는 파일로 구성됩니다.

■ 3단계: 테이블스페이스 집합 이동

데이터 파일과 엑스포트 파일을 대상 데이터베이스로 복사합니다. O/S 복사 유틸리티, ftp 또는 C D에 등록 기능과 같은 임의의 독립 파일 복사 기능을 사용하여이 작업을 수행할 수 있습니다.

■ 4단계: 테이블스페이스 집합에 플러그인

임포트를 호출하여 테이블스페이스 집합을 대상 데이터베이스에 플러그인합니다.

참조: 이동 가능한 테이블스페이스와 데이터 마트 및 데이터 웨어하우징의 사용에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

이동 가능한 테이블스페이스를 사용하여 매체 복구를 수행하는데 대한 자세한 내용은O racle8i Backup and Recovery Guide를참조하십시오.

이동 가능한 테이블스페이스의 호환성 문제에 대한 자세한 내용은 O racle8i Migra -t i o n을 참조하십시오.

테이블스페이스 관리 9 - 1 9

데이터베이스 간 테이블스페이스 이동

현재 한계점

이동 가능한 테이블스페이스에 대한 계획을 세우거나 사용할 때 다음과 같은 한계점을 유의하십시오.

■ 원본 데이터베이스와 대상 데이터베이스는 동일한 하드웨어 플랫폼에 있어야 합니다. 예를 들어, Sun Solaris 오라클 데이터베이스 간 테이블스페이스 또는 N T오라클 데이터베이스 간 테이블스페이스를 이동할 수 있습니다. 그러나 S U NSolaris 오라클 데이터베이스에서 NT 오라클 데이터베이스로 테이블스페이스를이동할 수 없습니다.

■ 원본 데이터베이스와 대상 데이터베이스는 동일한 데이터베이스 블록 크기여야 합니다.

■ 원본 데이터베이스와 대상 데이터베이스는 동일한 문자 집합을 사용해야 합니다.

■ 동일한 이름의 테이블스페이스가 대상 데이터베이스에 있다면 대상 데이터베이스로 테이블스페이스를 이동할 수 없습니다.

■ 현재 이동 가능한 테이블스페이스는 다음 사항을 지원하지 않습니다.

- 스냅샷/복제

- 함수 기준 인덱스

- 범위가 지정된 R E F

- 도메인 인덱스(확장 가능한 인덱스 방식으로 제공되는 새로운 인덱스 유형)

- 수취인이 여러 명인 8.0 호환 가능 고급 대기열

1단계: 자체 포함 테이블스페이스 집합 선택

자체 포함 테이블스페이스 집합만 이동할 수 있습니다. 문맥적으로“자체 포함”이란테이블스페이스 집합 내부로부터 테이블스페이스 외부를 가리키는 참조 사항이 없음을 의미합니다. 예를 들어, 테이블스페이스 집합 외부에 있는 테이블에 대한 테이블스페이스 집합에 인덱스가 있으면 테이블스페이스 집합은 자체 포함 상태가 아닙니다.

복사하려는 테이블스페이스 집합은 분할된 테이블의 분할 영역을 모두 포함하거나 하나도 포함하지 말아야 합니다. 분할된 테이블의 일부를 이동하려면 분할 영역을 테이블로 교환해야 합니다.

테이블스페이스 집합을 이동할 때 참조 무결성 제약 조건을 포함하도록 선택할 수 있습니다. 그러나 그렇게 하면 테이블스페이스 집합의 자체 포함 여부를 결정할 수 있습니다. 제약 조건을 이동하지 않도록 하면 제약 조건은 포인터로 간주되지 않습니다. 자체 포함 테이블스페이스 위반 사항의 몇 가지 예는 다음과 같습니다.

9 - 2 0 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

■ 테이블스페이스 집합 내부의 인덱스는 테이블스페이스 집합 외부 테이블을 위해사용됩니다.

■ 분할된 테이블이 테이블스페이스 집합에 부분적으로 포함됩니다.

■ 테이블스페이스 집합 내부 테이블에 테이블스페이스 집합 외부의 L O B를 가리키는 LOB 열이 있습니다.

테이블스페이스 집합의 자체 포함 여부를 결정하려면 테이블스페이스 이름 목록을 지정하고 참조 무결성 제약 조건 이동을 표시하여 내장 PL/SQL 프로시저를 호출할 수있습니다. 예를 들어, 테이블스페이스 t s 1과 t s 2의 자체 포함 (제약 조건을 고려하여) 여부를 결정한다고 합시다. 다음 명령어를 실행할 수 있습니다.

execute dbms_tts.transport_set_check(’ts1, ts2’, TRUE)

t r a n s p o r t _ s e t _ c h e c k는 PL/SQL 패키지 D B M S _ T T S에 있는 PL/SQL 루틴입니다. 다음은 D B M S _ T T S의 프로토타입입니다.

PROCEDURE transport_set_check(ts_list IN varchar2, incl_constraints IN boolean)

ts_list - list of tablespace names separated by commaincl_constraints - TRUE if one would like to take constraints intoconsideration. FALSE otherwise.

이 PL/SQL 루틴을 호출한 다음 T R A N S P O RT _ S E T _ V I O L ATIONS 뷰에서 선택하여 모든 위반 사항을 볼 수 있습니다. 테이블스페이스 집합이 자체 포함 상태면 이뷰는 비어 있습니다. 테이블스페이스 집합이 자체 포함 상태가 아니면 이 뷰에 모든위반 사항이 나열됩니다. 예를 들어, 테이블스페이스 집합 범위 상에 d e p t _ f k라는외래 키 제약 조건과 테이블스페이스에 부분적으로 포함되는 s a l e s라는 분할된 테이블 등 두 개의 위반 사항이 있다고 합시다. TRANSPORT _ S E T _ V I O L AT I O N S를질의하면 결과는 다음과 같습니다.

select * from transport_set_violations;VIOLATIONS-----------------------------------Constraint DEPT_FK between table JIM.EMP in tablespace FOO and tableJIM.DEPT in tablespace OTHERPartitioned table JIM.SALES is partially contained in the transport-able set

테이블스페이스 집합 상의 ( R E F와 같은) 객체 참조 사항은 위반 사항으로 간주되지않습니다. REF는 T R A N S P O RT_SET_CHECK 루틴으로 검사되지 않습니다. 무위R E F를 포함하는 테이블스페이스가 데이터베이스에 플러그인되면 무위 R E F를 수반하는 질의는 사용자 오류임을 표시합니다.

참조: R E F에 대한 자세한 내용은 O racle8i Application Dev e l o p e r’s Guide -F u n d a m e n t a l s를 참조하십시오.

테이블스페이스 관리 9 - 2 1

데이터베이스 간 테이블스페이스 이동

2단계: 이동 가능한 테이블스페이스 집합 생성

이동하려는 자체 포함 테이블스페이스 집합을 지정한 후 다음 작업을 수행하여 이동가능한 집합을 생성하십시오.

1 . 복사할 집합에서 모든 테이블스페이스를 읽기 전용으로 만듭니다. 테이블스페이스가 읽기 전용 상태면 이 단계를 수행하지 않아도 됩니다.

ALTER TABLESPACE sales READ ONLY;

2 . Export 유틸리티를 호출하고 이동 가능한 테이블스페이스 집합을 다음과 같이 지정합니다.

EXP TRANSPORT_TABLESPACE=y TABLESPACES=sales_1, sales_2TRIGGERS=y/n CONSTRAINTS=y/n GRANTS=y/n FILE=expdat.dmp

주: Export 유틸리티를 사용해도 데이터 딕셔너리 구조 정보만 엑스포트됩니다. 따라서 이 작업은 대용량 테이블스페이스에 대해서도 매우빠르게 수행됩니다.

프롬프트 상태가 되면“sys as sysdba”로 접속합니다.

항상 TA B L E S PAC E S를 지정해야 합니다. FILE 매개변수는 생성될 구조 정보엑스포트 파일 이름을 지정합니다.

T R I G G E RS = n으로 설정하면 트리거는 엑스포트되지 않습니다. TRIGGERS = y로 설정하면 트리거는 유효성 검사 없이 엑스포트됩니다. 잘못된 트리거는 다음임포트 과정에서 컴파일 오류를 발생시킵니다.

G R A N TS = y로 설정하면 엑스포트된 테이블의 모든 부여 사항이 엑스포트됩니다.G R A N TS = n으로 설정하면 모든 부여 사항은 무시됩니다.

C O N S T R A I N TS = y로 설정하면 참조 무결성 제약 조건이 엑스포트됩니다.C O N S T R A I N TS = n으로 설정하면 참조 무결성 제약 조건은 무시됩니다.

이들 모든 옵션에 대한 기본 설정은‘y’입니다.

3 . 데이터 파일을 별도의 저장 영역이나 대상 데이터베이스에 복사합니다.

4 . 필요한 경우 복사된 집합의 테이블스페이스를 읽기 쓰기 가능 모드로 다시 설정할수 있습니다.

ALTER TABLESPACE sales_1 READ WRITE;

이동될 테이블스페이스 집합이 자체 포함 상태가 아니면 엑스포트를 실패하고 이동하려는 집합이 자체 포함 상태가 아님을 표시합니다. 모든 위반 사항을 해결하려면 1단계로 돌아가야 합니다.

9 - 2 2 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

테이블스페이스 관리 9 - 2 3

3단계: 테이블스페이스 집합 이동

데이터 파일과 엑스포트 파일을 모두 대상 데이터베이스가 액세스할 수 있는 위치로이동하십시오. O/S 복사 유틸리티, ftp 또는 C D에 등록 기능과 같은 임의의 독립파일 복사 기능을 사용할 수 있습니다.

4단계: 테이블스페이스 집합에 플러그인

테이블스페이스 집합에 플러그인하려면 다음 작업을 수행하십시오.

1 . 대상 데이터베이스가 액세스할 수 있는 위치에 복사된 테이블스페이스 집합 데이터 파일을 넣습니다.

2 . 다음 임포트문을 사용하여 테이블스페이스를 플러그인하고 구조 정보를 통합합니다.

IMP TRANSPORT_TABLESPACE=y DATAFILES=’/db/sales_jan’,’/db/sales_feb’,...fnTABLESPACES=sales_1,sales_2,... TTS_OWNERS=dcranney,jfeeFROMUSER=dcranney,jfee TOUSER=smith,williams FILE=expdat.dmp

프롬프트 상태가 되면“sys as sysdba”로 접속합니다.

다음은 추가 예입니다.

IMP TRANSPORT_TABLESPACE=y DATAFILES=’(/db/staging1.f,/db/staging2.f)’

IMP TRANSPORT_TABLESPACE=y DATAFILES = ’/ d b / s t a g i n g . f’ T A B L E S P A C E S = j a nOWNERS=smith

DATA F I L E S를 지정해야 합니다.

TA B L E S PAC E S, TTS_OW N E R S, FROMUSER 및 T O U S E R는 선택 사항입니다. FILE 매개변수는 구조 정보 엑스포트 파일 이름을 지정합니다.

TA B L E S PAC E S를 지정하면 제공된 테이블스페이스 이름은 엑스포트 파일에 있는 이름과 비교됩니다. 이름이 일치하지 않으면 임포트는 오류를 돌려줍니다. 이름이 일치하면 테이블스페이스 이름을 엑스포트 파일에서 추출합니다.

T T S _ OW N E R S는 테이블스페이스 집합에 있는 데이터를 소유하는 모든 사용자를 나열합니다. TTS_OW N E R S를 지정하면 사용자 이름은 엑스포트 파일에 있는이름과 비교됩니다. 이름이 일치하지 않으면 임포트는 오류를 돌려줍니다. 이름이일치하면 사용자 이름을 엑스포트 파일에서 추출합니다.

F RO M U S E R와 T O U S E R를 지정하지 않으면 테이블이나 인덱스와 같은 모든데이터베이스 객체는 원본 데이터베이스와 동일한 사용자로 생성됩니다. 그러한사용자는 대상 데이터베이스에 있어야 합니다. 그렇지 않으면 임포트는 필요한 일부 사용자가 대상 데이터베이스에 없음을 표시하는 오류를 돌려줍니다.

데이터베이스 간 테이블스페이스 이동

F RO M U S E R와 T O U S E R를 사용하여 객체 소유자를 변경할 수 있습니다. 예를들어, FROMUSER=dcranney, jfee TOUSER=smith, williams 를 지정하면 원본데이터베이스의d c r a n n e y가 소유한 테이블스페이스 집합에 있는 객체는 테이블스페이스 집합이 플러그인된 후 대상 데이터베이스의 s m i t h가 소유하게 됩니다. 이와 유사하게 원본 데이터베이스에서 j f e e가 소유한 객체는 대상 데이터베이스에서는 w i l l i a m s가 소유하게 됩니다. 이 경우 대상 데이터베이스에 사용자d c r a n n e y와 j f e e는 없어도 되지만 사용자 s m i t h와 w i l l i a m s는 있어야 합니다.

이 명령문이 성공적으로 실행되면 복사될 집합에 있는 모든 테이블스페이스는 읽기 전용 모드로 남게 됩니다. 임포트 로그를 검사하여 오류 발생 여부를 확인해야합니다. 이때 A LTER TA B L E S PAC E...READ WRITE 문을 실행하여 새로운테이블스페이스를 읽기 쓰기 가능 모드로 설정합니다.

많은 수의 데이터 파일을 처리할 때 명령줄에 데이터 파일 이름 목록을 지정하는 것은 귀찮은 과정일 수도 있고 명령줄 한계를 초과할 수도 있습니다. 이 경우에 임포트매개변수 파일을 사용할 수 있습니다. 예를 들어, 이 단계에 있는 명령어 중 하나는다음과 동등합니다.

IMP PARFILE=’par.f’

par.f 파일은 다음 사항을 포함합니다.

TRANSPORT_TABLESPACE=yDATAFILES=/db/staging.fTABLESPACES=janTT_OWNERS=smith

데이터베이스 간 테이블스페이스를 이동하려면 원본 데이터베이스와 대상 데이터베이스 모두 i n i t . o ra의 C o m p a t i b i l i ty 매개변수가 8 . 1로 설정된 상태에서 O ra c l e 8 i를실행해야 합니다.

객체 기능

대부분의 객체는 테이블스페이스의 데이터인지 테이블스페이스와 관련된 구조 정보인지에 관계없이 다른 데이터베이스에 이동된 후에는 정상적인 기능을 합니다. 그러나다음 객체는 예외입니다.

■ ROW I D

■ R E F

■ 권한

■ 분할된 테이블

■ 객체

9 - 2 4 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

■ 고급 대기열

■ 인덱스

■ 트리거

■ 스냅샷/복제

R O W I D

데이터베이스가 다른 데이터베이스로부터 플러그인된 테이블스페이스를 포함하면 해당 데이터베이스의 ROW I D는 더 이상 고유하지 않습니다. ROW I D는 테이블 내에서만 고유성이 보장됩니다.

R E F

R E F는 O ra c l e이 테이블스페이스 집합의 자체 포함 여부를 결정할 때는 검사되지 않습니다. 결과적으로 플러그인된 테이블스페이스는 무위 R E F를 포함할 수 있습니다.무위 R E F를 수반하는 모든 질의는 사용자 오류를 돌려줍니다.

권한

G R A N TS = y로 지정하면 엑스포트 중 권한이 이동됩니다. 임포트 중 일부 부여 사항을 실패할 수 있습니다. 예를 들어, 특정 권한을 부여 받을 사용자가 없거나 특정 권한을 부여 받을 롤이 없을 수도 있습니다.

분할된 테이블

분할된 테이블의 일부만 테이블스페이스 집합에 포함된 경우 이동 가능한 테이블스페이스를 통해 분할된 테이블을 이동할 수 없습니다. 테이블의 모든 분할 영역이 테이블스페이스 집합에 있는지 확인하거나 테이블스페이스 집합을 복사하기 전에 분할 영역을 테이블로 교환해야 합니다. 그러나 테이블과 분할 영역을 교환하면 분할된 테이블의 전역 인덱스는 무효화됩니다.

대상 데이터베이스에서 대상 데이터베이스의 열과 정확하게 일치하는 분할된 테이블이 있으면 테이블을 분할 영역으로 다시 교환할 수 있습니다. 해당 테이블의 모든 분할 영역이 동일한 외래 데이터베이스로부터 들어오면 교환 작업은 성공적으로 수행됩니다. 흔하지는 않지만 그렇지 않은 경우에는 데이터 객체 수 충돌이 발생했음을 표시하는 오류를 돌려줍니다.

테이블을 다시 분할 영역으로 교환할 때 데이터 객체 수 충돌 오류를 받으면 A LT E RTABLE MOVE PA RTITION 문을 사용하여 위반하는 분할 영역을 이동할 수 있습니다. 그런 다음 교환 작업을 다시 시도하십시오.

테이블스페이스 관리 9 - 2 5

데이터베이스 간 테이블스페이스 이동

교환문에 WITHOUT VA L I DATION 옵션을 지정하면 명령문은 구조 정보만 처리하므로 즉시 반환됩니다. 그러나 분할 영역 이동 작업은 분할 영역의 데이터가 복사될수 있으므로 느리게 진행될 수 있습니다. 분할된 테이블 사용 예는 9-27 페이지“데이터 웨어하우징을 위한 분할 영역 이동 및 첨부: 예”를 참조하십시오.

객체

이동 가능한 테이블스페이스 집합은 다음 사항을 포함합니다.

■ 테이블

■ 인덱스

■ 비트맵 인덱스

■ 인덱스 구성 테이블

■ L O B

■ 중첩 테이블

■ 가변 배열

■ 사용자 정의 유형 열로 이루어진 테이블

테이블스페이스 집합이 B F I L E을 가리키는 포인터를 포함하면 B F I L E을 이동하고 대상 데이터베이스에 디렉토리를 제대로 설정해야 합니다.

고급 대기열

수취인이 여러 명인 8.0 호환 대기열이 아니라면 이동 가능한 테이블스페이스를 사용하여 O racle 고급 대기열을 이동하거나 복사할 수 있습니다. 대기열이 대상 데이터베이스로 이동된 후 초기에는 비활성 상태입니다. 이동된 테이블스페이스를 대상 데이터베이스에서 읽기 쓰기 가능 모드로 만든 후 내장 PL/SQL 루틴d b m s _ a q a d m . s t a r t _ q u e u e ()를 통해 대기열을 시작하여 활성화할 수 있습니다.

인덱스

정규 인덱스와 비트맵 인덱스를 이동할 수 있습니다. 이동 가능한 집합이 분할된 테이블을 완전히 포함하고 있다면 분할된 테이블의 전역 인덱스도 이동할 수 있습니다.

함수 기준 인덱스와 도메인 인덱스는 지원되지 않습니다. 이러한 인덱스가 테이블스페이스에 있으면 테이블스페이스를 이동하기 전에 삭제해야 합니다.

9 - 2 6 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

트리거

트리거는 유효성 검사 없이 엑스포트됩니다. 즉, Ora c l e은 트리거가 이동 가능한 집합 내 객체만을 참조하는 것을 검증하지 않습니다. 잘못된 트리거는 다음 임포트 과정에서 컴파일 오류를 발생시킵니다.

스냅샷/복제

스냅샷이나 복제 구조 정보 이동 기능은 지원되지 않습니다. 이동하려는 테이블스페이스의 테이블이 복제되면 복제 구조 정보를 삭제하고 테이블스페이스를 이동하기 전에 해당 테이블을 일반 테이블로 변환해야 합니다.

데이터 웨어하우징을 위한 분할 영역 이동 및 첨부: 예

일반적인 기업 데이터 웨어하우스는 하나 이상의 대용량 사실 테이블을 포함하고 있습니다. 이러한 사실 테이블은 날짜별로 분할될 수 있어 기업 데이터 웨어하우스를현재까지의 기록 데이터베이스로 만들 수 있습니다. 인덱스를 구축하여 스타 질의를빠르게 수행할 수 있습니다. 오라클사에서는 현재까지의 기록 데이터베이스에서 가장오래된 분할 영역을 삭제할 때마다 전역 인덱스의 재구축을 방지하기 위해 시간별로분할된 테이블에 대한 지역 인덱스를 구축할 것을 권장합니다.

월별 데이터를 매달 데이터 웨어하우스로 로드한다고 합시다. 데이터 웨어하우스에다음 열을 포함하는“s a l e s”라는 대용량 사실 테이블이 있습니다.

CREATE TABLE sales (invoice_no NUMBER,sale_year INT NOT NULL,sale_month INT NOT NULL,sale_day INT NOT NULL)PARTITION BY RANGE (sale_year, sale_month, sale_day)(partition jan98 VALUES LESS THAN (1998, 2, 1),partition feb98 VALUES LESS THAN (1998, 3, 1),partition mar98 VALUES LESS THAN (1998, 4, 1),partition apr98 VALUES LESS THAN (1998, 5, 1),partition may98 VALUES LESS THAN (1998, 6, 1),partition jun98 VALUES LESS THAN (1998, 7, 1));

접두어가 없는 로컬 인덱스는 다음과 같이 생성합니다.

CREATE INDEX sales_index ON sales(invoice_no) LOCAL;

초기에 모든 분할 영역은 비어 있고 동일한 기본 테이블스페이스에 있습니다. 매달하나의 분할 영역을 생성하여 분할된 s a l e s 테이블에 분할 영역을 첨부하고자 합니다.

테이블스페이스 관리 9 - 2 7

데이터베이스 간 테이블스페이스 이동

현재가 1 9 9 8년 7월이고 분할된 테이블에 7월 판매량 데이터를 로드한다고 합시다. 스테이징 데이터베이스에서 새로운 테이블스페이스 t s _ j u l을 생성하고 sales 테이블과동일한 열 유형을 가진 테이블스페이스에 j u l _ s a l e s 테이블도 생성합니다.C R E ATE TA B L E...AS SELECT 문을 사용하여 ju l _ s a l e s 테이블을 생성할 수있습니다. j u l _ s a l e s를 생성하여 채운 후 s a l e s 테이블에서 지역 인덱스와 동일한열을 인덱스화하는 j u l _ s a l e _ i n d e x 인덱스도 생성할 수 있습니다. 인덱스를 구축한후 테이블스페이스t s _ j u l을 데이터 웨어하우스로 이동하십시오.

데이터 웨어하우스에서 s a l e s 테이블에 7월 판매량 데이터에 대한 분할 영역을 추가하십시오. 그러면 미리 고정되지 않은 지역 인덱스에 대한 다른 분할 영역도 생성할수 있습니다.

ALTER TABLE sales ADD PARTITION jul98 VALUES LESS THAN (1998, 8, 1);

이동된 테이블 j u l _ s a l e s를 새로운 분할 영역과 교환하여 s a l e s 테이블에 첨부하십시오.

ALTER TABLE sales EXCHANGE PARTITION jul98 WITH TABLE jul_sales INCLUDING INDEXESWITHOUT VALIDATION;

이 명령문은 7월 판매량 데이터를 새 분할 영역 j u l 9 8에 넣으며 새 데이터를 분할된테이블에 첨부합니다. 또한 jul_sale_index 인덱스를 s a l e s 테이블에 대한 지역인덱스의 분할 영역으로 변환합니다. 구조 정보에 대해서만 작업하므로 이 명령문은즉시 반환됩니다. 즉, 이 명령문은 단순히 데이터베이스 포인터를 전환합니다. 새로운 분할 영역에 있는 데이터는 이전 분할 영역에 있는 데이터와 중첩되지 않으므로WITHOUT VA L I DATION 옵션을 지정할 것을 권장합니다. 그렇지 않으면 명령문은 해당 분할 영역의 범위를 검증하려고 시도할 때 새 분할 영역에 있는 새로운 데이터에 대해 모두 수행합니다.

s a l e s 테이블의 모든 분할 영역이 동일한 스테이징 데이터베이스(스테이징 데이터베이스는 제거되지 않음)에서 만들어진 경우 교환문은 항상 성공적으로 실행됩니다. 그러나 일반적으로 분할된 테이블에 있는 데이터가 서로 다른 데이터베이스에서 만들어진 경우 교환 작업은 실패할 수도 있습니다. 예를 들어, sales 테이블의 j a n 9 8 분할영역이 동일한 스테이징 데이터베이스에서 만들어지지 않은 경우 위의 교환 작업이실패하여 다음 오류를 돌려줍니다.

ORA-19728: data object number conflict between table JUL_SALES andpartition JAN98 in table SALES

다음은 위반하는 분할 영역을 이동하여 이러한 충돌을 해결하는 명령문입니다.

ALTER TABLE sales MOVE PARTITION jan98;

그런 다음 교환 작업을 다시 시도하십시오.

9 - 2 8 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

교환 작업이 성공적으로 이루어진 후 현재 비어 있는 j u l _ s a l e s와 j u l _ s a l e _ i n d e x를 안전하게 삭제할 수 있습니다. 이제 7월 판매량 데이터를 데이터 웨어하우스에 성공적으로 로드했습니다.

C D에 구조화된 데이터 등록

이동 가능한 테이블스페이스를 사용하여 구조화된 데이터를 C D에 등록할 수 있습니다. 데이터 공급자는 등록할 데이터가 있는 테이블스페이스를 로드하고 이동 가능한집합을 생성한 다음 이동 가능한 집합을 C D에 복사합니다. 그런 다음 이 C D를 분배할 수 있습니다.

고객이 이 C D를 받을 때 C D의 데이터 파일을 디스크 저장 영역으로 복사하지 않고도 기존의 데이터베이스에 플러그인할 수 있습니다. 예를 들어, NT 시스템에서 D :드라이브를 CD 드라이브라고 가정하면 다음과 같이 데이터 파일 c a t a l o g . f와 엑스포트 파일 e x p d a t . d m p가 있는 이동 가능한 집합에 플러그인할 수 있습니다.

IMP TRANSPORT_TABLESPACE=y DATAFILES=’D:\catalog.f’ FILE=’D:\expdat.dmp’

데이터베이스가 올려져 있으면 C D를 빼낼 수 있습니다. 테이블스페이스에 대한 후속질의 작업은 O ra c l e이 C D의 데이터 파일을 열 수 없음을 표시하는 오류를 돌려줍니다. 그러나 데이터 파일의 다른 부분에 대한 작업에는 영향을 주지 않습니다. CD를다시 드라이브에 넣으면 테이블스페이스를 다시 읽을 수 있도록 만듭니다.

C D를 빼내는 것은 읽기 전용 테이블스페이스에 대한 데이터 파일을 제거하는 것과같습니다. 데이터베이스를 종료하고 다시 시작하면 O ra c l e은 제거한 데이터 파일을찾을 수 없음을 표시하고 데이터베이스를 열지 않습니다. (초기화 매개변수 R E A D _O N LY _ O P E N _ D E L AY E D를 T RU E로 설정하지 않은 경우) READ_ONLY _O P E N _ D E L AY E D를 T RU E로 설정하면 O ra c l e은 사용자가 플러그인된 테이블스페이스를 질의할 경우에만 파일을 읽습니다. 따라서 C D에 있는 테이블스페이스에 플러그인할 경우에는 C D가 영구적으로 데이터베이스에 첨부되지 않는 한 항상R E A D _ O N LY _ O P E N _ D E L AYED 초기화 매개변수를 T RU E로 설정해야 합니다.

여러 데이터베이스에서 동일한 테이블스페이스를 읽기 전용으로 마운트

이동 가능한 테이블스페이스를 사용하여 여러 데이터베이스에서 테이블스페이스를 읽기 전용으로 마운트할 수 있습니다. 이와 같은 방법으로 각각의 데이터베이스는 별도의 디스크에 데이터를 복제하는 대신 디스크에서 동일한 데이터를 공유할 수 있습니다. 모든 데이터베이스는 테이블스페이스 데이터 파일에 액세스할 수 있어야 합니다.데이터베이스 손상을 방지하려면 테이블스페이스를 마운트하는 모든 데이터베이스에서 테이블스페이스는 읽기 전용이어야 합니다.

다음 방법 중 하나를 사용하여 여러 데이터베이스에서 동일한 테이블스페이스를 읽기전용으로 마운트할 수 있습니다.

■ 테이블스페이스를 해당 테이블스페이스를 마운트하려는 각 데이터베이스에 플러그

테이블스페이스 관리 9 - 2 9

데이터베이스 간 테이블스페이스 이동

인합니다. 단일 데이터베이스에 이동 가능한 집합을 생성합니다. 데이터 파일을모든 데이터베이스가 액세스할 수 있는 디스크 상의 이동 가능한 집합에 넣습니다. 구조 정보를 각 데이터베이스에 임포트합니다.

■ 하나의 데이터베이스에서 이동 가능한 집합을 생성하여 다른 데이터베이스에 플러그인합니다. 이러한 접근 방법을 사용하는 경우 데이터 파일은 공유 디스크에 있으며 하나의 데이터베이스에 있는 기존의 테이블스페이스에 속하는 것으로 가정합니다. 테이블스페이스를 읽기 전용으로 만들고 이동 가능한 집합을 생성한 다음데이터 파일이 공유 디스크의 동일 위치에 남아 있는 동안 테이블스페이스를 다른데이터베이스에 플러그인할 수 있습니다.

여러 가지 방법으로 여러 대의 컴퓨터가 디스크를 액세스할 수 있도록 만들 수 있습니다. Oracle Pa rallel Serv e r의 필요에 따라 클러스터화된 파일 시스템이나 실제디스크를 사용할 수 있습니다. Ora c l e은 공유 디스크에서 이러한 유형의 데이터 파일만 읽으므로 N F S를 사용할 수도 있습니다. 그러나 N F S의 작동이 중지되어 있는 동안 사용자가 공유 테이블스페이스를 질의하면 데이터베이스는 NFS 작업이 시간 초과될 때까지 정지합니다.

이후에 일부 데이터베이스에서 읽기 전용 테이블스페이스를 삭제할 수 있습니다. 그렇게 하면 테이블스페이스에 대한 데이터 파일을 수정하지 않아도 되므로 삭제 작업이 테이블스페이스를 손상시키지 않습니다. 하나의 데이터베이스만 테이블스페이스를마운트하지 않는다면 테이블스페이스를 읽기 쓰기 가능 모드로 만들지 말아야 합니다.

이동 가능한 테이블스페이스를 통해 현재까지의 기록 데이터 아카이브

이동 가능한 테이블스페이스 집합은 모든 오라클 데이터베이스에 플러그인될 수 있는파일 중 자체 포함 집합이므로 이 장에서는 설명한 이동 가능한 테이블스페이스 프로시저를 통해 기업 데이터 웨어하우스에 오래된 현재까지의 기록 데이터를 아카이브할수 있습니다.

참조: 자세한 내용은 O racle8i Backup and Recovery Guide를참조하십시오.

이동 가능한 테이블스페이스를 사용하여 TSPITR 수행

이동 가능한 테이블스페이스를 사용하여 테이블스페이스 적시 복구( T S P I T R )를 수행할 수 있습니다.

참조: 이동 가능한 테이블스페이스를 사용하여 T S P I T R을 수행하는 방법에 대한 자세한 내용은 O racle8i Backup and Recovery Guide를참조하십시오.

9 - 3 0 Oracle8i 관리자 설명서

데이터베이스 간 테이블스페이스 이동

테이블스페이스 정보 보기

다음 데이터 딕셔너리 뷰는 데이터베이스의 테이블스페이스에 대한 유용한 정보를 제공합니다.

■ U S E R _ E X T E N T S, DBA_EXTENTS

■ U S E R _ S E G M E N T S, DBA_SEGMENTS

■ U S E R _ F R E E _ S PAC E, DBA_FREE_SPAC E

■ D B A _ U S E R S

■ D B A _ T S _ Q U O TA S

■ U S E R _ TA B L E S PAC E S, DBA_TA B L E S PAC E S

■ D B A _ DATA _ F I L E S

■ V $DATA F I L E

다음 예는 이 설명서의 다른 장에서 설명되지 않은 뷰의 사용 방법을 나타냅니다. 두개의 테이블스페이스 SY S T E M과 U S E R S를 포함하는 데이터베이스를 사용한다고합시다. USERS는 두 개의 파일 F I L E 1 ( 1 0 0 M B )과 F I L E 2 ( 2 0 0 M B )로 구성되어 있습니다. 테이블스페이스는 정상적으로 온라인된 상태입니다.

테이블스페이스와 기본 저장 영역 매개변수 나열: 예

데이터베이스에 있는 모든 테이블스페이스의 이름과 기본 저장 영역 매개변수를 나열하려면 D B A _ TA B L E S PACES 뷰에서 다음 질의를 사용합니다.

SELECT tablespace_name ”TABLESPACE”,initial_extent ”INITIAL_EXT”,next_extent ”NEXT_EXT”,min_extents ”MIN_EXT”,max_extents ”MAX_EXT”,pct_increaseFROM sys.dba_tablespaces;

TABLESPACE INITIAL_EXT NEXT_EXT MIN_EXT MAX_EXT PCT_INCREASE---------- ----------- -------- ------- ------- ------------ SYSTEM 10240000 10240000 1 99 50USERS 10240000 10240000 1 99 50

데이터 파일과 데이터베이스의 관련 테이블스페이스 나열: 예

데이터베이스의 이름, 크기, 관련 테이블스페이스를 나열하려면 D B A _ DATA _ F I L E S뷰에 대한 다음 질의를 입력합니다.

테이블스페이스 관리 9 - 3 1

테이블스페이스 정보 보기

SELECT file_name, bytes, tablespace_nameFROM sys.dba_data_files;

FILE_NAME BYTES TABLESPACE_NAME------------ ---------- ------------------- filename1 10240000 SYSTEMfilename2 10240000 USERSfilename3 20480000 USERS

각 테이블스페이스의 빈 확장 영역 나열: 예

데이터베이스에 있는 각 테이블스페이스의 빈 확장 영역 크기를 알아보려면 다음 질의를 입력합니다.

SELECT tablespace_name ”TABLESPACE”, file_id,COUNT(*) ”PIECES”,MAX(blocks) ”MAXIMUM”,MIN(blocks) ”MINIMUM”,AVG(blocks) ”AVERAGE”,SUM(blocks) ”TOTAL”FROM sys.dba_free_space

WHERE tablespace_name = ‘SYSTEM’GROUP BY tablespace_name, file_id;

TABLESPACE FILE_ID PIECES MAXIMUM MINIMUM AVERAGE TOTAL ---------- ------- ------ ------- ------- ------- ------SYSTEM 1 2 2928 115 1521.5 3043

T O TA L은 각 테이블스페이스의 사용 가능 영역 크기를, PIECES는 테이블스페이스의 데이터 파일에 있는 단편화된 크기를, MAXIMUM은 가장 큰 연속 영역을 나타냅니다. 이 질의는 새 객체를 생성하는 경우나 세그먼트를 확장하는 경우 또는 테이블스페이스에 충분한 영역이 있는지 확인하려는 경우에 유용합니다.

9 - 3 2 Oracle8i 관리자 설명서

테이블스페이스 정보 보기

데이터 파일 관리 1 0 - 1

1 0데이터 파일 관리

이 장에서는다양한측면의데이터파일관리를설명하고다음내용을다룹니다.

■ 데이터 파일 관리에 대한 지침 사항

■ 테이블스페이스에 데이터 파일 작성 및 추가

■ 데이터 파일의 크기 변경

■ 데이터 파일 가용성 변경

■ 데이터 파일 이름 바꾸기 및 위치 재지정

■ 데이터 파일의 데이터 블록 검증

■ 데이터 파일 정보 보기

참조: 데이터 파일은 매체 고장으로부터 데이터베이스를 복구하는 일환으로도 작성될 수있습니다. 자세한 내용은 O racle8i Backup and Recovery Guide를참조하십시오.

데이터 파일 관리에 대한 지침 사항

1 0 - 2 Oracle8i 관리자 설명서

데이터 파일 관리에 대한 지침 사항

이 단원에서는 데이터 파일 관리에 대해 설명하며 다음 내용을 다룹니다.

■ 데이터 파일 수 결정

■ 데이터 파일 크기 설정

■ 데이터 파일 제대로 배치하기

■ 데이터 파일을 리두 로그 파일과 별도로 저장

모든 데이터 파일은 절대 파일 번호와 상대 파일 번호의 두 가지 관련된 파일 번호를가집니다.

절대 파일 번호는 데이터베이스 내에서 데이터 파일을 고유하게 식별합니다. Ora c l e 8이전에는 절대 파일 번호를 단순히“파일 번호”로 참조했습니다.

상대 파일 번호는 테이블스페이스 내에서 데이터 파일을 고유하게 식별합니다. 소규모 데이터베이스와 중간 규모의 데이터베이스에서는 보통 상대 파일 번호가 절대 파일 번호와 같은 값을 가집니다. 그러나 데이터베이스의 데이터 파일 수가 증가하여임계값(일반적으로 1 0 2 3 )보다 커지면 상대 파일 번호와 절대 파일 번호의 값은 달라집니다. 많은 데이터 딕셔너리 뷰에서 상대 파일 번호를 찾을 수 있습니다.

데이터 파일 수 결정

데이터베이스의 SYSTEM 테이블스페이스에는 최소한 하나의 데이터 파일이 필요합니다. 작은 시스템에는 하나의 데이터 파일만이 있을 수도 있습니다. 일반적으로 동시에 열 수 있는 파일 수가 얼마 안되므로 몇 개의 큰 데이터 파일을 유지하는 것이작은 파일을 많이 갖는 것보다 낫습니다.

다음 운영 체제에 따른 데이터 파일 한계에 따라 데이터 파일을 테이블스페이스에 추가할 수 있습니다.

운영 체제 한계값 각 운영 체제는 프로세스당 최대 열린 파일 수의 한계값을 설정합니다. 이 외의 다른 한계값과 관계없이 운영 체제에서 열수 있는 파일 한계값에 도달하면 더 이상 데이터 파일을 작성할 수 없습니다.

O racle 시스템 O ra c l e은 인스턴스에 의해 열린 오라클 데이터베이스에한계값 대해 최대 데이터 파일 수를 설정합니다. 이 값은 포트마다

다릅니다.

데이터 파일 관리에 대한 지침 사항

데이터 파일 관리 1 0 - 3

제어 파일 상한값 명령문 C R E ATE DATABASE 또는 C R E ATE CONTRO L -F I L E을 수행할 때, MAXDATAFILES 매개변수는 제어 파일 중 데이터 파일 부분의 초기 크기를 지정합니다. 이후에M A X DATA F I L E S를 초과하지만 D B _ F I L E S보다 작거나동일한 수의 파일을 추가하면 제어 파일은 데이터 파일 부분이 보다 많은 파일을 수용하도록 자동으로 확장합니다.

인스턴스 또는 O racle8 인스턴스를 시작할 때 데이터베이스의 매개 변수S GA 상한값 파일은 데이터 파일 정보를 위해 마련해 둔 S GA 영역의 크

기를 나타냅니다. 데이터 파일의 최대 수는 DB_FILES 매개변수로 제어되며 이 값은 인스턴스를 사용하는 동안만 적용됩니다.

주: D B _ F I L E S의 기본값은 운영 체제마다 다릅니다.

O racle Pa rallel Serv e r에서 모든 인스턴스는 인스턴스 데이터 파일 상한값을 동일한 값으로 설정해야 합니다.

D B _ F I L E S에 대한 값을 결정할 때 다음 사항을 고려해야 합니다.

■ D B _ F I L E S의 값이 너무 낮으면 먼저 데이터베이스를 종료하지 않고 D B _ F I L E S한계를 벗어나는 데이터 파일을 추가할 수 없게 됩니다.

■ D B _ F I L E S의 값이 너무 높으면 메모리가 불필요하게 소모됩니다.

이론적으로 오라클 데이터베이스에는여러 개의 데이터 파일이 있을 수 있습니다. 그렇지만 데이터 파일의 수를 결정할 때는 다음 사항을 고려해야 합니다.

■ 많은 수의 소규모 데이터 파일이 있을 때보다 적은 수의 대규모 데이터 파일이 있을 때 성능이 더 좋습니다. 대규모 파일은 복구할 수 있는 단위의 입도를 증가시킵니다.

■ 운영 체제에 따라 프로세스가 동시에 열 수 있는 파일 수에 한계가 있을 수 있습니다. Ora c l e의 D BW0 프로세스는 모든 온라인 데이터 파일을 열 수 있습니다.O ra c l e은 열린 파일 설명자를 캐시로 처리할 수 있으며, 열린 파일 설명자의 수가운영 체제에 정의된 한계에 도달하면 자동으로 파일을 닫습니다.

데이터 파일 관리에 대한 지침 사항

1 0 - 4 Oracle8i 관리자 설명서

O ra c l e은 데이터베이스에서 운영 체제에 의해 정의된 것보다 많은 데이터파일을 허용합니다. 이는 성능에 부정적인 영향을 줄 수 있습니다. 가능하다면 열려있는 파일 설명자에 대한 운영 체제 한계를 데이터베이스의 온라인 데이터 파일 수보다 크게 조정합니다.

테이블스페이스에 허용된 최대 데이터 파일 수에 대한 운영 체제의 한계는 일반적으로 1023 파일입니다.

참조: 운영 체제 한계값에 대한 자세한 내용은 사용자 운영 체제별 오라클 설명서를참조하십시오.

Pa rallel Server 운영 체제 한계값에 대한 내용은 O racle8i Pa rallel Serv e rConcepts and Ad m i n i s t ra t i o n을 참조하십시오.

M A X DATA F I L E S에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

데이터 파일 크기 설정

원래의 SYSTEM 테이블스페이스에있는 첫 번째 데이터 파일은 초기 데이터 딕셔너리와 롤백 세그먼트를 포함하려면 최소한 7 M는 되어야 합니다. 다른 O racle 제품을설치할 때는 예를 들어, 온라인 도움말과 같은 경우 SYSTEM 테이블스페이스에 추가 영역이 필요할 수도 있습니다. 이러한 제품은 설치 명령을 참조하십시오.

데이터 파일 제대로 배치하기

테이블스페이스 위치는 테이블스페이스를 구성하는 데이터 파일의 물리적 위치에 의해 결정됩니다. 컴퓨터 하드웨어 자원을 올바르게 사용하십시오.

예를 들어, 여러 개의 디스크 드라이브를 사용하여 데이터베이스를 저장한다면 한 디스크 드라이브에는 테이블스페이스의 테이블 데이터를, 다른 디스크 드라이브에는 테이블스페이스의 인덱스 데이터를 저장해야 합니다. 이 방법은 사용자가 테이블 정보에 대해 질의할 때 두 디스크 드라이브가 동시에 작동하여 동시에 테이블과 인덱스데이터를 얻을 수 있도록 합니다.

데이터 파일을 리두 로그 파일과 별도로 저장

데이터 파일은 데이터베이스의 리두 로그 파일과 동일한 디스크 드라이브에 저장하면안됩니다. 데이터 파일과 리두 로그 파일을 동일한 디스크 드라이브에 저장했는데 이디스크 드라이브에 문제가 생기면 데이터베이스 복구 절차를 수행할 때 이 파일들을사용할 수 없습니다.

리두 로그 파일을 다중화하면 리두 로그 파일이 모두 손실될 확률이 낮아지므로 데이터파일과 일부 리두 로그 파일을 동일한 드라이브에 저장해도 됩니다.

데이터 파일의 크기 변경

데이터 파일 관리 1 0 - 5

테이블스페이스에 데이터 파일 작성 및 추가

데이터 파일을 작성하여 테이블스페이스에 추가하면 테이블스페이스에 할당된 전체디스크 영역을 증가시킬 수 있습니다.

이상적으로는 테이블스페이스를 생성할 경우 D B A는 가능한 데이터베이스 객체의 크기를 예측하고 충분한 파일이나 장치를 추가해야 합니다. 이렇게 하면 데이터가 모든장치에 골고루 분포됩니다.

테이블스페이스에 데이터 파일을 추가하려면 Enterprise Manager/GU I의 Ad dDatafile 대화상자나 SQL 명령어 A LTER TA B L E S PAC E를 사용합니다. 테이블스페이스에 데이터 파일을 추가하려면 A LTER TA B L E S PACE 시스템 권한이 있어야합니다.

RB_SEGS 테이블스페이스에새 데이터 파일을 작성하는 명령문은 다음과 같습니다.

ALTER TABLESPACE rb_segsADD DATAFILE ‘filename1‘ SIZE 1M;

테이블스페이스에 새 데이터 파일을 추가하고 파일명을 완전히 지정하지 않으면O ra c l e은 데이터베이스 서버의 기본 디렉토리에 데이터 파일을 작성합니다. 기존 파일을 재사용하지 않으려면 새 파일명이 다른 파일과 충돌하지 않아야 합니다. 그렇지않으면 이전에 삭제된 파일을 겹쳐씁니다.

데이터 파일의 크기 변경

이 단원에서는 데이터 파일의 크기를 변경하는 다양한 방법을 설명하고 다음 내용을다룹니다.

■ 데이터 파일의 자동 확장 활성화 및 비활성화

■ 데이터 파일의 크기 직접 재조정

데이터 파일의 자동 확장 활성화 및 비활성화

데이터베이스에서 추가 영역이 필요하면 데이터 파일을 작성하거나 기존 데이터 파일을 변경하여 자동으로 크기를 늘릴 수 있습니다. 파일은 지정된 증가량으로 지정된최대 크기까지 늘어납니다.

데이터 파일을 자동 확장으로 설정하면 다음 결과를 얻습니다.

■ 테이블스페이스에서 영역이 모자랄 때 즉시 조정하지 않아도 됩니다.

■ 확장 영역 할당 실패로 응용 프로그램이 정지하는 일은 없습니다.

데이터 파일이 자동 확장 가능한지 확인하려면 D B A _ DATA_FILES 뷰를 질의하여AUTOEXTENSIBLE 열을검사합니다.

다음 SQL 명령어로 데이터 파일을 작성할 때 자동 파일 확장자를 지정할 수 있습니다.

■ C R E ATE DATA B A S E

■ C R E ATE TA B L E S PAC E

■ A LTER TA B L E S PAC E

기존 데이터 파일에 대해 자동 파일 확장을 활성화하거나 비활성화할 수 있습니다.또한 SQL 문 A LTER DATA B A S E를 사용하여 데이터 파일의 크기를 직접 재조정할 수 있습니다.

다음은 F I L E NAME2 데이터 파일에 대해 자동 확장을 활성화하고 USERS 테이블스페이스에 추가하는 예입니다.

ALTER TABLESPACE usersADD DATAFILE ‘filename2‘ SIZE 10M

AUTOEXTEND ONNEXT 512KMAXSIZE 250M;

NEXT 값은 파일이 확장될 때 추가되는 증가량의 최소 크기입니다. MAXSIZE 값은 파일이 자동으로 확장할 수 있는 최대 크기입니다.

다음은F I L E NAME2 데이터파일에 대해자동확장을 비활성화하는예입니다.

ALTER DATABASE DATAFILE ‘filename2‘AUTOEXTEND OFF;

참조: 데이터 파일 작성 또는 변경을 위한 SQL 문에 대한 자세한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

데이터 파일의 크기 직접 재조정

A LTER DATABASE 명령어를 사용하면 직접 데이터 파일의 크기를 늘이거나 줄일수 있습니다.

데이터 파일의 크기를 변경할 수 있으므로 데이터 파일을 추가하지 않고도 데이터베이스에 영역을 추가할 수 있습니다. 이 방법은 데이터베이스에서 허용하는 최대 데이터 파일 수에 도달했을 때 유용하게 사용할 수 있습니다.

데이터 파일의 크기를 직접 줄이면 데이터베이스에서 사용하지 않는 영역을 확보할수 있으므로 영역 요구 사항을 측정할 때 오류 정정에 유용하게 사용할 수 있습니다.

1 0 - 6 Oracle8i 관리자 설명서

데이터 파일의 크기 변경

다음 예제에서는 F I L E NAME2 데이터 파일이 최대 2 5 0 M로 확장되었다고 가정합니다. 그러나 이 테이블스페이스는 현재 작은 객체를 저장하므로 데이터 파일의 크기를줄일 수 있습니다.

다음 명령어는 F I L E NAME2 데이터 파일의 크기를 줄입니다.

ALTER DATABASE DATAFILE ‘filename2‘RESIZE 100M

주: 파일 크기를 항상 특정 값으로 줄일 수 있는 것은 아닙니다.

참조: 파일 크기 재조정이 성능 저하에 미치는 영향에 대한 자세한 내용은 O ra c l e 8 iM i g ra t i o n을 참조하십시오.

A LTER DATABASE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

데이터 파일 가용성 변경

이 단원에서는 데이터 파일 가용성을 변경하는 방법을 설명하고 다음 내용을 다룹니다.

■ A RCHIVELOG 모드에서데이터 파일을 온라인으로 설정

■ N OA RCHIVELOG 모드에서데이터 파일을 오프라인으로 설정

매우 드문 경우이긴 하지만 특정 데이터 파일을 온라인으로 (사용할 수 있도록 하기 위해) 설정하거나 특정 파일을 오프라인으로 (사용하지 못하도록 하기 위해) 설정해야할수 있습니다. 예를 들어, Ora c l e이 데이터 파일 쓰기에 문제가 생기면 자동으로 데이터 파일을 오프라인으로 설정할 수 있습니다. 손상된 데이터 파일을 직접 오프라인이나온라인으로 설정해야 할 수 있습니다.

주: SYSTEM 테이블스페이스에 있는 파일 외에는 테이블스페이스를오프라인으로 설정해서 일시적으로 테이블스페이스의 모든 데이터 파일을 사용하지 못하도록 할 수 있습니다. 테이블스페이스를 다시 온라인으로 설정하려면 테이블스페이스에 이 파일들을 남겨 두어야 합니다.

오프라인 데이터 파일에는 액세스할 수 없습니다. 읽기 전용 테이블스페이스에 있는데이터 파일을 온라인으로 설정하면 파일을 읽을 수 있습니다. 파일과 관련된 테이블스페이스를 읽거나 쓸 수 있는 상태로 복귀하기 전에는 파일에 쓸 수 없습니다.

데이터 파일 관리 1 0 - 7

데이터 파일 가용성 변경

데이터 파일 가용성 변경

1 0 - 8 Oracle8i 관리자 설명서

A LTER DATABASE 명령어에 DATAFILE 옵션을 사용하면 읽기 전용 테이블스페이스에 있는 파일을 개별적으로 온라인이나 오프라인으로 설정할 수 있습니다.

아카이브 모드에서 데이터 파일을 온라인이나 오프라인으로 설정하려면 A LT E RDATABASE 시스템 권한이 있어야 합니다. 데이터베이스가 배타 모드에서 열린 경우에만 이러한 작업을 수행할 수 있습니다.

A R C H I V E LOG 모드에서 데이터 파일을 온라인으로 설정

각각의 데이터 파일을 온라인으로 설정하려면 SQL 명령어 A LTER DATABASE 문을 실행하고 DATAFILE 매개변수를포함시킵니다.

주: A LTER DATABASE 문의 이 옵션을 사용하려면 데이터베이스는A RCHIVELOG 모드여야 합니다. 그러면 예상치 않은 데이터 파일손실을 방지할 수 있는데 N OA RCHIVELOG 모드에서 데이터 파일을오프라인으로 설정하면 파일이 쉽게 손실되기 때문입니다.

지정된 데이터 파일을 온라인으로 설정하는 명령문은 다음과 같습니다.

ALTER DATABASE DATAFILE ‘filename‘ ONLINE;

참조: 매체 복구 중에 데이터 파일을 온라인으로 설정하는데 대한 자세한 내용은O racle8i Backup and Recovery Guide를참조하십시오.

N O A R C H I V E LOG 모드에서 데이터 파일을 오프라인으로 설정

데이터베이스가 N OA RCHIVELOG 모드에서 데이터 파일을 오프라인으로 설정하려면 A LTER DATABASE 명령어에 DATAFILE 매개변수와 OFFLINE DROP 옵션을 사용합니다. 그러면 데이터 파일을 오프라인으로 설정하고 즉시 삭제할 수 있습니다. 예를 들어, 데이터 파일이 임시 세그먼트의 데이터만 포함하고 백업되지 않은상태이며 데이터베이스가 N OA RCHIVELOG 모드인 경우 유용하게 사용할 수 있습니다.

지정된 데이터 파일을 오프라인으로 설정하는 명령문은 다음과 같습니다.

ALTER DATABASE DATAFILE ‘filename‘ OFFLINE DROP;

데이터 파일 이름 바꾸기 및 위치 재지정

데이터 파일 관리 1 0 - 9

데이터 파일 이름 바꾸기 및 위치 재지정

이 단원에서는 데이터 파일의 이름을 바꾸고 위치를 재지정하는 방법을 설명하고 다

음 내용을 다룹니다.

■ 단일 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정

■ 다중 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정

데이터 파일의 이름을 바꿔 이름이나 위치를 재지정할 수 있습니다. Ora c l e은 다음

내용을 변경 할 수 있는 다양한 옵션을 제공합니다.

■ 데이터베이스의 나머지 부분이 열린 상태에서 단일 오프라인 테이블스페이스의 데

이터 파일 이름 바꾸기 및 위치 재지정(예를 들어, TBSP1의 F I L E NA M E 1과

F I L E NA M E 2 )

■ 데이터베이스가 마운트되었으나 닫힌 상태에서 동시에 여러 테이블스페이스에 있

는 데이터 파일의 이름 바꾸기 및 위치 재지정(예를 들어, TBSP1의 F I L E 1과

T B S P 2의 F I L E 2 )

주: SYSTEM 테이블스페이스에 있는 데이터 파일 이름을 바꾸거나위치를 재지정하려면 두 번째 옵션을 사용해야 하는데 SYSTEM 테이블스페이스를 오프라인으로 설정할 수 없기 때문입니다.

이러한 절차로 데이터 파일의 이름을 바꾸거나 위치를 재지정하면 데이터베이스의 제

어 파일에 기록될 때 데이터 파일의 포인터만 변경됩니다. 운영 체제 파일의 이름을

물리적으로 바꾸거나 파일을 운영 체제 수준에서 복사하는 것이 아닙니다. 따라서 데

이터 파일 이름을 바꾸거나 위치를 재지정하려면 여러 단계를 수행해야 합니다. 이러

한 절차를 수행하기 전에 각 단계와 예제를 잘 읽어보십시오.

단일 테이블스페이스의 데이터 파일 이름을 바꾸려면 A LTER TA B L E S PACE 시스

템 권한이 있어야 합니다.

단일 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정

단일 테이블스페이스의 데이터 파일 이름을 바꾸거나 위치를 재지정하려면 다음과 같

이 하십시오

1 . 데이터 파일을 포함하는 비 SYSTEM 테이블스페이스를 오프라인으로 설정합니

다.

2 . 운영 체제를 사용하여 데이터 파일을 새 위치나 새 이름으로 복사합니다.

3 . 전체 경로를 포함하여 새로 지정한 파일명이 이전 파일명과 다른지 확인합니다.

4 . SQL 문 A LTER TA B L E S PAC E에 R E NAME DATAFILE 옵션을 사용하여데이터베이스 내의 파일명을 변경합니다.

예를 들어, 데이터 파일 F I L E NA M E 1과 F I L E NA M E 2를 각각 F I L E NA M E 3과F I L E NA M E 4로 이름을 바꾸는 명령문은 다음과 같습니다.

ALTER TABLESPACE usersRENAME DATAFILE ‘filename1‘, ‘filename2‘

TO ‘filename3‘, ‘filename4‘;

새 파일이 있어야 하며 이 명령어로 새 파일을 작성할 수 있는 것은 아닙니다. 또한 이전 데이터 파일과 새 데이터 파일을 제대로 식별하려면 경로를 포함하여 완전한 파일명을 제공해야 합니다. 특히데이터 딕셔너리의 D B A _ DATA_FILES 뷰에나타나는 대로이전파일명을 정확히 지정해야 합니다.

다중 테이블스페이스의 데이터 파일 이름 바꾸기 및 위치 재지정

SQL 명령어 A LTER DATA B A S E에 R E NAME FILE 옵션을 사용하여 하나 이상의 테이블스페이스에 있는 데이터 파일의 이름을 바꾸거나 위치를 재지정할 수 있습니다. 이 옵션은 한 번의 작업으로 여러 테이블스페이스에 있는 데이터 파일의 이름을 바꾸거나 위치를 재지정할 때 또는 SYSTEM 테이블스페이스에 있는 데이터 파일의 이름을 바꾸거나 위치를 재지정할 때만 사용할 수 있습니다. 데이터베이스가 열린상태로 남아 있어야 한다면 앞의 단원에서 나열한 절차를 수행합니다.

한 번의 작업으로 여러 테이블스페이스에 있는 데이터 파일의 이름을 바꾸거나SYSTEM 테이블스페이스에 있는 데이터 파일의 이름을 바꾸려면 A LT E RDATABASE 시스템 권한이 있어야 합니다.

1 . 데이터베이스가 마운트되었으나 닫혀 있는지 확인합니다.

2. 운영 체제 명령어를 사용하여 이름을 바꿀 데이터 파일을 새 위치에 새 이름으로복사합니다.

3 . 데이터 파일의 새 복사본과 현재 사용 중인 데이터 파일이 서로 다른 파일명을갖는지 확인합니다.

4 . SQL 문 A LTER DATA B A S E를 사용하여 데이터베이스의 제어 파일에 있는 파일 포인터의 이름을 바꿉니다.

예를 들어, 데이터 파일 F I L E NA M E 1과 F I L E NA M E 2를 각각 F I L E NA M E 3와F I L E NA M E 4로 이름을 바꾸는 명령문은 다음과 같습니다.

ALTER DATABASERENAME FILE ‘filename1‘, ‘filename2‘

TO ‘filename3‘, ‘filename4‘;

새 파일이 있어야 하며 이 명령어로 새 파일을 작성할 수 있는 것은 아닙니다. 또한이전 데이터 파일과 새 데이터 파일을 올바로 식별하려면 경로를 포함하여 완전한 파

1 0 - 1 0 Oracle8i 관리자 설명서

데이터 파일 이름 바꾸기 및 위치 재지정

일명을 제공해야 합니다. 특히 데이터 딕셔너리의 D B A _ DATA_FILES 뷰에 나타나는 대로 이전 파일명을 정확히 지정해야 합니다.

데이터 파일 위치 재지정: 예

이 예에서는 다음과 같은 조건을 가정합니다.

■ 열린 데이터베이스는 U S E R S라는 테이블스페이스를 가지고 있으며 동일한 디스

크 상에 있는 데이터 파일로 이루어져 있습니다.

■ USERS 테이블스페이스의 데이터 파일은 다른 디스크 드라이브에 위치가 재지정

될 것입니다.

■ Enterprise Manager를사용하는 동안 열린 데이터베이스에 관리자 권한으로 접

속됩니다.

데이터 파일의 위치를 재지정하려면 다음과 같이 하십시오.

1 . 원하는 데이터 파일 이름을 식별합니다.

D B A _ DATA_FILES 데이터 딕셔너리 뷰의 다음 질의는 USERS 테이블스페이스의 데이터 파일 이름과 각각의 크기를 바이트로 나열합니다.

SELECT file_name, bytes FROM sys.dba_data_filesWHERE tablespace_name = ‘USERS‘;

FILE_NAME BYTES---------------------------FILENAME1 102400000FILENAME2 102400000

위의 F I L E NA M E 1과 F I L E NA M E 2는 두 개의 완전히 지정된 파일명이며 각각의 크기는 1 M B입니다.

2 . 데이터베이스를 백업합니다.

하나 이상의 테이블스페이스에 있는 데이터 파일의 이름을 바꾸거나 위치를 재지정하는 것과 같은 구조적인 변화를 데이터베이스에 가하기 전에 항상 데이터베이스를 완벽하게 백업해 둡니다.

3 . 데이터 파일을 포함하는 테이블스페이스를 오프라인으로 설정하거나 데이터베이스를 닫고 재시작한 다음 마운트하고 닫힌 채로 둡니다. 두 옵션 모두 테이블스페이스의 데이터 파일을 닫아 둡니다.

데이터 파일 관리 1 0 - 1 1

데이터 파일 이름 바꾸기 및 위치 재지정

데이터 파일의 데이터 블록 검증

1 0 - 1 2 Oracle8i 관리자 설명서

4 . 운영 체제 명령어를 사용하여 데이터 파일을 새 위치로 복사합니다. 위의 예에서기존 F I L E NA M E 1과 F I L E NAME2 파일은 F I L E NA M E 3과 F I L E NA M E 4로복사됩니다.

주: HOST 명령어를 사용하여 파일을 복사하는 운영 체제 명령어를 실행할 수 있습니다.

5 . O racle 내에서 데이터 파일 이름을 바꿉니다.

USERS 테이블스페이스를 구성하는 파일에 대한 데이터 파일 포인터는 연관된데이터베이스 제어 파일에 기록되는데 F I L E NA M E 1과 F I L E NA M E 2에서 각각F I L E NA M E 3와 F I L E NA M E 4로 변경되어야 합니다.

테이블스페이스는 오프라인인데 데이터베이스가 열려 있으면 A LTER TA B L -E S PAC E. . . R E NAME DATAFILE 문을 사용합니다. 데이터베이스가 마운트되었으나 닫혀 있으면 A LTER DATA B A S E. . . R E NAME FILE 문을 사용합니다.

6 . 테이블스페이스를 온라인으로 설정하거나 종료한 후 데이터베이스를 재시작합니다.

USERS 테이블스페이스가 오프라인이고 데이터베이스가 열려 있으면 테이블스페이스를 다시 온라인으로 설정합니다. 데이터베이스가 마운트되었으나 닫혀 있으면 데이터베이스를 엽니다.

7 . 데이터베이스를 백업합니다. 데이터베이스에 구조적인 변화를 가한 후에는 즉시완벽하게 백업해야 합니다.

참조: D B A _ DATA_FILES 데이터 딕셔너리 뷰에 대한 자세한 내용은 O ra c l e 8 iR e fe re n c e를 참조하십시오.

테이블스페이스를 오프라인으로 설정하는데 대한 자세한 내용은 9-10 페이지“테이블스페이스를 오프라인으로 설정”을 참조하십시오.

데이터 파일의 데이터 블록 검증

O ra c l e을 구성하여 데이터 블록 검증을 위해 체크섬을 사용하려면 초기화 매개변수D B _ B L O C K _ C H E C K S U M을 T RU E로 설정합니다. DB_BLOCK_CHECKSUM의값은 동적으로 바꾸거나 초기화 매개변수 파일로 설정될 수 있습니다.D B _ B L O C K _ C H E C K S U M의 기본값은 FA L S E입니다.

블록 점검을 활성화하면 O ra c l e은 디스크에 기록되는 각 블록의 체크섬을 계산합니다.체크섬은 임시블록을 포함하여 모든 데이터 블록에 대해 계산됩니다.

D BW0 프로세스는 각 블록의 체크섬을 계산하여 블록의 헤더에 저장합니다. 체크섬은 직접 로더에 의해 계산되기도 합니다.

체크섬을 사용하여 다음에 데이터 블록을 읽을 때 블록 훼손을 발견할 수 있습니다.훼손된 블록이 발견되면 O ra c l e은 ORA-01578 메시지를 나타내고 추적 파일에 훼손정보를 기록합니다.

경고: D B _ B L O C K _ C H E C KS U M을 T RU E로 설정하면 수행 시 오버헤드가 발생합니다. 데이터 훼손 문제를 진단하려면 오라클 지원 담당자의 충고 하에서만 이 매개변수를 T RU E로 설정합니다.

데이터 파일 정보 보기

다음 데이터 딕셔너리 뷰는 데이터베이스의 데이터 파일에 대해 유용한 정보를 제공합니다.

■ U S E R _ E X T E N T S, DBA_EXTENTS

■ U S E R _ S E G M E N T S, DBA_SEGMENTS

■ U S E R _ F R E E _ S PAC E, DBA_FREE_SPAC E

■ D B A _ U S E R S

■ D B A _ T S _ Q U O TA S

■ U S E R _ TA B L E S PAC E S, DBA_TA B L E S PAC E S

■ D B A _ DATA _ F I L E S

■ V $DATA F I L E

다음은 이 설명서의 다른 장에서 설명하지 않은 뷰의 사용법을 나타낸 예입니다.SY S T E M과 USERS 테이블스페이스를 포함하는 데이터베이스를 사용한다고 합시다. USERS는 F I L E 1 ( 1 0 0 M B )과 F I L E 2 ( 2 0 0 M B )로 구성됩니다. 테이블스페이스는정상적으로 오프라인된 상태입니다. 여기에서 V $DATA F I L E을 질의하여 데이터베이스의 데이터 파일에 대한 상태 정보를 볼 수 있습니다.

SELECT name,file#,status,checkpoint_change# “CHECKPOINT“ FROM V $datafile;

NAME FILE# STATUS CHECKPOINT----------------------------- ----- ------- --------- filename1 1 SYSTEM 3839filename2 2 OFFLINE 3782filename3 3 OFFLINE 3782

데이터 파일 관리 1 0 - 1 3

데이터 파일 정보 보기

F I L E #는 각 데이터 파일의 파일 번호를 나타냅니다. SYSTEM 테이블스페이스에서작성된 첫 번째 데이터 파일은 항상 file 1입니다. STAT U S는 데이터 파일의 다른정보를 나타냅니다. 데이터 파일이 SYSTEM 테이블스페이스의 일부분이고 복구할필요가 없는 경우 상태는 SY S T E M입니다. 비 SYSTEM 테이블스페이스에서 데이터 파일이 온라인이면 상태는 O N L I N E입니다. 비 SYSTEM 테이블스페이스에서데이터 파일이 오프라인이면 상태는 OFFLINE 또는 R E C OV E R입니다. CHECKP-O I N T는 데이터 파일에서 최근의 체크포인트 때 기록된 마지막 S C N을 나열합니다.

1 0 - 1 4 Oracle8i 관리자 설명서

데이터 파일 정보 보기

11데이터베이스 자원 관리자 사용

이 장에서는 데이터베이스 자원 관리자 사용 방법에 대해 설명하며 다음 내용을 다룹니다.

■ 데이터베이스 자원 관리자 패키지 사용

■ 데이터베이스 자원 관리자 뷰

데이터베이스 자원 관리자 사용 1 1 - 1

소개

일반적으로 데이터베이스 자원 할당 결정이 운영 체제( O S )에서 이루어질 때 다음과같은 문제가 발생할 수 있습니다.

■ 과도한 오버헤드

과도한 오버헤드는 서버 수가 많을 때 O racle 서버 간 OS 컨텍스트 전환의 결과로 발생합니다.

■ 비효율적인 일정 잡기

O S에 래치가 걸려있는 동안 O racle 서버의 일정을 해제하는 것은 비효율적입니다.

■ 부적합한 자원 분할 방식

O S가 중요도가 다른 여러 작업에 CPU 자원을 알맞게 분할하지 못합니다.

■ 병렬 슬래이브나 활성 세션과 같은 데이터베이스 관련 자원을 관리할 수 없습니다.

O ra c l e의 데이터베이스 자원 관리자는 데이터베이스 관리자가 지정한 자원 계획에 준하여 자원을 할당합니다. 궁극적으로 데이터베이스 자원 관리자는 자원 관리 결정에대해 보다 많은 제어를 제공하고 비효율적인 OS 일정 잡기로 인해 야기되는 문제를처리합니다.

관리자는 표 1 1 - 1에서 설명하는 데이터베이스 자원 관리자의 기본 요소를 사용합니다.

표 11-1 데이터베이스 자원 관리자 요소

요소 설명

자원 소비자 그룹 자원 프로세싱 요구 사항에 준하여 함께 그룹화된 사용자 세션

자원 계획 자원 소비자 그룹에 할당되는 자원을 지정하는 지시어 포함

자원 할당 방법 특정 자원 할당 시 데이터베이스 자원 관리자가 사용하는 방법/정책.

자원 소비자 그룹과 자원 계획에 사용

자원 계획 지시어 관리자가 자원 소비자 그룹과 특정 계획을 연관시키고 자원 소비자 그

룹 간 자원을분할하는데 사용

소개

1 1 - 2 Oracle8i 관리자 설명서

참조: 데이터베이스 자원 관리자에 대한 자세한 개념은 O racle8i 개념 설명서를 참조하십시오.

데이터베이스 자원 관리자 패키지 사용

자원 계획과 자원 소비자 그룹을 생성하려면 다음 패키지를 사용하십시오.

■ D B M S _ R E S O U RC E _ M A NAG E R

■ D B M S _ R E S O U RC E _ M A NAG E R _ P R I VS

DBMS_RESOURCE_MANAGER 패키지사용

D B M S _ R E S O U RC E _ M A NAGER 패키지를 사용하여 자원 계획, 자원 소비자 그룹및 계획 지시어를 유지 관리합니다. 또한 이 패키지를 사용하여 계획 스키마에 대한변경 내용을 함께 그룹화할 수 있습니다.

데이터베이스 자원 관리자를 관리하려면 SYSTEM 권한이 있어야 합니다. 일반적으로 관리자는 이 SYSTEM 권한에 ADMIN 옵션을 가집니다. 다음은 SYSTEM 권한을 부여하고 철회하는 프로시저입니다.

grant_system_privilege(grantee_name in varchar2, admin_option in boolean)

revoke_system_privilege (revokee_name in varchar2)

자원 계획 관리

주: 자원 관리자 객체를 생성하기 전 미결 영역을 생성해야 합니다. 자세한 내용은 11-5 페이지“미결 영역 생성과 관리”를 참조하십시오.

다음은 자원 계획을 생성, 갱신 또는 삭제하는 프로시저입니다.

create_plan(plan in varchar2, comment in varchar2,cpu_mth in varchar2 DEFAULT ’EMPHASIS’,max_active_sess_target_mth in varchar2 DEFAULT’ M A X _ A C T I V E _ S E S S _ A B S O L U T E ’ ,parallel_degree_limit_mth in varchar2 DEFAULT’ P A R A L L E L _ D E G R E E _ L I M I T _ A B S O L U T E ’ )

update_plan(plan in varchar2, new_comment in varchar2)DEFAULT NULL, new_cpu_mth in varchar2DEFAULT NULL, new_max_active_sess_target_mth invarchar2 DEFAULT NULL,

데이터베이스 자원 관리자 패키지 사용

데이터베이스 자원 관리자 사용 1 1 - 3

new_parallel_degree_limit_mth in varchar2DEFAULT NULL)

delete_plan(plan in varchar2)delete_plan_cascade(plan in varchar2)

d e l e t e _ p l a n 프로시저는 지정된 계획뿐 아니라 프로시저가 참조하는 모든 계획 지시어를 삭제합니다. d e l e t e _ p l a n _ c a s c a d e 프로시저는 지정된 계획뿐 아니라 계획 지시어, 하위 계획, 자원 소비자 그룹과 같은 모든 후손을 삭제합니다. d e l e t e _ p l a n _c a s c a d e에 오류가 발생하면 프로시저는 롤백되고 계획 스키마는 변경되지 않습니다.

u p d a t e _ p l a n 프로시저에 인수를 지정하지 않으면 인수는 변경되지 않은 상태로 데이터 딕셔너리에 남아 있습니다.

기본 자원 할당 방법을 사용하려는 경우 계획을 작성하거나 갱신할 때 방법을 지정하지 않아도 됩니다. 다음은 방법의 기본값입니다.

■ cpu_method =‘E M P H A S I S’

■ p a ra l l e l _ d e g ree_limit_mth =‘PA R A L L E L _ D E G R E E _ L I M I T _ A B S O L U T E’

자원 소비자 그룹 관리

다음은 자원 소비자 그룹을 생성, 갱신 또는 삭제하는 프로시저입니다.

create_consumer_group(consumer_group in varchar2,comment in varchar2, cpu_mth in varchar2DEFAULT ’ROUND-ROBIN’)

update_consumer_group(consumer_group in varchar2,new_comment in varchar2 DEFAULT NULL,new_cpu_mth in varchar2 DEFAULT NULL)

delete_consumer_group(consumer_group in varchar2)

기본 CPU 방법 RO U N D - RO B I N을 사용하려는 경우 c p u _ m t h 매개변수를 지정하지 않아도 됩니다.

u p d a t e _ c o n s u m e r _ g r o u p 프로시저에 대한 인수를 지정하지 않은 경우 인수는 변경되지 않은 상태로 데이터 딕셔너리에 남아 있습니다.

자원 계획 지시어 관리

다음은 자원 계획 지시어를 생성, 갱신 또는 삭제하는 프로시저입니다.

create_plan_directive(plan in varchar2, group_or_subplanin varchar2, comment in varchar2, cpu_p1 in number

DEFAULT NULL, cpu_p2 in number

데이터베이스 자원 관리자 패키지 사용

1 1 - 4 Oracle8i 관리자 설명서

DEFAULT NULL, cpu_p3 in numberDEFAULT NULL, cpu_p4 in numberDEFAULT NULL, cpu_p5 in numberDEFAULT NULL, cpu_p6 in numberDEFAULT NULL, cpu_p7 in numberDEFAULT NULL, cpu_p8 in numberDEFAULT NULL, max_active_sess_target_p1 in numberDEFAULT NULL, parallel_degree_limit_p1 in number DEFAULT NULL)update_plan_directive(plan in varchar2, group_or_subplan

in varchar2, new_comment in varchar2DEFAULT NULL, new_cpu_p1 in numberDEFAULT NULL, new_cpu_p2 in numberDEFAULT NULL, new_cpu_p3 in number DEFAULT NULL, new_cpu_p4 in numberDEFAULT NULL, new_cpu_p5 in number DEFAULT NULL, new_cpu_p6 in numberDEFAULT NULL, new_cpu_p7 in number DEFAULT NULL, new_cpu_p8 in numberDEFAULT NULL, max_active_sess_target_p1 in numberDEFAULT NULL, new_parallel_degree_limit_p1 in numberDEFAULT NULL)delete_plan_directive(plan in varchar2, group_or_subplanin varchar2)

모든 매개변수의 기본값은 N U L L입니다.

up da t e _ p l a n _ d i r e c t i v e 프로시저에 대한 인수를 지정하지 않은 경우 인수는 변경되지 않은 상태로 데이터 딕셔너리에 남아 있습니다.

미결 영역 생성과 관리

계획 스키마에 대한 모든 변경 작업은 계획 스키마 변경 내용을 위한“스크래치”영역인 미결 영역에서 수행됩니다. 이 미결 영역을 생성하여 필요한 대로 변경 내용을 작성하고 그 변경 내용을 제출해야 합니다. (유효화는 선택 사항입니다.)

다음은 데이터베이스 자원 관리자에 대한 미결 변경 내용을 생성, 유효화 및 제출하는 프로시저입니다

dbms_resource_manager.create_pending_area

dbms_resource_manager.validate_pending_area

dbms_resource_manager.clear_pending_area

dbms_resource_manager.submit_pending_area

주: s u b m i t _p en d i n g _ a r e a 프로시저가 성공적으로 완료된 경우에만변경 내용이 효과를 나타내고 활성화됩니다.

데이터베이스 자원 관리자 패키지 사용

데이터베이스 자원 관리자 사용 1 1 - 5

미결 영역이 활성화되어 있는 동안 해당 사용자 뷰에서 선택하여 변경 내용을 포함하는 현재 스키마를 볼 수도 있습니다. 언제든지 현재 변경 내용을 중단하여 미결 영역을 지울 수 있습니다. 변경 내용의 유효성 여부를 검사하려면 v a l i d a t e 프로시저를호출하십시오.

미결 영역에서는 다음 규칙에 따라 변경 내용을 작성해야 합니다.

1 . 계획 스키마는 루프를 포함하지 않습니다.

2 . 계획 지시어가 참조하는 계획과 자원 소비자 그룹이 모두 있어야 합니다.

3 . 모든 계획에는 계획이나 자원 소비자 그룹을 가리키는 계획 지시어가 있어야 합니다.

4 . 강조 자원 할당 방법에 대해 주어진 레벨의 백분율 합계는 1 0 0보다 크지 않아야합니다.

5 . 현재 최상위 계획으로 활성 인스턴스가 사용하고 있는 계획은 삭제할 수 없습니다.

6 . 계획 지시어 매개변수 p a r a l l e l _ d e g r e e _ l i m i t _ p 1은 자원 소비자 그룹을 참조하는 계획 지시어에만 나타날 수 있습니다. (다른 자원 계획에는 나타나지 않습니다.)

7. 모든 활성 계획 스키마는 3 2개 이상의 자원 소비자 그룹을 가질 수 없습니다. 또한 하나의 계획은 최대 3 2개의 하위를 가질 수 있습니다. 최상위 계획의 모든 최하위 값은 자원 소비자 그룹이어야 합니다. 즉, 계획 스키마의 최하위 레벨에 있는 계획 지시어는 소비자 그룹을 참조해야 합니다.

8 . 계획과 자원 소비자 그룹은 동일한 이름을 가질 수 없습니다.

9 . 활성 계획 스키마 어딘가에 O T H E R _ G RO U P S에 대한 계획 지시어가 있어야 합니다. 이것은 현재의 활성 계획에서 처리되지 못하는 세션에 O T H E R _ G RO U P S지시어로 지정한 대로 자원이 할당되도록 합니다.

데이터베이스 자원 관리자는 현재 사용되지 않지만 이후에 사용될 자원 소비자 그룹을 생성할 수 있으므로“고아( o r p h a n )”자원 소비자 그룹(참조하는 계획 지시어가없는 자원 소비자 그룹)을 허용합니다.

위의 규칙 중 하나라도 지키지 않으면 v a l i d a t e나 s u b m i t 프로시저로 검사할 때 오류 메시지를 받습니다. 그러면문제점을 수정하여 해결하고 v a l i d a t e나 s u b m i t 프로

데이터베이스 자원 관리자 패키지 사용

1 1 - 6 Oracle8i 관리자 설명서

시저를 다시 실행하십시오. s ub mi t _p en d i n g _ a r e a는 변경 내용을 (유효한 경우) 유효화하고 커밋한 후 미결 영역을 지웁니다.

주: v a l i d a t e _p en d i n g _ a r e a가 성공적으로 수행되어도 s u b m i t _p e-n d i n g _ a r e a 호출을 실패할 수 있습니다. 예를 들어, s u b m i t _p en d -i n g _ a r e a를 호출하기 전 v a l i d a t e _p en d i n g _ a r e a를 호출한 후 삭제될 계획이 인스턴스에 의해 로드되는 경우 호출을 실패할 수 있습니다.

다음 명령어는 그림 1 1 - 1과 같이 다중 레벨 스키마를 생성하고 기본 계획과 자원 소비자 그룹 방법을 사용합니다.

be g i nd b m s _ r e s o u r c e _ m a n a g e r . c r e a t e _ p e n d i n g _ a r e a ( ) ;dbms_resource_manager.create_plan(plan => ’BUGDB_PLAN’,

comment => ’Resource plan/method for bug users’ sessions’);dbms_resource_manager.create_plan(plan => ’MAILDB_PLAN’,

comment => ’Resource plan/method for mail users’ sessions’);dbms_resource_manager.create_plan(plan => ’MYDB_PLAN’,

comment => ’Resource plan/method for bug and mail users’ sessions’) ;dbms_resource_manager.create_consumer_group(consumer_group => ’Bug_Online_g r o u p ’ ,

comment => ’Resource consumer group/method for online bug users’ sessions’);dbms_resource_manager.create_consumer_group(consumer_group => ’Bug_Batch_group’,

comment => ’Resource consumer group/method for bug users’ sessions who runbatch jobs’);

dbms_resource_manager.create_consumer_group(consumer_group => ’Bug_Maintenance_g r o u p ’ ,

comment => ’Resource consumer group/method for users’ sessions who maintainthe bug db’);

dbms_resource_manager.create_consumer_group(consumer_group => ’Mail_users_g r o u p ’ ,

comment => ’Resource consumer group/method for mail users’ sessions’);dbms_resource_manager.create_consumer_group(consumer_group => ’Mail_Postman_g r o u p ’ ,

comment => ’Resource consumer group/method for mail postman’);dbms_resource_manager.create_consumer_group(consumer_group => ’Mail_Maintenance_g r o u p ’ ,

comment => ’Resource consumer group/method for users’ sessions who maintainthe mail db’);

dbms_resource_manager.create_plan_directive(plan => ’BUGDB_PLAN’, group_or_subplan => ’Bug_Online_group’,

comment => ’online bug users’ sessions at level 0’, cpu_p1 => 80, cpu_p2=> 0,parallel_degree_limit_p1 => 8);

dbms_resource_manager.create_plan_directive(plan => ’BUGDB_PLAN’, group_or_subplan => ’Bug_Batch_group’,

comment => ’batch bug users’ sessions at level 0’, cpu_p1 => 20, cpu_p2 => 0,parallel_degree_limit_p1 => 2);

dbms_resource_manager.create_plan_directive(plan => ’BUGDB_PLAN’, group_or_subplan => ’Bug_Maintenance_group’,

comment => ’bug maintenance users ’ sessions at level 1 ’, cpu_p1 => 0, cpu_p2 => 100, parallel_degree_limit_p1 => 3);

데이터베이스 자원 관리자 패키지 사용

데이터베이스 자원 관리자 사용 1 1 - 7

dbms_resource_manager.create_plan_directive(plan => ’MAILDB_PLAN’, group_or_subplan => ’M a i l _ P o s t m a n _ g r o u p ’ ,

comment => ’mail postman at level 0’, cpu_p1 => 40, cpu_p2 => 0,parallel_degree_limit_p1 => 4);

dbms_resource_manager.create_plan_directive(plan => ’M A I L D B _ P L A N ’ ,group_or_subplan => ’M a i l _ u s e r s _ g r o u p ’ ,

comment => ’mail users’ sessions at level 1’, cpu_p1 => 0, cpu_p2 => 80,parallel_degree_limit_p1 => 4);

dbms_resource_manager.create_plan_directive(plan => ’M A I L D B _ P L A N ’ ,group_or_subplan => ’M a i l _ M a i n t e n a n c e _ g r o u p ’ ,

comment => ’mail maintenance users’ sessions at level 1’, cpu_p1 => 0,cpu_p2 => 20, parallel_degree_limit_p1 => 2);

dbms_resource_manager.create_plan_directive(plan => ’MYDB_PLAN’, group_or_subplan => ’M A I L D B _ P L A N ’ ,

comment=> ’all mail users’ sessions at level 0’, cpu_p1 => 30);dbms_resource_manager.create_plan_directive(plan => ’MYDB_PLAN’, group_or_subplan => ’B U G D B _ P L A N ’ ,

comment => ’all bug users’ sessions at level 0’, cpu_p1 = 70);d b m s _ r e s o u r c e _ m a n a g e r . v a l i d a t e _ p e n d i n g _ a r e a ( ) ;d b m s _ r e s o u r c e _ m a n a g e r . s u b m i t _ p e n d i n g _ a r e a ( ) ;e n d ;/

유효화는 s u b m i t _p en d i n g _ a r e a에서 암시적으로 수행되므로 v a l i d a t e _p en d i n g _a r e a의 선행 호출은 선택 사항입니다.

데이터베이스 자원 관리자 패키지 사용

1 1 - 8 Oracle8i 관리자 설명서

그림 11-1 다중 레벨 스키마

사용자에게 자원 소비자 그룹 할당

DATA B A S E _ R E S O U RC E _ M A NAGER 패키지는 자원 계획과 자원 소비자 그룹을유지 관리하는 위의 프로시저를 제공할 뿐 아니라 사용자에게 자원 소비자 계획을 지정하는 프로시저도 포함합니다. 다음은 사용자의 초기 소비자 그룹을 설정하는 프로시저입니다.

set_initial_cosumer_group(user in varchar2, consumer_group in varchar2)

사용자의 초기 소비자 그룹은 사용자가 생성한 세션이 처음으로 속하는 소비자 그룹입니다. 관리자가 사용자나 P U B L I C에 직접 전환 권한을 부여해야 해당 사용자의 초기 소비자 그룹이 될 수 있습니다. 초기 소비자 그룹에 대한 전환 권한은 해당 사용자에게 부여되는 (의미는 A LTER USER DEFAU LT RO L E과 유사) 롤에서는 획득할수 없습니다.

사용자에 대한 초기 소비자 그룹을 설정하지 않으면 사용자의 초기 소비자 그룹은 자동으로 소비자 그룹 D E FAU LT _ C O N S U M E R _ G RO U P이 됩니다. DEFAU LT _C O N S U M E R _ G RO U P은 P U B L I C에 부여되는 전환 권한을 가지므로 소비자 그룹에 대한 전환 권한이 모든 사용자에게 자동으로 부여됩니다.

소비자 그룹을 삭제하면 초기 소비자 그룹으로 삭제된 그룹을 갖는 모든 사용자는 초기 소비자 그룹으로 D E FAU LT _ C O N S U M E R _ G RO U P을 갖습니다. 삭제된 소비자그룹에 속하는 모든 세션은 D E FAU LT _ C O N S U M E R _ G RO U P으로 전환됩니다.

데이터베이스 자원 관리자 사용 1 1 - 9

데이터베이스 자원 관리자 패키지 사용

MYDB 계획

30% @레벨 1

70% @ 레벨 1

M A I L D B계획

POSTMAN 그룹

MAILUSERS 그룹

M A I L _ M A I N T .그룹

O N L I N E그룹

BATCH 그룹

B U G _ M T .그룹

40% @ 레벨 1

80% @ 레벨 2

20% @ 레벨 2

80% @ 레벨 1

20% @ 레벨 1

100% @ 레벨 2

BUGDB 계획

자원 소비자 그룹 변경

다음은 특정 세션의 자원 소비자 그룹을 변경하는 프로시저입니다.

switch_consumer_group_for_sess(session_id in number, session_serialin number, consumer_group in varchar2)

다음은 지정한 사용자 I D를 가진 모든 세션에 대한 자원 소비자 그룹을 변경하는 프로시저입니다.

switch_consumer_group_for_user(user in varchar2, class in varchar2)

두 프로시저는 최상위 사용자 세션과 관련된 모든 (PQ) 슬래이브 세션의 자원 소비자 그룹도 변경합니다.

참조: 데이터베이스 자원 관리자와 관련된 뷰에 대한 자세한 내용은 O ra c l e 8 iR e fe re n c e를 참조하십시오.

D B M S _ R E S O U R C E _ M A N A G E R _ P R I VS 패키지

D B M S _ R E S O U RC E _ M A NAG E R _ P R I VS 패키지를 사용하여 자원 소비자 그룹과관련된 권한을 유지 관리할 수 있습니다. 이 패키지에 있는 프로시저는 호출자 권한으로 실행됩니다.

전환 권한 부여

다음은 특정 소비자 그룹으로 전환하는 권한을 부여하는 프로시저입니다.

grant_switch_consumer_group(grantee_name in varchar2, consumer_group in varchar2,grant_option in boolean)

관리자가 특정 소비자 그룹으로 전환하는 사용자 사용 권한을 부여하면 해당 사용자는 현재의 소비자 그룹에서 새로운 소비자 그룹으로 전환할 수 있습니다.

관리자가 특정 자원 소비자 그룹으로 전환하는 롤 사용 권한을 부여하면 해당 롤을부여 받아 롤을 활성화한 모든 사용자는 즉시 현재 소비자 그룹에서 새로운 소비자그룹으로 전환할 수 있습니다.

관리자가 특정 소비자 그룹으로 전환하는 PUBLIC 사용 권한을 부여하면 모든 사용자는 해당 그룹으로 전환할 수 있습니다.

g rant_option 인수가 T RU E면 소비자 그룹에 대한 전환 권한을 부여 받은 사용자는해당 소비자 그룹에 대한 전환 권한을 다른 그룹으로 전환할 수 있습니다.

데이터베이스 자원 관리자 패키지 사용

1 1 - 1 0 Oracle8i 관리자 설명서

전환 권한 철회

다음은 특정 자원 소비자 그룹으로 전환하는 권한을 철회하는 프로시저입니다.

revoke_switch_consumer_group(revokee_name in varchar2, consumer_groupin varchar2)

특정 소비자 그룹에 대한 사용자의 전환 권한을 철회하면 그 사용자는 이후에 해당소비자 그룹으로 전환할 수 없습니다. 사용자로부터 초기 소비자 그룹을 철회하면 로그인할 때 사용자는 자동으로 D E FAU LT _ C O N S U M E R _ G RO U P의 일부가 됩니다.

소비자 그룹에 대한 롤 전환 권한을 철회하면 해당 롤을 통해서만 소비자 그룹에 대한 전환 권한을 가지는 모든 사용자는 이후에 해당 소비자 그룹으로 전환할 수 없습니다.

소비자 그룹에 대한 PUBLIC 전환 권한을 철회하면 이전에 P U B L I C을 통해서만 소비자 그룹을 사용할 수 있었던 모든 사용자는 이후에 해당 소비자 그룹으로 전환할수 없습니다.

DBMS_SESSION 패키지를 사용하여 사용자의 자원 소비자 그룹 변경

DBMS_SESSION 패키지에 있는 다음 프로시저를 호출하여 현재 자원 소비자 그룹을 변경할 수 있습니다.

switch_current_consumer_group(new_consumer_group in varchar2,old_consumer_group out varchar2, initial_group_on_error in boolean)

이 프로시저를 사용하여 사용자는 전환 권한을 가지는 소비자 그룹으로 전환할 수 있습니다. 호출자가 다른 프로시저면 이 프로시저는 해당 프로시저 소유자가 전환 권한을 가지는 소비자 그룹으로 전환할 수 있도록 합니다. 또한 이 프로시저는 사용자에게 이전의 소비자 그룹을 돌려주고 이후에 이전 소비자 그룹으로 다시 전환하는데 사용됩니다.

매개변수 i n i t i a l _ g r o u p _ o n _ e r r o r는 오류 발생 시 프로시저의 작업 방식을 제어합니다. 즉, 매개변수가 T RU E로 설정된 상태에서 오류가 발생하면 호출자의 소비자그룹은 초기 소비자 그룹으로 설정됩니다.

데이터베이스 자원 관리자 패키지 사용

데이터베이스 자원 관리자 사용 1 1 - 1 1

데이터베이스 자원 관리자 뷰

다음은 데이터베이스 자원 관리자와 관련된 동적 성능 테이블 뷰입니다.

■ V $S E S S I O N

■ V $M Y S E S S I O N

■ V $R S RC _ C O N S U M E R _ G RO U P

■ V $R S RC _ P L A N

■ V $R S RC _ C O N S U M E R _ G RO U P _ C P U _ M T H

■ V $R S RC _ P L A N _ C P U _ M T H

■ V $PA R A L L E L _ D E G R E E _ L I M I T _ M T H

다음은 데이터베이스 자원 관리자와 관련된 정적 데이터 딕셔너리 뷰입니다.

■ D B A _ R S RC _ C O N S U M E R _ G RO U P _ P R I VS

■ D B A _ R S RC _ M A NAG E R _ SY S T E M _ P R I VS

■ D B A _ R S RC _ C O N S U M E R _ G RO U P S

■ D B A _ R S RC _ P L A N _ D I R E C T I V E S

■ D B A _ R S RC _ P L A N S

■ U S E R _ R S RC _ C O N S U M E R _ G RO U P _ P R I VS

■ U S E R _ R S RC _ M A NAG E R _ SY S T E M _ P R I VS

■ D B A _ U S E R S

■ U S E R S _ U S E R S

참조: 각 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

데이터베이스 자원 관리자 뷰

1 1 - 1 2 Oracle8i 관리자 설명서

스키마 객체 관리에 대한 지침 사항 1 2 - 1

12스키마 객체 관리에 대한 지침 사항

이 장에서는 스키마 객체 관리에 대한 지침 사항을 설명하고 다음 내용을 다룹니다.

■ 데이터 블록의 영역 관리

■ 저장 영역 매개변수 설정

■ 영역 할당 해제

■ 데이터 유형의 영역 사용에 대한 이해

1 3장에서 1 8장까지 설명하는 특정 스키마 객체 관리에 앞서 이 장의 여러 개념을 잘 알고있어야 합니다.

데이블 블록의 영역 관리

1 2 - 2 Oracle8i 관리자 설명서

데이터 블록의 영역 관리

이 단원에서는 데이터 블록의 영역관리에 대해설명하고 다음내용을 다룹니다.

■ PCTFREE 매개변수

■ PCTUSED 매개변수

■ 관련된 P C T U S E D와 PCTFREE 값 선택

P C T F R E E와 PCTUSED 매개변수를 사용하여 다음을 변경할 수 있습니다.

■ 데이터 검색 및 기록 성능 향상

■ 데이터 블록에서 사용하지 않는 영역 감소

■ 데이터 블록간의 행 체인화 감소

PCTFREE 매개변수

PCTFREE 매개변수는 블록의 일부를 (백분율로) 그 블록에 포함된 행에 대한 갱신용으로 예약하는데 사용합니다. 예를 들어, CREATE TABLE 문 내에 다음 매개변수를 지정합니다.

PCTFREE 20

이것은 이 테이블의 데이터 세그먼트가 사용하는 각 데이터 블록의 2 0 %를 사용 가능한 빈 영역으로 유지하여 각 블록에 있는 행을 갱신하는데 사용한다는 의미입니다.그림 1 2 - 1은 P C T F R E E를 나타냅니다.

데이블 블록의 영역 관리

스키마 객체 관리에 대한 지침 사항 1 2 - 3

그림 12-1 PCTFREE

P C T F R E E에 도달하기 전에 데이터 블록의 빈 영역은 새로운 행의 삽입과 데이터 블록의 헤더로 채워집니다.

PCTFREE 지정

P C T F R E E의 기본값은 1 0 %입니다. PCTFREE와 P C T U S E D의 합이 1 0 0을 초과하지 않는 범위 내에서 0에서 9 9까지의 값을 PCTFREE 값으로 사용할 수 있습니다.

작은 값의 P C T F R E E는 다음과 같은 결과를 줍니다.

■ 기존 테이블 행 갱신에 의한 확장을 위해 적은 공간을 예약합니다.

■ 삽입으로 블록을 더 완벽하게 채울 수 있습니다.

■ 테이블이나 인덱스에 대한 전체 데이터가 더 적은 블록(블록당 더 많은 행 또는

입력 항목)에 저장되므로 영역을 절약할 수 있습니다.

예를 들어, 변경될 확률이 적은 세그먼트에는 작은 값의 P C T F R E E가 적당합니다.

큰 값의 P C T F R E E는 다음과 같은 결과를 줍니다.

■ 기존 테이블 행을 갱신하기 위해 더 많은 공간을 예약합니다.

데이터베이스블록

PCTFREE = 20

2 0 %의 빈 영역

블록은 8 0 %가 찰 때까지 행을삽입할 수 있으며 2 0 %는 블록의 기존 행을 갱신할 경우를 위해 빈 영역으로 남겨 둡니다.

데이블 블록의 영역 관리

1 2 - 4 Oracle8i 관리자 설명서

■ 삽입된 데이터(블록당 더 적은 행 삽입)에 비해 더 많은 블록이 필요할 수도 있습

니다.

■ 행 조각을 자주체인화할필요가 없으므로갱신수행능력이 향상됩니다.

예를 들어, 자주 갱신되는 세그먼트에는 큰 값의 P C T F R E E가 적당합니다.

P C T F R E E를 설정하기 전에 테이블이나 인덱스 데이터의 특성을 잘 파악해야 합니다. 갱신으로 행이 늘어날 수 있습니다. 새로운 값은 대체되는 값과 동일한 크기가 아닐 수도 있습니다. 데이터 값이 더 큰 값으로 자주 갱신되면 P C T F R E E는 증가되어야 합니다. 행에 대한 갱신이 전체 행 너비에 영향을 주지 않으면 P C T F R E E는 작은값을 가질 수 있습니다. 빽빽히 넣어진 데이터와 원할한 갱신 수행 능력 사이에 만족할 만한 평균점을 찾아야 합니다.

클러스터화되지 않은 테이블의 PCTFREE 클러스터화되지 않은 테이블의 행 데이터가 시간이 지남에 따라 크기가 증가되면 갱신을 위해 약간의 영역을 예약해 둡니다.그렇지 않으면 갱신된 행은 블록 사이에서 체인화될 수 있습니다.

클러스터화된 테이블의 PCTFREE 클러스터화되지 않은 테이블에 대한 사항은 클러스터화된 테이블에도 적용됩니다. 그러나 P C T F R E E에 도달하면 동일한 클러스터 키에 포함된 테이블의 새로운 행은 기존 클러스터 키에 체인화된 새 데이터 블록으로갑니다.

인덱스의 PCTFREE 초기에 인덱스를 생성할 때만 P C T F R E E를 지정할 수 있습니다.

PCTUSED 매개변수

PCTFREE 값에 따라 데이터 블록이 모두 채워지면 사용한 블록의 백분율이PCTUSED 매개변수 값보다 작아져야 새로운 행을 삽입할 수 있습니다. 이 값에 도달하기 전에는 데이터 블록에 이미 포함되어 있는 행을 갱신할 때만 데이터 블록의빈 영역을 사용합니다. 예를 들어, CREATE TABLE 문에 다음 매개변수를 지정합니다.

PCTUSED 40

이것은 테이블의 데이터 세그먼트에 사용된 데이터 블록의 사용 영역이 3 9 %보다 적어지지 않으면 (블록의 사용 영역이 P C T F R E E에 도달했다고 가정한다면) 새로운 행을삽입할 수 없음을 의미합니다. 그림 1 2 - 2를 참조하십시오.

그림 12-2 PCTUSED

PCTUSED 지정

P C T U S E D의 기본값은 4 0 %입니다. 데이터 블록의 빈 영역이 P C T F R E E에 도달하면 사용 영역의 백분율이 P C T U S E D보다 작아져야 새로운 행을 삽입할 수 있습니다.백분율 값은 전체 영역에서 오버헤드를 뺀 후 데이터에 대해 사용할 수 있는 블록의영역입니다.

P C T U S E D와 P C T F R E E의 합이 1 0 0을 초과하지 않으면 PCTUSED 값은 0에서9 9까지의 값을 지정할 수 있습니다.

작은 값의 P C T U S E D는 다음과 같은 결과를 줍니다.

■ PCTUSED 값이 사용된 영역의 백분율보다 작아졌을 때 블록을 사용 가능 영역

목록으로 이동하기 위해 U P DAT E나 DELETE 문을 수행하는 도중 발생하는 수

행 비용이 감소됩니다.

■ 데이터베이스에서 사용되지 않은 영역이 증가됩니다.

큰 값의 P C T U S E D는 다음과 같은 결과를 줍니다.

■ 영역의 효율성이 향상됩니다.

■ I N S E RT와 U P DATE 문을 수행하는 비용이 증가됩니다.

데이블 블록의 영역 관리

스키마 객체 관리에 대한 지침 사항 1 2 - 5

데이터베이스블록

PCTUSED = 40

6 0 %의빈 영역

사용된 영역이 4 0 %보다작아져야 새로운 행을 삽입할 수 있습니다.

관련된 P C T U S E D와 PCTFREE 값 선택

P C T F R E E나 P C T U S E D의 기본값을 사용하지 않는다면 다음 지침 사항을 명심하십시오.

■ P C T F R E E와 P C T U S E D의 합은 1 0 0보다 작거나 같아야 합니다.

■ 합이 1 0 0이면 O ra c l e은 P C T F R E E에 지정된 영역만큼 유지하며 프로세싱 비용

이 가장 높습니다.

■ 블록 오버헤드는 P C T U S E D나 PCTFREE 계산에포함되지 않습니다.

■ 1 0 0과 P C T F R E E와 P C T U S E D의 합 간 차이가 적을수록 ( P C T U S E D가 7 5이

고 P C T F R E E는 2 0인 경우) 수행 비용에서 볼 때 영역 사용면에서는 더 효율적

입니다.

P C T F R E E와 PCTUSED 값을 선택하는 예

다음 예는 테이블에 대해 P C T F R E E와 P C T U S E D에 특정 값을 지정하는 방법과 이유를 설명합니다.

예 1 시나리오: 행의 크기를 증가시키는 UPDATE 문을 공통적으

로 수행합니다.

설정값: PCTFREE = 20

PCTUSED = 40

예 2 시나리오: 대부분의 I N S E R T와 DELETE 문, 그리고 행의

크기를 증가시키지 않는 UPDATE 문을 수행합니

다.

설정값: PCTFREE = 5

PCTUSED = 60

설명: 대부분의 UPDATE 문은 행의 크기를 증가시키지

않으므로 P C T F R E E를 5로 설정합니다.

P C T U S E D를 6 0으로 설정하면 DELETE 문에 의

해 빈 영역을 곧 사용하게 되므로 프로세싱은 최소

화됩니다.

예 3 시나리오: 테이블이 매우 크기 때문에 저장 영역이 주요 관심

사가 되며 대부분 읽기 전용 트랜잭션을 수행합니

다.

설정값: PCTFREE = 5

PCTUSED = 40

설명: 테이블이 커서 각 블록을 완전히 채우려고 하므로

P C T F R E E를 5로 설정합니다.

데이블 블록의 영역 관리

1 2 - 6 Oracle8i 관리자 설명서

저장 영역 매개변수 설정

스키마 객체 관리에 대한 지침 사항 1 2 - 7

저장 영역 매개변수 설정

이 단원에서는 다양한 데이터 구조에 설정할 수 있는 저장 영역 매개변수를 설명하고다음 내용을 다룹니다.

■ 지정할 수 있는 저장 영역 매개변수

■ I N I T R A N S와 MAXTRANS 설정

■ 테이블스페이스의 세그먼트에 대한 기본 저장 영역 매개변수 설정

■ 데이터 세그먼트에 대한 저장 영역 매개변수 설정

■ 인덱스 세그먼트에 대한 저장 영역 매개변수 설정

■ LOB 세그먼트에 대한 저장 영역 매개변수 설정

■ 저장 영역 매개변수 값 변경

■ 저장 영역 매개변수의 우선순위 이해

다음 유형의 논리적 저장 영역 구조에 대해 저장 영역 매개변수를 설정할 수 있습니다.

■ 테이블스페이스(테이블스페이스의세그먼트에 대해 대부분 기본값)

■ 테이블, 클러스터, 스냅샷및 스냅샷 로그(데이터 세그먼트)

■ 인덱스(인덱스 세그먼트)

■ 롤백 세그먼트

지정할 수 있는 저장 영역 매개변수

모든 데이터베이스는 저장 영역 매개변수에 대해 기본값을 가집니다. 테이블스페이스에 대해 기본값을 설정하면 테이블스페이스에서만 생성되는 객체에 대한 기본값이 되어 시스템 기본값을 무효화합니다. 또한 각각의 객체에 대한 저장 영역 설정값도 지정할 수 있습니다. 다음은 설정할 수 있는 저장 영역 매개변수입니다.

INITIAL

세그먼트가 생성될 때 할당되는 첫 번째 확장 영역의 바이트 크기

기본값: 5 데이터 블록최소값: 2 데이터 블록(반올림한 값)최대값: 운영 체제마다 다름

저장 영역 매개변수 설정

1 2 - 8 Oracle8i 관리자 설명서

NEXT

세그먼트에 대해 할당된 확장 영역의 다음 증가량의 바이트 크기. 두 번째 확장 영역은 N E X T의 원래 설정값과 동일합니다. 다음부터 N E X T는 (1 + PCTINCREAS-E / 1 0 0 )과 N E X T의 이전 크기를 곱한 크기로 설정됩니다.

기본값: 5 데이터 블록최소값: 1 데이터 블록최대값: 운영 체제마다 다름

M A X E X T E N TS

세그먼트에 할당할 수 있는 첫 번째 확장 영역을 포함한 전체 확장 영역의 수

기본값: 데이터 블록 크기와 운영 체제에 따라 다름최소값: 1 (확장 영역)최대값: 무제한

M I N E X T E N TS

세그먼트가 생성될 때 할당되는 전체 확장 영역의 수. 연속적인 영역을 사용할 수 없더라도 생성할 때 큰 영역을 할당받을 수 있습니다.

기본값: 1 (확장 영역)최소값: 1 (확장 영역)최대값: 무제한

P C T I N C R E A S E

세그먼트에 할당된 마지막 증가량의 확장 영역에 대해 각 증가량의 확장 영역이 늘어날 백분율. PCTINCREASE가 0이면 모든 증가량의 확장 영역 크기는 동일합니다.P C T I N C R E A S E가 0보다 크면 N E X T가 계산될 때마다 P C T I N C R E A S E만큼 늘어납니다. PCTINCREASE는음수가 될 수 없습니다.

새로운 N E X T는 1 + PCTINCREASE/100과 마지막 증가량의 확장 영역(이전NEXT) 크기를 곱하고 블록 크기의 다음 배수로 반올림한 것과 동일합니다.

기본값: 5 0 ( % )최소값: 0 ( % )최대값: 운영 체제마다 다름

저장 영역 매개변수 설정

스키마 객체 관리에 대한 지침 사항 1 2 - 9

I N I T R A N S

초기에 데이터 블록 헤더에 예약되어야 하는 영역에 대해 DML 트랜잭션 입력 항목수를 지정합니다. 영역은 관련된 데이터나 인덱스 세그먼트의 모든 데이터 블록의 헤더에 예약됩니다.

테이블에 대한 기본값은 1이고 클러스터와 인덱스에 대해서는 2입니다.

M A X T R A N S

다중 트랜잭션이 동시에 동일한 데이터 블록에 있는 행을 액세스할 때 블록의 각DML 트랜잭션 입력 항목에 대해 영역이 할당됩니다. INITRANS에의해 예약된 영역이 고갈되면 추가 트랜잭션 입력 항목에 대한 영역은 사용 가능한 블록의 빈 영역에 할당됩니다. 일단 할당되면 이 영역은 블록 헤더의 영구적인 부분이 됩니다.MAXTRANS 매개변수는 동시에 데이터 블록의 데이터를 사용할 수 있는 트랜잭션입력 항목 수를 제한합니다. 따라서 M A X T R A N S를 사용하여 데이터 블록의 트랜잭션 입력 항목에 대해 할당할 수 있는 빈 영역을 제한할 수 있습니다.

기본값은 블록 크기에 대한 운영 체제에 따른 함수이며 2 5 5를 초과하지 않습니다.

참조: 저장 영역 매개변수에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

일부 기본값은 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오.

I N I T R A N S와 MAXTRANS 설정

테이블, 클러스터 또는 인덱스에 할당된 데이터 블록의 트랜잭션 입력 항목 설정값은다음 기준에 따라 각 객체별로 설정되어야 합니다.

■ 트랜잭션 입력 항목을 위해 예약할 영역과 데이터베이스 데이터를 위해 예약해야

하는 영역에 대한 비교

■ 주어진 시간에 동일한 데이터 블록을 액세스해야 하는 동시 트랜잭션 수

예를 들어, 테이블이 매우 크고 테이블에 액세스하는 사용자 수가 적다면 동일한 데이터 블록에 액세스해야 하는 다중 동시 트랜잭션 확률이 낮아집니다. 따라서 특별히데이터베이스에서 영역이 제일 중요한 경우 I N I T R A N S는 낮게 설정할 수 있습니다.

반대로 동시에 많은 사용자에 의해 액세스되는 테이블이 있습니다. 이 경우 높은 값의 I N I T R A N S를 (객체가 사용 중인 경우 트랜잭션 입력 항목 영역을 할당하는

오버헤드를 제거하기 위해) 사용하거나 필요한 데이터 블록에 액세스하기 위해 기다려야 하는 사용자가 없도록 높은 MAXTRANS 값을 부여함으로써 트랜잭션 입력 항목 영역을 미리 할당하는 것을 고려할 수도 있습니다.

테이블스페이스의 세그먼트에 대한 기본 저장 영역 매개변수 설정

데이터베이스의 각 테이블스페이스에 대해 기본 저장 영역 매개변수를 설정할 수 있습니다. 테이블스페이스의 세그먼트를 생성하거나 계속 갱신할 때 명백히 설정하지않은 저장 영역 매개변수는 세그먼트가 있는 테이블스페이스에 해당되는 기본 저장영역 매개변수로 자동 설정됩니다.

분할된 테이블을 사용하여 테이블 레벨에서 기본 저장 영역 매개변수를 설정할 수 있습니다. 테이블의 새 분할 영역을 생성할 때 각 분할 영역에 대해 기본 저장 영역 매개변수를 지정하지 않으면 기본 저장 영역 매개변수는 분할된 테이블에서 상속받게됩니다. 분할된 테이블에 대해 지정된 저장 영역 매개변수가 없을 경우에는 테이블스페이스에서 상속받습니다.

테이블스페이스 레벨에서 M I N E X T E N T S를 지정할 때 테이블스페이스에 할당된 확장 영역은 최소 확장 영역의 배수로 반올림됩니다. 기본적으로 확장 영역 수는 블록수의 배수입니다.

데이터 세그먼트에 대한 저장 영역 매개변수 설정

테이블, 스냅샷 또는 스냅샷 로그에 대해 C R E ATE 또는 A LTER 문의 S T O R AG E절을 사용하여 클러스터화되지 않은 테이블, 스냅샷 또는 스냅샷 로그의 데이터 세그먼트에 대한 저장 영역 매개변수를 설정할 수 있습니다.

반대로 테이블이나 스냅샷을 클러스터에 두는 각각의 C R E AT E나 A LTER 명령어대신 C R E ATE CLUSTER나 A LTER CLUSTER 명령어의S T O R AGE 절을 사용하여 클러스터의 데이터 세그먼트에 대한 저장 영역 매개변수를 설정합니다. 클러스터화된 테이블이나 스냅샷을 생성하거나 변경할 때 지정된 저장 영역 매개변수는 무시됩니다. 클러스터에 대해 설정된 저장 영역 매개변수는 테이블의 저장 영역 매개변수를 무효화합니다.

인덱스 세그먼트에 대한 저장 영역 매개변수 설정

테이블 인덱스에 대해 생성된 인덱스 세그먼트의 저장 영역 매개변수는 C R E AT EI N D E X나 A LTER INDEX 명령어의 S T O R AGE 절을 사용하여 설정됩니다. 기본키나 고유 키 제약 조건을 강제로 실행하는 사용될 인덱스에 대해 생성된 인덱스 세그먼트의 저장 영역 매개변수는 C R E ATE TA B L E이나 A LTER TABLE 명령어의E NABLE 절이나 A LTER INDEX 명령어의 S T O R AGE 절에 설정됩니다. 인덱스

저장 영역 매개변수 설정

1 2 - 1 0 Oracle8i 관리자 설명서

에 대해서만 설정된 P C T F R E E는 인덱스가 생성될 때 반영됩니다. 인덱스 세그먼트에 대해서는 P C T U S E D를 지정할 수 없습니다.

LOB 세그먼트에 대한 저장 영역 매개변수 설정

C R E ATE TABLE 문의 N O CAC H E, NOLOGGING, PCTVERSION LOB 저장영역 매개변수를 사용하여 LOB 세그먼트에 대한 저장 영역 매개변수를 설정할 수 있습니다.

참조: LOB 세그먼트에 대한 저장 영역 매개변수의 완전한 목록은 O racle8i SQL 참조서를 참조하십시오.

저장 영역 매개변수 값 변경

현재 설정값이 정확하지 않다면 테이블스페이스의 기본 저장 영역 매개변수와 각 세그먼트의 특정 저장 영역 매개변수를 변경할 수 있습니다. 모든 기본 저장 영역 매개변수는 테이블스페이스에 대해 재설정될 수 있습니다. 그러나 이것은 테이블스페이스에서 새 객체가 생성될 때나 세그먼트에 대해 할당된 새 확장 영역에만 영향을 줍니다.

I N I T I A L과 MINEXTENTS 저장 영역 매개변수는 기존 테이블, 클러스터, 인덱스또는 롤백 세그먼트에 대해서는 변경할 수 없습니다. 세그먼트에서 N E X T만 변경되면 다음 증가량의 확장 영역은 새로운 N E X T의 크기이며 계속적인 확장 영역은 보통P C T I N C R E A S E에 의해 증가됩니다.

세그먼트의 N E X T와 P C T I N C R E A S E가 모두 변경되면 다음 확장 영역은 새로운NEXT 값이며 이후로 N E X T는 P C T I N C R E A S E를 사용하여 계산됩니다.

저장 영역 매개변수의 우선순위 이해

주어진 시간에 효력을 가지는 저장 영역 매개변수는 우선 순위에 따라 나열된 다음SQL 문에 의해 결정됩니다.

1 . A LTER TA B L E / C L U S T E R / S NA P S H O T / S NAPSHOT LOG/INDEX/ RO L L B ACK SEGMENT 문

2. C R E ATE TA B L E / C L U S T E R / S NA P S H O T / S NAPSHOT LOG/CREAT EI N D E X / RO L L B ACK SEGMENT 문

3 . A LTER TA B L E S PACE 문

4 . C R E ATE TA B L E S PACE 문

5 . O racle 기본 값

저장 영역 매개변수 설정

스키마 객체 관리에 대한 지침 사항 1 2 - 1 1

저장 영역 매개변수 설정

1 2 - 1 2 Oracle8i 관리자 설명서

객체 레벨에서 지정한 저장 영역 매개변수는 테이블스페이스 레벨에서 설정한 해당옵션을 무효화합니다. 저장 영역 매개변수가 객체 레벨에서 명백히 설정되지 않으면테이블스페이스 레벨에서의 매개변수 값을 기본값으로 설정합니다. 저장 영역매개변수가 테이블스페이스 레벨에서 설정되지 않으면 O racle 시스템 기본값이 적용됩니다. 저장 영역 매개변수가 변경되면 새 옵션은 아직 할당되지 않은 확장 영역에대해서만 적용됩니다.

주: 임시 세그먼트에 대한 저장 영역 매개변수는 항상 관련된 테이블스페이스에 대해 설정된 기본 저장 영역 매개변수를 사용합니다.

저장 영역 매개변수 예

다음 명령문이 실행된다고 합시다.

CREATE TABLE test_storage( . . . )STORAGE (INITIAL 100K NEXT 100K

MINEXTENTS 2 MAXEXTENTS 5PCTINCREASE 50);

또한 초기화 매개변수 D B _ B L O C K _ S I Z E가 2 K로 설정되었다고 합시다. 다음 표는 확장 영역이 T E S T _ S T O R AGE 테이블에 할당되는 방법을 보여줍니다. 그리고U S E R _ S E G M E N T S나 DBA_SEGMENTS 데이터딕셔너리 뷰의 NEXT 열에서 볼수 있는 것처럼 증가량의 확장 영역 값도 볼 수 있습니다.

표 12-1 확장 영역 할당

N E X T나 PCTINCREASE 저장 영역 매개변수를 A LTER TA B L E처럼 A LT E R문으로 변경하면 데이터 딕셔너리에 저장된 현재 값은 지정된 값으로 바뀝니다. 예를들어, 다음 명령문은 세 번째 확장 영역이 테이블에 할당되기 전에 T E S T _S T O R AGE 테이블의 NEXT 저장 영역 매개변수를 수정합니다.

ALTER TABLE test_storage STORAGE (NEXT 500K);

확장 영역# 확장 영역 크기 NEXT 값

1 50 블록 또는 102400 바이트 50 블록 또는 102400 바이트

2 50 블록 또는 102400 바이트 75 블록 또는 153600 바이트

3 75 블록 또는 153600 바이트 113 블록 또는 231424 바이트

4 115 블록 또는 235520 바이트 170 블록 또는 348160 바이트

5 170 블록 또는 348160 바이트 255 블록 또는 522240 바이트

영역 할당 해제

스키마 객체 관리에 대한 지침 사항 1 2 - 1 3

결과적으로 세 번째 확장 영역은 할당될 때 5 0 0 K이고 네 번째 확장 영역은 ( 5 0 0 K *1 . 5 ) = 7 5 0 K입니다.

영역 할당 해제

이 단원에서는 사용되지 않는 영역 할당 해제에 대해 설명하고 다음 내용을 다룹니다.

■ 고수위 보기

■ 영역 할당 해제 명령문 실행

세그먼트에 영역을 할당하는 것은 흔하지만 나중에 가면 사용되지 않는다는 것을 알게 됩니다. 예를 들어, PCTINCREASE를 높은 값으로 설정할 수 있는데 이는 부분적으로만 사용되는 큰 확장 영역을 생성할 수 있습니다. 또는 A LTER TA B L E. . .A L L O CATE EXTENT 문을 실행하여 영역을 명시적으로 초과 할당할 수 있습니다. 사용하지 않았거나 초과 할당된 영역이 있으면 할당 해제하여 다른 세그먼트가사용되지 않은 영역을 사용하도록 할 수 있습니다.

고수위 보기

영역 할당을 해제하기 전에 D B M S _ S PACE 패키지를 사용할 수 있으며 여기에는 고수위 위치와 세그먼트에서 사용하지 않은 영역에 대한 정보를 돌려주는 프로시저( U N U S E D _ S PAC E )가 있습니다.

세그먼트에서 고수위는 사용한 영역을 나타냅니다. 할당 해제하려는 영역에 데이터가없어도 고수위 밑으로는 영역을 해제할 수 없습니다. 그러나 세그먼트가 완전히 비면T RU N CAT E. . . D ROP STORAGE 문을사용하여 영역을 해제할 수 있습니다.

영역 할당 해제 명령문 실행

세그먼트(테이블, 인덱스 또는 클러스터)에서 사용되지 않은 영역을 할당 해제하는명령문은 다음과 같습니다. KEEP 절은 선택 사항입니다.

ALTER TABLE table DEALLOCATE UNUSED KEEP integer;ALTER INDEX index DEALLOCATE UNUSED KEEP integer;ALTER CLUSTER cluster DEALLOCATE UNUSED KEEP integer;

명시적으로 사용되지 않은 영역의 일부를 K E E P으로 표시하면 이 영역은 남아 있는사용되지 않은 영역이 할당 해제될 때도 남아 있습니다. 남아 있는 확장 영역의 수가M I N E X T E N T S보다 작으면 MINEXTENTS 값은 새로운 수를 반영하기 위해 변경됩니다. 초기 확장 영역이 적으면 INITIAL 값은 새로운 초기 확장 영역 크기를 반영하기 위해 변경됩니다.

KEEP 절을 지정하지 않으면 모든 사용되지 않은 영역(고수위 위에 있는 모든 사항)은 초기 확장 영역 크기와 M I N E X T E N T S가 보존되는 한 할당 해제됩니다. 따라서MINEXTENTS 경계 내에서 고수위가 발생해도 MINEXTENTS 값은 유지되며 초기 확장 영역의 크기는 감소하지 않습니다.

참조: 사용되지 않은 영역 할당 해제와 관련된 구문 및 옵션에 대한 자세한 내용은O racle8i SQL 참조서를참조하십시오.

D B A _ F R E E _ S PACE 뷰를 보면 할당 해제된 영역이 비었는지 확인할 수 있습니다.이 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

영역 할당 해제: 예

이 단원에는 다양한 영역 할당 해제에 대한 예가 나와 있습니다. 읽기 전에 O ra c l e 8 iR e fe re n c e의 A LT E R. . . D E A L L O CATE UNUSED 문 사용법을 알고 있어야 합니다.

예 1

DQUON 테이블은 세 개의 확장 영역으로 구성됩니다. (그림 12-3 참조) 첫 번째 확장 영역은 1 0 K, 두 번째 확장 영역은 2 0 K, 세 번째 확장 영역은 3 0 K입니다. 고수위는 두 번째 확장 영역 중간에 있으며 사용되지 않은 영역은 4 0 K입니다. 다음 명령문은 모든 사용되지 않은 영역을 할당 해제하고 DQUON 테이블에 두 개의 확장 영역을 남겨 둡니다. 세 번째 확장 영역이 사라지며 두 번째 확장 영역의 크기는 1 0 K입니다.

ALTER TABLE dquon DEALLOCATE UNUSED;

영역 할당 해제

1 2 - 1 4 Oracle8i 관리자 설명서

그림 12-3 모든 사용되지 않은 영역 할당 해제

D Q U O N에서 사용되지 않은 영역을 모두 할당 해제하고 KEEP 10K를 사용하면(그림 12-4 참조) 세 번째 확장 영역은 할당 해제되고 두 번째 확장 영역이 남게 됩니다.

영역 할당 해제

스키마 객체 관리에 대한 지침 사항 1 2 - 1 5

확장영역1 확장영역2 확장영역3

1 0 K 2 0 K

고수위

3 0 K

dquon 테이블

확장영역1 확장영역2

1 0 K 1 0 K

dquon 테이블

사용되지 않은 영역 = 40K

이전- ALTER TABLE dquon DEALLOCATE UNUSED; - - - - - - -

이후

그림 12-4 사용되지않은 영역 할당 해제, KEEP 10K

D Q U O N에서 사용되지 않은 영역을 모두 할당 해제하고 KEEP 20K를 사용하면 세번째 확장 영역은 1 0 K로 줄어들고 두 번째 확장 영역의 크기는 그대로 남습니다.

ALTER TABLE dquon DEALLOCATE UNUSED KEEP 20K;

예 2

A LTER TABLE DQUON DEALLOCATE UNUSED 문을실행하면 세 번째 확장 영역은 완전히 할당 해제되고 두 번째 확장 영역은 1 0 K로 남습니다. 다음에 할당되는 확장 영역의 크기는 기본적으로 마지막으로 완전히 할당 해제된 확장 영역의 크기가 되며 이 예에서는 3 0 K가 됩니다. 그러나 A LT E R. . . S T O R AGE [NEXT] 문을 사용하여 명시적으로 다음 확장 영역의 크기를 설정할 수 있습니다.

예 3

D E A L L O CAT E는 확장 영역의 MINEXTENTS 수를 보존하기 위해 인스턴스에 할당된 확장 영역(고수위 아래 추가된)은 유지하지만 세그먼트에 원래 할당된 확장 영역은 해제시킵니다.

영역 할당 해제

1 2 - 1 6 Oracle8i 관리자 설명서

확장영역1 확장영역2 확장영역3

1 0 K 2 0 K

고수위

3 0 K

dquon 테이블

확장영역1

1 0 K

dquon 테이블

사용되지 않은 영역 = 40K

이전- ALTER TABLE dquon DEALLOCATE UNUSED KEEP 10K; - - - - - - - - - - - - -

이후

고수위

2 0 K

확장영역2

예를 들어, DQUON 테이블은 MINEXTENTS 값이 2입니다. 예제 1과 2는 동일한결과를 초래합니다. 그러나 MINEXTENTS 값이 3이면 A LTER TABLE DQUOND E A L L O CATE UNUSED 문은 아무런 영향을 미치지 못하는 반면 A LT E RTABLE DQUON DEALLOCATE UNUSED KEEP 10K 문은세 번째 확장 영역을 제거하고 MINEXTENTS 값을 2로 변경합니다.

데이터 유형의 영역 사용에 대한 이해

테이블이나 다른 데이터 구조를 생성할 때 필요한 영역의 양을 알아야 합니다. 각 데이터 유형은 다음에 설명한 대로 다른 영역을 필요로 합니다.

문자 데이터 유형 C H A R와 VARCHAR2 데이터 유형은 O r a c l e을 실행하는 하드웨

어가 사용하는 문자 집합에 따라 ASCII(American Standard

Code for Information Interchange) 또는E B C D I C ( E x t e n d e d

Binary Coded Decimal Interchange Code) 값의문자열로 문숫

자 데이터를 저장합니다. 또한 문자 데이터 유형은 O r a c l e의 국가

별 언어 지원( N L S )에 의해 지원되는 문자 집합을 사용하여 데이터

를 저장할 수도 있습니다.

CHAR 데이터 유형은 고정 길이 문자열을 저장합니다. 테이블을

CHAR 열로 생성할 때 1부터 255 사이의 열 길이가 (문자가 아닌

바이트로) CHAR 열에 대해 지정될 수 있습니다. 기본값은 1 바이

트입니다. 열 길이보다 적은 값을 갖는 열의 남는 영역은 빈 칸으로

채워집니다.

VARCHAR2 데이터 유형은 가변 길이 문자열을 저장합니다. 테

이블이 VARCHAR2 열로 생성되면 1부터 4000 사이의 최대 열

길이가 (문자가 아닌 바이트로) VARCHAR2 열에지정됩니다. 각

행에 대해 열의 각 값은 가변 길이 필드로 저장됩니다. 열의 남는

영역은 빈 칸으로 채워지지 않습니다.

숫자 데이터 유형 NUMBER 데이터 유형은 고정 길이와 부동 소수점 숫자를 저장합

니다. 1 x 10- 1 3 0에서 9.99..9 x 101 2 5( 3 8자리 유효 숫자)까지 범위

의 양수, -1 x 10- 1 3 0에서 -9.99..9 x 101 2 5( 3 8자리 유효 숫자)까지

범위의 음수 및 0입니다.

NUMBER 열을 정의할 때 선택적으로 전체 자리수와 소수점 이하

자리수를 지정할 수 있습니다. 38개의 자리수보다 작거나 같은 전

체 자리수를 가지는 숫자를 사용할 수 있습니다. 소수점 이하 자리

수만 지정하고 전체 자리수는 지정하지 않을 수 있습니다.

데이터 유형의 영역 사용에 대한 이해

스키마 객체 관리에 대한 지침 사항 1 2 - 1 7

전체 자리수를 지정하지 않으면 열은 주어진 대로 값을 저장합니다.

다음은 소수점 이하 자리수와 전체 자리수를 지정하지 않은 경우입

니다.

column_name NUMBER (*, scale)

이 경우 전체 자리수는 3 8이며 지정된 소수점 이하 자리수가 유지

관리됩니다.

DATE DATE 데이터 유형은 날짜 및 시간 등의 값을 저장합니다. 날짜

데이터 유형 데이터는 각 7 바이트의 고정 길이 필드에 저장됩니다.

L O N G L O N G으로 정의된 열은 2 기가바이트까지의 정보를 포함할 수 있

데이터 유형 는 가변 길이 문자 데이터를 저장합니다. LONG 데이터는 텍스트

데이터이며 다른 문자 집합 간에 이동할 때 적절히 변환됩니다.

LONG 데이터는 인덱스화될 수 없습니다.

주: LONG 데이터를 LOB 데이터로 거의 제한 사항 없이 변환할

수 있습니다. 자세한 내용은 Oracle8i Application Developer’s

Guide - Large Objects (LOBs)를참조하십시오.

R A W와 LONG R A W는 사용자 세션과 인스턴스를 연결하는 N e t 8과 Import

RAW 데이터 유형 /Export 유틸리티가 RAW 또는 LONG RAW 데이터를 전달할

때 문자를 변환하지 않는다는 점을 제외하고 VARCHAR2 문자

데이터 유형과 같은 가변 길이 데이터 유형입니다. 반대로 N e t 8과

E x p o r t / I m p o r t는 두 개의 문자 집합이 다른 경우, 데이터베이스

문자 집합과 사용자 세션 문자 집합 사이에서 C H A R ,

V A R C H A R 2와 LONG 데이터를 자동으로 변환합니다.

RAW 데이터는 인덱스화될 수 있지만 LONG RAW 데이터는 인

덱스화될 수 없습니다

R O W I D와 오라클 데이터베이스의 클러스터화되지 않은 테이블의 모든

ROWID 의사 행에는 행 조각(또는 행이 다중 행 조각 사이에 연결되었다면 초기

열 및 데이터 유형 행 조각)의 물리적 주소에 해당되는 고유 R O W I D가 지정됩니다.

오라클 데이터베이스의 각 테이블은 R O W I D라는 내부 의사 열을

가집니다. 이 의사 열은 SELECT 문이나 S Q L * P l u s를 사용하는

DESCRIBE 문 실행으로 테이블 구조를 나타낼 때는 분명하지 않

습니다. 그러나 열 이름으로 ROWID 예약어를 사용하면 SQL 질

의를 사용하여 읽어 들일 수 있습니다.

데이터 유형의 영역 사용에 대한 이해

1 2 - 1 8 Oracle8i 관리자 설명서

R O W I D는 선택된 각 행에 대해 물리적 주소의 이진 표현을 사용합

니다. ROWID의 VARCHAR2 16진수 표현은 b l o c k . s l o t . f i l e의

세 조각으로 나뉩니다. block은 데이터 파일에 상대적인, 행을 포

함하는 파일의 데이터 블록이며 r o w는 데이터 블록의 행이고 f i l e

은 행을 포함하는 데이터 파일입니다. 행에 지정된 R O W I D는 보통

변경되지 않은 채 남습니다. Import/Export 유틸리티를 사용하여

행을 엑스포트하거나 임포트하면 예외가 발생합니다. 행이 테이블

에서 삭제되고 포함된 트랜잭션이 커밋되면 삭제된 행과 관련된

R O W I D는 계속되는 트랜잭션에서 삽입되는 행에 지정될 수 있습니

다.

참조: N L S와 다른 문자 집합 지원에 대한 자세한 내용은 O racle8i National La-nguage Support Guide를참조하십시오.

데이터 유형에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

O racle 데이터 유형 요약

표 1 2 - 2는 각 O racle 데이터 유형에 대한 중요한 정보를 요약합니다.

표 12-2 Oracle 데이터유형 정보 요약

데이터 유형의 영역 사용에 대한 이해

스키마 객체 관리에 대한 지침 사항 1 2 - 1 9

설명

size 길이의 고정 길이 문자

데이터

국가별 문자 집합에 따라 달

라지는, size 길이의 문자

또는 바이트 수로 이루어진

고정 길이 문자 데이터

열 길이(바이트)

테이블의 모든 행에 대해 고정적이며 행

당 최대 크기는 2000 바이트이고 기본

크기는 1 바이트입니다. 크기를 설정하

기 전에 사용된 문자 집합을 고려해야

합니다. (한 바이트나 두 바이트 문자 집

합을 사용하십니까? )

최대 s i z e는 각 문자를 저장하는데 필요

한 바이트 수에 따라 2000 바이트 미만

의 크기로 정해집니다. 기본 및 최소

s i z e는 문자 집합에 따라 한 문자 또는

한 바이트입니다.

데이터 유형

CHAR (size)

NCHAR (size)

표 12-2 Oracle 데이터유형 정보 요약 (계속)

데이터 유형의 영역 사용에 대한 이해

1 2 - 2 0 Oracle8i 관리자 설명서

가변 길이 문자 데이터

size 바이트 길이의 실제

이진 데이터

가변 길이 실제 이진 데이

고유한 행 주소를 나타내는

1 6진수 데이터. 이 데이터

유형은 주로 ROWID 의사

열에 반환되는 값을 위한

유형입니다.

행당 23 1 -1 바이트거나 2 기가바이트까

지 가변적입니다.

테이블의 각 행에 대해 가변적이며 행당

2000 바이트까지 가능합니다. RAW 값

의 경우 s i z e를 지정해야 합니다.

테이블의 각 행에 대해 가변적이며 행당

2 기가바이트까지 가능합니다.

테이블의 각 행에 대해 6 바이트 길이로

고정적입니다.

LONG

RAW (s i z e)

LONG RAW

ROWID

설명

최대 size 길이의 바이트 수

로 이루어진 가변 길이 문

자열. 최대 크기는 지정되

어야 합니다.

국가별 문자 집합에 따라

달라지는, 최대 s i z e 길이의

문자 또는 바이트 수로 이

루어진 가변 길이 문자열

전체 자리수 p와 소수점 이

하 자리수 s로 이루어진 숫

자, 전체 자리수 p 범위는

1에서 3 8입니다. 소수점 이

하 자리수 s 범위는 - 8 4에

서 1 2 7입니다.

고정 길이의 날짜와 시간 데

이터이며 범위는 B.C. 4712,

1월 1일부터 A.D. 4712, 12

월 3 1일까지이며 기본 형식

은D D - M O N - Y Y입니다.

열 길이(바이트)

최대 s i z e는 4 0 0 0바이트이고 최소 s i z e

는 1바이트입니다. VARCHAR2의 경우

s i z e를 지정해야 합니다.

최대 s i z e는 각 문자를 저장하는데 필요

한 바이트 수에 따라 4000 바이트 미만

의 크기로 정해집니다. NVARCHAR2의

경우 s i z e를 지정해야 합니다.

각 행에 대해 가변적입니다. 주어진 열

에 필요한 최대 영역은 행당 21 바이트

입니다.

테이블의 각 행에 대해 7 바이트 길이로

고정적입니다.

데이터 유형

VARCHAR2

(s i z e)

NVARCHAR2

(s i z e)

NUMBER (p, s)

DATE

표 12-2 Oracle 데이터유형 정보 요약 (계속)

데이터 유형의 영역 사용에 대한 이해

스키마 객체 관리에 대한 지침 사항 1 2 - 2 1

설명

인덱스 구성 테이블의 논리

적 행 주소를 나타내는 1 6

진수 문자열

s i z e 길이의 바이트 수로 이

루어진 고정 길이 문자 데

이터

열 길이(바이트)

s i z e는 UROWID 유형의 열 크기로 선택

사항입니다. 최대 및 기본 크기는 4 0 0 0

바이트입니다.

최대 s i z e는 2000 바이트입니다. 기본

및 최소 s i z e는 1 바이트입니다.

데이터 유형

UROWID[(s i z e)]

CHAR(s i z e)

데이터 유형의 영역 사용에 대한 이해

1 2 - 2 2 Oracle8i 관리자 설명서

13분할된 테이블과 인덱스 관리

이 장에서는 분할된 테이블과 인덱스 관리에 대한 여러 측면을 설명하며 다음 내용을 다룹니다.

■ 분할된 테이블과 인덱스란

■ 분할 방식

■ 분할 영역 생성

■ 분할 영역 유지 관리

분할된 테이블과 인덱스 관리 1 3 - 1

분할된 테이블과 인덱스란

주: 분할된 테이블 또는 인덱스를 생성하거나 분할 영역에 유지 관리작업을 수행하기 전에 O racle8i 개념 설명서의 분할 정보를 검토하십시오.

오늘날의 기업은 수백 기가바이트에 이르거나 많은 경우에는 수 테라바이트에 이르는데이터를 포함하는 중요 임무 수행 데이터베이스를 실행합니다. 이러한 기업에서는대용량 데이터베이스( V L D B )를 지원하고 유지 관리하는 일이 큰 과제가 되고 있으며이러한 과제에 대처하기 위한 방법을 필요로 합니다.

VLDB 요구에 대처하는 한 가지 방법은 분할된 테이블과 인덱스를 생성하여 사용하는 것입니다. 분할된 테이블이나 인덱스는 동일한 논리적 속성을 가지는 하위 분할영역이라는 수많은 조각으로 나눌 수 있습니다. 예를 들어, 테이블의 모든 분할 영역이나 하위 분할 영역은 동일한 열과 제약 조건 정의를 공유하며 인덱스의 모든 분할영역이나 하위 분할 영역은 동일한 인덱스 옵션을 공유합니다. 각 분할 영역 또는 하위 분할 영역은 별도의 세그먼트에 저장되며 P C T F R E E, PCTUSED, INITRAN-S, MAXTRANS, TA B L E S PACE 및 S T O R AG E와 같은 서로 다른 물리적 속성을가질 수 있습니다.

각 테이블 또는 인덱스 분할 영역을 별도의 테이블스페이스에 유지할 필요는 없지만그렇게 관리하면 장점이 있습니다. 분할 영역을 별도의 테이블스페이스에 저장하면다음과 같은 이점이 있습니다.

■ 여러 분할 영역에서의 데이터 훼손 가능성이 감소됩니다.

■ 각 분할 영역을 독립적으로 백업하고 복구할 수 있습니다.

■ 분할 영역을 디스크 드라이브에 매핑하는 것을 제어할 수 있습니다. (입출력 로드조절에 중요합니다. )

■ 더 용이하게 관리할 수 있으며 가용성 및 성능을 향상시킵니다.

참조: 분할의 개념과 이점에 대한 자세한 내용은 O racle8i 개념설명서를 참조하십시오.

분할 방식

다음과 같이 세 가지 분할 방식이 있습니다.

■ 범위 분할

■ 해시 분할

■ 조합 분할

1 3 - 2 Oracle8i 관리자 설명서

분할된 테이블과 인덱스란

이 단원에서는 각 분할 방식의 사용법에 대해 설명합니다.

범위 분할 방식 사용

범위 분할을 사용하여 열 값의 범위에 준하여 분할 영역에 행을 매핑할 수 있습니다.범위 분할은 테이블이나 인덱스 및 각각의 분할 영역에 대한 분할 지정 항목으로 정의합니다.

다음은 네 분할 영역을 가진 테이블을 보여주는 예입니다. (하나의 분할 영역은 각 분기의 판매에 해당) SA L E _ Y E A R=1998, SA L E _ M O N T H=8, SA L E _ DAY= 1 8인행은 분할 키 (1998, 8, 18)을 가지고 세 번째 분할 영역에 속하며 테이블스페이스T S C에 저장됩니다. SA L E _ Y E A R =1998, SA L E _ M O N T H=8, SA L E _ DAY=1인행은 분할 키 (1998, 8, 1)을 가지고 세 번째 분할 영역에 속하며 테이블스페이스T S C에 저장됩니다.

CREATE TABLE sales( invoice_no NUMBER,sale_year INT NOT NULL,sale_month INT NOT NULL,sale_day INT NOT NULL )

PARTITION BY RANGE (sale_year, sale_month, sale_day)( PARTITION sales_q1 VALUES LESS THAN (1998, 04, 01)

TABLESPACE tsa,PARTITION sales_q2 VALUES LESS THAN (1998, 07, 01)

TABLESPACE tsb,PARTITION sales_q3 VALUES LESS THAN (1998, 10, 01)

TABLESPACE tsc,PARTITION sales_q4 VALUES LESS THAN (1999, 01, 01)

TABLESPACE tsd );

범위 분할 영역 유지 관리

범위 분할 방식을 사용하여 생성된 분할 영역에서 수행하는 작업을 유지 관리하는 유일한 방법은 분할 영역을 병합하는 것입니다. ALTER TA B L E. . . M E RG EPA RTITIONS 명령어를 사용하여 두 개의 인접한 범위 분할 영역의 내용을 하나의분할 영역으로 병합할 수 있습니다. 더 큰 분할 영역에서 기록 데이터를 온라인으로유지하기 위해 이와 같은 작업을 수행할 수 있습니다. 예를 들어, 일간 분할 영역을가지고 있다고 하면 가장 오래된 분할 영역은 주간 분할 영역으로 롤업된 다음 월간분할 영역으로 롤업될 수 있습니다.

참조: 범위 분할에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

C R E ATE TA B L E. . . PA RTITION 구문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

분할된 테이블과 인덱스 관리 1 3 - 3

분할 방식

해시 분할 방식 사용

해시 분할은 고정된 수의 분할 영역에서 데이터의 물리적 위치를 제어합니다. 행은분할 키의 해시 값에 준하여 분할 영역에 매핑됩니다. 해시 분할 영역을 생성하고 사용하면 데이터의 위치를 보다 잘 조정할 수 있습니다.

다음은 테이블 레벨에서 분할 영역에 대한 모든 저장 영역 속성을 지정하는 방법을보여주는 예입니다.

CREATE TABLE scubagear(id NUMBER,name VARCHAR2 (60))

TABLESPACE oceanSTORAGE (INITIAL 19k)

PARTITION BY HASH (id)PARTITIONS 4;

다음 명령문에서와 같이 특정 테이블스페이스에해시 분할 영역을 저장할 수 있습니다.

CREATE TABLE scubagear (...)STORAGE (INITIAL 10k)PARTITION BY HASH (id) PARTITIONS 16STORE IN (h1to4, h4to8, h8to12, h12to16);

또는 특정 테이블스페이스에 각 해시 분할 영역의 이름을 지정하거나 저장할 수 있습니다.

CREATE TABLE product(...)STORAGE (INITIAL 10k)PARTITION BY HASH (id)(PARTITION p1 TABLESPACE h1,PARTITION p2 TABLESPACE h2);

해시 분할된 인덱스에 대한 분할 레벨의 테이블스페이스를 지정할 수도 있습니다.

CREATE INDEX bcd_type ON scubagear(id) LOCALPARTITIONS 4 STORE IN (ix1, ix2);

CREATE INDEX bcd_type ON scubagear(id) LOCAL(PARTITION p1 TABLESPACE ix1, PARTITION p2 TABLESPACE ix2,PARTITION p3 TABLESPACE ix3, PARTITION p4 TABLESPACE ix4);

해시 분할 영역 유지 관리

현재의 모든 범위 분할 영역 유지 관리 작업은 다음 예를 제외하고 해시 분할 영역에대해 지원합니다.

1 3 - 4 Oracle8i 관리자 설명서

분할 방식

■ A LTER TA B L E...SPLIT PA RT I T I O N

■ A LTER TA B L E. . . D ROP PA RT I T I O N

■ A LTER TA B L E. . . M E RGE PA RT I T I O N S

추가적으로 해시 분할 방식을 사용하여 생성된 분할 영역의 경우 특히 두 가지 유지관리 작업이 있습니다

■ 해시 분할 영역 합치기

■ 해시 분할 영역 추가

해시 분할 영역 합치기 다음 명령문을 사용하여 단일 해시 분할 영역을 제거하고 데이터를 재분산합니다.

ALTER TABLE scubagear COALESCE PARTITION;

합쳐지는 분할 영역은 해시 함수에 의해 결정됩니다. 또한 해시 영역을 합쳐 데이터를 재분산하면 로컬 인덱스는 유지 관리되지 않습니다. 해시 분할 영역은 병렬로 합칠 수 있습니다. 행에 합쳐진 분할 영역에 해당하는 로컬 인덱스 분할 영역은 기존 분할 영역에서 재구축되어야 합니다.

해시 분할 영역 추가 다음 명령문 중 하나를 사용하여 단일 해시 분할 영역을 추가하고 데이터를 재분산합니다.

ALTER TABLE scubagear ADD PARTITION;ALTER TABLE scubagear

ADD PARTITION p3 TABLESPACE t3;

해시 분할 영역을 추가하면 로컬 인덱스는 유지 관리되지 않습니다. 또한 해시 분할영역은 병렬로 추가할 수 있습니다.

참조: C R E ATE TA B L E, PA RT I T I O N . . . BY HASH 및 A LTER TABLE 문의구문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

해시 분할에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

조합 분할 방식 사용

조합 분할은 범위 방식을 사용하여 데이터를 분할하고 각 분할 영역 내에서 해시 방식을 사용하여 하위를 분할합니다. 조합 분할은 기록 데이터와 스트리핑 모두에 이상적이며 향상된 범위 분할 및 데이터 배치 관리의 용이성뿐 아니라 해시 분할의 병렬화 장점을 제공합니다.

분할된 테이블과 인덱스 관리 1 3 - 5

분할 방식

조합 분할 영역을 생성할 때 다음 사항을 지정합니다.

■ 분할 방식(범위)

■ 분할 키

■ 분할 영역 설명(분할 영역 바운드 포함)

■ 하위 분할 방식(해시)

■ 하위 분할 열

■ 분할 영역 당 하위 분할 영역의 수 또는 하위 분할 영역의 설명

STORE IN 절을 사용하여 각 테이블 분할 영역의 하위 분할 영역이 전개될 테이블스페이스를 지정하고자 할 수 있습니다.

다음은 조합 분할된 테이블을 생성하는 명령문입니다.

CREATE TABLE scubagear (equipno NUMBER, equipname VARCHAR(32), priceNUMBER)

PARTITION BY RANGE (equipno) SUBPARTITION BY HASH (equipname)SUBPARTITIONS 8 STORE IN (ts1, ts3, ts5, ts7)(PARTITION p1 VALUES LESS THAN (1000),PARTITION p2 VALUES LESS THAN (2000),PARTITION p3 VALUES LESS THAN (MAXVALUE));

다음 명령문으로 하위 분할 영역이 놓여야 하는 테이블스페이스의 이름과 하위 분할영역의 이름을 지정할 수 있습니다.

CREATE TABLE scubagear (equipno NUMBER, equipname VARCHAR(32), priceNUMBER)

PARTITION BY RANGE (equipno) SUBPARTITION BY HASH (equipname)SUBPARTITIONS 8 STORE IN (ts1, ts3, ts5, ts7)(PARTITION p1 VALUES LESS THAN (1000) PCTFREE 40,PARTITION p2 VALUES LESS THAN (2000) STORE IN (ts2, ts4, ts6,ts8),PARTITION p3 VALUES LESS THAN (MAXVALUE)(SUBPARTITION p3_s1 TABLESPACE ts4,SUBPARTITION p3_s2 TABLESPACE ts5));

조합 분할 영역 유지 관리

조합 분할된 테이블 또는 인덱스에서 모든 범위의 분할 영역 유지 관리 작업을 수행할 수 있으며 테이블 분할 영역의 기본 속성을 수정할 수 있습니다.

조합 하위 분할 영역 유지 관리

이 단원에서는 다음을 포함한 특정 하위 분할 영역 유지 관리 작업의 완료 방법에 대해 설명합니다.

■ 하위 분할 영역 수정(테이블과 인덱스)

■ 하위 분할 영역 재구축(인덱스만)

1 3 - 6 Oracle8i 관리자 설명서

분할 방식

■ 하위 분할 영역 이름 바꾸기(테이블과 인덱스)

■ 하위 분할 영역 교환(테이블만)

■ 하위 분할 영역 추가 (테이블만)

■ 하위 분할 영역 합치기(테이블만)

■ 하위 분할 영역 이동(테이블만)

■ 하위 분할 영역 잘라버리기(테이블만)

하위 분할 영역 수정 다음과 같이 사용할 수 없음으로 표시된 분할된 테이블에 로컬인덱스의 하위 분할 영역을 표시할 수 있습니다.

ALTER INDEX scubaMODIFY SUBPARTITION bcd_types UNUSABLE;

MODIFY SUBPA RTITION 절을 사용하여 테이블 또는 인덱스의 하위 분할 영역에대한 저장 영역을 할당하거나 할당을 해제할 수 있습니다.

하위 분할 영역 재구축 하위 분할 영역을 재구축하여 인덱스 하위 분할 영역에서 데이터를 재생성할 수 있습니다. 다음은 테이블에 로컬 인덱스의 하위 분할 영역을 재구축하는 명령문입니다.

ALTER INDEX scubaREBUILD SUBPARTITION bcd_typesTABLESPACE tbs23 PARALLEL (DEGREE 2);

위의 예에서 인덱스는 다른 테이블스페이스에 재구축됩니다.

하위 분할 영역 이름 바꾸기 테이블이나 인덱스의 하위 분할 영역에 새로운 이름을할당할 수 있습니다. 다음은 테이블에서 로컬 인덱스의 하위 분할 영역에 새로운 이름을 할당하는 방법을 보여주는 명령문입니다.

ALTER INDEX scuba RENAME SUBPARTITION bcd_types TO bcd_brands;

다음은 시스템이 기본 테이블에 분할 영역을 추가하여 생성한 이름을 가진 하위 분할영역의 이름을 바꾸는 방법을 보여주는 명령문입니다.

ALTER INDEX scuba RENAME SUBPARTITION sys_subp3254 TO bcd_types;

테이블의 하위 분할 영역에 새로운 이름을 할당할 수도 있습니다.

ALTER TABLE diving RENAME SUBPARTITION locations_usTO us_monterey;

분할된 테이블과 인덱스 관리 1 3 - 7

분할 방식

하위 분할 영역 교환 다음은 테이블의 하위 분할 영역을 분할되지 않은 테이블로 변환하는 방법을 보여주는 명령문입니다.

ALTER TABLE divingEXCHANGE SUBPARTITION locations_usWITH TABLE us_ca INCLUDING INDEXES;

하위 분할 영역 추가 다음은 하위 분할 영역을 테이블의 분할 영역에 추가하는 방법을 보여주는 명령문입니다. 새롭게 추가된 하위 분할 영역은 해시 함수에 의해 결정된대로 동일한 분할 영역의 다른 하위 분할 영역에서 다시 해시된 행으로 채워집니다.

ALTER TABLE diving MODIFY PARTITION locations_usADD SUBPARTITION us_monterey TABLESPACE us1;

하위 분할 영역 합치기 다음은 테이블에 있는 특정 분할 영역의 R D B M S가 선택한하위 분할 영역을 동일한 분할 영역의 해시 함수에 의해 결정된 하나 이상의 남아있는 하위 분할 영역으로 분산한 다음 선택된 하위 분할 영역을 파괴하는 방법을 보여주는 명령문입니다. 기본적으로 이 작업은 A LTER TABLE MODIFY PA RT I T I O -N ADD SUBPA RTITION 문의 역 작업입니다

ALTER TABLE diving MODIFY PARTITION us_locationsCOALESCE PARTITION;

하위 분할 영역 이동 다음은 테이블의 하위 분할 영역에서 데이터를 이동하는 방법을보여주는 명령문입니다.

ALTER TABLE scuba_gear MOVE SUBPARTITION bcd_typesTABLESPACE tbs23 PARALLEL (DEGREE 2);

하위 분할 영역 잘라버리기 다음은 테이블의 하위 분할 영역에서 데이터를 자르는 방법을 보여주는 명령문입니다.

ALTER TABLE divingTRUNCATE SUBPARTITION us_locations

DROP STORAGE;

참조: 이 단원에서 설명하는 명령문 구문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

1 3 - 8 Oracle8i 관리자 설명서

분할 방식

분할 영역 생성

분할된 테이블의 생성은 테이블이나 인덱스의 생성과 매우 유사합니다. CREAT ETABLE 문에 PA RTITION 절을 사용해야 합니다. 또한 각 분할 영역에 대한 테이블스페이스 이름을 지정해야 합니다.

다음 예는 각 분기별 판매 실적을 나타내는 4개의 분할 영역을 포함하는 C R E AT ETABLE 문을 보여줍니다. SA L E _ Y E A R = 1998, SA L E _ M O N T H = 7, SA L E _DAY=1 8인 행은 분할 키 (1998, 7, 18)을 가지며 테이블스페이스 T S C의 세 번째분할 영역에 있습니다. SA L E _ Y E A R =1998, SA L E _ M O N T H=7, SA L E _ DAY=1인 행은 분할 영역 키 (1998, 7, 1)을가지며 역시 세 번째 분할 영역에 있습니다.

CREATE TABLE sales( invoice_no NUMBER,

sale_year INT NOT NULL,sale_month INT NOT NULL,sale_day INT NOT NULL )

PARTITION BY RANGE ( sale_year, sale_month, sale_day)( PARTITION sales_q1 VALUES LESS THAN ( 1998, 04, 01 )TABLESPACE tsa,

PARTITION sales_q2 VALUES LESS THAN ( 1998, 07, 01 )TABLESPACE tsb,

PARTITION sales_q3 VALUES LESS THAN ( 1998, 10, 01 )TABLESPACE tsc,

PARTITION sales q4 VALUES LESS THAN ( 1999, 01, 01 )TABLESPACE tsd);

참조: C R E ATE TABLE 문과 PA RTITION 절에 대한 자세한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

분할 영역 키, 분할 영역 이름, 경계 값, 균등하게 분할된 테이블 및 인덱스에 대한내용은 O racle8i 개념 설명서를 참조하십시오.

분할 영역 유지 관리

이 단원에서는 다음과 같은 특정 분할 영역 유지 관리 작업을 수행하는 방법에 대해설명합니다.

■ 분할 영역 이동

■ 분할 영역 추가

■ 분할 영역 삭제

■ 분할 영역 합치기

분할된 테이블과 인덱스 관리 1 3 - 9

분할 영역 유지 관리

■ 분할 영역 기본 속성 수정

■ 분할 영역 잘라버리기

■ 분할 영역 분할

■ 분할 영역 병합

■ 테이블 분할 영역 교환

■ 인덱스 분할 영역 재구축

■ 기록 테이블에서 시간 창 이동

■ 다단계 유지 관리 작업 중 응용 프로그램 정지

참조: DDL 문의 SQL 구문에 대한 내용은 O racle8i SQL 참조서를참조하십시오.

분할된 테이블과 인덱스를 설명하는 카탈로그 뷰와 분할된 테이블이나 인덱스의 분할영역에 대한 내용은 O racle8i Refe re n c e를 참조하십시오.

임포트, 엑스포트 및 분할 영역에 대한 내용은 O racle8i Utilities를참조하십시오.

분할에 대한 일반적인 내용은 O racle8i 개념 설명서를 참조하십시오.

분할 영역 이동

A LTER TABLE 문의 M OVE PA RTITION 절을 사용하여 다음 작업을 수행할 수있습니다.

■ 데이터를 재배치하여 단편화를 줄일 수 있습니다.

■ 분할 영역을 다른 테이블스페이스로 이동합니다.

■ 생성 시간 속성을 수정합니다.

일반적으로 A LTER TA B L E / I N D E X...MODIFY PA RTITION 문을 사용하여 단일 단계로 분할 영역의 물리적 저장 영역 속성을 변경할 수 있습니다. 그러나 M O D -IFY PA RT I T I O N으로 수정할 수 없는 TA B L E S PAC E와 같은 일부 물리적 속성이있습니다. 이 경우 M OVE PA RTITION 절을 사용할 수 있습니다.

테이블 분할 영역 이동

M OVE PA RTITION 절을 사용하여 분할 영역을 이동할 수 있습니다. 예를 들어,D B A는 가장 활성화된 분할 영역을 자체 디스크에 있는 테이블스페이스로 (입출력조절을 위해) 이동할 수 있습니다. DBA는 다음 명령문을 실행할 수 있습니다.

ALTER TABLE parts MOVE PARTITION depot2TABLESPACE ts094 NOLOGGING;

1 3 - 1 0 Oracle8i 관리자 설명서

분할 영역 유지 관리

이 명령문을 사용하면 항상 새로운 테이블스페이스를 지정하지 않아도 분할 영역의이전 세그먼트는 삭제되고 새로운 세그먼트가 생성됩니다.

이동 중인 분할 영역에 데이터가 있으면 M OVE PA RT I T I O N은 각 로컬 인덱스에일치하는 분할 영역을 표시하고 모든 글로벌 인덱스 분할 영역은 사용할 수 없는 상태가 됩니다. MOVE PA RT I T I O N을 실행한 후 이러한 인덱스 분할 영역을 재구축해야 합니다.

인덱스 분할 영역 이동

M OVE PA RTITION 및 D ROP TABLE PA RT I T I O N과 같은 일부 작업은 글로벌인덱스의 모든 분할 영역을 사용할 수 없음으로 표시합니다. ALTER INDEX REB-UILD PA RTITION 문을 사용하여 각 분할 영역을 개별적으로 재구축하여 전체 인덱스를 재구축할 수 있습니다. 이러한 재구축 작업은 동시에 수행할 수 있습니다.

단순히 인덱스를 삭제하고 재생성할 수도 있습니다.

분할 영역 추가

이 단원에서는 분할된 테이블에 새로운 분할 영역을 추가하는 방법과 로컬 인덱스에분할 영역을 추가하는 방법을 설명합니다.

테이블 분할 영역 추가

A LTER TA B L E...ADD PA RTITION 문을 사용하여“상위”의 끝(기존 분할 영역의 마지막 지점의 다음 지점)에 새로운 분할 영역을 추가할 수 있습니다. 테이블의 시작 부분이나 중간 부분에 분할 영역을 추가하거나 최상위 분할 영역의 분할 영역 경계가 M A X VA L U E인 경우 A LTER TA B L E...ADD PA RTITION 문 대신SPLIT PA RTITION 문을 사용해야 합니다.

최상위 분할 영역의 분할 영역 경계가 M A X VA L U E가 아니라면 A LTER TA B L E...ADD PA RTITION 문을 사용하여 분할 영역을 추가할 수 있습니다.

예를 들어, DBA가 지난 1 2개월과 이번 달에 대한 데이터를 포함한 SALES 테이블을 가지고 있습니다. 1999년 1월 1일에 D B A는 1월에 대한 분할 영역을 추가합니다.

ALTER TABLE salesADD PARTITION jan96 VALUES LESS THAN (’01-FEB-1999’)TABLESPACE tsx;

테이블에 로컬 인덱스가 정의되어 있고 A LTER TA B L E...ADD PA RTITION 문을실행하면 해당 분할 영역이 각 로컬 인덱스에도 추가됩니다. Ora c l e이 새로운 인덱스분할 영역에 이름과 기본 물리적 저장 영역 속성을 할당하므로 ADD 작업이 완료되

분할된 테이블과 인덱스 관리 1 3 - 1 1

분할 영역 유지 관리

면 이름을 바꾸거나 속성을 변경할 수 있습니다.

인덱스 분할 영역 추가

로컬 인덱스에 분할 영역을 명시적으로 추가할 수는 없습니다. 대신 기본 테이블에분할 영역을 추가할 때만 로컬 인덱스에 새로운 분할 영역이 추가됩니다.

최상위 분할 영역의 분할 영역 경계는 항상 M A X VA L U E이므로 글로벌 인덱스에 분할 영역을 추가할 수 없습니다. 새로운 최상위 분할 영역을 추가하려면 A LTER IN-D E X...SPLIT PA RTITION 문을 사용합니다.

분할 영역 삭제

이 단원에서는 A LTER TABLE DROP PA RTITION 문을 사용하여 테이블 및 인덱스 분할 영역과 해당 데이터를 삭제하는 방법을 설명합니다.

테이블 분할 영역 삭제

A LTER TABLE DROP PA RTITION 문을 사용하여 테이블 분할 영역을 삭제할수 있습니다.

테이블에 대해 정의된 로컬 인덱스가 있으면 A LTER TABLE DROP PA RT I T I O N은 각 로컬 인덱스에서 해당 분할 영역도 삭제합니다.

주: 테이블의 분할 영역만을 삭제할 수는 없습니다.

데이터와 글로벌 인덱스를 포함하는 테이블 분할 영역 삭제 그러나 데이터와 하나 이상의 글로벌 인덱스를 포함하는 분할 영역이 테이블에 정의되어 있으면 다음 방법 중하나를 사용하여 테이블 분할 영역을 삭제합니다.

1 . A LTER TA B L E. . . D ROP PA RTITION 문 실행 중에는 글로벌 인덱스를 그대로 둡니다. 이 경우 D ROP PA RT I T I O N이 모든 글로벌 인덱스 분할 영역을 사용할 수 없음으로 표시하므로 나중에 재구축해야 합니다.

주: A LTER TA B L E. . . D ROP PA RTITION 문은 모든 글로벌 인덱스 분할 영역을 사용할 수 없음으로 표시할 뿐만 아니라 모든 분할되지않은 인덱스도 사용할 수 없게 합니다. 단일 명령문으로 분할된 전체인덱스를 재구축할 수는 없습니다. 분할된 인덱스를 재구축하려면 분할된 인덱스의 각 분할 영역에 대해 별도의 REBUILD 문을 작성해야합니다. 다음 명령문의 s a l 1은 분할되지 않은 인덱스입니다.

1 3 - 1 2 Oracle8i 관리자 설명서

분할 영역 유지 관리

ALTER TABLE sales DROP PARTITION dec94;ALTER INDEX sales_area_ix REBUILD sal1;

이 방법은 삭제되는 분할 영역이 테이블의 전체 데이터 중 중요한 비율을 차지하는 대규모 테이블인 경우에 가장 적합합니다.

2 . DELETE 명령어를 실행하여 A LTER TA B L E. . . D ROP PA RTITION 문을 실행하기 전에 분할 영역에서 모든 행을 삭제합니다. DELETE 명령어는 글로벌인덱스를 갱신하고, 트리거를 실행하며, 리두 로그와 언두 로그를 생성합니다.

주: 모든 행을 삭제하기 전에 분할 영역에 A LTER TA B L E. . .MODIFY PA RT I T I O N . . . N O L O G G I N G을 사용하여 N O L O G G -ING 속성을 설정하여 로그에 기록되는 양을 근본적으로 줄일 수 있습니다.

예를 들어, DBA가 분할 영역 경계가 1 0 0 0 0인 첫 번째 분할 영역을 삭제하고자합니다. 이 경우 D B A는 다음 명령문을 실행합니다.

DELETE FROM sales WHERE TRANSID < 10000;ALTER TABLE sales DROP PARTITION dec94;

이 방법은 삭제되는 분할 영역이 테이블의 전체 데이터 중 적은 비율을 차지할경우 소규모 테이블이나 대규모 테이블에서 사용되어야 합니다.

데이터와 참조 무결성 제약 조건을 포함하는 테이블 분할 영역 삭제 분할 영역이 데이터를 포함하고 테이블이 참조 무결성 제약 조건을 가지면 다음 방법 중 하나를 선택하여 테이블 분할 영역을 삭제합니다.

1 . 무결성 제약 조건을 비활성화하고 A LTER TA B L E. . . D ROP PA RTITION 문을 실행한 다음 무결성 제약 조건을 활성화합니다.

ALTER TABLE salesDISABLE CONSTRAINT dname_sales1;

ALTER TABLE sales DROP PARTITTION dec94;ALTER TABLE sales

ENABLE CONSTRAINT dname_sales1;

이 방법은 삭제되는 분할 영역이 테이블의 전체 데이터 중 중요한 비율을 차지하는 대규모 테이블인 경우에 가장 적합합니다.

2 . DELETE 명령어를 실행하여 A LTER TA B L E. . . D ROP PA RTITION 문을 실행하기 전에 분할 영역에서 모든 행을 삭제합니다. DELETE 명령어는 참조 무

분할된 테이블과 인덱스 관리 1 3 - 1 3

분할 영역 유지 관리

결성 제약 조건을 강제로 수행하고, 트리거를 실행하며, 리두 로그와 언두 로그를 생성합니다.

DELETE FROM sales WHERE TRANSID < 10000;ALTER TABLE sales DROP PARTITION dec94;

이 방법은 삭제되는 분할 영역이 테이블의 전체 데이터 중 적은 비율을 차지할경우 소규모 테이블이나 대규모 테이블에서 사용되어야 합니다.

인덱스 분할 영역 삭제

로컬 인덱스에서 분할 영역을 명시적으로 삭제할 수는 없습니다. 대신 기본 테이블에서 분할 영역을 삭제할 때만 로컬 인덱스 분할 영역이 삭제됩니다.

글로벌 인덱스 분할 영역이 비어 있으면 A LTER INDEX. . . D ROP PA RT I T I O N문을 실행하여 명시적으로 삭제할 수 있습니다.

글로벌 인덱스 분할 영역에 데이터가 있는 경우 분할 영역을 삭제하면 다음 최상위분할 영역이 사용할 수 없음으로 표시됩니다. 예를 들어, DBA가 P1 인덱스 분할 영역을 삭제하고자 하고 P1 및 P 2가 다음 최상위 분할 영역이라고 하면 D B A는 다음명령문을 실행해야 합니다.

ALTER INDEX npr DROP PARTITION P1;ALTER INDEX npr REBUILD PARTITION P2;

주: 글로벌 인덱스의 최상위 분할 영역은 삭제할 수 없습니다.

분할 영역 합치기

해시 방식으로 분할된 테이블의 R D B M S가 선택한 분할 영역 내용을 해시 함수가 결정한 하나 이상의 분할 영역으로 분산한 다음 선택된 분할 영역을 삭제할 수 있습니다.

다음은 마지막 분할 영역을 합침으로써 테이블의 분할 영역 숫자를 하나 줄이는 명령문입니다.

ALTER TABLE ouu1COALESCE PARTITION;

분할 영역 기본 속성 수정

조합 방식 또는 조합 테이블의 분할 영역을 사용하여 생성된 테이블에서 로컬 인덱스분할 영역의 기본 속성을 수정할 수 있습니다.

1 3 - 1 4 Oracle8i 관리자 설명서

분할 영역 유지 관리

다음은 분할된 테이블에서 로컬 인덱스 분할 영역의 분할 영역 레벨의 기본PCTFREE 속성을 변경하는 명령문입니다.

ALTER INDEX scuba_1MODIFY DEFAULT ATTRIBUTES FOR PARTITION bcd_1998

PCTFREE 25;

분할 영역 잘라버리기

테이블 분할 영역에서 모든 행을 제거하려면 A LTER TA B L E. . . T RU N CAT EPA RTITION 문을 사용합니다. 인덱스 분할 영역은 잘라버릴 수 없습니다. 그러나A LTER TABLE TRU N CATE PA RTITION 문은 각 로컬 인덱스의 해당 분할 영역을 잘라버립니다.

분할된 테이블 잘라버리기

A LTER TA B L E. . . T RU N CATE PA RTITION 문을 사용하여 영역 회수 여부에 관계없이 테이블 분할 영역에서 모든 행을 제거할 수 있습니다. 이 테이블에 정의된 로컬 인덱스가 있으면 A LTER TA B L E. . . T RU N CATE PA RT I T I O N은 각 로컬 인덱스에서 해당 분할 영역도 잘라버립니다.

데이터와 글로벌 인덱스를 포함하는 테이블 분할 영역 잘라버리기 그러나 분할 영역에 데이터와 글로벌 인덱스가 있으면 다음 방법 중 하나를 사용하여 테이블 분할 영역을 잘라버립니다.

1 . A LTER TABLE TRU N CATE PA RTITION 문 실행 중에는 글로벌 인덱스를그대로 둡니다.

주: A LTER TA B L E. . . T RU N CATE PA RTITION 문은 모든 글로벌 인덱스 분할 영역을 사용할 수 없음으로 표시할 뿐만 아니라 모든분할되지 않은 인덱스를 사용할 수 없게 합니다. 분할된 전체 인덱스는단일 명령문으로 재구축할 수 없습니다. 분할된 인덱스를 재구축하려면분할된 인덱스에서 각 분할 영역에 대해 별도의 REBUILD 문을 작성해야 합니다. 다음 명령문의 s a l 1은 분할되지 않은 인덱스입니다.

ALTER TABLE sales TRUNCATE PARTITION dec94;ALTER INDEX sales_area_ix REBUILD sal1;

이 방법은 잘리는 분할 영역이 테이블의 전체 데이터 중 중요한 비율을 차지하는대규모 테이블인 경우에 가장 적합합니다.

분할된 테이블과 인덱스 관리 1 3 - 1 5

분할 영역 유지 관리

2 . DELETE 명령어를 실행하여 A LTER TA B L E. . . T RU N CATE PA RT I T I O N문을 실행하기 전에 분할 영역에서 모든 행을 삭제합니다. DELETE 명령어는글로벌 인덱스를 갱신하고, 트리거를 실행하며, 리두 로그와 언두 로그를 생성합니다.

이 방법은 잘리는 분할 영역이 테이블의 전체 데이터 중 적은 비율을 차지할 경우 소규모 테이블이나 대규모 테이블에서 사용되어야 합니다.

데이터와 참조 무결성 제약 조건을 포함하는 테이블 분할 영역 잘라버리기 분할 영역에 데이터와 참조 무결성 제약 조건이 있으면 다음 방법 중 하나를 선택하여 테이블분할 영역을 잘라버립니다.

1 . 무결성 제약 조건을 비활성화하고 A LTER TA B L E. . . T RU N CATE PA RT I T I -ON 문을 실행한 다음 무결성 제약 조건을 다시 활성화합니다.

ALTER TABLE salesDISABLE CONSTRAINT dname_sales1;

ALTER TABLE sales TRUNCATE PARTITION dec94;ALTER TABLE sales

ENABLE CONSTRAINT dname_sales1;

이 방법은 잘리는 분할 영역이 테이블의 전체 데이터 중 중요한 비율을 차지하는대규모 테이블에 가장 적합합니다.

2 . DELETE 명령어를 실행하여 A LTER TA B L E. . . T RU N CATE PA RT I T I O N문을 실행하기 전에 분할 영역에서 모든 행을 삭제합니다. DELETE 명령어는참조 무결성 제약 조건을 강제로 수행하고, 트리거를 실행하며, 리두 로그와 언두 로그를 생성합니다.

주: 모든 행을 삭제하기 전에 분할 영역에 A LTER TA B L E. . . M O D I -FY PA RT I T I O N . . . N O L O G G I N G을 사용하여 NOLOGGING 속성을 설정하여 로그에 기록되는 양을 근본적으로 줄일 수 있습니다.

DELETE FROM sales WHERE TRANSID < 10000;ALTER TABLE sales TRUNCATE PARTITION dec94;

이 방법은 잘리는 분할 영역이 테이블의 전체 데이터 중 적은 비율을 차지할 경우 소규모 테이블이나 대규모 테이블에서 사용되어야 합니다.

1 3 - 1 6 Oracle8i 관리자 설명서

분할 영역 유지 관리

분할 영역 분할

이러한 형식의 A LTER TA B L E / I N D E X는 한 분할 영역을 두 개의 분할 영역으로나눕니다. 분할 영역이 너무 커 백업, 복구, 유지 관리 작업에 너무 많은 시간이 소요되면 SPLIT PA RTITION 절을 사용할 수 있습니다. 또한 SPLIT PA RTITION 절을 사용하여 입출력 로드를 재분배할 수도 있습니다. 해시 분할 영역에는 이 절을 사용할 수 없습니다.

테이블 분할 영역 분할

A LTER TA B L E...SPLIT PA RTITION 문을 실행하여 테이블 분할 영역을 분할할수 있습니다. 테이블에 정의된 로컬 인덱스가 있으면 이 명령문은 각 로컬 인덱스의해당 분할 영역도 분할합니다. Ora c l e이 새로운 인덱스 분할 영역에 시스템 생성 이름과 기본 저장 영역 속성을 할당하므로 분할 영역을 분할한 다음 이러한 인덱스 분할 영역의 이름을 바꾸거나 변경할 수 있습니다.

분할하는 분할 영역에 데이터가 있으면 A LTER TA B L E...SPLIT PA RTITION 문은 모든 로컬 인덱스 분할 영역을 사용할 수 없게 하는 동시에 각 로컬 인덱스의 해당분할 영역( 2개가 있음)을 사용할 수 없음으로 표시합니다. ALTER TA B L E. . . S P L -IT PA RTITION 문을 실행한 다음 이러한 인덱스 분할 영역을 재구축해야 합니다.

테이블 분할 영역 분할: 시나리오 이 시나리오에서“fe e _ k a ty”는 로컬 인덱스 JA F 1을 가진“V E T _ c a t s”테이블의 분할 영역입니다. 테이블의 글로벌 인덱스인 V E T도있습니다. VET에는 V E T _ p a r t a와 VET_partb 등 2개의 분할 영역이 있습니다.

분할 영역“fe e _ k a ty”를 분할하고 인덱스 분할 영역을 재구축하려면 D B A는 다음 명령문을 실행합니다.

ALTER TABLE vet_cats SPLIT PARTITIONfee_katy at (100) INTO ( PARTITIONfee_katy1 ..., PARTITION fee_katy2 ...);

ALTER INDEX JAF1 REBUILD PARTITION SYS_P00067;ALTER INDEX JAF1 REBUILD PARTITION SYS_P00068;ALTER INDEX VET REBUILD PARTITION VET_parta;ALTER INDEX VET REBUILD PARTITION VET_partb;

주: 새로운 로컬 인덱스 분할 영역에 할당된 이름을 정하려면 데이터딕셔너리를 검사해야 합니다. 이 특정 시나리오에서는 SY S _ P 0 0 0 6 7과SY S _ P 0 0 0 6 8이 해당됩니다. 원한다면 이름을 바꿀 수 있습니다. 또한JA F 1에 분할 영역 fe e _ k a ty 1과 fe e _ k a ty 2가 없는 경우 이 분할에 의해 생성된 로컬 인덱스 분할 영역에 할당된 이름은 해당 기본 테이블분할 영역의 이름과 일치합니다.

분할된 테이블과 인덱스 관리 1 3 - 1 7

분할 영역 유지 관리

인덱스 분할 영역 분할

로컬 인덱스의 분할 영역을 명시적으로 분할할 수는 없습니다. 기본 테이블을 분할한경우에만 로컬 인덱스 분할 영역이 분할됩니다.

다음은 데이터 Q U O N 1을 포함하는 글로벌 인덱스 분할영역을 분할하는 명령문입니다.

ALTER INDEX quon1 SPLITPARTITION canada AT VALUES LESS THAN ( 100 ) INTOPARTITION canada1 ..., PARTITION canada2 ...);

ALTER INDEX quon1 REBUILD PARTITION canada1;ALTER INDEX quon1 REBUILD PARTITION canada2;

분할한 인덱스 분할 영역을 사용할 수 없다면 재구축해야만 합니다.

분할 영역 병합

범위 또는 조합 분할된 테이블의 인접하는 두 분할 영역의 내용을 하나로 병합할 수있습니다. 새로 생긴 분할 영역은 병합된 두 분할 영역의 상위 경계를 상속 받습니다.

다음은 범위 분할된 테이블의 인접하는 두 분할 영역을 병합하는 명령문입니다.

ALTER TABLE divingMERGE PARTITIONS bcd1, bcd2 INTO PARTITION bcd1bcd2;

테이블 분할 영역 교환

데이터와 인덱스 세그먼트를 교환하여 분할 영역을 분할되지 않은 테이블로 변환하거나 테이블을 분할된 테이블의 분할 영역으로 변환할 수 있습니다. 테이블 분할 영역교환은 분할된 테이블의 분할 영역으로 변환할 분할되지 않은 테이블을 사용하는 응용 프로그램이 있을 때 가장 유용합니다. 예를 들어, 분할된 테이블로 이동할 분할 영역 뷰가 이미 있을 수 있습니다.

뷰의 분할 영역을 분할 테이블로 변환: 시나리오

이 시나리오는 분할 영역 뷰(“수동 분할 영역”이라고도 함)를 분할된 테이블로 변환하는 방법에 대해 설명합니다. 분할 영역 뷰는 다음과 같이 정의됩니다.

CREATE VIEW accountsSELECT * FROM accounts_jan98UNION ALLSELECT * FROM accounts_feb98UNION ALL...

SELECT * FROM accounts_dec98;

1 3 - 1 8 Oracle8i 관리자 설명서

분할 영역 유지 관리

분할 영역 뷰를 분할된 테이블로 점증적으로 이전

1 . 초기에 분할된 테이블을 생성하여 2개의 가장 최근 분할 영역 AC C O U N T S _N OV 9 8과 AC C O U N T S _ D E C 9 8을 뷰에서 테이블로 이동합니다. 각 분할 영역은 위치 표시자로 두 개의 세그먼트 블록을 얻습니다.

CREATE TABLE accounts_new (...)TABLESPACE ts_temp STORAGE (INITIAL 2)PARTITION BY RANGE (opening_date)(PARTITION jan98 VALUES LESS THAN (’01-FEB-1998’),...PARTITION dec98 VALUES LESS THAN (’01-FEB-1998’));

2 . E XCHANGE 명령어를 사용하여 테이블을 해당 분할 영역으로 이동합니다.

ALTER TABLE accounts_newEXCHANGE PARTITION nov98 WITH TABLEaccounts_nov98 WITH VALIDATION;

ALTER TABLE accounts_newEXCHANGE PARTITION dec98 WITH TABLEaccounts_dec98 WITH VALIDATION;

이제 N OV 9 8과 DEC98 분할 영역과 관련된 위치 표시자 데이터 세그먼트는AC C O U N T S _ N OV 9 8과 ACCOUNTS_DEC98 테이블과 관련된 데이터 세그먼트와 교환되었습니다

3 . ACCOUNTS 뷰를 재정의합니다.

CREATE OR REPLACE VIEW accountsSELECT * FROM accounts_jan98UNION ALLSELECT * FROM accounts_feb_98

UNION ALL...UNION ALL

SELECT * FROM accounts_new PARTITION (nov98)UNION ALL

SELECT * FROM accounts_new PARTITION (dec98);

4 . 원래 N OV 9 8과 DEC98 분할 영역에 첨부되었던 위치 표시자 세그먼트를 소유한AC C O U N T S _ N OV 9 8과 ACCOUNTS_DEC98 테이블을삭제합니다.

5 . U N I O NALL 뷰의 모든 테이블이 분할 영역으로 변환되면 뷰를 삭제하고 삭제된뷰 이름으로 분할된 영역의 이름을 바꿉니다.

분할된 테이블과 인덱스 관리 1 3 - 1 9

분할 영역 유지 관리

DROP VIEW accounts;RENAME accounts_new TO accounts;

참조: 이 단원에서 설명하는 명령문의 구문 및 사용에 대한 자세한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

인덱스 분할 영역 재구축

A LTER TA B L E. . . D ROP PA RT I T I O N과 같은 일부 작업은 글로벌 인덱스의 모든분할 영역을 사용할 수 없음으로 표시합니다. 글로벌 인덱스 분할 영역은 2가지 방법으로 재구축할 수 있습니다.

1 . A LTER INDEX...REBUILD PA RTITION 문을 실행하여 각 분할 영역을 재구축합니다. (동시에 재구축할 수 있습니다. )

2 . 인덱스를 삭제한 다음 재생성합니다.

주: 테이블은 한 번만 스캔되므로 이 방법이 더욱 효과적입니다.

기록 테이블에서 시간 창 이동

기록 테이블은 일정 기간에 걸친 기업의 업무 트랜잭션을 설명합니다. 기록 테이블은영업, 회계, 주문과 같은 기본 정보가 포함되는 기본 테이블이 될 수 있습니다. 또한기록 테이블은 G ROUP BY, AV E R AGE 또는 C O U N T와 같은 작업을 통해 기본정보에서 파생된 요약 정보를 포함하는 롤업 테이블이 될 수도 있습니다.

기록 테이블에서의 시간 간격은 롤링 창입니다. DBA는 정기적으로 가장 오래된 트랜잭션을 설명하는 행 집합을 삭제하고, 교대로 가장 최근 트랜잭션을 설명하는 행집합을 위한 공간을 할당합니다. 예를 들어, 1995년 4월 3 0일의 업무 종료 시 D B A는 1 9 9 4년 4월의 트랜잭션을 설명하는 행(및 인덱스 입력 항목 지원)을 삭제하고,1 9 9 5년 4월의 트랜잭션을 위한 공간을 할당합니다.

기록 테이블에서 시간 창 이동 이제 특정 예를 살펴봅시다. 기록 데이터 1년치에 이번 달의 주문이 추가된 1 3달의 트랜잭션을 포함하는 ORDER 테이블이 있습니다. 각분할 영역이 속하는 테이블스페이스로 O R D E R _ y y m m이라는 각 달에 대한 분할 영역이 있습니다.

ORDER 테이블에는 주문 번호에 대한 지역적이고 접두어가 있는 고유한 인덱스O R D E R _ I X _ O N U M과, 공급자 번호에 대한 지역적이고, 접두어가 없는 인덱스O R D E R _ I X _ S U P P, 두 개의 로컬 인덱스가 있습니다. 로컬 인덱스 분할 영역은 기

1 3 - 2 0 Oracle8i 관리자 설명서

분할 영역 유지 관리

본 테이블과 일치하는 접미어로 명명됩니다. 또한 고객 이름에 대한 고유한 글로벌인덱스인 O R D E R _ I X _ C U S T가 있습니다. ORDER_IX_CUST에는 각각 영문자의1 / 3을 담당하는 3개의 분할 영역이 있습니다. 따라서 1 9 9 4년 1 0월 3 1일의 O R D E R에 대한 시간 창은 다음과 같이 변경됩니다.

1 . 가장 오래된 시간 간격의 데이터를 백업합니다.

ALTER TABLESPACE ORDER_9310 BEGIN BACKUP;ALTER TABLESPACE ORDER_9310 END BACKUP;

2 . 가장 오래된 시간 간격의 분할 영역을 삭제합니다.

ALTER TABLE ORDER DROP PARTITION ORDER_9310;

3 . 분할 영역을 가장 최근의 시간 간격에 추가합니다.

ALTER TABLE ORDER ADD PARTITION ORDER_9411;

4 . 글로벌 인덱스를 삭제하고 재생성합니다.

ALTER INDEX ORDER DROP PARTITION ORDER_IX_CUST;ALTER INDEX REBUILD PARTITION ORDER_IX_CUST;

다단계 유지 관리 작업 중 응용 프로그램 정지

일반적으로 O ra c l e은 D M L, DDL, 유틸리티 등의 작업이 A LTER TA B L E. . .D ROP PA RT I T I O N과 같은 개별 DDL 문을 방해하지 않도록 충분한 잠금을 획득합니다. 그러나 분할 영역 유지 관리 작업이 여러 단계를 필요로 하는 경우 응용 프로그램(또는 다른 유지 관리 작업)이 진행 중인 다단계 작업을 방해하지 않도록 보장하는것은 D B A의 책임입니다.

예를 들어, ORDER 테이블에 참조 무결성 제약 조건이 있고 분할 영역 삭제를 위해해당 제약 조건을 비활성화하지 않으려고 합니다. 대신 이전 단원의 2단계를 다음으로 대체할 수 있습니다.

DELETE FROM ORDER WHERE ODATE < TO_DATE( 01-NOV-93 );ALTER TABLE ORDER DROP PARTITION ORDER_9310;

모든 응용 프로그램에 사용되는 A P P L I CATION 롤에서 액세스 권한을 철회하여DELETE 단계와 D ROP PA RTITION 단계 사이에 O R D E R에 새로운 행이 삽입되지 않도록 할 수 있습니다. 또한 야간이나 주말에는 그에 맞게 잘 정의된 일괄처리 창에서 모든 사용자 레벨 응용 프로그램을 계속 실행할 수도 있습니다.

분할된 테이블과 인덱스 관리 1 3 - 2 1

분할 영역 유지 관리

1 3 - 2 2 Oracle8i 관리자 설명서

분할 영역 유지 관리

14테이블 관리

이 장에서는 테이블 관리에 대한 다양한 측면을 설명하며 다음 내용을 다룹니다.

■ 테이블 관리에 대한 지침 사항

■ 테이블 생성

■ 테이블 변경

■ 테이블의 저장 영역 직접 할당

■ 테이블 삭제

■ 인덱스 구성 테이블

이 장에서 설명하는 여러 작업을 시도하기 전에 1 2장“스키마 객체 관리에 대한 지침 사항”에서 다룬 개념을 잘 알고 있어야 합니다.

테이블 관리 1 4 - 1

테이블 관리에 대한 지침 사항

이 단원에서는 테이블 관리 시 수행해야 하는 지침 사항에 대해 설명하며 다음 내용을 다룹니다.

■ 테이블 생성 전 설계

■ 데이터 블록 영역이 사용되는 방법 지정

■ 트랜잭션 입력 항목 매개변수 지정

■ 각 테이블의 위치 지정

■ 테이블 생성 병렬화

■ U N R E C OVERABLE 테이블 생성 시 고려 사항

■ 테이블 크기 측정 및 저장 영역 매개변수 설정

■ 대규모 테이블 계획

■ 테이블 제한 사항

테이블 관리가 가능한 한 쉽게 이루어지도록 이 지침 사항을 수행합니다.

테이블 생성 전 설계

일반적으로 응용 프로그램 개발자는 테이블을 포함한 응용 프로그램 요소를 설계해야합니다. 데이터베이스 관리자는 응용 프로그램의 운용 방법과 사용할 데이터 유형 정보 등 응용 프로그램 개발자로부터 얻은 정보에 준하여 저장 영역 매개변수를 설정하고 테이블에 대한 클러스터를 정의해야 합니다.

응용 프로그램 개발자와 작업하면서 다음 사항이 이루어지도록 각 테이블을 조심스럽게 계획합니다.

■ 테이블의 일반화

■ 각 열에 적합한 데이터 유형

■ 저장 영역 절약을 위해 널을 허용하는 열을 마지막으로 정의

■ 저장 영역을 절약하고 SQL 문 수행을 최적화하기 위해 가능한 경우 테이블 클러스터화

1 4 - 2 Oracle8i 관리자 설명서

테이블 관리에 대한 지침 사항

데이터 블록 영역이 사용되는 방법 지정

각 테이블 생성 중에 P C T F R E E와 PCTUSED 매개변수를 지정하여 영역 사용의 효율성 및 테이블 데이터 세그먼트의 데이터 블록에 있는 현재 데이터를 갱신하기 위해예약하는 영역의 양에 영향을 줄 수 있습니다.

참조: P C T F R E E와 PCTUSED 지정에 대한 내용은 12-2 페이지“데이터 블록의 영역 관리”를 참조하십시오.

트랜잭션 입력 항목 매개변수 지정

각 테이블 생성 중에 I N I T R A N S와 MAXTRANS 매개변수를 지정하여 테이블 데이터 세그먼트의 데이터 블록에 있는 트랜잭션 입력 항목에 대한 영역의 초기 할당량과 최대 할당량을 결정합니다.

참조: I N I T R A N S와 MAXTRANS 지정에 대한 내용은 12-7 페이지“저장 영역 매개변수 설정”을 참조하십시오.

각 테이블의 위치 지정

적합한 권한과 테이블스페이스 할당량이 있으면 현재 온라인 상태인 테이블스페이스에 새 테이블을 생성할 수 있습니다. 따라서 새 테이블을 저장할 테이블스페이스를식별하려면 C R E ATE TABLE 문에 TA B L E S PACE 옵션을 지정해야 합니다.

C R E ATE TABLE 문에서 테이블스페이스를 지정하지 않으면 테이블은 기본 테이블스페이스에 생성됩니다.

새 테이블을 포함할 테이블스페이스를 지정할 때 선택한 내용을 잘 이해해야 합니다.각 테이블 생성 중에 테이블스페이스를 제대로 지정하면 다음과 같은 이점이 있습니다.

■ 데이터베이스 시스템의 성능이 향상됩니다.

■ 데이터베이스 관리에 필요한 시간이 감소됩니다.

다음은 스키마 객체의 잘못된 저장 영역 위치가 데이터베이스에 미치는 영향을 나타낸 예입니다.

■ 사용자 객체를 SYSTEM 테이블스페이스에 생성하면 O racle 성능이 저하될 수있습니다. 데이터 딕셔너리 객체와 사용자 객체가 동일한 데이터 파일에서 충돌하기 때문입니다.

■ 응용 프로그램과 관련된 테이블이 다양한 테이블스페이스에 임의로 저장되면 백업이나 복구 같은 응용 프로그램의 데이터 관리 작업을 완료하는데 필요한 시간이증가될 수 있습니다.

테이블 관리 1 4 - 3

테이블 관리에 대한 지침 사항

참조: 테이블스페이스 지정에 대한 내용은 9-3 페이지“사용자에게 테이블스페이스할당량 지정”을 참조하십시오.

테이블 생성 병렬화

C R E ATE TABLE 명령어의 하위 질의로 생성된 테이블 생성을 병렬화할 수 있습니다. 여러 프로세스로 테이블을 생성하므로 테이블 생성 성능이 향상됩니다.

참조: 병렬 테이블 생성에 대한 자세한 내용은 O racle8i Pa rallel Server Conceptsand Ad m i n i s t ration 설명서를 참조하십시오.

C R E ATE TABLE 명령어에대한 내용은 O racle8i SQL 참조서를참조하십시오.

U N R E C OVERABLE 테이블 생성 시 고려 사항

복구할 수 없는 테이블 생성 시 필요한 리두 로그 기록이 생성되지 않으므로 복구할수 없는 테이블을 생성할 때 아카이브된 로그에서 테이블을 복구할 수 없습니다. 따라서 테이블이 손실되지 않게 하려면 테이블이 생성된 후에 백업해야 합니다. 임시로사용할 목적으로 테이블을 생성하는 것과 같은 일부 상황에서는 이러한 예방책이 필요하지 않습니다.

C R E ATE TA B L E...AS SELECT 문의 하위 질의로 테이블을 생성할 때 U N R E -C OV E R A B L E을 지정하여 복구할 수 없는 테이블을 생성할 수 있습니다. 그러나 이후 삽입된 행은 복구할 수 있습니다. 실제로 명령문이 완료되면 수행될 모든 명령문은 완전히 복구할 수 있습니다.

복구할 수 없는 테이블을 생성하면 다음과 같은 이점이 있습니다.

■ 리두 로그 파일의 영역이 절약됩니다.

■ 테이블 생성 시간이 감소됩니다.

■ 대규모 테이블의 병렬 생성 성능이 향상됩니다.

일반적으로 소규모 테이블보다는 대규모의 복구할 수 없는 테이블을 생성하는 것이상대적으로 성능이 훨씬 향상됩니다. 복구할 수 없는 소규모 테이블을 생성하면 테이블 생성 시간에 큰 영향을 주지 못합니다. 그러나 대규모 테이블에서는 특히 테이블생성을 병렬화할 때 성능이 크게 향상됩니다.

1 4 - 4 Oracle8i 관리자 설명서

테이블 관리에 대한 지침 사항

테이블 크기 측정 및 저장 영역 매개변수 설정

테이블을 생성하기 전에 크기를 측정하면 다음과 같은 이점이 있습니다.

■ 의도한 데이터베이스를 보유하는데 필요한 디스크 영역의 양을 결정하기 위해 테이블 크기와 인덱스, 롤백 세그먼트, 리두 로그 파일의 크기를 측정한 값을 합하여 사용할 수 있습니다. 이 측정치를 가지고 올바른 하드웨어를 구매하고 기타 사항을 결정할 수 있습니다.

■ 테이블이 사용할 디스크 영역을 잘 관리하기 위해 각각의 테이블 크기를 측정하여사용할 수 있습니다. 테이블을 생성할 때 적합한 저장 영역 매개변수를 설정하고테이블을 사용할 응용 프로그램의 입출력 성능을 향상시킬 수 있습니다.

예를 들어, 테이블을 생성하기 전에 테이블의 최대 크기를 측정한다고 합시다. 테이블을 생성한 후 저장 영역 매개변수를 설정하면 테이블의 데이터 세그먼트에 더적은 확장 영역이 할당되며 모든 테이블 데이터는 어느 정도 연속적인 디스크 영역에 저장됩니다. 이는 테이블과 관련된 디스크 입출력 작업에 필요한 시간을 감소시킵니다.

생성 전 테이블 크기 측정 여부에 관계없이 클러스터화되지 않은 각 테이블을 생성할때는 명시적으로 저장 영역 매개변수를 설정할 수 있습니다. (클러스터화된 테이블은자동으로 클러스터의 저장 영역 매개변수를 사용합니다.) 테이블을 생성하고 이후 이테이블을 변경할 때 명시적으로 설정하지 않은 저장 영역 매개변수는 테이블이 있는테이블스페이스에 설정된 해당 기본 저장 영역 매개변수를 자동으로 사용합니다.

테이블의 데이터 세그먼트 확장 영역을 위해 저장 영역 매개변수를 명시적으로 설정하면 많은 수의 작은 확장 영역보다는 적은 수의 큰 확장 영역에 테이블 데이터를 저장하도록 하십시오.

대규모 테이블 계획

테이블과 확장 영역의 물리적 크기에는 제한이 없습니다. MAXEXTENTS에UNLIMITED 키워드를 지정하여 큰 객체를 계획하는 것을 단순화할 수 있고, 낭비되는 영역과 단편화를 줄일 수 있으며 영역을 더욱 효과적으로 재사용할 수 있습니다.그러나 O ra c l e은 확장 영역 수를 무제한으로 허용하지만 테이블의 확장 영역 수가 매우 커지면 테이블을 필요로 하는 작업을 수행할 때 성능에 영향을 주게 됩니다.

주: 허용된 블록의 최대값보다 큰 M A X E X T E N T S를 갖기 위해 데이터 딕셔너리 테이블을 변경할 수는 없습니다.

테이블 관리 1 4 - 5

테이블 관리에 대한 지침 사항

데이터베이스에 그러한 테이블이 있다면 다음 사항을 고려하십시오.

인덱스에서테이블분리 인덱스를 다른 객체로부터 별도의 테이블스페이스, 가능하다면 별도의 디스크에 놓습니다. 매우 큰 테이블에서 제약 조건을 활성화하거나 비활성화할 때 또는 테이블을 재생성할 때 인덱스를 삭제하거나 재생성하면 별도의 테이블스페이스로 분리된 인덱스는 다른 객체를 포함하는 테이블스페이스의 인덱스보다 쉽게 연속적인 영역을 찾을 수 있습니다.

충분한임시영역할당 매우 큰 테이블의 데이터에 액세스하는 응용 프로그램이 대규모정렬을 수행할 경우 대규모 임시 세그먼트에 대해 충분한 영역이 있어야 하며 사용자는 이 영역에 액세스할 수 있어야 합니다. (임시 세그먼트는 항상 테이블스페이스의기본 S T O R AGE 설정을 사용합니다. )

테이블 제한 사항

테이블을 생성하기 전에 다음 제한 사항을 유의하십시오.

■ 새 객체 유형을 포함하는 테이블은 O racle8 이전의 데이터베이스로 임포트될 수없습니다.

■ 원래 데이터가 데이터베이스에 있으면 유형 및 확장 영역 테이블을 다른 스키마로이동할 수 없습니다.

■ 다른 스키마에서 동일한 이름을 가진 기존의 테이블과 엑스포트한 테이블을 병합할 수 없습니다.

O ra c l e은 테이블이 가질 수 있는 열 수 또는 객체 유형이 가질 수 있는 속성 수의 총합을 제한합니다. (이러한 제한에 대해서는 O racle8i SQL 참조서를 참조하십시오. )사용자 정의 유형 데이터를 포함하는 테이블을 생성하는 경우 O ra c l e은 사용자 정의유형 열을 사용자 정의 유형 데이터를 저장하는 관계 열에 매핑합니다. 이러한“숨겨진”관계 열은 DESCRIBE 테이블 문에서는 볼 수 없으며 SELECT* 문이 반환하지않습니다. 따라서 객체 테이블, REF 열을 가진 관계 테이블, 가변 배열, 중첩된 테이블 또는 객체 유형을 생성하는 경우 O ra c l e이 사용자 정의 유형 데이터를 저장하도록 숨겨진 열을 생성하므로 O ra c l e이 실제로 테이블을 위해 생성하는 열 수의 총합은사용자가 지정하는 수보다 클 수 있습니다. 다음 수식은 사용자 정의 유형 데이터를가진 테이블을 위해 생성된 열 수의 총합을 결정합니다.

객체 테이블의 열 수

num_columns(object_table) =num_columns(object_identifier)

+ num_columns(row_type)+ number of top-level object columns in the object type of table+ num_columns(object_type)

1 4 - 6 Oracle8i 관리자 설명서

테이블 관리에 대한 지침 사항

관계 테이블의 열 수

num_columns(relational_table) =number of scalar columns in the table

+ number of object columns in the table+ SUM [num_columns(object_type(i))] i= 1 -> n+ SUM [num_columns(nested_table(j))] j= 1 -> m+ SUM [num_columns(varray(k))] k= 1 -> p+ SUM [num_columns(REF(l))] l= 1 -> q

where in the given relational tableobject_type(i) is the ith object type column and

n is the total number of such object type columnsnested_table(j) is the jth nested_table column and

m is the total number of such nested table columnsvarray(k) is the kth varray column and

p is the total number of such varray columns,REF(l) is the lth REF column and

q is the total number of such REF columns.

num_columns(object identifier) = 1num_columns(row_type) = 1num_columns(REF) = 1, if REF is unscoped

= 1, if the REF is scoped a n d the objectidentifier is system generated a n d the REFhas no referential constraint

= 2, if the REF is scoped a n d the objectidentifier is system generated a n d the REFhas a referential constraint

= 1 + number of columns in the primary key,if the object identifier is primary keyb a s e d

num_columns(nested_table) = 2num_columns(varray) = 1num_columns(object_type) = number of scalar attributes in the object

t y p e+ SUM[num_columns(object_type(i))] i= 1 -> n+ SUM[num_columns(nested_table(j))] j= 1 -> m+ SUM[num_columns(varray(k))] k= 1 -> p+ SUM[num_columns(REF(l))] l= 1 -> q

주어진 객체 유형에서

object_type(i) is an embedded object type attribute andn is the total number of such object type attributes,

nested_table(j) is an embedded nested_table attribute andm is the total number of such nested table attributes,

varray(k) is an embedded varray attribute andp is the total number of such varray attributes,

REF(l) is an embedded REF attribute and

테이블 관리 1 4 - 7

테이블 관리에 대한 지침 사항

q is the total number of such REF attributes.

예 1

CREATE TYPE physical_address_type AS OBJECT(no CHAR(4), street CHAR(31), city CHAR(5), state CHAR(3));

CREATE TYPE phone_type AS VARRAY(5) OF CHAR(15);CREATE TYPE electronic_address_type AS OBJECT

(phones phone_type, fax CHAR(12), email CHAR(31));CREATE TYPE contact_info_type AS OBJECT

(physical_address physical_address_type,electronic_address electronic_address_type);

CREATE TYPE employee_type AS OBJECT(eno NUMBER, ename CHAR(60),contact_info contact_info_type);

CREATE TABLE employee_object_table OF employee_type;

사원 객체 테이블에서 열 수를 계산하려면 우선 e m p l oy e e _ ty p e에 대해 필요한 열 수를 계산해야 합니다.

num_columns(physical_address_type) =number of scalar attributes = 4

num_columns(phone_type) =num_columns(varray) = 1

num_columns(electronic_address_type) =number of scalar attributes

+ num_columns(phone_type)= 2 + 1 = 3

num_columns(contact_info_type) =num_columns(physical_address_type)

+ num_columns(electronic_address_type)= 3 + 4 = 7

num_columns(employee_type) =number of scalar attributes

+ num_columns(contact_info_type)= 2 + 7 = 9

num_columns (employee_object_table) =num_columns(object_identifier)

+ num_columns(row_type)+ number of top level object columns in employee_type+ num_columns(employee_type)= 1 + 1 + 1 + 9 = 12

예 2

CREATE TABLE employee_relational_table (einfo employee_type);

num_columns (employee_relational_table) =

1 4 - 8 Oracle8i 관리자 설명서

테이블 관리에 대한 지침 사항

number of object columns in table+ num_columns(employee_type)= 1 + 9 = 10

예 3

CREATE TYPE project_type AS OBJECT (pno NUMBER, pname CHAR(30),budget NUMBER);

CREATE TYPE project_set_type AS TABLE OF project_type;

CREATE TABLE department(dno NUMBER, dname CHAR(30),mgr REF employee_type REFERENCES employee_object_table,project_set project_set_type)

NESTED TABLE project_set STORE AS project_set_nt;

num_columns(department) =number of scalar columns

+ num_columns(mgr)+ num_columns(project_set)= 2 + 2 + 2 = 6

테이블 생성

스키마에서 새 테이블을 생성하려면 C R E ATE TABLE 시스템 권한이 있어야 합니다. 다른 사용자의 스키마에서 테이블을 생성하려면 C R E ATE ANY TABLE 시스템 권한이 있어야 합니다. 또한 테이블 소유자는 테이블을 포함하는 테이블스페이스의 할당량이나 UNLIMITED TA B L E S PACE 시스템 권한이 있어야 합니다.

SQL 문 C R E ATE TA B L E을 사용하여 테이블을 생성합니다. SCOTT이라는사용자가 다음 명령문을 실행하면 스키마에 E M P라는 클러스터화되지 않은 테이블이 생성되고 이 테이블은 USERS 테이블스페이스에저장됩니다.

CREATE TABLE emp (empno NUMBER(5) PRIMARY KEY,ename VARCHAR2(15) NOT NULL,job VARCHAR2(10),mgr NUMBER(5),hiredate DATE DEFAULT (sysdate),sal NUMBER(7,2),comm NUMBER(7,2),deptno NUMBER(3) NOT NULL

CONSTRAINT dept_fkey REFERENCES dept)PCTFREE 10PCTUSED 40TABLESPACE users

테이블 관리 1 4 - 9

테이블 생성

STORAGE ( INITIAL 50KNEXT 50KMAXEXTENTS 10PCTINCREASE 25 );

무결성 제약 조건은 테이블의 여러 열에서 정의되며 몇 가지 저장 영역 설정은 테이블에 대해 명시적으로 지정됩니다.

참조: 시스템 권한에 대한 자세한 내용은 2 4장“사용자 권한과 롤 관리”를, 테이블스페이스 할당량에 대한 자세한 내용은 2 3장“사용자와 자원 관리”를 참조하십시오.

테이블 변경

테이블을 변경하려면 스키마에 테이블이 있거나 테이블에 대해 A LTER 객체 권한 또는 A LTER ANY TABLE 시스템 권한이 있어야 합니다.

다음과 같은 경우에 오라클 데이터베이스의 테이블을 변경할 수 있습니다.

■ 테이블에 하나 이상의 열을 추가하거나 삭제할 경우

■ 테이블에 무결성 제약 조건을 추가하거나 수정할 경우

■ 기존 열 정의(데이터 유형, 길이, 기본값 및 NOT NULL 무결성 제약 조건)를수정할 경우

■ 데이터 블록의 영역 사용 매개변수( P C T F R E E, PCTUSED)를 수정할 경우

■ 트랜잭션 입력 항목 설정( I N I T R A N S, MAXTRANS)을 수정할 경우

■ 저장 영역 매개변수( N E X T, PCTINCREASE)를 수정할 경우

■ 테이블과 관련된 무결성 제약 조건이나 트리거를 활성화하거나 비활성화할 경우

■ 테이블과 관련된 무결성 제약 조건을 삭제할 경우

기존 열 길이를 늘릴 수 있습니다. 그러나 테이블에 행이 있으면 열을 줄일 수 없습니다. 또한 CHAR 데이터 유형의 열 길이를 늘리기 위해 테이블을 수정하는 경우 이작업은 시간이 걸리며 특히 많은 행을 포함하는 경우에는 상당한 양의 추가 저장 영역이 필요할 수 있습니다. 각 행의 CHAR 값은 새 열 길이를 만족하기 위해 빈 칸으로 채워져야 하기 때문입니다.

테이블의 데이터 블록 영역 사용 매개변수 P C T F R E E와 P C T U S E D를 변경하면 테이블에 할당되었거나 이후에 할당되는 블록을 포함하는 테이블에 의해 사용되는 모든 데이터 블록에 새로운 설정이 적용됩니다. 그러나 테이블에 할당된 블록은 영역 사용 매

1 4 - 1 0 Oracle8i 관리자 설명서

테이블 변경

개변수가 변경될 때 즉시 재구성되는 것이 아니라 변경 후 필요에 따라 재구성됩니다.

테이블의 트랜잭션 입력 항목 설정 I N I T R A N S와 M A X T R A N S를 변경하면I N I T R A N S의 새로운 설정은 이후에 테이블에 할당되는 데이터 블록에만 적용됩니다. 그러나 M A X T R A N S의 새로운 설정은 테이블의 모든 블록 즉, 할당되었거나 이후에 할당되는 모든 블록에 적용됩니다.

저장 영역 매개변수 I N I T I A L과 M I N E X T E N T S는 변경될 수 없습니다. 다른 저장영역 매개변수(예를 들어, NEXT, PCTINCREASE)에대한 모든 새로운 설정은 이후에 테이블에 할당되는 확장 영역에만 영향을 줍니다. 다음에 할당되는 확장 영역의크기는 N E X T와 P C T I N C R E A S E의 현재 값에 의해 결정되며 이전 매개변수 값을따르지 않습니다.

SQL 명령어 A LTER TA B L E을 사용하여 테이블을 변경할 수 있습니다. EMP 테이블을 변경하는 명령문은 다음과 같습니다.

ALTER TABLE empPCTFREE 30PCTUSED 60;

경고: 테이블을 변경하기 전에 변경 결과에 대해 잘 알아야 합니다.

새 열이 테이블에 추가되면 처음에 열은 널입니다. 테이블에 행이 없는경우에만 테이블에 NOT NULL 제약 조건을 가지는 열을 추가할 수 있습니다.

뷰 또는 PL/SQL 프로그램 단위가 기본 테이블에 종속된 경우 기본 테이블을 변경할 때 종속 객체에 영향을 줄 수 있습니다.

참조: 종속성 관리 방법에 대한 내용은 20-23 페이지“객체 종속성 관리”를 참조하십시오.

테이블의 저장 영역 직접 할당

필요할 때마다 동적으로 테이블의 데이터 세그먼트에 대한 추가 확장 영역을 할당할수 있습니다. 그러나 테이블의 추가 확장 영역을 명시적으로 할당하고자 할 수도 있습니다. 예를 들어, Oracle Pa rallel Serv e r를 사용할 때 테이블의 확장 영역은 특정 인스턴스에 대해 명시적으로 할당될 수 있습니다.

SQL 명령어 A LTER TA B L E에 A L L O CATE EXTENT 옵션을 사용하여 테이블에새로운 확장 영역을 할당할 수 있습니다.

테이블 관리 1 4 - 1 1

테이블의 저장 영역 직접 할당

참조: A L L O CATE EXTENT 옵션에 대한 내용은 O racle8i Pa rallel Serv e rConcepts and Ad m i n i s t ra t i o n을 참조하십시오.

테이블 삭제

테이블을 삭제하려면 테이블이 스키마에 포함되어 있거나 D ROP ANY TABLE 시스템 권한이 있어야 합니다.

더 이상 필요 없는 테이블을 삭제하려면 SQL 명령어 D ROP TA B L E을 사용하십시오. EMP 테이블을 삭제하는 명령문은 다음과 같습니다.

DROP TABLE emp;

삭제할 테이블이 다른 테이블의 외래 키로 언급되는 기본 키나 고유 키를 포함하며하위 테이블의 FOREIGN KEY 제약 조건을 삭제하려면 다음과 같이 D RO PTABLE 명령어에CA S CADE 옵션을 포함시킵니다.

DROP TABLE emp CASCADE CONSTRAINTS;

경고: 테이블을 삭제하기 전에 삭제 결과에 대해 잘 알아야 합니다.

■ 테이블을 삭제하면 데이터 딕셔너리로부터 테이블 정의가 제거됩니다. 테이블의 모든 행을 더 이상 액세스할 수 없습니다.

■ 테이블과 관련된 모든 인덱스와 트리거는 삭제됩니다.

■ 삭제된 테이블에 종속된 모든 뷰와 PL/SQL 프로그램 단위는 남아있지만 사용할 수 없게 됩니다. 이러한 종속성 관리 방법에 대한 내용은 20-23 페이지“객체종속성 관리”를 참조하십시오.

■ 삭제된 테이블의 모든 동의어는 남아 있지만 사용할 때 오류를 돌려줍니다.

■ 삭제된 클러스터화되지 않은 테이블에 할당된 모든 확장 영역은 테이블스페이스의 빈 영역으로 되돌려지며 새 확장 영역이나 새 객체가 필요한 다른 객체에 의해 사용할 수 있게 됩니다. 클러스터화된테이블에 해당되는 모든 행은 클러스터 블록에서 삭제됩니다.

1 4 - 1 2 Oracle8i 관리자 설명서

테이블 삭제

열 삭제

테이블에 있는 행에서 열을 삭제하여 데이터를 엑스포트하거나 임포트할 필요 없이사용되지 않지만 잠재적으로 영역을 차지하는 열을 정리하고 인덱스와 제약 조건을재생성할 수 있습니다.

더 이상 필요하지 않은 열을 삭제하거나 시스템 자원에 대한 요구가 적어질 경우에삭제되도록 열을 표시할 수 있습니다.

다음은 테이블 t 1에서 사용되지 않는 열을 삭제하는 명령문입니다.

ALTER TABLE t1 DROP UNUSED COLUMNS;

제한 사항

열 삭제 작업 시 다음과 같은 제한 사항이 있습니다.

■ 객체 유형 테이블에서 열을 삭제할 수 없습니다.

■ 중첩된 테이블에서 열을 삭제할 수 없습니다.

■ 테이블에 있는 모든 열을 삭제할 수 없습니다.

■ 분할된 키 열을 삭제할 수 없습니다.

■ SYS 소유의 테이블에서 열을 삭제할 수 없습니다.

■ 상위 키 열을 삭제할 수 없습니다.

참조: 테이블에서 열을 삭제하는데 사용되는 구문에 대한 자세한 내용은 O ra c l e 8 iSQL 참조서를 참조하십시오.

인덱스 구성 테이블

이 단원에서는 인덱스 구성 테이블 관리에 대해 설명하며 다음 내용을 다룹니다.

■ 인덱스 구성 테이블이란

■ 인덱스 구성 테이블 생성

■ 인덱스 구성 테이블 유지 관리

■ 인덱스 구성 테이블 분석

■ 인덱스 구성 테이블에 ORDER BY 절 사용

■ 인덱스 구성 테이블을 일반 테이블로 변환

테이블 관리 1 4 - 1 3

인덱스 구성 테이블

인덱스 구성 테이블이란

인덱스 구성 테이블은 데이터 행이 기본 키에 따라 그룹화된 테이블입니다. 이러한클러스터링은 B* 트리 인덱스를 사용하여 수행됩니다. B* 트리 인덱스는 기본 키와키가 아닌 열이 함께 저장된다는 점에서 B 트리 인덱스와는 다른 특별한 유형의 인덱스 트리입니다. 인덱스 구성 테이블의 속성은 인덱스에 대한 물리적 데이터 구조 내에 모두 저장됩니다.

인덱스 구성 테이블을 사용하는 이유

인덱스 구성 테이블은 정확한 일치 및 범위 검색을 포함한 질의를 위해 테이블 데이터에 키를 사용하는 보다 빠른 액세스를 제공합니다. 별도의 테이블 저장 영역이 없으므로 새로운 행 추가, 행 갱신, 행 삭제 등의 작업을 통해 테이블 데이터를 변경하면 인덱스 구조만 갱신됩니다.

또한 키 열이 테이블과 인덱스에 중복되지 않으므로 저장 영역 요구 사항이 줄어듭니다. 나머지 키가 아닌 열은 인덱스 구조에 저장됩니다.

인덱스 구성 테이블은 기본 키에 준하여 데이터를 검색해야 하는 응용 프로그램의 경우에 특히 유용합니다. 또한 인덱스 구성 테이블은 응용 프로그램별 인덱스 구조를모델링하는데 적합합니다. 예를 들어, 텍스트와 이미지, 오디오 데이터가 포함된 컨텐트 기준 정보 검색 응용 프로그램은 인덱스 구성 테이블을 사용하여 효과적으로 모델링할 수 있는 반전 인덱스를 필요로 합니다.

참조: 인덱스 구성테이블에대한자세한 내용은 O racle8i 개념설명서를참조하십시오.

인덱스 구성 테이블과 일반 테이블의 차이점

인덱스 구성 테이블은 하나 이상의 열에 기본 키 인덱스를 가진 일반 테이블과 유사합니다. 그러나 테이블과 B* 트리 인덱스를 위해 별도로 두 개의 저장 영역을 유지관리하는 대신 인덱스 구성 테이블에서는 테이블의 기본 키와 다른 열 값을 포함한하나의 B* 트리 인덱스만을 유지 관리합니다.

1 4 - 1 4 Oracle8i 관리자 설명서

인덱스 구성 테이블

그림 14-1 일반 테이블 구조와 인덱스 구성 테이블 구조

인덱스 구성 테이블은 기본 키나 기본 키에 알맞은 접두어가 되는 다른 키를 사용하여 데이터를 액세스하기에 적합합니다. 또한 키 값과 ROW I D를 포함한 별도의 인덱스 구조가 생성되지 않으므로 키 값이 중복되지 않습니다. 표 1 4 - 1은 인덱스 구성 테이블과 일반 테이블의 차이점에 대한 요약입니다.

표 14-1 인덱스 구성 테이블과 일반 테이블 비교

테이블 관리 1 4 - 1 5

인덱스 구성 테이블

일반 테이블과 인덱스 인덱스구성 테이블

인덱스

FINANCE ROWID INVEST ROWID

테이블

재정 5543

투자 6879

잔고 4254

교환 3 3 4 5

테이블

재정

잔고

인덱스

STOCK ROWIDTRADE ROWID

인덱스

STOCK 6874T R A D E 5 5 4 3

인덱스화된 데이터는인덱스에저장됩니다.

인덱스

FINANCE 3345INVEST 4254

FINANCE S T O C K

일반 테이블

RO W I D는 행을 고유하게 식별합니다. 기본키가 선

택적으로 지정될 수 있습니다.

ROWID 의사열은 물리적 블록 주소를 참조합니다.

보조 인덱스는 물리적 데이터를 저장합니다.

해시 또는 인덱스 클러스터에 저장될 수 있습니다.

인덱스구성 테이블

기본 키는 행을 고유하게 식별합니다. 기본키가 지

정되어야 합니다.

ROWID 의사 열은 기본 키 기준의 논리적 RO W I D

를 참조합니다.

보조 인덱스는 기본 키 기준의논리적 RO W I D를 저

장합니다.

해시 또는 인덱스 클러스터에 저장될수 없습니다.

▶▶

인덱스 구성 테이블 생성

C R E ATE TABLE 문을사용하여 인덱스 구성 테이블을 생성할 수 있으며 이를 위해다음 추가 정보를 제공해야 합니다.

■ 인덱스 구성 테이블임을 나타내는 O RGA N I Z ATION INDEX 규정자

■ 열 제약 조건 절로 지정된 단일 열 기본 키 또는 테이블 제약 조건 절로 지정된다중 열 기본 키. 인덱스 구성 테이블에 대해 기본 키를 지정해야 합니다.

■ 별도의 오버플로우 데이터 세그먼트에 지정된 임계값을 초과하는 행 열 값을 저장하여 B* 트리 인덱스의 고밀도 클러스터링을 보존하기 위해 선택적으로 행 오버플로우를 지정하는 절

행 오버플로우 테이블스페이스는 블록 크기의 백분율로 정의됩니다. 행 크기가 지정된 임계값( P C T T H R E S H O L D )보다 크면 키가 아닌 열 값은 오버플로우 테이블스페이스에 저장됩니다. 즉, 행은 열 경계에서 앞부분과 뒷부분의 둘로 나누어집니다. 앞부분은 지정된 임계값에 맞으며 인덱스 최하위 블록에 키와 함께 저장됩니다. 뒷부분은 하나 이상의 행 부분으로 오버플로우 영역에 저장됩니다. 따라서 인덱스 입력 항목에는 키 값, 지정된 임계값에 맞는 키가 아닌 열 값, 행의 나머지부분에 대한 포인터가 포함됩니다.

■ 다음은 인덱스 구성 테이블 생성 시 제공해야 하는 정보를 보여주는 예입니다.

CREATE TABLE docindex(token char(20),doc_id NUMBER,token_frequency NUMBER,token_offsets VARCHAR2(512),CONSTRAINT pk_docindex PRIMARY KEY (token, doc_id))

ORGANIZATION INDEX TABLESPACE ind_tbsPCTTHRESHOLD 20

OVERFLOW TABLESPACE ovf_tbs;

이 예는 O RGA N I Z ATION INDEX 규정자가 인덱스 구성 테이블을 지정하는 사항을 보여줍니다. 이때 키 열과 키가 아닌 열은 테이블에 대한 기본 키( t o k e n ,d o c _ i d )를 지정하는 열에 정의된 인덱스에 있습니다.

인덱스 구성 테이블은 객체 유형을 저장할 수 있습니다. 예를 들어, 다음과 같이 객체유형 m y t y p e (예를 들어) 열을 포함하는 인덱스 구성 테이블을 생성할 수 있습니다.

CREATE TABLE iot (c1 NUMBER primary key, c2 mytype)ORGANIZATION INDEX;

1 4 - 1 6 Oracle8i 관리자 설명서

인덱스 구성 테이블

그러나 객체 유형의 인덱스 구성 테이블을 생성할 수 없습니다. 예를 들어, 다음 명령문은 적합하지 않습니다.

CREATE TABLE iot of mytype ORGANIZATION INDEX;

참조: C R E ATE INDEX 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

AS 하위 질의 사용

AS 하위 질의를 사용하여 인덱스 구성 테이블을 생성할 수 있습니다. 이러한 방법으로 인덱스 구성 테이블을 생성하면 PARALLEL 옵션을 사용하여 테이블을 병렬로로드할 수 있습니다.

다음은 일반 테이블 r t에서 행을 선택하여 인덱스 구성 테이블을 병렬로 생성하는 명령문입니다.

CREATE TABLE iot(i primary key, j) ORGANIZATION INDEX PARALLEL (DEGREE 2)AS SELECT * FROM rt;

참조: 인덱스 구성 테이블을 생성하는 구문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

오버플로우 절 사용

앞의 예에서 지정된 오버플로우 절은 블록 크기의 2 0 %를 초과하는 행의 키가 아닌모든 열이 T E X T _ C O L L E C T I O N _ OV E R F L OW 테이블스페이스에 저장된 데이터세그먼트에 있음을 나타냅니다. 키 열은 지정된 임계값에 맞아야 합니다.

키가 아닌 열을 갱신하여 행의 크기가 감소하면 O ra c l e은 갱신되는 행 조각(앞부분또는 뒷부분)을 식별하여 해당하는 행 조각을 다시 작성합니다.

키가 아닌 열을 갱신하여 행의 크기가 증가하면 O ra c l e은 갱신되는 행 조각(앞부분또는 뒷부분)을 식별하여 해당하는 행 조각을 다시 작성합니다. 갱신 대상이 앞부분이면 행 크기를 지정된 임계값 이하로 유지하기 위해 이 조각은 다시 둘로 나누어집니다.

인덱스 최하위 블록에 맞는 키가 아닌 열은 행의 앞부분으로 저장됩니다. 행의 앞부분에는 오버플로우 데이터 세그먼트에 저장되어 있는 다음 행 조각에 행의 앞부분을연결하는 ROWID 필드가 포함되어 있습니다. 크기가 맞지 않는 열만이 오버플로우영역에 저장됩니다.

테이블 관리 1 4 - 1 7

인덱스 구성 테이블

임계값 선택 및 모니터 키 열을 수용할 수 있고 키가 아닌 열도 (자주 액세스하는 경우) 수용할 수 있는 임계값을 선택해야 합니다.

임계값을 선택한 다음 테이블을 모니터하여 지정한 값이 적합한지 확인할 수 있습니다. ANA LYZE TA B L E...LIST CHAINED ROWS 문을 사용하여 임계값보다 큰행의 수와 I D를 결정할 수 있습니다.

참조: A NA LYZE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

I NCLUDING 절 사용 P C T T H R E S H O L D를 지정하는 것 외에도 I N C L U D I N G<column_name> 절을 사용하여 키 열과 같이 저장될 키가 아닌 열을 제어할 수 있습니다. Ora c l e은 지정된 임계값을 초과하지 않으면 키가 아닌 모든 열에서INCLUDING 절에 지정된 열까지 인덱스 최하위 블록에 수용합니다. INCLU-DING 절에 지정되지 않은 모든 키가 아닌 열은 오버플로우 영역에 저장됩니다.

예를 들어, 인덱스 구성 테이블을 생성한 앞의 예를 t o k e n _ o f f s e t s 열 값이 항상오버플로우 영역에 저장되도록 수정할 수 있습니다.

CREATE TABLE docindex(token CHAR(20),doc_id NUMBER,token_frequency NUMBER,token_offsets VARCHAR2(512),CONSTRAINT pk_docindex PRIMARY KEY (token, doc_id))

ORGANIZATION INDEX TABLESPACE ind_tbsPCTTHRESHOLD 20INCLUDING token_frequency

OVERFLOW TABLESPACE ovf_tbs;

최대 t o k e n _ f r e q u e n c y까지의 키가 아닌 열만(이 경우 단일 열만) 키 열 값과 함께 인덱스 최하위 블록에 저장됩니다.

키 압축 사용

키 압축을 사용하여 인덱스 구성 테이블을 생성하면 키 열 접두어 값이 반복적으로발생하지 않도록 합니다.

키 압축은 인덱스 키를 접두어 항목과 접미어 항목으로 세분합니다. 압축은 인덱스블록의 모든 접미어 항목 사이에서 접두어 항목을 공유하여 아카이브됩니다. 이렇게공유하면 영역을 현저하게 절약할 수 있으며 성능은 향상시키면서 인덱스 블록 당 보다 많은 키를 저장할 수 있도록 합니다.

1 4 - 1 8 Oracle8i 관리자 설명서

인덱스 구성 테이블

다음과 같은 경우 COMPRESS 절을 사용하여 키 압축을 활성화할 수 있습니다.

■ 인덱스 구성 테이블 생성

■ 인덱스 구성 테이블 이동

또한 키 열을 접두어 항목과 접미어 항목으로 나누는 방법을 식별하는 접두어 길이(키 열 수와 같은)를 지정할 수 있습니다.

CREATE TABLE iot(i INT, j INT, k INT, l INT, PRIMARY KEY (i, j, k))ORGANIZATION INDEX COMPRESS;

위의 명령문은 다음 명령문과 동일합니다.

CREATE TABLE iot(i INT, j INT, k INT, l INT, PRIMARY KEY(i, j, k))ORGANIZATION INDEX COMPRESS 2;

(1,2,3), (1,2,4), (1,2,7), (1,3,5) (1,3,4), (1,4,4) 값목록의 경우 반복적으로발생하는 (1,2), (1,3)은 압축됩니다.

또한다음과 같이압축에 사용되는기본접두어 길이를 우선적으로적용할 수 있습니다.

CREATE TABLE iot(i INT, j INT, k INT, l INT, PRIMARY KEY (i, j, k))ORGANIZATION INDEX COMPRESS 1;

(1,2,3), (1,2,4), (1,2,7), (1,3,5), (1,3,4), (1,4,4) 값목록의 경우 반복적으로발생하는 1은 압축됩니다.

다음과 같이 압축을 비활성화할 수 있습니다.

ALTER TABLE A MOVE NOCOMPRESS;

참조: 키 압축에 대한 자세한 내용은 O racle8i 개념 설명서와 O racle8i SQL 참조서를 참조하십시오.

인덱스 구성 테이블 유지 관리

인덱스 구성 테이블은 물리적 구조에서만 일반 테이블과 다르며 조작하는 방법은 논리적으로 동일합니다. INSERT, SELECT, DELETE 및U P DATE 문에서 일반 테이블을 사용하는 대신 인덱스 구성 테이블을 사용할 수 있습니다.

인덱스 구성 테이블 변경

A LTER TABLE 문을 사용하여 기본 키 인덱스와 오버플로우 데이터 세그먼트 모두에 대해 물리적 저장 영역 속성을 수정할 수 있습니다. 키워드 OV E R F L OW 이전에지정된 모든 속성은 기본 키 인덱스 세그먼트에 적용할 수 있으며 키워드 OV E R -F L OW 이후에 지정된 모든 속성은 오버플로우 데이터 세그먼트에 적용할 수 있습니

테이블 관리 1 4 - 1 9

인덱스 구성 테이블

다. 예를 들어, 다음과 같이 기본 키 인덱스 세그먼트의 I N I T R A N S를 4로 설정하고데이터 세그먼트 I N I T R A N S의 오버플로우를 6으로 설정할 수 있습니다.

ALTER TABLE docindex INITRANS 4 OVERFLOW INITRANS 6;

P C T T H R E S H O L D와 INCLUDING 열 값을 변경할 수도 있습니다. 새로운 설정값은 다음 작업이 진행되는 동안 행을 앞부분과 오버플로우 뒷부분으로 나누는데 사용됩니다. 예를 들어, PCTTHRESHOLD와 INCLUDING 열 값은 다음과 같이d o c i n d e x 테이블에 대해 변경될 수 있습니다.

ALTER TABLE docindex PCTTHRESHOLD 15 INCLUDING doc_id;

INCLUDING 열을 d o c _ i d로 설정하여 d o c _ i d에 따라 오는 모든 열 즉, t o k e n _f r e q u e n c y와 t o k e n _ o f f s e t s를 오버플로우 데이터 세그먼트에 저장합니다.

오버플로우 데이터 세그먼트를 사용하지 않고 생성된 인덱스 구성 테이블의 경우ADD OV E R F L OW 절을 사용하여 오버플로우 데이터 세그먼트를 추가할 수 있습니다. 예를 들어, d o c i n d e x 테이블이 오버플로우 세그먼트를 가지지 않으면 다음과같이 추가할 수 있습니다.

ALTER TABLE docindex ADD OVERFLOW TABLESPACE ovf_tbs;

참조: A LTER TABLE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

인덱스 구성 테이블 이동(재구축)

인덱스 구성 테이블이 기본적으로 B* 트리 인덱스에 저장되므로 점진적 갱신 결과로단편화가 이루어질 수도 있습니다. 그러나 A LTER TA B L E. . . M OVE 문을 사용하여 인덱스를 재구축하고 이러한 단편화를 줄일 수 있습니다.

다음은 I N I T R A N S를 1 0으로 설정한 후 인덱스 구성 테이블 d o c i n d e x를 재구축하는 명령문입니다.

ALTER TABLE docindex MOVE INITRANS10;

ONLINE 옵션을 사용하여 오버플로우 데이터 세그먼트 온라인 없이 인덱스 구성 테이블을 이동할 수 있습니다. 예를 들어, d o c i n d e x 테이블이 오버플로우 데이터 세그먼트를 가지지 않으면 다음과 같이 온라인 이동을 수행할 수 있습니다.

ALTER TABLE docindex MOVE ONLINE INITRANS 10;

다음은 오버플로우 데이터 세그먼트와 함께 인덱스 구성 테이블 d o c i n d e x를 재구축하는 명령문입니다.

1 4 - 2 0 Oracle8i 관리자 설명서

인덱스 구성 테이블

ALTER TABLE docindex MOVE TABLESPACE ix_tbs OVERFLOW TABLESPACEov_tbs;

이 마지막 명령문에서 인덱스 구성 테이블 i o t는 C 2에 대한 LOB 인덱스와 데이터세그먼트가 재구축되는 동안 이동합니다.

ALTER TABLE iot MOVE LOB (C2) STORE AS (TABLESPACE lob_ts);

참조: M OVE 옵션에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

시나리오: 키 열 갱신

키 열 갱신은 이전 키 값을 가진 행을 삭제하고 새 키 값을 가진 행을 기본 키 순서유지 관리에 적합한 장소에 삽입하는 작업과 논리적으로 동일합니다.

논리적으로 다음 예에서 d e p t _ i d = 2 0, e _ i d = 1 0인 사원 행은 삭제되고 d e p t _ i d =2 3, e _ i d = 1 0인 사원 행이 삽입됩니다.

UPDATE employeesSET dept_id=23WHERE dept_id=20 and e_id=10;

인덱스 구성 테이블 분석

기본 테이블과 같이 인덱스 구성 테이블은 A NA LYZE 문을 사용하여 분석합니다.

ANALYZE TABLE docindex COMPUTE STATISTICS;

A NA LYZE 문은 기본 키 인덱스 세그먼트와 오버플로우 데이터 세그먼트 모두 분석하고 테이블에 대한 물리적 통계는 물론 논리적 통계도 계산합니다.

■ U S E R _ TA B L E S, ALL_TABLES 또는 D B A _ TA B L E S를 사용하여 논리적 통계를 질의할 수 있습니다.

■ U S E R _ I N D E X E S, ALL_INDEXES 또는 D B A _ I N D E X E S를 사용하여 (기본키 인덱스 이름을 사용하여) 기본 키 인덱스 세그먼트의 물리적 통계를 질의할 수있습니다. 예를 들어, 다음과 같이 테이블 do c i n d e x에 대한 기본 키 인덱스 세그먼트의 물리적인 통계를 얻을 수 있습니다.

SELECT * FROM DBA_INDEXES WHERE INDEX_NAME= ’PK_DOCINDEX’;

테이블 관리 1 4 - 2 1

인덱스 구성 테이블

■ U S E R _ TA B L E S, ALL_TABLES 또는 D B A _ TA B L E S를 사용하여 오버플로우데이터 세그먼트에 대한 물리적 통계를 질의할 수 있습니다. IOT_TYPE =‘IOT_ OV E R F L OW’를 검색하여 오버플로우 항목을 식별할 수 있습니다. 예를들어, 다음과 같이 테이블 d o c i n d e x와 관련된 오버플로우 데이터 세그먼트의 물리적 속성을 얻을 수 있습니다.

SELECT * FROM DBA_TABLES WHERE IOT_TYPE=’IOT_OVERFLOW’ andIOT_NAME= ’DOCINDEX’

인덱스 구성 테이블에 ORDER BY 절 사용

ORDER BY 절이 기본 키 열이나 이것의 접두어를 참조하기만 하면 행이 기본 키열에서 정렬되어 반환되므로 최적기는 정렬 작업의 오버헤드를 피합니다.

예를 들어, 다음과 같은 테이블을 생성할 수 있습니다.

CREATE TABLE employees (dept_id INTEGER, e_id INTEGER, e_nameVARCHAR2, PRIMARY KEY (dept_id, e_id)) ORGANIZATION INDEX;

다음 질의는 데이터가 기본 키에서 정렬되므로 정렬 작업의 오버헤드를 피할 수 있습니다.

SELECT * FROM employees ORDER BY (dept_id, e_id);SELECT * FROM employees ORDER BY (dept_id);

그러나 기본 키 열이나 기본 키가 아닌 열의 접미어에 ORDER BY 절이 있으면 정의된 다른 보조 인덱스가 없는 한 추가적인 정렬 작업이 필요합니다.

SELECT * FROM employees ORDER BY (e_id);SELECT * FROM employees ORDER BY (e_name);

인덱스 구성 테이블을 일반 테이블로 변환

O racle IMPORT / E X P O RT 유틸리티 또는 C R E ATE TA B L E...AS SELECT 문을 사용하여 인덱스 구성 테이블을 일반 테이블로 변환할 수 있습니다.

인덱스 구성 테이블을 일반 테이블로 변환하려면 다음과 같이 하십시오.

■ 일반적인 경로를 사용하여 인덱스 구성 테이블 데이터를 엑스포트합니다.

■ 동일한 정의로 일반 테이블 정의를 생성합니다.

1 4 - 2 2 Oracle8i 관리자 설명서

인덱스 구성 테이블

■ 객체 존재 오류가 무시되도록 I G N O R E=y인지 확인하고 인덱스 구성 테이블 데이터를 임포트합니다.

주: 인덱스 구성 테이블을 일반 테이블로 변환하기 전에는 O racle8 이전 버전의 Export 유틸리티를 사용하여 인덱스 구성 테이블을 엑스포트할 수 없습니다.

참조: I M P O RT / E X P O RT 사용에 대한 자세한 내용은 O racle8i Utilities를 참조하십시오.

테이블 관리 1 4 - 2 3

인덱스 구성 테이블

1 4 - 2 4 Oracle8i 관리자 설명서

인덱스 구성 테이블

뷰, 시퀀스 및 동의어 관리 1 5 - 1

15뷰, 시퀀스 및 동의어 관리

이 장에서는 뷰 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 뷰 관리

■ 시퀀스 관리

■ 동의어 관리

이 장에서 설명하는 작업을 시도하기 전에 1 2장“스키마 객체 관리에 대한 지침 사항”에서다룬 개념을 잘 알고 있어야 합니다.

뷰 관리

1 5 - 2 Oracle8i 관리자 설명서

뷰 관리

뷰는 하나 이상의 테이블 또는 다른 뷰에 있는 데이터를 정리하여 표현한 것입니다.질의의 출력을 가져와 하나의 테이블로 취급합니다. 뷰를“저장된질의”나“가상 테이블”로 볼 수도 있습니다. 테이블을 사용할 수 있는 대부분의 경우에 뷰를 사용할 수있습니다.

이 단원에서는 뷰 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 뷰 생성

■ 조인 뷰 수정

■ 뷰 바꾸기

■ 뷰 삭제

뷰 생성

뷰를 생성하려면 다음에 나열된 요구 사항이 충족되어야 합니다.

■ 스키마에서 뷰를 생성하려면 C R E ATE VIEW 권한이 있어야 합니다. 다른 사용

자의 스키마에서 뷰를 생성하려면 C R E ATE ANY VIEW 시스템 권한이 있어야

합니다. 이러한 권한은 명시적으로 또는 롤을 통해 획득되어야 합니다.

■ 모든 뷰의 소유자는 뷰 정의에서 참조한 모든 객체에 액세스할 수 있는 권한을 명

시적으로 인정받습니다. 소유자는 롤을 통해서는 이러한 권한을 가질 수 없습니

다. 또한 뷰의 기능은 뷰 소유자의 권한에 대해 종속적입니다. 예를 들어, 뷰 소

유자가 사용자 S c o t t의 EMP 테이블에 대해 I N S E RT 권한만 갖고 있다면

S E L E C T, UPDATE 또는 D E L E T E가 아닌 EMP 테이블에 새 행을 넣는 경우

에만 뷰를 사용할 수 있습니다.

■ 뷰 소유자가 다른 사용자의 뷰에 액세스할 수 있는 권한을 가지려 한다면 소유자

는 GRANT OPTION으로 기본 객체에 대한 객체 권한을 갖거나 A D M I N

O P T I O N을 갖는 시스템 권한이 있어야 합니다.

SQL 명령어 C R E ATE VIEW를 사용하여 뷰를 생성할 수 있습니다. 각 뷰는 테이블, 스냅샷 또는 다른 뷰를 참조하는 질의에 의해 정의됩니다. 뷰를 정의하는 질의는FOR UPDATE 절을 포함할 수 없습니다. 예를 들어, 다음 명령문은 EMP 테이블에 있는 데이터의 부분 집합에서 뷰를 생성합니다.

CREATE VIEW sales_staff ASSELECT empno, ename, deptnoFROM empWHERE deptno = 10WITH CHECK OPTION

CONSTRAINT sales_staff_cnst;

SA L E S _ S TAFF 뷰를 정의하는 질의는 부서 1 0에 있는 행만을 참조합니다. 또한CHECK OPTION은 뷰가 선택할 수 없는 행에 대해서는 I N S E RT와 U P DATE 문이 실행되지 않는다는 제약 조건을 갖는 뷰를 생성합니다. 예를 들어, 다음 I N S E RT문은 부서 번호 1 0을 가진 모든 행을 포함하는 SA L E S _ S TAFF 뷰를 사용하여EMP 테이블에 행을 넣습니다.

INSERT INTO sales_staff VALUES (7584, ‘OSTER‘, 10);

그러나 다음 I N S E RT 문은 SA L E S _ S TAFF 뷰로 선택할 수 없는 부서 번호 3 0에대해 행을 넣으려고 하기 때문에 롤백되고 오류가 발생합니다.

INSERT INTO sales_staff VALUES (7591, ‘WILLIAMS‘, 30);

다음 명령문은 EMP 테이블과 DEPT 테이블에서 데이터를 조인하는 뷰를 생성합니다.

CREATE VIEW division1_staff ASSELECT ename, empno, job, dname

FROM emp, deptWHERE emp.deptno IN (10, 30)AND emp.deptno = dept.deptno;

D I V I S I O N 1 _ S TAFF 뷰는 E M P와 DEPT 테이블에서 정보를 조인합니다. CHECKO P T I O N은 이 뷰의 C R E ATE VIEW 문에서 지정되지 않습니다.

뷰 생성 시 질의 정의 확장

ANSI/ISO 표준에 따라 뷰를 생성할 때 상위 레벨 뷰 질의에 있는 대체 문자를 열목록으로 확장시키며 그 결과 질의는 데이터 딕셔너리에 저장됩니다. 하위 질의는 원상 그대로 남게 됩니다. 확장된 열 목록의 열 이름은 따옴표로 둘러싸이게 되며 이는나중에 기본 객체의 열이 처음부터 따옴표와 함께 삽입될 가능성이 있으므로 문법적으로 제대로 된 질의가 되기 위해 필요합니다.

예를 들어, 다음과 같이 DEPT 뷰를 생성한다고 합시다.

CREATE VIEW dept AS SELECT * FROM scott.dept;

O ra c l e은 DEPT 뷰의 질의 정의를 다음과 같이 저장합니다.

SELECT “DEPTNO“, “DNAME“, “LOC“ FROM scott.dept

뷰 관리

뷰, 시퀀스 및 동의어 관리 1 5 - 3

오류가 생긴 뷰는 확장된 대체 문자를 갖지 않습니다. 그러나 뷰가 오류 없이 컴파일되면 질의 정의 부분의 대체 문자는 확장됩니다.

오류가 있는 뷰 생성

C R E ATE VIEW 문에 문법적 오류가 없으면 뷰의 질의 정의 부분을 실행할 수 없다해도 뷰를 생성할 수 있습니다. 즉, 뷰는“오류가있는 채로 생성”됩니다. 예를 들어,존재하지 않는 테이블이나 테이블의 잘못된 열을 참조하는 뷰가 생성되거나 뷰 소유자가 필요한 권한이 없을 때도 뷰는 생성되어 데이터 딕셔너리에 삽입됩니다. 그러나아직 사용할 수는 없습니다.

오류가 있는 뷰를 생성하려면 C R E ATE VIEW 명령어에 F O RCE 옵션을 포함해야합니다.

CREATE FORCE VIEW AS ....;

기본적으로 뷰는 오류가 있는 채로 생성되지 않습니다. 뷰가 오류가 있는 상태로 생성되면 O ra c l e은 생성된 뷰에 오류가 있음을 알리는 메시지를 나타냅니다. 오류가 있는 뷰의 상태는 I N VA L I D입니다. 나중에 조건을 변경하여 잘못된 뷰의 질의가 실행될 수 있으면 뷰는 재컴파일되며 사용 가능한 상태로 될 수 있습니다.

참조: 뷰의 조건 변경과 이에 미치는 영향에 대한 내용은 20-23 페이지“객체 종속성관리”를 참조하십시오.

조인 뷰 수정

수정 가능한 조인 뷰는 SELECT 문의 상위 레벨 F ROM 절에 하나 이상의 테이블을포함하며 다음을 포함하지 않습니다.

■ DISTINCT 연산자

■ 합계 함수: AVG, COUNT, GLB, MAX, MIN, STDDEV, SUM,

VA R I A N C E

■ 집합 연산: UNION, UNION ALL, INTERSECT, MINUS

■ G ROUP BY 또는 H AVING 절

■ S TA RT WITH 또는 CONNECT BY 절

■ ROWNUM 의사 열

뷰 관리

1 5 - 4 Oracle8i 관리자 설명서

뷰 관리

뷰, 시퀀스 및 동의어 관리 1 5 - 5

일부 제한 사항이 있지만 조인을 포함한 뷰를 수정할 수 있습니다. 뷰가 다른 중첩된뷰와의 조인이면 다른 중첩된 뷰는 상위 레벨 뷰로 병합되어야 합니다.

다음 단원의 예에서 E M P와 DEPT 테이블을 사용합니다. 이 예들은 테이블의 기본키나 외래 키를 명시적으로 정의하거나 고유 인덱스를 정의해야 수행됩니다. 다음은E M P와 D E P T에 대해 올바른 제약 조건을 가진 테이블 정의입니다.

CREATE TABLE dept (deptno NUMBER(4) PRIMARY KEY,dname VARCHAR2(14),loc VARCHAR2(13));

CREATE TABLE emp (empno NUMBER(4) PRIMARY KEY,ename VARCHAR2(10),job varchar2(9),mgr NUMBER(4),sal NUMBER(7,2),comm NUMBER(7,2),deptno NUMBER(2),FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO));

위에 나열된 기본 키와 외래 키를 생략하고 D E P T ( D E P T N O )의 UNIQUE INDEX를 생성하여 다음 예를 수행할 수 있습니다.

참조: 병합 가능한 뷰에 대한 자세한 내용은 O racle8i Tuning을 참조하십시오.

키 보존 테이블

키 보존 테이블 개념은 조인 뷰를 수정할 때의 제한 사항을 이해하기 위한 기본 개념입니다. 테이블의 모든 키가 조인된 결과에서도 키가 될 수 있으므로 이 테이블은 보존된 것입니다. 따라서 키 보존 테이블은 조인을 통해 보존된 키를 가집니다.

주: 보존되어야 하는 키를 나타내기 위해 테이블의 키를 선택할 필요는없습니다. 테이블의 키가 선택되면 조인 결과에서도 보존 키가 되기 때문입니다.

테이블의 키 보존 특성은 테이블의 실제 데이터에는 종속되지 않습니다. 이는 테이블의 데이터가 아닌 스키마의 특성이기 때문입니다. 예를 들어, EMP 테이블에서 각 부서에 고용자가 기껏해야 한 사람씩 있다면 D E P T. D E P T N O는 E M P와 D E P T의 조인 결과에서는 유일하지만 D E P T는 아직 키 보존 테이블이 아닙니다.

E M P _ D E P T _ V I E W에서 모든 행을 S E L E C T하면 결과는 다음과 같습니다.

EMPNO ENAME DEPTNO DNAME LOC--------- ---------- ---------- -------------- -----

7782 CLARK 10 ACCOUNTING NEW YORK7839 KING 10 ACCOUNTING NEW YORK7934 MILLER 10 ACCOUNTING NEW YORK7369 SMITH 20 RESEARCH DALLAS 7876 ADAMS 20 RESEARCH DALLAS 7902 FORD 20 RESEARCH DALLAS7788 SCOTT 20 RESEARCH DALLAS7566 JONES 20 RESEARCH DALLAS

8 rows selected.

이 뷰에서 E M P N O가 EMP 테이블의 키고 조인된 결과 키므로 E M P는 키 보존 테이블입니다. DEPT는 키 보존 테이블이 아닌데 이것은 D E P T N O가 DEPT 테이블키이긴 하지만 조인 결과 키는 아니기 때문입니다.

DML 문과 조인 뷰

조인 뷰의 U P DAT E, INSERT, DELETE 문은 키 보존이 되는 기본 테이블만 수정할 수 있습니다.

U P D ATE 문 다음 예는 EMP_DEPT 뷰를 성공적으로 수정하는 U P DATE 문을 나타냅니다.

UPDATE emp_deptSET sal = sal * 1.10

WHERE deptno = 10;

다음 U P DATE 문은 EMP_DEPT 뷰에서는 허용되지 않습니다.

UPDATE emp_deptSET loc = ‘BOSTON‘

WHERE ename = ‘SMITH‘;

U P DATE 문은 ORA-01779 오류(“cannot modify a column which maps to anon key - p re s e rved table”)를 발생시킵니다. 키 보존이 되는 DEPT 테이블을 수정해야 하는데 DEPT 테이블은 EMP_DEPT 뷰에서 키 보존이 되지 않기 때문입니다.

일반적으로 조인 뷰의 모든 수정 가능한 열은 키 보존 테이블 열에 대응해야 합니다.뷰가 WITH CHECK OPTION 절을 사용하여 정의되면 모든 조인 열과 반복된테이블의 모든 열은 수정할 수 없습니다.

예를 들어, EMP_DEPT 뷰가WITH CHECK OPTION을 사용하여 정의되면 다음U P DATE 문은 실패합니다.

UPDATE emp_dept

뷰 관리

1 5 - 6 Oracle8i 관리자 설명서

뷰, 시퀀스 및 동의어 관리 1 5 - 7

SET deptno = 10WHERE ename = ‘SMITH‘;

이 명령문은 조인 열을 갱신하려 하기 때문에 실패합니다.

DELETE 문 조인에서 하나의 유일한 키 보존 테이블만 있다면 조인 뷰에서 삭제할수 있습니다.

다음 DELETE 문은 EMP_DEPT 뷰에서 수행됩니다.

DELETE FROM emp_deptWHERE ename = ‘SMITH‘;

EMP_DEPT 뷰의 DELETE 문은 유효한데 기본 EMP 테이블의 DELETE 연산으로 변환되고 EMP 테이블이 조인에서 유일한 키 보존 테이블이기 때문입니다.

다음 뷰에서는 E 1과 E 2가 모두 키 보존 테이블이기 때문에 DELETE 연산이 수행될수 없습니다.

CREATE VIEW emp_emp ASSELECT e1.ename, e2.empno, deptno

FROM emp e1, emp e2WHERE e1.empno = e2.empno;

뷰가 WITH CHECK OPTION 절을사용하여 정의되고 키 보존 테이블이 반복되면행은 다음 뷰에서는 삭제될 수 없습니다.

CREATE VIEW emp_mgr ASSELECT e1.ename, e2.ename mnameFROM emp e1, emp e2WHERE e1.mgr = e2.empnoWITH CHECK OPTION;

이 뷰에서는 삭제될 수 없는데 뷰가 키 보존 테이블의 자체 조인을 포함하기 때문입니다.

INSERT 문 EMP_DEPT 뷰에서 다음 I N S E RT 문은 성공적으로 수행됩니다.

INSERT INTO emp_dept (ename, empno, deptno)VALUES (‘KURODA‘, 9010, 40);

이 명령문은 하나의 유일한 키 보존 기본 테이블이 수정되고(EMP) 40이 DEPT 테이블의 유효한 D E P T N O이므로 (EMP 테이블의 FOREIGN KEY 무결성 제약 조건을 만족하므로) 수행됩니다.

뷰 관리

다음의 I N S E RT 문은 기본 EMP 테이블의 U P DAT E가 실패한 것과 동일한 이유로수행되지 않습니다. EMP 테이블에서 FOREIGN KEY 무결성 제약 조건을 위반하기 때문입니다.

INSERT INTO emp_dept (ename, empno, deptno)VALUES (‘KURODA‘, 9010, 77);

다음의 I N S E RT 문은 ORA-01776 오류(“cannot modify more than one basetable through a view”)를 발생시킵니다.

INSERT INTO emp_dept (empno, ename, loc)

VALUES (9010, ‘KURODA‘, ‘BOSTON‘);

I N S E RT는 명시적으로나 묵시적으로 키를 보존하지 않는 테이블의 열을 참조할 수없습니다. 조인 뷰가 WITH CHECK OPTION 절을 사용하여 정의되면 이 뷰에서는 I N S E RT를 수행할 수 없습니다.

U P D ATABLE_COLUMNS 뷰사용

표 1 5 - 1에 설명된 뷰는 조인 뷰를 수정할 때 유용합니다.

표 15-1 UPDATA B L E _ C O L U M NS 뷰

뷰 바꾸기

뷰를 바꾸려면 뷰를 생성하고 삭제하는데 필요한 모든 권한이 있어야 합니다. 뷰 정의가 변경되어야 한다면 뷰를 바꿔야 하며 뷰 정의를 변경할 수는 없습니다. 다음 방법으로 뷰를 바꿀 수 있습니다.

■ 뷰를 삭제하고 재생성합니다.

경고: 뷰를 삭제할 때 해당 객체 권한이 롤과 사용자로부터 취소됩니다.뷰가 재생성된 후 권한이 다시 주어져야 합니다.

1 5 - 8 Oracle8i 관리자 설명서

뷰 관리

뷰 이름 설명

USER_UPDATABLE_COLUMNS 사용자 스키마에서 수정 가능한 모든 테이블과

뷰의 모든 열을 나타냅니다.

DBA_UPDATABLE_COLUMNS DBA 스키마의 수정 가능한 모든 테이블과 뷰의

모든 열을 나타냅니다.

ALL_UPDATABLE_VIEWS 수정 가능한 모든 테이블과 뷰의 모든 열을 나타

냅니다.

시퀸스 관리

뷰, 시퀀스 및 동의어 관리 1 5 - 9

■ OR REPLACE 옵션을 갖는 C R E ATE VIEW 문으로 뷰를 재정의할 수 있습니

다. OR REPLACE 옵션은 현재 뷰 정의를 바꾸고 현재의 보안 인증을 보존합니

다. 예를 들어, 앞의 예에 나타난 대로 SA L E S _ S TAFF 뷰를 생성하고 여러 가지

객체 권한을 롤과 다른 사용자에게 부여한다고 합시다. 그러나 현재 WHERE 절

에서 지정한 부서 번호를 변경하려면 SA L E S _ S TAFF 뷰를 재정의해야 합니다.

다음 명령문으로 SA L E S _ S TAFF 뷰의 현재 버전을 바꿀 수 있습니다.

CREATE OR REPLACE VIEW sales_staff ASSELECT empno, ename, deptnoFROM empWHERE deptno = 30WITH CHECK OPTION CONSTRAINT sales_staff_cnst;

뷰를 바꾸기 전에 다음 결과를 고려하십시오.

■ 뷰를 바꾸는 것은 데이터 딕셔너리의 뷰 정의를 바꾸는 것입니다. 뷰에서 참조한

모든 기초적인 객체는 영향을 받지 않습니다.

■ CHECK OPTION의 제약 조건이 이전에 정의되었으나 새로운 뷰 정의에는 포함

되지 않았다면 제약 조건은 삭제됩니다.

■ 바뀐 뷰에 종속된 모든 뷰와 PL/SQL 프로그램은 사용할 수 없습니다. 그러한 종

속성의 관리 방법은 20-23 페이지“객체 종속성 관리”를 참조하십시오.

뷰 삭제

스키마에 포함된 뷰를 삭제할 수 있습니다. 다른 사용자 스키마의 뷰를 삭제하려면D ROP ANY VIEW 시스템 권한이 있어야 합니다. SQL 명령어 D ROP VIEW를사용하여 뷰를 삭제합니다. 예를 들어, 다음 명령문은 SA L E S _ S TA F F라는 뷰를 삭제합니다.

DROP VIEW sales_staff;

시퀀스 관리

이 단원에서는 시퀀스 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 시퀀스 생성

■ 시퀀스 변경

■ 시퀀스에 영향을 주는 초기화 매개변수

시퀸스 관리

1 5 - 1 0 Oracle8i 관리자 설명서

■ 시퀀스 삭제

시퀀스 생성

스키마에서 시퀀스를 생성하려면 C R E ATE SEQUENCE 시스템 권한이 있어야 합니다. 다른 사용자 스키마에서 시퀀스를 생성하려면 C R E ATE ANY SEQUENCE권한이 있어야 합니다. SQL 명령어 C R E ATE SEQUENCE를 사용하여 시퀀스를생성합니다. 예를 들어, 다음 명령문은 EMP 테이블의 EMPNO 열에 사원 번호를만드는 시퀀스를 생성합니다.

CREATE SEQUENCE emp_sequenceINCREMENT BY 1START WITH 1NOMAXVALUENOCYCLECACHE 10;

CACHE 옵션은 일련의 시퀀스를 미리 할당하고 메모리에 유지하여 시퀀스를 빠르게액세스할 수 있도록 합니다. 캐시의 마지막 시퀀스가 사용되면 O ra c l e은 캐시에 다른시퀀스 집합을 읽어들입니다.

일련의 시퀀스를 캐시하면 시퀀스를 건너뛸 수 있습니다. 예를 들어, 인스턴스가 비정상적으로 종료되면 (인스턴스가 실패하거나 S H U T D OWN ABORT 문이 실행되면) 캐시되었지만 사용되지 않은 시퀀스는 손실됩니다. 그리고 사용되었으나 저장되지 않은 시퀀스도 손실됩니다. 또한 임포트되거나 엑스포트된 후에 캐시된 시퀀스를건너뛸 수 있습니다. 자세한 내용은 O racle8i Utilities를참조하십시오.

참조: O racle Pa rallel Serv e r가 캐시된 시퀀스에 미치는 영향에 대한 내용은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

시퀀스를 캐시하는데 대한 내용은 O racle8i Tuning을참조하십시오.

시퀀스 변경

시퀀스를 변경하려면 A LTER ANY SEQUENCE 시스템 권한이 있거나 스키마에시퀀스가 포함되어야 합니다. 시퀀스를 변경하여 시퀀스 시작 번호를 제외한 시퀀스번호를 만드는 방법을 정의하는 매개변수를 변경할 수 있습니다. 시퀀스 시작점을 변경하려면 시퀀스를 삭제한 다음 재생성합니다.시퀀스 번호에 D D L을 수행하면 이 시퀀스의 캐시 값은 손실됩니다.

동의어 관리

뷰, 시퀀스 및 동의어 관리 1 5 - 1 1

SQL 명령어 A LTER SEQUENCE를 사용하여 시퀀스를 변경하십시오. 예를 들어,다음 명령문은 E M P _ S E Q U E N C E를 변경합니다.

ALTER SEQUENCE emp_sequenceINCREMENT BY 10MAXVALUE 10000CYCLECACHE 20;

시퀀스에 영향을 주는 초기화 매개변수

S E Q U E N C E _ CACHE_ENTRIES 초기화 매개변수는 캐시될 시퀀스를 설정합니다.시스템에 감사 기능이 설정되면 감사 세션 번호를 식별하는 시퀀스에 하나의 시퀀스를 추가할 수 있습니다.

S E Q U E N C E _ CACHE_ENTRIES 값이 너무 낮으면 다음 시나리오에서처럼 시퀀스값을 건너뛸 수도 있습니다. 다섯 개의 캐시된 시퀀스를 사용하고 캐시가 다 찼으며S E Q U E N C E _ CACHE_ENTRIES = 4라고 가정합니다. 현재 네 개의 시퀀스가 캐시되었다면 캐시에서 최근에 가장 적게 사용한 시퀀스는 다섯 번째 시퀀스로 바뀌면서 이 시퀀스의 모든 다른 값은 (캐시된 마지막 시퀀스까지) 손실됩니다.

시퀀스 삭제

스키마의 시퀀스를 삭제할 수 있습니다. 다른 스키마의 시퀀스를 삭제하려면 D RO PANY SEQUENCE 시스템 권한이 있어야 합니다. 시퀀스가 더 이상 필요하지 않다면 SQL 명령어 D ROP SEQUENCE를 사용하여 시퀀스를 제거할 수 있습니다. 예를 들어, 다음 명령문은 ORDER_SEQ 시퀀스를삭제합니다.

DROP SEQUENCE order_seq;

시퀀스가 삭제되면 시퀀스 정의가 데이터 딕셔너리에서 제거됩니다. 시퀀스의 동의어는 남지만 참조되면 오류를 발생시킵니다.

동의어 관리

공용 및 전용 동의어를 생성할 수 있습니다. 공용 동의어는 P U B L I C이라는 특별한사용자 그룹이 소유하며 데이터베이스의 모든 사용자가 액세스할 수 있습니다. 전용동의어는 특정 사용자의 스키마에 포함되며 사용자와 사용자가 인정한 사용자만이 사용할 수 있습니다.

이 단원에서는 다음의 동의어 관리 정보를 다룹니다.

동의어 관리

1 5 - 1 2 Oracle8i 관리자 설명서

■ 동의어 생성

■ 동의어 삭제

동의어 생성

스키마에서 전용 동의어를 생성하려면 C R E ATE SYNONYM 권한이 있어야 합니다. 다른 사용자 스키마에 전용 동의어를 생성하려면 C R E ATE ANY SY N O N Y M권한이 있어야 합니다. 공용 동의어를 생성하려면 C R E ATE PUBLIC SY N O N Y M시스템 권한이 있어야 합니다.

SQL 명령어 C R E ATE SY N O N Y M을 사용하여 동의어를 생성합니다. 예를 들어,다음 명령문은 J WA R D의 스키마에 포함된 EMP 테이블에서 P U B L I C _ E M P라는공용 동의어를 생성합니다.

CREATE PUBLIC SYNONYM public_emp FOR jward.emp;

동의어 삭제

스키마에서 전용 동의어를 삭제할 수 있습니다. 다른 사용자 스키마에서 전용 동의어를 삭제하려면 D ROP ANY SYNONYM 시스템 권한이 있어야 합니다. 공용 동의어를 삭제하려면 D ROP PUBLIC SYNONYM 시스템권한이 있어야 합니다.

SQL 명령어 D ROP SY N O N Y M을 사용하여 더 이상 필요하지 않은 동의어를 삭제합니다. 전용 동의어를 삭제하려면 PUBLIC 키워드를 뺍니다. 공용 동의어를 삭제하려면 PUBLIC 키워드를 포함시킵니다.

예를 들어, 다음 명령문은 E M P라는 전용 동의어를 삭제합니다.

DROP SYNONYM emp;

다음 명령문은 P U B L I C _ E M P라는 공용 동의어를 삭제합니다.

DROP PUBLIC SYNONYM public_emp;

동의어를 삭제하면 동의어 정의가 데이터 딕셔너리에서 제거됩니다. 삭제된 동의어를참조하는 모든 객체는 남아 있지만 사용할 수는 없습니다.

참조: 삭제한 동의어가 다른 스키마 객체에 미치는 영향에 대한 자세한 내용은 2 0 - 2 3페이지“객체 종속성 관리”를 참조하십시오.

16인덱스 관리

이 장에서는 다양한 측면의 인덱스 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 인덱스 관리에 대한 지침 사항

■ 인덱스 생성

■ 인덱스 변경

■ 인덱스 영역 사용 모니터링

■ 인덱스 삭제

이 장에서 설명하는 작업을 수행하기 전에 1 2장“스키마 객체 관리에 대한 지침 사항”에서다룬 개념을 잘 알고 있어야 합니다.

인덱스 관리 1 6 - 1

인덱스 관리에 대한 지침 사항

이 단원에서는 인덱스를 관리할 때 수행하는 지침 사항을 설명하며 다음 내용을 다룹니다.

■ 테이블 데이터 삽입 후 인덱스 생성

■ 테이블 당 인덱스 수 제한

■ 트랜잭션 입력 항목의 매개변수 지정

■ 인덱스 블록의 영역 사용 지정

■ 각 인덱스에 대한 테이블스페이스 지정

■ 인덱스 생성 병렬화

■ N O L O G G I N G으로 인덱스 생성 고려

■ 인덱스 크기 측정 및 저장 영역 매개변수 설정

인덱스는 테이블과 클러스터에 관련된 선택적 구조이며 테이블에서 명시적으로 생성되어 SQL 문 실행 속도를 증가시킬 수 있습니다. 이 설명서의 색인으로 정보를 더욱빨리 찾을 수 있는 것과 같이 O racle 인덱스는 테이블 데이터에 훨씬 빠른 액세스 경로를 제공합니다.

인덱스 존재 여부는 SQL 문의 문법에는 변화를 주지 않습니다. 인덱스는 단지 데이터에 대한 빠른 액세스 경로를 제공하며 실행 속도에만 영향을 줍니다. 인덱스화된데이터 값이 부여되면 인덱스는 값을 포함하는 행의 위치를 가리킵니다.

인덱스는 관련 테이블의 데이터에 논리적으로나 물리적으로 독립적입니다. 기본 테이블이나 다른 인덱스에 영향을 주지 않고 언제든 인덱스를 생성하거나 삭제할 수 있습니다. 인덱스를 삭제하면 모든 응용 프로그램은 계속 작동되지만 이전에 인덱스화된데이터로의 액세스는 더욱 느려집니다. 독립 구조인 인덱스는 저장 영역이 필요합니다.

O ra c l e은 인덱스가 생성되면 자동으로 유지 관리하고 사용합니다. 사용자가 더 이상추가 작업을 수행하지 않아도 새로운 행 추가, 갱신, 삭제와 같은 데이터에 대한 변경사항을 모든 인덱스에 자동으로 반영합니다.

참조:인덱스 생성시 성능에 대한내용은 O racle8i Tuning을참조하십시오.

인덱스에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

O racle Objects 옵션이 있다면 도메인별 연산자와 인덱스 스키마를 정의하고 이를서버에 통합할 수 있습니다. 자세한 내용은 O racle8i Data Cartridge Dev e l o p e r’sG u i d e를 참조하십시오.

1 6 - 2 Oracle8i 관리자 설명서

인덱스 관리에 대한 지침 사항

테이블 데이터 삽입 후 인덱스 생성

SQL*Loader 또는 I m p o r t를 통해 데이터를 테이블에 삽입하거나 로드한 후에 테이블에 대한 인덱스를 생성해야 합니다. 인덱스가 없는 테이블에 데이터 행을 삽입한후 다음 액세스를 위해 인덱스를 생성하는 것이 더 효율적입니다. 테이블 데이터가로드되기 전에 인덱스를 생성하면 모든 인덱스는 테이블에 행이 삽입될 때마다 갱신되어야 합니다. 클러스터에 대한 인덱스의 경우 클러스터에 데이터를 삽입하기 전에생성해야 합니다.

데이터를 가진 테이블에 대한 인덱스 생성 시 O ra c l e은 정렬 영역을 사용해야 합니다. Ora c l e은 인덱스 생성자에 할당된 메모리 정렬 영역을 사용하면서 (각 사용자 당영역 크기는 초기화 매개변수 S O RT _ A R E A _ S I Z E로 결정됨) 인덱스 생성을 위해 할당된 임시 세그먼트에서 정렬 정보를 교환해야 합니다.

인덱스가 너무 크면 다음 작업을 수행하십시오.

대규모 인덱스 관리

1 . 새 임시 세그먼트 테이블스페이스를 생성합니다.

2 . 인덱스 생성자의 임시 세그먼트 테이블스페이스를 변경합니다.

3 . 인덱스를 생성합니다.

4 . 원한다면 임시 세그먼트 테이블스페이스를 제거하고 생성자의 임시 세그먼트 테이블스페이스를 재지정할 수도 있습니다.

참조: 특정 상황에서 데이터는 S Q L * L o a d e r의“직접 경로 로드”로 테이블에 로드될수 있으며 인덱스는 데이터가 로드될 때 생성될 수 있습니다. 자세한 내용은O racle8i Utilities를 참조하십시오.

테이블 당 인덱스 수 제한

테이블은 인덱스를 무제한으로 가질 수 있습니다. 그러나 인덱스가 많을수록 테이블이 수정될 때 오버헤드도 늘어납니다. 특별히 행이 삽입되거나 삭제될 때 테이블의모든 인덱스도 갱신되어야 합니다. 열이 갱신되면 열을 포함하는 모든 인덱스도 갱신되어야 합니다.

따라서 테이블에서 데이터를 읽어 들이는 속도와 테이블을 갱신하는 속도 사이에는차이점이 있습니다. 예를 들어, 테이블이 주로 읽기 전용이라면 인덱스가 많은 것이유용하지만 테이블이 주로 갱신 위주라면 인덱스가 적은 것이 좋습니다.

인덱스 관리 1 6 - 3

인덱스 관리에 대한 지침 사항

트랜잭션 입력 항목의 매개변수 지정

각 인덱스 생성 중에 I N I T R A N S와 MAXTRANS 매개변수를 지정하여 인덱스 세그먼트의 데이터 블록에 있는 트랜잭션 입력 항목에 대한 초기 영역 할당량과 최대할당량을 결정합니다. 또한 갱신을 위한 여유 공간을 남겨두어야 하며 이후 이러한설정에 대한 기간(예를 들어, 인덱스의 수명) 값을 지정해야 합니다.

참조: 이러한 매개변수 설정에 대한 자세한 내용은 12-7 페이지“저장 영역 매개변수설정”을 참조하십시오.

인덱스 블록의 영역 사용 지정

테이블에 인덱스가 생성되면 인덱스의 데이터 블록은 최대 P C T F R E E까지 테이블의기존 값으로 채워집니다. 인덱스 블록을 위해 P C T F R E E로 예약된 영역은 새 행이테이블에 삽입된 경우에만 사용되며 해당 인덱스 입력 항목은 정확한 인덱스 블록(즉, 이전 인덱스 입력 항목과 다음 인덱스 입력 항목 사이)에 있어야 합니다. 해당인덱스 블록에 더 이상 사용할 수 있는 영역이 없으면 인덱스화된 값은 사전적 설정순서에 따라 그것이 속해 있던 위치에 배치됩니다. 따라서 인덱스화된 테이블에 많은행을 삽입하려면 새 인덱스 값을 수용하는 PCTFREE 값이 높아야 합니다. 테이블에삽입된 사항이 별로 없다면 관련 인덱스의 PCTFREE 값을 낮게 하여 인덱스 데이터를 유지하는데 필요한 블록 수를 줄일 수 있습니다.

참조: 인덱스에 대해 P C T U S E D를 지정할 수 없습니다. PCTFREE 매개변수에 대한 내용은 12-2 페이지“데이터 블록의 영역 관리”를 참조하십시오.

각 인덱스에 대한 테이블스페이스 지정

모든 테이블스페이스에서 인덱스를 생성할 수 있습니다. 인덱스화하는 테이블과 동일한 테이블스페이스에서 인덱스를 생성할 수도 있고 다른 테이블스페이스에서 생성할수도 있습니다.

테이블과 인덱스에 대해 동일한 테이블스페이스를 사용하면 데이터베이스 유지 관리가 더욱 편해지며 (테이블스페이스나 파일 백업 및 응용 프로그램 가용성 또는 갱신과 같이) 모든 관련 데이터가 함께 온라인 상태로 됩니다.

테이블과 인덱스에 대해 각각 다른 디스크의 다른 테이블스페이스를 사용하면 동일한테이블스페이스에 테이블과 인덱스를 저장할 때보다 디스크 경합이 줄어 성능이 향상됩니다.

테이블과 인덱스에 대해 다른 테이블스페이스를 사용하고 (데이터나 인덱스를 포함하는) 한 테이블스페이스가 오프라인이면 이 테이블을 참조하는 명령문은 성능이 보장되지 않습니다.

1 6 - 4 Oracle8i 관리자 설명서

인덱스 관리에 대한 지침 사항

인덱스 생성 병렬화

인덱스 생성은 병렬화할 수 있습니다. 여러프로세스가 인덱스를 생성하므로 하나의 서버가 계속 인덱스를 생성할 때보다 O ra c l e이 더 빠르게 인덱스를 생성할 수 있습니다.

인덱스를 병렬로 생성하면 각각의 질의 서버 프로세스는 저장 영역 매개변수를 제각기 사용합니다. 따라서 INITIAL 값 5 M와 병렬도 1 2로 생성된 인덱스는 인덱스가생성되는 동안 적어도 6 0 M의 저장 영역을 필요로 합니다.

참조: 병렬 인덱스 생성에 대한 자세한 내용은 O racle8i Tuning을 참조하십시오.

N O LO G G I N G으로 인덱스 생성 고려

C R E ATE INDEX 문에서 N O L O G G I N G을 지정하여 인덱스를 생성하고 최소의 리두 로그 레코드를 생성할 수 있습니다.

주: L O G G I N G을 사용하여 생성된 인덱스는 아카이브되지 않으므로인덱스를 생성한 후에는 백업해야 합니다.

N O L O G G I N G을 사용하여 인덱스를 생성하면 다음과 같은 이점이 있습니다.

■ 리두 로그 파일의 영역이 절약됩니다.

■ 인덱스 생성 시간이 줄어듭니다.

■ 대규모 인덱스의 병렬 생성 성능이 향상됩니다.

일반적으로 소규모 인덱스보다 L O G G I N G을 사용하지 않고 생성된 대규모 인덱스의성능이 상대적으로 향상됩니다. LOGGING을 사용하지 않고 소규모 인덱스를 생성하면 인덱스 생성 시간에 큰 영향을 주지 않습니다. 그러나 대규모 인덱스에서는 특히 인덱스 생성을 병렬화할 때 성능 향상에 커다란 영향을 줍니다.

인덱스 크기 측정 및 저장 영역 매개변수 설정

인덱스를 생성하기 전에 인덱스 크기를 측정하면 다음과 같은 이점이 있습니다.

■ 원하는 데이터베이스를 유지하는데 필요한 디스크 영역을 결정하는 인덱스와 테이블, 롤백 세그먼트, 리두 로그 파일의 측정치를 합하여 사용할 수 있습니다. 이 측정치를 가지고 올바른 하드웨어를 구매하고 다른 사항을 결정합니다.

인덱스 관리 1 6 - 5

인덱스 관리에 대한 지침 사항

■ 각 인덱스의 측정 크기를 사용하여 인덱스가 사용할 디스크 영역을 효율적으로 관리할 수 있습니다. 인덱스가 생성되면 적합한 저장 영역 매개변수를 설정하거나인덱스를 사용할 응용 프로그램의 입출력 성능을 향상시킬 수 있습니다.

예를 들어, 인덱스를 생성하기 전에 인덱스의 최대 크기를 측정한다고 합시다. 인덱스를 생성할 때 저장 영역 매개변수를 설정하면 테이블의 데이터 세그먼트에 대해 적은 확장 영역이 할당되고 인덱스의 모든 데이터는 어느 정도 연속적인 디스크영역에 저장됩니다. 이는 인덱스를 포함하는 디스크 입출력 작업에 필요한 시간을감소시켜 줍니다.

단일 인덱스 입력 항목의 최대 크기는 대략 데이터 블록 크기의 2분의 1입니다. 테이블에서처럼 인덱스를 생성할 때 저장 영역 매개변수를 명시적으로 설정할 수 있습니다.

참조: 저장 영역 매개변수에 대한 자세한 내용은 12-7 페이지“저장 영역 매개변수설정”을 참조하십시오.

인덱스 병합

부적당한 크기 지정이나 크기의 증가로 인해 인덱스 단편화가 생기는 경우 인덱스를재구축하거나 병합할 수 있습니다. 이러한 작업을 수행하기 전에 각 옵션의 비용과이익을 비교하여 상황에 가장 적합한 하나의 작업을 선택하십시오. 표 1 6 - 1은 인덱스재구축과 병합에 관련된 비용과 이익에 대해 설명합니다.

표 16-1 재구축과병합의 비용과 이익

재사용을 위해 비울 수 있는 B 트리 인덱스 최하위 블록을 가진 상황에서 다음과 같은 명령문을 사용하여 최하위 블록을 병합할 수 있습니다.

ALTER INDEX vmoore COALESCE;

1 6 - 6 Oracle8i 관리자 설명서

인덱스 관리에 대한 지침 사항

재구축

인덱스를 다른 테이블스페이스로 빠르게 이동

높은 비용. 더 많은 디스크 영역 필요

새로운 트리 생성, 적용 가능한 경우 높이 축소

원래 인덱스를 삭제하지 않고 저장 영역과 테이블

스페이스 매개변수를 빠르게 변경

병합

인덱스를 다른 테이블스페이스로 이동 못함

낮은 비용. 더 많은 디스크 영역 불필요

최하위 블록을 동일한 트리의 분기와 병합

사용을 위해 인덱스 최하위 블록을 빠르게 비움

그림 1 6 - 1은 인덱스 V M O O R E에서의 A LTER INDEX COALESCE 결과를 보여줍니다. 이 작업을 수행하기 전 처음 두 최하위 블록은 5 0 %만큼 차 있는데 이것은두 번째 블록을 비우는 동안 인덱스 단편화를 줄이고 첫 번째 블록을 완전히 채울 기회가 있다는 것을 의미합니다. (이 예에서는 P C T F R E E=0으로 가정합니다. )

그림 1-1 인덱스 병합

B 트리 인덱스 B 트리인덱스

ALTER INDEX vmoore COALESCE; 수행 전 ALTER INDEX vmoore COALESCE; 수행 후

제약 조건 비활성화 또는 삭제 전의 고려 사항

고유 키와 기본 키는 인덱스와 관련되어 있으므로 U N I Q U E이나 P R I M A RY KEY제약 조건을 비활성화하거나 삭제하려고 할 때 인덱스를 삭제하고 생성하는 비용을고려해야 합니다. UNIQUE이나 P R I M A RY KEY 제약 조건에 관련된 인덱스가 아주 크면 큰 인덱스를 삭제하고 재생성하는 것보다 제약 조건을 남겨둠으로써 시간을절약할 수 있습니다.

인덱스 생성

이 단원에서는 인덱스 생성 방법에 대해 설명하며 다음 내용을 다룹니다.

■ 제약 조건과 관련된 인덱스 생성

■ 명시적으로 인덱스 생성

■ 온라인 인덱스 생성

■ 함수 기준 인덱스 생성

■ 기존 인덱스 재생성

■ 키 압축 인덱스 생성

인덱스 관리 1 6 - 7

인덱스 생성

관련 인덱스를 생성하는 UNIQUE 키나 P R I M A RY KEY를 활성화하려면 테이블 소유자는 인덱스가 포함되어야 할 테이블스페이스에 대한 할당량 또는 U N L I M I T E DTA B L E S PACE 시스템권한이 있어야 합니다.

L O B S, LONG 및 LONG RAW 열은인덱스화될 수 없습니다.

O ra c l e은 고유 키나 기본 키에서 고유 인덱스를 생성하면 UNIQUE 키나 P R I M A RYKEY 무결성 제약 조건을 강제로 시행합니다. 인덱스는 O ra c l e이 제약 조건을 활성화할 때 자동으로 생성됩니다. 즉, 인덱스 생성을 위해 C R E ATE TA B L E이나 A LT E RTABLE 문에 다른 추가 작업을 수행할 필요가 없습니다. 인덱스는 제약 조건이 정의되고 활성화될 때, 그리고 정의되었지만 비활성화되었던 제약 조건이 활성화되었을 때도 자동으로 생성됩니다.

일반적으로 C R E ATE UNIQUE INDEX 구문을 사용하는 것보다는 고유성을 강제로 시행하는 제약 조건을 생성하는 것이 더 좋습니다. 제약 조건에 관련된 인덱스는항상 제약 조건의 이름을 따르므로 제약 조건 인덱스에 특정 이름을 지정할 필요가없습니다.

I N I T I A L과 NEXT 같은 인덱스에 대한 저장 영역 옵션을 지정하지 않으면 자동으로호스트 테이블스페이스의 기본 저장 영역 옵션이 사용됩니다.

제약 조건과 관련된 인덱스 생성

USING INDEX 옵션을 가진 E NABLE 절을 사용하여 UNIQUE 키와 P R I M A RYKEY 제약 조건과 관련된 인덱스에 저장 영역 옵션을 설정할 수 있습니다. 다음 명령문은 P R I M A RY KEY 제약 조건을 정의하고 관련된 인덱스의 저장 영역 옵션을 지정합니다.

CREATE TABLE emp (empno NUMBER(5) PRIMARY KEY, . . . )ENABLE PRIMARY KEY USING INDEXTABLESPACE usersPCTFREE 0;

명시적으로 인덱스 생성

SQL 명령어 C R E ATE INDEX를 사용하여 무결성 제약 조건 밖에 명시적으로 인덱스를 생성할 수 있습니다. 다음 명령문은 EMP 테이블의 E NAME 열에 대해 명명된E M P _ E NAME 인덱스를 생성합니다.

CREATE INDEX emp_ename ON emp(ename)TABLESPACE usersSTORAGE (INITIAL 20KNEXT 20kPCTINCREASE 75)

1 6 - 8 Oracle8i 관리자 설명서

인덱스 생성

PCTFREE 0;

여러 저장 영역 설정이 인덱스에 대해 명시적으로 지정됩니다.

온라인 인덱스 생성

테이블에서 인덱스를 생성할 때 인덱스 구축 작업을 진행하는 동안 항상 테이블에는DML S 잠금이 있으며 이는 기본 테이블에서 구축하는 동안 DML 작업을 수행할 수없음을 의미합니다.

테이블 크기가 계속 증가하고 계속적으로 작업해야 할 때 온라인 인덱스를 생성하고재구축할 수 있습니다. 이렇게 하여 기본 테이블에 인덱스를 구축하거나 재구축하는동시에 기본 테이블을 갱신할 수 있습니다. 그렇지만 여전히 DML SS 잠금이 있으므로 온라인 인덱스를 구축하고 있는 동안에는 다른 DDL 작업을 수행할 수 없습니다.

다음 명령문은 온라인 인덱스 구축 작업을 수행합니다.

ALTER INDEX emp_name REBUILD ONLINE;

CREATE INDEX emp_name ON emp (mgr, emp1, emp2, emp3) ONLINE;

주: 온라인 인덱스를 구축하는 동안 DML 작업을 수행할 수 있지만O ra c l e은 이 프로시저를 진행할 때 대량의 주요한 DML 작업을 수행하지 않을 것을 권장합니다. 예를 들어, 기존 테이블 크기의 3 0 %에 달하는 행을 로드하려면 온라인 인덱스를 구축하기 전 이 로드 작업을 수행해야 합니다.

참조: 온라인 인덱스 생성 구문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

함수 기준 인덱스 생성

함수 기준 인덱스를 사용하여 함수나 표현식이 반환하는 값을 제한하는 질의를 쉽게수행할 수 있습니다. 함수나 표현식 값은 미리 계산되어 인덱스에 저장됩니다.

함수 기준 인덱스는 언어 정렬 키(조합)를 기반한 언어 정렬, SQL 문의 효율적인 언어 조합 및 함수와 관련된 술어 평가에 대한 효율적인 체계를 지원하는 이점이 있습니다.

다음 명령문은 A r e a ( g e o )에서 인덱스를 정의합니다.

CREATE INDEX area_index ON rivers (Area(geo)) DESC;

인덱스 관리 1 6 - 9

인덱스 생성

a r e a _ i n d e x는 함수 a r e a ( g e o )에서 정의됩니다.

SELECT id, geo Area(geo), descFROM rivers rWHERE Area(geo) >5000;

이 SQL 문에서 A r e a ( g e o )가 WHERE 절에서 참조될 때 최적기는 a r e a _ i n d e x사용을 고려합니다.

주: 테이블 소유자는 함수 기준 인덱스에서 사용되는 함수에 대해EXECUTE 권한을 가져야 합니다. 또한 함수 기준 인덱스는 사용하는함수에 따라 달라지므로 함수가 변경되면 무효가 됩니다.

참조: 함수 기준 인덱스의 개념에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

함수 기준 인덱스와 응용 프로그램 개발에 대한 내용은 O racle8i Application Dev -e l o p e r’s Guide - Fundamentals를참조하십시오.

예 1

다음 명령문은 e m p 테이블에 함수 기준 인덱스 i d x를 생성합니다.

CREATE INDEX idx ON emp (UPPER(emp_name));

SELECT 문은 U P P E R ( e m p _ n a m e )에서 함수 기준 인덱스를 사용하여 :K E Y C O L:이라는 이름을 가진 모든 사원을 읽어 들입니다.

SELECT * FROM emp WHERE UPPER(emp_name) like :KEYCOL;

SELECT 문은 인덱스 범위 스캔(표현식이 인덱스의 접두어) 또는 인덱스 전체 스캔(인덱스가 높은 병렬도를 지정할 때 적합)을 사용합니다.

CREATE INDEX idx ON t (a + b * (c - 1), a, b);SELECT a FROM t WHERE a + b * (c - 1) < 100;

예 2

함수 기준 인덱스를 사용하여 NLS 정렬 인덱스 역시 지원할 수 있습니다. NLSSORT는 주어진 정렬 키를 문자열에 돌려주는 함수입니다. 따라서n a m e에 N L S S O RT를 사용하여 인덱스를 구축하려면 다음명령문을 수행합니다.

1 6 - 1 0 Oracle8i 관리자 설명서

인덱스 생성

CREATE INDEX nls_index ON t_table (NLSSORT(name, ’NLS_SORT = German’));

이 명령문은 독일어 검색 순서로 테이블 t _ t a b l e에 n l s _ i n d e x를 생성합니다.

N L S _ S O RT에서 선택합니다.

SELECT * FROM t_table ORDER BY name;

독일어 검색 순서를 사용하여 행이 정렬됩니다.

예 3

함수 기준 인덱스는 대소문자를 구분하지 않는 검색 작업에 사용됩니다.

CREATE INDEX case_insensitive_idx ON emp_table (UPPER(empname));

새로운 인덱스에서 질의는 다음과 같습니다.

SELECT * FROM emp_table WHERE UPPER(empname) = ’JOE’;

예 4

이 예는 함수 기준 인덱스의 가장 일반적인 사용으로 대소문자를 구분하지 않는 정렬과 언어 정렬이 있습니다.

CREATE INDEX empi ON empUPPER ((ename), NLSSORT(ename));

여기에서 N L S S O RT가 언어 정렬 키의 언어에 대한 세션 설정을 검사하므로 N L S _S O RT 지정은 N L S S O RT 인수에 나타나지 않습니다. 세션 설정을 위해 지정된 언어가 아닌 언어를 사용하려면 위의 예에 있는 N L S S O RT ( e n a m e )을 다음 명령문으로바꾸십시오.

NLSSORT(ename, NLS_SORT=’German’)

이 명령문은 독일어 언어 정렬 키를 사용하여 정렬할 것을 명령합니다.

인덱스 관리 1 6 - 1 1

인덱스 생성

주: C R E ATE INDEX는 함수 기준 인덱스에 사용된 최근 함수의 시간 기록을 저장합니다. 이 시간 기록은 인덱스를 검증할 때 갱신됩니다. 함수 기준 인덱스의 테이블스페이스 적시 복구를 수행할 때 인덱스에 사용된 최근 함수의 시간 기록이 인덱스에 저장된 시간 기록보다 새것이면 인덱스는 무효로 표시됩니다. ANA LYZE VA L I DAT EINDEX 문을 사용하여 이 인덱스를 유효화해야 합니다.

참조: 함수 기준 인덱스에 대한 자세한 내용은 O racle8i 개념 설명서와 O ra c l e 8 iSQL 참조서를 참조하십시오.

기존 인덱스 재생성

기존의 인덱스를 재생성하거나 재구축하기 전에 재구축과 관련한 비용 및 이익을 1 6 -6 페이지의 표 1 6 - 1에서와 같이 인덱스 병합과 관련한 비용 및 이익과 비교하십시오.

기존 인덱스를 데이터 소스로 사용하여 인덱스를 생성할 수 있습니다. 이러한 방법으로 인덱스를 생성하면 저장 영역 특성을 변경할 수 있고 새 테이블스페이스로 이동시킬 수도 있습니다. 기존 데이터 소스에 준하여 인덱스를 재생성하면 블록 내부의 단편화를 제거하게 됩니다. 실제로 인덱스를 삭제하고 C R E ATE INDEX 명령어를 사용하는 것보다는 기존 인덱스를 재생성하는 것이 성능 향상에 더 좋습니다.

다음 명령문은 기존 인덱스를 재생성합니다.

ALTER INDEX index_name REBUILD;

인덱스 이름 바로 뒤에 그리고 다른 옵션 앞에 REBUILD 절이 나와야 합니다. 또한REBUILD 절과 D E A L L O CATE UNUSED 절을함께 사용할 수 없습니다.

참조: A LTER INDEX 명령어와 옵션 절에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

키 압축 인덱스 생성

키 압축을 사용하여 인덱스를 생성하면 반복적으로 발생하는 키 열 접두어 값을 제거할 수 있습니다.

1 6 - 1 2 Oracle8i 관리자 설명서

인덱스 생성

키 압축은 인덱스 키를 접두어 입력 항목과 접미어 입력 항목으로 나눕니다. 인덱스블록의 모든 접미어 입력 항목 중 접두어 입력 항목을 공유하여 압축을 수행합니다.이렇게 공유하면 인덱스 블록 당 보다 많은 키를 저장할 수 있어 영역을 현저하게 절약할 수 있으며 성능을 향상시켜 줍니다.

키 압축은 다음과 같은 상황에 유용하게 사용됩니다.

■ 키를 고유하게 만들기 위해 ROW I D가 추가되는 고유하지 않은 인덱스를 가진 경우. 여기에서 키 압축을 사용하면 중복 키는 ROWID 없는 인덱스 블록의 접두어입력 항목으로 저장됩니다. 나머지 행은 ROW I D만으로 구성된 접미어 입력 항목입니다.

■ 고유한 다중 열 인덱스를 가진 경우

COMPRESS 절을 사용하여 키 압축을 활성화할 수 있습니다. 또한 키 열의 수와 같이 접두어의 길이를 지정하여 키 열이 접두어 입력 항목과 접미어 입력 항목으로 구분되는 방법을 식별할 수 있습니다. 예를 들어, 다음 명령문은 인덱스 최하위 블록에서 반복적으로 발생하는 중복 키를 압축합니다.

CREATE INDEX emp_ename (ename)TABLESPACE usersCOMPRESS 1

COMPRESS 절은 재구축이 이루어지는 동안 지정될 수도 있습니다. 예를 들어, 재구축이 이루어질 때 다음과 같이 압축을 비활성화할 수 있습니다.

ALTER INDEX emp_ename REBUILD NOCOMPRESS;

참조: C R E ATE INDEX 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

인덱스 변경

인덱스를 변경하려면 인덱스가 스키마에 포함되어 있거나 A LTER ANY INDEX 시스템 권한이 있어야 합니다. 트랜잭션 입력 항목 매개변수를 변경하거나 저장 영역매개변수를 변경할 때만 인덱스를 변경할 수 있으며 인덱스의 열 구조는 변경할 수없습니다.

SQL 명령어 A LTER INDEX를 사용하면 기본 키와 고유 키 무결성 제약 조건을 강제로 시행하는 매개변수를 포함하여 인덱스의 저장 영역 매개변수를 변경할 수 있습니다. 예를 들어, EMP_ENAME 인덱스를변경하는 명령문은 다음과 같습니다.

ALTER INDEX emp_enameINITRANS 5MAXTRANS 10

인덱스 관리 1 6 - 1 3

인덱스 변경

STORAGE (PCTINCREASE 50);

인덱스의 트랜잭션 입력 항목 설정( I N I T R A N S, MAXTRANS)을 변경할 때 I N I -T R A N S의 새로운 설정은 나중에 할당된 데이터 블록에만 적용되는 반면 M A X T R -A N S의 새로운 설정은 인덱스의 모든 블록(이미 할당되었거나 나중에 할당된 블록)에 적용됩니다.

I N I T I A L과 MAXEXTENTS 저장 영역 매개변수는 변경될 수 없습니다. 다른 저장영역 매개변수의 새로운 설정은 나중에 할당된 확장 영역에만 영향을 줍니다.

무결성 제약 조건을 구현하는 인덱스의 경우 USING INDEX 옵션을가진 E NA B L E절을 포함하는 A LTER TABLE 문을실행하면 저장 영역 매개변수를 조정할 수 있습니다. 예를 들어, 다음 명령문은 이전 단원에서 정의한 인덱스의 저장 영역 옵션을 변경합니다.

ALTER TABLE empENABLE PRIMARY KEY USING INDEXPCTFREE 5;

인덱스 영역 사용 모니터링

인덱스에서 키 값이 자주 삽입, 갱신, 삭제되면 인덱스는 시간이 경과함에 따라 영역을 효율적으로 사용할 수도 있지만 사용하지 못할 수도 있습니다. 우선 인덱스의 구조를 분석한 다음 I N D E X _ S TATS 뷰를 질의하여 인덱스의 효율적인 영역 사용을 규칙적으로 모니터할 수 있습니다.

SELECT pct_used FROM sys.index_stats WHERE name = ’indexname’;

인덱스 영역 사용 백분율은 인덱스 키 삽입, 갱신, 삭제 횟수에 따라 달라집니다. 다음과 같은 작업을 여러 번 수행하여 인덱스의 평균 영역 사용 효율성을 관리할 수 있습니다.

■ 통계 분석

■ 인덱스 유효화

■ PCT_USED 검사

■ 인덱스 삭제 및 재생성(또는 병합)

인덱스 영역 사용이 평균 이하로 떨어지면 인덱스를 삭제하고 재생성하거나 병합하여인덱스 영역을 줄입니다.

1 6 - 1 4 Oracle8i 관리자 설명서

인덱스 영역 사용 모니터링

참조: 인덱스 구조 분석에 대한 내용은 20-3 페이지“테이블, 인덱스 및 클러스터 분석”을 참조하십시오.

인덱스 삭제

인덱스를 삭제하려면 인덱스가 스키마에 포함되어 있거나 D ROP ANY INDEX 시스템 권한이 있어야 합니다.

다음과 같은 경우에 인덱스를 삭제할 수 있습니다.

■ 인덱스가 더 이상 필요하지 않을 경우

■ 인덱스에 관련된 테이블에 질의를 수행했을 때 기대되는 성능 향상을 제공하지 못한 경우 (예를 들어, 테이블이 너무 작거나 테이블에 행이 많이 있지만 인덱스 입력 항목이 거의 없을 때)

■ 응용 프로그램이 데이터 질의에 인덱스를 사용하지 않을 경우

■ 인덱스를 사용할 수 없게 되어 재구축 전에 삭제해야 할 경우

■ 인덱스가 너무 단편화되어 재구축 전에 삭제해야 할 경우

인덱스를 삭제할 때 인덱스 세그먼트의 모든 확장 영역은 해당되는 테이블스페이스로되돌려지며 테이블스페이스의 다른 객체에 사용할 수 있습니다.

인덱스를 삭제하는 방법은 C R E ATE INDEX 문으로인덱스를 명시적으로 생성했는지또는 테이블에서 키 제약 조건을 정의하여 암시적으로 생성했는지에 따라 다릅니다.

주: 테이블이 삭제되면 관련된 모든 인덱스도 자동으로 삭제됩니다.

UNIQUE 키나 P R I M A RY KEY 제약 조건이 설정된 인덱스만 삭제할 수는 없습니다. 제약 조건의 관련 인덱스를 삭제하려면 제약 조건 자체를 사용할 수 없게 하거나삭제해야 합니다.

DROP INDEX emp_ename;

참조: 인덱스 분석에 대한 내용은 20-3 페이지“테이블, 인덱스 및 클러스터 분석”을참조하십시오.

제약 조건의 관련 인덱스 삭제에 대한 자세한 내용은 20-13 페이지“무결성 제약 조건 관리”를 참조하십시오.

인덱스 관리 1 6 - 1 5

인덱스 삭제

1 6 - 1 6 Oracle8i 관리자 설명서

인덱스 삭제

17클러스터 관리

이 장에서는 클러스터화된 테이블과 인덱스를 포함하는 클러스터 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 클러스터 관리에 대한 지침 사항

■ 클러스터 생성

■ 클러스터 변경

■ 클러스터 삭제

이 장에서 설명하는 작업을 시작하기 전에 1 2장의“스키마 객체 관리에 대한 지침 사항”에서 다룬 개념을 잘 알고 있어야 합니다.

클러스터 관리 1 7 - 1

클러스터 관리에 대한 지침 사항

클러스터는 테이블 데이터를 저장하는 또 다른 방법을 제공합니다. 클러스터는 동일한 데이터 블록을 공유하는 테이블 그룹으로 구성되며 데이터 블록은 공통 열을 공유하고 종종 함께 사용되기 때문에 그룹으로 묶을 수 있습니다. 예를 들어, EMP와DEPT 테이블은 DEPTNO 열을 공유합니다. EMP와 DEPT 테이블을 클러스터화하면 (그림 17-1 참조) Ora c l e은 E M P와 DEPT 테이블에서 각 부서와 관련되는 모든 행을 물리적으로 동일한 데이터 블록에 저장합니다. 개별적으로 자주 액세스되는테이블은 클러스터를 사용하지 마십시오.

클러스터는 다른 테이블의 관련된 행을 동일한 데이터 블록에 저장하므로 제대로 사용된 클러스터는 두 가지 중요한 장점을 제공합니다.

■ 디스크 입출력이 줄어들고 클러스터화된 테이블 조인에 액세스하는 시간이 개선됩

니다.

■ 클러스터 키는 클러스터화된 테이블이 공통으로 갖는 열 또는 열의 그룹입니다.

클러스터를 생성할 때 클러스터 키 열을 지정합니다. 클러스터에 추가되는 테이블

을 생성할 때마다 동일한 열을 계속 지정합니다. 각 클러스터 키 값은 그 값을 포

함하는 다른 테이블의 행 수에 관계없이 클러스터와 클러스터 인덱스에 각각 한

번씩만 저장됩니다.

따라서 관련된 테이블과 인덱스 데이터를 클러스터에 저장하면 클러스터화되지 않은 테이블 형식에서 필요로 하는 것보다 적은 저장 영역에 저장할 수 있습니다. 예를 들어, 각 클러스터 키(각 D E P T N O )가 E M P와 DEPT 테이블에서 동일한 값을 포함하는 많은 열에 대해 한 번씩만 저장되는 방식을 주의깊게 보십시오.

클러스터가 생성되면 클러스터에 테이블을 생성할 수 있습니다. 그러나 클러스터화된테이블에 행을 삽입하기 전에 클러스터 인덱스가 생성되어야 합니다. 클러스터 사용은 클러스터화된 테이블에 추가로 인덱스를 생성해도 영향을 주지 않습니다. 평상시와 마찬가지로 인덱스는 생성되고 삭제됩니다.

클러스터 관리에 대한 지침 사항

1 7 - 2 Oracle8i 관리자 설명서

그림 17-1 클러스터화된테이블 데이터

클러스터 관리에 대한 지침 사항

클러스터 관리 1 7 - 3

클러스터 키(DEPTNO)

10 DNAME LOC

SALES BOSTON

EMPNO ENAME …

1000 SMITH …1321 JONES …1841 WARD …

20 DNAME LOC

ADMIN NEW YORK

EMPNO ENAME …

932 KEHR …1139 WILSON …1277 NORMAN …

EMP 테이블

EMPNO ENAME DEPTNO …

932 KEHR 20 …1000 SMITH 10 …1139 WILSON 20 …1277 NORMAN 20 …1321 JONES 10 …1841 WARD 10 …

DEPT 테이블

DEPTNO DNAME LOC

10 SALES BOSTON20 ADMIN NEW YORK

클러스터화된 테이블관련된 데이터를함께 저장하는 것이보다 효율적입니다.

클러스터화되지 않은테이블관련된 데이터를 따로저장하면 보다 많은영역을차지합니다.

다음 단원에서는 클러스터를 관리할 때 고려해야 할 지침 사항을 설명하고 다음 내용을 다룹니다.

■ 클러스터에 적합한 테이블 선택

■ 클러스터 키에 적합한 열 선택

■ 데이터 블록의 영역 사용 지정

■ 평균 클러스터 키와 이에 관련된 행에 필요한 영역 지정

■ 각 클러스터와 클러스터 인덱스 행의 위치 지정

■ 클러스터 크기 측정 및 저장 영역 매개변수 설정

참조: 클러스터에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

클러스터에 적합한 테이블 선택

클러스터를 사용하여 주로 삽입이나 갱신이 아닌 질의의 대상이 되는 하나 이상의 테이블을 저장합니다. 이러한 테이블에서 질의는 주로 클러스터에서 다중 테이블의 데이터를 조인하거나 단일 테이블에서 관련된 데이터를 읽어들입니다.

클러스터 키에 적합한 열 선택

클러스터 키 열은 조심스럽게 선택해야 합니다. 테이블을 조인하는 질의에 다중 열을사용하려면 클러스터 키를 조합 키로 만듭니다. 일반적으로 좋은 클러스터 인덱스라는 것을 알려주는 특징은 인덱스의 경우와 같습니다.

좋은 클러스터 키는 고유 값을 충분히 갖고 있으므로 각 키 값에 해당하는 행의 그룹이 대략 하나의 데이터 블록을 채울 수 있습니다. 클러스터 키 값당 너무 적은 행을갖게 되면 영역을 낭비하게 되고 성능도 거의 향상되지 않습니다. 일부 행만 공통 값을 가질 정도로 클러스터 키가 제한적이면 작은 S I Z E를 클러스터 생성 시간에 지정하지 않는 한 블록 영역을 낭비하게 됩니다. (아래를 참조하십시오. )

클러스터 키 값당 너무 많은 행을 가지면 키 값을 갖는 행을 검색하는데 상당한 시간이 걸리게 됩니다. 값에 대한 클러스터 키가 너무 일반적이면 (예를 들어, MALE과FEMALE) 초과검색을 하게 되고 클러스터화하지 않았을 때보다 성능이 저하됩니다.

클러스터 인덱스는 고유 값이 될 수 없으며 L O N G으로 정의된 열을 포함할 수 없습니다.

참조: 좋은 인덱스 특성에 대한 내용은 16-2 페이지의“인덱스 관리에 대한 지침 사항”을 참조하십시오.

클러스터 관리에 대한 지침 사항

1 7 - 4 Oracle8i 관리자 설명서

데이터 블록의 영역 사용 지정

클러스터 생성 중에 P C T F R E E와 PCTUSED 매개변수를 지정하여 클러스터 데이터세그먼트의 데이터 블록에 있는 현재 행 갱신을 위해 예약한 영역의 양과 사용에 영향을 줄 수 있습니다. 클러스터에서 생성된 테이블에 대해 설정한 P C T F R E E와PCTUSED 매개변수는 무시됩니다. 클러스터화된 테이블은 클러스터에 대해 설정된설정값을 자동으로 사용합니다.

참조: P C T F R E E와 PCTUSED 설정에 대한 자세한 내용은 12-2 페이지의“데이터블록의 영역 관리”를 참조하십시오.

평균 클러스터 키와 이에 관련된 행에 필요한 영역 지정

C R E ATE CLUSTER 명령어는 평균 클러스터 키와 이에 관련된 행에 필요한 바이트 수를 측정한 SIZE 추가 인수를 가집니다. Ora c l e은 다음 작업을 수행할 때 S I Z E매개변수를 사용합니다.

■ 클러스터화된 데이터 블록에 적합한 클러스터 키(및 관련된 행) 수를 측정합니다.

■ 클러스터화된 데이터 블록의 클러스터 키 수를 제한합니다. 이는 클러스터 내에서

키의 저장 영역 효율성을 최대화합니다.

S I Z E는 주어진 클러스터 키가 사용할 수 있는 영역을 제한하지 않습니다. 예를 들어,두 개의 클러스터 키가 하나의 데이터 블록에 맞도록 S I Z E가 설정되면 사용 가능한데이터 블록 영역의 양은 두 클러스터 키 중 하나에 의해서 사용될 수 있습니다.

기본적으로 O ra c l e은 클러스터 데이터 세그먼트의 각 데이터 블록에 하나의 클러스터키와 이에 관련된 행만을 저장합니다. 블록 크기가 운영 체제마다 다르더라도 블록당하나의 키 규칙은 클러스터화된 테이블이 다른 시스템의 다른 데이터베이스에 임포트될 때도 유지 관리됩니다.

주어진 클러스터 키 값의 모든 행이 하나의 블록에 맞지 않으면 주어진 키로 모든 값을 빠른 속도로 액세스하기 위해 블록은 체인화됩니다. 클러스터 인덱스는 블록 체인의 시작 위치를 나타내고 각 블록은 클러스터 키 값과 관련된 행을 포함합니다. 하나이상의 키가 블록에 맞도록 클러스터 S I Z E가 설정되었다면 블록은 하나 이상의 체인에 속할 수 있습니다.

각 클러스터와 클러스터 인덱스 행의 위치 지정

올바른 권한과 테이블스페이스 할당량을 가지면 현재 온라인 상태인 테이블스페이스에 새 클러스터와 관련된 클러스터 인덱스를 생성할 수 있습니다. CREAT ECLUSTER/INDEX 문에 TA B L E S PACE 옵션을 지정하여 테이블스페이스가 새 클러스터나 인덱스를 저장하도록 지정합니다.

클러스터 관리에 대한 지침 사항

클러스터 관리 1 7 - 5

클러스터와 클러스터 인덱스는 서로 다른 테이블스페이스에서 생성될 수도 있습니다.

각기 다른 저장 장치에 저장되어 있는 다른 테이블스페이스에서 클러스터와 클러스터

의 인덱스를 만들면 테이블 데이터와 인덱스 데이터는 최소한의 디스크 경합으로 동

시에 액세스할 수 있게 됩니다.

클러스터 크기 측정 및 저장 영역 매개변수 설정

클러스터를 생성하기 전에 클러스터 크기를 측정하면 다음과 같은 이점이 있습니다.

■ 인덱스, 롤백 세그먼트, 리두 로그 파일의 측정치와 클러스터 크기 측정치를 합한

값을 사용하여 원하는 데이터베이스를 유지하는데 필요한 디스크 영역을 결정할

수 있습니다. 이 측정치를 가지고 올바른 하드웨어를 구매하거나 다른 사항을 결

정합니다.

■ 각각의 클러스터 크기 측정치를 사용하여 클러스터가 사용할 디스크 영역을 잘 관

리할 수 있습니다. 클러스터가 생성되면 적합한 저장 영역 매개변수를 설정하여

클러스터를 사용하는 응용 프로그램의 입출력 성능을 향상시킬 수 있습니다.

클러스터를 생성하기 전에 테이블 크기 측정 유무에 관계없이 클러스터화되지 않은테이블을 생성할 때 명시적으로 저장 영역 매개변수를 설정할 수 있습니다. 테이블을생성하거나 나중에 변경할 때 명시적으로 설정하지 않은 저장 영역 매개변수는 자동으로 테이블이 속한 테이블스페이스에 설정된 해당 기본 저장 영역 매개변수를 사용합니다. 또한 클러스터화된 테이블은 자동으로 클러스터의 저장 영역 매개변수를 사용합니다.

클러스터 생성

이 단원에서는 클러스터 생성 방법에 대해 설명하고 다음 내용을 다룹니다.

■ 클러스터화된 테이블 생성

■ 클러스터 인덱스 생성

스키마에 클러스터를 생성하려면 C R E ATE CLUSTER 시스템 권한과 클러스터를

포함할 테이블스페이스에 대한 할당량을 갖거나 UNLIMITED TA B L E S PACE 시스

템 권한이 있어야 합니다.

다른 사용자의 스키마에 클러스터를 생성하려면 C R E ATE ANY CLUSTER 시스템

권한이 있어야 하고 소유자는 클러스터를 포함할 테이블스페이스에 대한 할당량을 갖

거나 UNLIMITED TA B L E S PACE 시스템 권한이 있어야 합니다.

SQL 명령어 C R E ATE CLUSTER 문을 사용하여 클러스터를 생성할 수 있습니다.다음 문은 DEPTNO 열에 의해 클러스터화되는 E M P와 DEPT 테이블을 저장하는EMP_DEPT 클러스터를생성합니다.

클러스터 생성

1 7 - 6 Oracle8i 관리자 설명서

CREATE CLUSTER emp_dept (deptno NUMBER(3))PCTUSED 80PCTFREE 5SIZE 600TABLESPACE usersSTORAGE (INITIAL 200k

NEXT 300KMINEXTENTS 2MAXEXTENTS 20PCTINCREASE 33);

클러스터화된 테이블 생성

클러스터에 테이블을 생성하려면 C R E ATE TA B L E이나 C R E ATE ANY TA B L E시스템 권한이 있어야 합니다. 이 경우에는 테이블스페이스 할당량이나UNLIMITED TA B L E S PACE 시스템 권한이 필요하지 않습니다.

SQL CREATE TABLE 문에CLUSTER 옵션을 사용하여 클러스터에 테이블을 생성할 수 있습니다. EMP와 DEPT 테이블은 다음 명령문을 사용하여 E M P _ D E P T클러스터에 생성될 수 있습니다.

CREATE TABLE dept (deptno NUMBER(3) PRIMARY KEY, . . . )CLUSTER emp_dept (deptno);

CREATE TABLE emp (empno NUMBER(5) PRIMARY KEY,ename VARCHAR2(15) NOT NULL,. . .deptno NUMBER(3) REFERENCES dept)CLUSTER emp_dept (deptno);

주: C R E ATE TABLE 문에서 클러스터화된 테이블에 대해 스키마를지정할 수 있습니다. 클러스터화된 테이블은 클러스터를 포함하는 스키마가 아닌 다른 스키마에 속할 수 있습니다. 또한 열의 이름은 일치시킬 필요는 없지만 구조는 일치시켜야 합니다.

클러스터 인덱스 생성

클러스터 인덱스를 생성하려면 다음 중 한 조건이 맞아야 합니다.

■ 스키마가 클러스터를 포함하고 C R E ATE INDEX 시스템 권한이 있는 경우

■ C R E ATE ANY INDEX 시스템권한이 있는 경우

클러스터 생성

클러스터 관리 1 7 - 7

어떤 경우든 클러스터 인덱스를 포함할 테이블스페이스에 대한 할당량이나 U N L IMITED TA B L E S PACE 시스템 권한이 있어야 합니다.

클러스터화된 테이블에 행을 삽입하기 전에 먼저 클러스터 인덱스를 생성해야 합니다. EMP_DEPT 클러스터에 대해 클러스터 인덱스를 생성하는 명령문은 다음과 같습니다.

CREATE INDEX emp_dept_indexON CLUSTER emp_deptINITRANS 2MAXTRANS 5TABLESPACE usersSTORAGE (INITIAL 50K

NEXT 50KMINEXTENTS 2MAXEXTENTS 10PCTINCREASE 33)

PCTFREE 5;

다양한 저장 영역 설정을 클러스터와 클러스터 인덱스에 대해 명시적으로 지정합니다.

참조: 시스템 권한에 대한 자세한 내용은 2 4장“사용자 권한과 롤 관리”를, 테이블스페이스 할당량에 대한 내용은 2 3장“사용자와 자원 관리”를 참조하십시오.

클러스터 변경

다음 설정을 변경하려면 기존 클러스터를 변경합니다.

■ 데이터 블록의 영역 사용 매개변수( P C T F R E E, PCTUSED)

■ 평균 클러스터 키 크기( S I Z E )

■ 트랜잭션 입력 항목 설정( I N I T R A N S, MAXTRANS)

■ 저장 영역 매개변수( N E X T, PCTINCREASE)

클러스터를 변경하려면 스키마에 클러스터를 포함하거나 A LTER ANY CLUSTER시스템 권한이 있어야 합니다.

데이터 블록의 영역 사용 매개변수( P C T F R E E, PCTUSED) 또는 클러스터의 클러스터 크기 매개변수( S I Z E )를 변경할 때 새 설정값은 이미 할당된 블록과 나중에 클러스터에 할당된 블록을 포함하여 클러스터가 사용하는 모든 데이터 블록에 적용됩니다. 테이블에 할당된 블록은 필요할 때 재구성됩니다.

클러스터의 트랜잭션 입력 항목 설정( I N I T R A N S, MAXTRANS)을 변경하면 새INITRANS 설정값은 나중에 클러스터에 할당된 데이터 블록에만 적용되는 반면, 새

클러스터 변경

1 7 - 8 Oracle8i 관리자 설명서

MAXTRANS 설정값은 클러스터의 모든 블록(이미 할당되었거나 계속 할당되는 블록)에 적용됩니다.

I N I T I A L과 MINEXTENTS 저장 영역 매개변수는 변경될 수 없습니다. 다른 저장영역 매개변수의 모든 새 설정값은 나중에 클러스터에 할당된 확장 영역에만 영향을줍니다.

클러스터를 변경하려면 A LTER CLUSTER 문을 사용합니다. EMP_DEPT 클러스터를 변경하는 명령문은 다음과 같습니다.

ALTER CLUSTER emp_deptPCTFREE 30PCTUSED 60;

클러스터 테이블과 클러스터 인덱스 변경

SQL 명령어 A LTER TABLE 문을 사용하여 클러스터화된 테이블을 변경할 수 있습니다. 그러나 클러스터화된 테이블에 대해 A LTER TABLE 문에서 설정한 데이터블록의 영역 매개변수, 트랜잭션 입력 항목 매개변수 또는 저장 영역 매개변수는 오류 메시지(ORA-01771, “illegal option for a clustered table”)를 발생시킵니다.O ra c l e은 모든 클러스터화된 테이블에 대해 클러스터의 매개변수를 사용합니다. 따라서 클러스터화된 테이블에 열을 추가하거나 수정, 클러스터 키가 없는 열 삭제 또는무결성 제약 조건이나 트리거를 추가, 삭제, 설정, 설정 해제할 때만 A LT E RTABLE 명령어를사용할 수 있습니다.

주: 클러스터 인덱스의 크기를 측정할 때 인덱스는 실제 행이 아닌 각클러스터 키에 있으므로 각 키는 인덱스에서 한 번만 나타납니다.

클러스터의 저장 영역 수동 할당

필요할 때마다 클러스터의 데이터 세그먼트에 추가 확장 영역이 동적으로 할당됩니다. 그러나 일부 환경에서는 클러스터에 대한 추가 확장 영역을 명시적으로 할당해야합니다. 예를 들어, Oracle Pa rallel Serv e r를 사용할 때 특정 인스턴스에 대한 클러스터의 확장 영역을 명시적으로 할당할 수 있습니다.

A LTER CLUSTER 문에 A L L O CATE EXTENT 옵션을 사용하여 클러스터를 위한 새로운 확장 영역을 할당합니다.

참조: 테이블 변경에 대한 내용은 14-10 페이지“테이블변경”을 참조하십시오.

다른 인덱스와 똑같이 클러스터 인덱스를 변경합니다. 자세한 내용은 16-13 페이지“인덱스 변경”을 참조하십시오.

클러스터 변경

클러스터 관리 1 7 - 9

A LTER CLUSTER 문의 CLUSTER 매개변수에 대한 자세한 내용은 O ra c l e 8 iPa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

클러스터 삭제

이 단원에서는 클러스터 삭제에 대한 사항을 설명하고 다음 내용을 다룹니다.

■ 클러스터화된 테이블 삭제

■ 클러스터 인덱스 삭제

클러스터 내에 테이블이 필요하지 않다면 클러스터를 삭제할 수 있습니다. 클러스터가 삭제되면 클러스터 내의 테이블과 해당 클러스터 인덱스도 삭제됩니다. 클러스터데이터 세그먼트와 클러스터 인덱스의 인덱스 세그먼트에 속한 모든 확장 영역은 해당 테이블스페이스로 되돌려지며 테이블스페이스 내의 다른 세그먼트에 의해 사용될수 있습니다.

클러스터화된 테이블 삭제

클러스터를 삭제하려면 스키마가 클러스터를 포함하거나 D ROP ANY CLUSTER시스템 권한이 있어야 합니다. 클러스터화된 테이블 소유자와 클러스터 소유자가 다르더라도 테이블을 포함하는 클러스터를 삭제할 때는 추가 권한이 필요하지 않습니다.

클러스터화된 테이블은 테이블의 클러스터나 다른 클러스터화된 테이블 또는 클러스터 인덱스에 영향을 주지 않고 개별적으로 삭제될 수 있습니다. 클러스터화된 테이블은 클러스터화되지 않은 테이블이 삭제되는 것과 같이 D ROP TABLE 문으로 삭제됩니다.

주: 클러스터에서 하나의 테이블을 삭제할 때 테이블의 각 행은 개별적으로 삭제됩니다. 전체 클러스터를 삭제할 때 효율성을 최대화하려면D ROP CLUSTER 문에 INCLUDING TABLES 옵션을 사용하여모든 테이블을 포함하는 클러스터를 삭제합니다. 클러스터의 나머지 부분을 남기려면 D ROP TABLE 문을 사용하여 클러스터에서 개별적으로 테이블을 삭제합니다.

참조: 테이블 삭제에 대한 내용은 14-12 페이지“테이블삭제”를 참조하십시오.

클러스터 삭제

1 7 - 1 0 Oracle8i 관리자 설명서

클러스터 인덱스 삭제

클러스터나 클러스터의 클러스터화된 테이블에 영향을 주지 않고 클러스터 인덱스를삭제할 수 있습니다. 그러나 클러스터 인덱스가 없다면 클러스터화된 테이블을 사용할 수 없습니다. 클러스터에 액세스하려면 클러스터 인덱스를 재생성해야 합니다. 클러스터 인덱스는 가끔 단편화된 클러스터 인덱스를 재구축하는 절차의 일부로 삭제되기도 합니다.

테이블을 포함하지 않는 클러스터나 클러스터 인덱스를 삭제하려면 SQL 명령어D ROP CLUSTER 문을 사용합니다. 예를 들어, EMP_DEPT인 빈 클러스터를 삭제하는 명령문은 다음과 같습니다.

DROP CLUSTER emp_dept;

클러스터에 하나 이상의 클러스터화된 테이블이 있고 테이블을 삭제하려면 다음과 같이 D ROP CLUSTER 문에 INCLUDING TABLES 옵션을 추가해야 합니다.

DROP CLUSTER emp_dept INCLUDING TABLES;

INCLUDING TABLES 옵션이 없고 클러스터에 테이블이 있으면 오류가 발생합니다.

클러스터에 있는 하나 이상의 테이블이 클러스터 외부에 있는 테이블의 F O R E I G NKEY 제약 조건을 참조하는 기본 키나 고유 키를 포함하면 종속적인 F O R E I G NKEY 제약 조건을 삭제해야 클러스터를 삭제할 수 있습니다. 이는 다음 예에서 보는것처럼 D ROP CLUSTER 문에 CA S CADE CONSTRAINTS 옵션을 사용하면 쉽게 수행될 수 있습니다.

DROP CLUSTER emp_dept INCLUDING TABLES CASCADE CONSTRAINTS;

제약 조건이 있고 CA S CADE CONSTRAINTS 옵션을 사용하지 않으면 오류가 발생합니다.

참조: 인덱스 삭제에 대한 내용은 16-15 페이지의“인덱스삭제”를 참조하십시오.

클러스터 삭제

클러스터 관리 1 7 - 1 1

클러스터 삭제

1 7 - 1 2 Oracle8i 관리자 설명서

18해시 클러스터 관리

이 장에서는 해시 클러스터 관리 방법에 대해 설명하고 다음 내용을 다룹니다.

■ 해시 클러스터 관리에 대한 지침 사항

■ 해시 클러스터 변경

■ 해시 클러스터 삭제

참조: 이 장에서 설명하는 작업을 시작하기 전에 1 2장“스키마 객체 관리에 대한 지침 사항”에서 다룬 개념을 잘 알고 있어야 합니다.

해시 클러스터 관리 1 8 - 1

해시 클러스터 관리에 대한 지침 사항

이 단원에서는 해시 클러스터를 관리하기 전에 고려해야 할 지침 사항에 대해 설명하고 다음 내용을 다룹니다.

■ 해싱의 장점

■ 해싱의 단점

■ 해시 클러스터에 필요한 크기 측정 및 저장 영역 매개변수 설정

해시 클러스터에 테이블을 저장하는 것은 데이터 검색 성능을 향상시키는 하나의 방법입니다. 해시 클러스터는 인덱스나 인덱스 클러스터를 가지는 클러스터화되지 않은테이블의 대안입니다. 인덱스 테이블이나 인덱스 클러스터를 사용하면 별도의 인덱스에 저장되는 키 값을 사용하여 테이블에서 행을 찾습니다. 해싱을 사용하려면 해시클러스터를 생성하여 해시 클러스터에 테이블을 로드합니다. 테이블의 행은 물리적으로 해시 클러스터에 저장되며 해시 함수의 결과에 따라 검색됩니다.

해시 함수를 사용하여 특정 클러스터 키 값에 준하는 해시 값이라는 숫자 값의 분포를 생성합니다. 인덱스 클러스터 키와 마찬가지로 해시 클러스터 키는 단일 열 또는조합 키(다중 열 키)입니다. 해시 클러스터에서 행을 찾거나 저장하려면 해시 함수를행의 클러스터 키 값에 적용합니다. 그 결과로 나온 해시 값은 클러스터의 데이터 블록에 해당되며 이 블록에서 읽거나 쓰게 됩니다.

인덱스 테이블이나 클러스터에서 행을 찾거나 저장하려면 최소한 두 번의 (보통은 더많은) 입출력이 수행되어야 합니다.

■ 인덱스의 키 값을 찾거나 저장하기 위한 하나 이상의 입출력

■ 테이블이나 클러스터의 행을 읽거나 쓰기 위한 입출력

반대로 해시 클러스터에서 행을 찾으려면 해시 함수를 사용하며 별도의 입출력은 필요하지 않습니다. 결과적으로 해시 클러스터의 행을 읽거나 쓰는데 최소한 한 번의입출력 작업이 필요합니다.

참조: 해시 클러스터에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

해싱의 장점

해싱이 아닌 인덱싱을 사용한다면 테이블을 개별적으로 저장할 것인지, 클러스터의한 부분으로 저장할 것인지를 고려해야 합니다.

해싱은 다음과 같은 경우에 사용하면 좋습니다.

해시 클러스터 관리에 대한 지침 사항

1 8 - 2 Oracle8i 관리자 설명서

■ 대부분의 질의가 클러스터 키 상에서 등호 질의인 경우

SELECT . . . WHERE cluster_key = . . . ;

이 경우 등호 조건의 클러스터 키가 해시되고 보통 한 번 읽어 해당 해시 키를 찾습니다. 인덱스 테이블과 비교해 볼 때 키 값은 우선 인덱스에서 찾고(보통 여러번 읽음) 테이블에서 행을 읽어옵니다. (한 번 읽음)

■ 해시 클러스터에 있는 테이블의 크기는 주로 정적이므로 클러스터에 있는 테이블

에 필요한 행의 수와 영역 크기를 결정할 수 있습니다. 해시 클러스터에 있는 테

이블이 클러스터에 할당된 초기치보다 더 많은 영역을 필요로 하면 오버플로우 블

록이 필요하므로 치명적인 성능 저하를 초래할 수 있습니다.

해싱의 단점

해싱은 다음과 같은 상황에서는 오히려 단점이 됩니다.

■ 테이블에서 대부분의 질의가 클러스터 키 값의 범위에서 행을 검색하는 경우 예를

들어, 다음과 같은 완전한 테이블 스캔이나 질의에서는 해시 함수를 특정 해시 키

의 위치를 결정하는데 사용할 수 없습니다. 대신 질의에 대해 행을 인출하는데 전

체 테이블 스캔이 수행되어야 합니다.

SELECT . . . WHERE cluster_key < . . . ;

인덱스의 경우 키 값은 정렬되어 있습니다. 따라서 질의의 WHERE 절을 만족시키는 클러스터 키 값은 상대적으로 적은 입출력으로 찾을 수 있습니다.

■ 테이블이 고정되어 있지 않고 계속 증가하는 경우 테이블이 무제한으로 증가하면

테이블(테이블의 클러스터)에 필요한 영역을 미리 결정할 수 없습니다.

■ 응용 프로그램이 자주 전체 테이블을 스캔하고 이 테이블에 데이터가 많지 않은

경우 이 상황에서 해싱으로 전체 테이블을 스캔하는데 시간이 많이 걸립니다.

■ 해시 클러스터에 필요한 영역을 미리 할당할 수 없는 경우

참조: 해시 클러스터 생성과 해시 함수 지정에 대한 내용은 O racle8i SQL 참조서를참조하십시오.

해시 함수와 사용자 정의 해시 함수 지정에 대한 내용은 O racle8i 개념 설명서를 참조하십시오.

해시 클러스터 관리에 대한 지침 사항

해시 클러스터 관리 1 8 - 3

해싱을 사용하더라도 테이블은 클러스터 키를 포함하여 모든 열에 대해 별도의 인덱스를 가질 수 있습니다. 자세한 내용은 O racle8i Application Dev e l o p e r’s Guide -F u n d a m e n t a l s를 참조하십시오.

해시 클러스터에 필요한 크기 측정 및 저장 영역 매개변수 설정

인덱스 클러스터에서처럼 해시 클러스터의 데이터에 필요한 저장 영역 측정이 중요합니다.

S I Z E와 HASHKEYS 설정값에 따라 영역의 초기 할당만으로 해시 테이블을 저장하기에 충분합니다. INITIAL, NEXT, MINEXTENTS 저장 영역 매개변수의 설정값이 해시 테이블을 포함할 수 있을 만큼 크지 않으면 적어도 S I Z E * H A S H K E Y S에도달할 때까지 추가 확장 영역이 할당됩니다. 예를 들어, 데이터 블록의 크기가 2 K라면 블록당 사용 가능한 데이터 영역은 대략 1900 바이트(데이터 블록 크기 - 오버헤드)고 S T O R AG E와 HASH 매개변수는 C R E ATE CLUSTER 명령어에서 다음과같이 지정됩니다.

STORAGE (INITIAL 100KNEXT 150KMINEXTENTS 1PCTINCREASE 0)

SIZE 1500HASHKEYS 100

이 예에서 하나의 해시 키만이 각 데이터 블록에 지정됩니다. 따라서 해시 클러스터에 필요한 초기 영역은 적어도 1 0 0 * 2 K이거나 2 0 0 K입니다. 저장 영역 매개변수의 설정값은 이러한 요구 사항을 만족시킬 만큼 충분하지 않습니다. 따라서 초기 확장 영역 1 0 0 K와 두 번째 확장 영역 1 5 0 K가 해시 클러스터에 할당됩니다.

이번에는 HASH 매개변수를 다음과 같이 지정합니다.

SIZE 500 HASHKEYS 100

이 경우 세 개의 해시 키가 각 데이터 블록에 지정됩니다. 따라서 해시 클러스터에 필요한 초기 영역은 적어도 3 4 * 2 K이거나 6 8 K입니다. 저장 영역 매개변수의 초기 설정값은 이 요구 사항을 만족시킬 만큼 충분합니다. (초기 확장 영역 1 0 0 K가 해시 클러스터에 할당됩니다)

해시 클러스터 생성

해시 클러스터가 생성되면 클러스터에 테이블을 생성할 수 있습니다. SQL 명령어C R E ATE CLUSTER를 사용하여 해시 클러스터를 생성합니다. 다음 명령문은TRIALNO 열에 의해 클러스터화된 TRIAL 테이블을 저장하는 T R I A L _ C L U S T -E R라는 클러스터를 생성합니다.

해시 클러스터 관리에 대한 지침 사항

1 8 - 4 Oracle8i 관리자 설명서

CREATE CLUSTER trial_cluster (trialno NUMBER(5,0))PCTUSED 80PCTFREE 5TABLESPACE usersSTORAGE (INITIAL 250K NEXT 50KMINEXTENTS 1 MAXEXTENTS 3PCTINCREASE 0)

HASH IS trialno HASHKEYS 150;

CREATE TABLE trial (trialno NUMBER(5,0) PRIMARY KEY,. . . )CLUSTER trial_cluster (trialno);

다음 단원에서는 해시 클러스터에 관련된 C R E ATE CLUSTER 명령어의 매개변수설정에 대해 설명합니다.

참조: 클러스터에 테이블 생성, CREATE CLUSTER 명령어의 다른 매개변수 설정에 대한 지침 사항 및 해시 클러스터 생성에 필요한 권한에 대한 자세한 내용은 1 7 - 6페이지“클러스터 생성”을 참조하십시오.

단일 테이블 해시 클러스터 생성

단일 테이블 해시 클러스터를 생성하여 테이블의 행에 빨리 액세스할 수도 있습니다.이 테이블은 해시 클러스터의 유일한 테이블이어야 합니다. 기본적인 해시 키와 데이터 행은 일 대 일 매핑이 되어야 합니다. 다음 명령문은 VARIETY 클러스터 키로P E A N U T이라는 단일 테이블 해시 클러스터를 생성합니다.

CREATE CLUSTER peanut (variety NUMBER)SIZE 512 SINGLE TABLE HASHKEYS 500;

O ra c l e은 HASHKEYS 값을 가장 근접한 소수로 반올림하여 해시 클러스터의 최대해시 키 값은 5 0 3이고 각각의 크기는 512 바이트입니다.

주: 단일 테이블 옵션은 해시 클러스터에 대해서만 유효합니다. HA-S H K E Y S는 반드시 지정되어야 합니다.

참조: C R E ATE CLUSTER 문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

해시 클러스터 관리에 대한 지침 사항

해시 클러스터 관리 1 8 - 5

해시 클러스터 내에서 영역 사용 제어

해시 클러스터를 생성할 때 클러스터 키를 정확히 선택하고 성능과 영역 사용이 최적화되도록 HASH IS, SIZE, HASHKEYS 매개변수를설정해야 합니다. 다음 지침은 이러한 매개변수를 설정하는 방법을 설명합니다.

키 선택

올바른 클러스터 키 선택은 클러스터화된 테이블에 대한 가장 일반적인 유형의 질의에 따라 다릅니다. 예를 들어, 해시 클러스터의 EMP 테이블에서 사원 번호로 행을선택하는 질의가 자주 발생하면 EMPNO 열이, 부서 번호로 행을 선택하는 질의가자주 발생하면 DEPTNO 열이 클러스터 키가 되어야 합니다. 단일 테이블을 포함하는 해시 클러스터의 경우 대개 포함된 테이블의 전체 기본 키가 클러스터 키가 됩니다.

해시 클러스터의 키는 인덱스 클러스터에서와 마찬가지로 단일 열 또는 조합 키(다중열 키)입니다. 조합 키를 가지는 해시 클러스터는 O ra c l e의 내부 해시 함수를 사용해야 합니다.

HASH IS 설정

클러스터 키가 단일 NUMBER 데이터 유형 열이고 균일하게 분포된 정수를 포함한다면 HASH IS 매개변수만 설정합니다. 위의 조건이 적용되면 클러스터 내에서 행을배분하여 각각의 고유 클러스터 키 값이 충돌 없이 고유한 해시 값으로 해시되도록합니다. 이러한 조건이 적용되지 않으면 이 옵션을 생략하여 내부 해시 함수를 사용합니다.

SIZE 설정

주어진 해시 키에 대한 모든 행을 유지하는데 필요한 평균 영역을 S I Z E에 설정합니다. 정확한 S I Z E를 결정하려면 데이터 특성을 잘 알아야 합니다.

■ 해시 클러스터가 단일 테이블만 포함하고 테이블 행의 해시 키 값이 고유하면 (키

값당 하나의 행) 클러스터의 평균 행 크기로 S I Z E를 설정합니다.

■ 해시 클러스터가 다중 테이블을 포함하면 S I Z E는 대표적인 해시 값과 관련된 모

든 행을 유지하는데 필요한 평균 영역 사용량으로 설정합니다.

■ 해시 클러스터가 내부 해시 함수를 사용하지 않고(HASH IS를 지정한 경우) 거

의 충돌하지 않거나 아예 없다면 S I Z E를 측정한 값으로 지정합니다. 충돌은 발생

하지 않으며 영역은 가능한 효율적으로 사용됩니다.

해시 클러스터 관리에 대한 지침 사항

1 8 - 6 Oracle8i 관리자 설명서

■ 삽입할 때 자주 충돌하면 행을 저장하도록 할당될 오버플로우 블록이 발생할 확률

이 높습니다. 자주 충돌하면 오버플로우 블록의 가능성을 줄이고 성능을 최대화하

기 위해 표 1 8 - 1에 따라 S I Z E를 늘입니다.

표 18-1 SIZE 증가차트

SIZE 값을 과대 추정하면 클러스터에서 사용되지 않는 영역의 양이 늘어납니다. 영역 효율성이 데이터 검색 수행 속도보다 중요하다면 위의 조정을 무시하고 측정한SIZE 값을 사용합니다.

H A S H K E YS 설정

O ra c l e은 해시 클러스터의 행 분포를 최대화하기 위해 HASHKEYS 값을 가장 근접한 소수로 설정합니다.

해시 클러스터에서 영역 제어: 예

다음 예는 클러스터 키를 정확하게 선택하는 방법과 HASH IS, SIZE와 H A S H -KEYS 매개변수를 설정하는 방법을 나타냅니다. 모든 예에서 데이터 블록크기는 2 K이고 평균적으로 각 블록의 1950 바이트가 사용 가능한 데이터 영역(블록크기 - 오버헤드)이라고 합시다.

예 1 EMP 테이블을 해시 클러스터에 로드합니다. 대부분의 질의는 사원 번호로

사원 레코드를 읽어들입니다. EMP 테이블의 최대 행 수는 1 0 0 0 0이고 평균

행 크기는 55 바이트로 측정됩니다.

이 때는 E M P N O가 클러스터 키입니다. EMPNO 열이 고유한 정수를 포함

하므로 내부 해시 함수는 무시됩니다. SIZE는 평균 행 크기인 55 바이트로

설정될 수 있습니다. 데이터 블록당 3 4개의 해시 키가 할당되며

H A S H K E Y S는 테이블의 행 수 10000 다음으로 큰 소수인 1 0 0 0 7로 설정될

수 있습니다.

해시 클러스터 관리에 대한 지침 사항

해시 클러스터 관리 1 8 - 7

블록당사용 가능한 영역/

계산한SIZE SIZE 설정

1 계산한 S I Z E

2 계산한 SIZE + 15%

3 계산한 SIZE + 12%

4 계산한 SIZE + 8%

>4 계산한 S I Z E

C R E A T E C L U S T E R e m p _ c l u s t e r (empno N U M B E R ). . .SIZE 55HASH IS empno HASHKEYS 10007;

예 2 앞의 예와 유사한 조건이 있지만 이 경우에는 보통 행이 부서 번호로 검색됩

니다. 부서당 평균적으로 1 0명의 사원을 가지는 1 0 0 0개의 부서가 있으며 부

서 번호는 1 0씩 증가(0, 10, 20, 30,...)합니다.

이 경우에는 D E P T N O가 클러스터 키입니다. 이 열은 균일하게 분포된 정수

를 포함하므로 내부 해시 함수는 무시됩니다. 미리 측정한 S I Z E (부서당 모든

행을 유지하는데 필요한 평균 영역 크기)는 550 바이트, 즉 55 바이트* 1 0입

니다. 이 SIZE 값을 사용하면 데이터 블록당 세 개의 해시 키만이 지정될 수

있습니다. 충돌 발생이 예상되고 데이터 검색의 최대 수행을 원하면 충돌을

방지하여 오버플로우 블록이 필요하지 않도록 측정한 S I Z E를 조금 변경합니

다. SIZE를 12% 정도 조정한 620 바이트로 하면 (SIZE 설정은 앞 단원 참

조) 데이터 블록당 세 개의 해시 키만이 지정되고 충돌이 발생할 경우를 대비

하여 행에 더 많은 영역을 남깁니다.

H A S H K E Y S는 고유한 부서 번호 수인 1000 다음으로 높은 소수인 1 0 0 9로

설정될 수 있습니다.

CREATE CLUSTER emp_cluster (deptno NUMBER). . .SIZE 620HASH IS deptno HASHKEYS 1009;

해시 클러스터 변경

SQL 명령어 A LTER CLUSTER 문으로해시 클러스터를 변경할 수 있습니다.

ALTER CLUSTER emp_dept . . . ;

해시 클러스터 변경에 대한 의미는 인덱스 클러스터를 변경하는 경우와 동일합니다.그러나 S I Z E, HASHKEYS와 HASH IS 매개변수는 A LTER CLUSTER 문에서는 지정할 수 없습니다. 이러한 매개변수를 변경하려면 클러스터를 재생성한 다음 원래 클러스터에서 데이터를 복사해야 합니다.

참조: 인덱스 클러스터 변경에 대한 자세한 내용은 17-8 페이지“클러스터 변경”을참조하십시오.

해시 클러스터 변경

1 8 - 8 Oracle8i 관리자 설명서

해시 클러스터 삭제

SQL 명령어 D ROP CLUSTER 문을사용하여 해시 클러스터를 삭제할 수 있습니다.

DROP CLUSTER emp_dept;

해시 클러스터의 테이블은 SQL 명령어 D ROP TABLE 문을 사용하여 삭제합니다.해시 클러스터와 해시 클러스터의 테이블 삭제의 의미는 인덱스 클러스터의 경우와동일합니다.

참조: 클러스터 삭제에 대한 자세한 내용은 17-10 페이지“클러스터 삭제”를 참조하십시오.

해시 클러스터 관리 1 8 - 9

해시 클러스터 삭제

해시 클러스터 삭제

1 8 - 1 0 Oracle8i 관리자 설명서

19데이터 블록 훼손 감지와 복구

O ra c l e은 데이터 블록 훼손을 감지하고 수정하는 다양한 방법을 제공합니다. 훼손이 감지된 후 객체를 삭제하고 재생성하는 방법이 있는데, 이 방법이 항상 가능하거나 바람직하지는 않습니다. 다른 방법은 데이터 블록 훼손이 행의 일부에 한정되어 있는 경우 훼손된 행을 제외한 모든 데이터를 선택하여 테이블을 재구축하는 것입니다.

데이터 블록 훼손을 관리하는 또 다른 방법은 D B M S _ R E PAIR 패키지를 사용하는 것입니다. DBMS_REPA I R를 사용하여 테이블과 인덱스의 훼손된 블록을 감지하고 복구할 수있습니다. 이러한 접근 방법을 사용하면 가능한 위치에서 훼손을 해결할 수 있을 뿐만 아니라 훼손된 블록을 재구축하거나 복구하는 동안에도 객체를 계속 사용할 수 있습니다.D B M S _ R E PA I R는 다음 접근 방법을 사용하여 훼손을 해결합니다.

■ 1단계: 훼손 감지와 보고

■ 2단계: DBMS_REPAIR 사용의 비용과 이점 평가

■ 3단계: 객체를 사용 가능하게 만들기

■ 4단계: 훼손 복구와 손실된 데이터 재구축

주: 데이터 손실을 포함한 훼손이 발생한 경우 해당 데이터가 데이터베이스시스템 전체에 적용된 상태를 분석하고 이해해야 합니다. DBMS_REPA I R는 요술 지팡이가 아닙니다. 사용자는 이 패키지가 제공하는 복구 접근 방법이 각각의 특정 훼손 문제를 해결하는데 적합한 도구인지 여부를 결정해야 합니다. 복구의 성격에 따라 데이터를 잃거나 논리적 불일치가 발생할수도 있습니다. 따라서 D B M S _ R E PAIR 사용과 관련된 득실을 비교해야합니다.

데이터 블록 훼손 감지와 복구 1 9 - 1

DBMS_REPAIR 패키지내용

표 1 9 - 1은 D B M S _ R E PAIR 패키지를 구성하는 프로시저에 대해 설명합니다.

표 19-1 DBMS_REPAIR 프로시저

프로시저 이름 설명

c h e c k _ o b j e c t 테이블이나 인덱스의 훼손을 감지하고 보고합니다.

f i x _ c o r r u p t _ b l o c k s c h e c k _ o b j e c t 프로시저가 이전에 식별한 블록을 훼손된 블록으로 표시

합니다.

d u m p _ o r p h a n _ k e y s 훼손된 데이터 블록의 행을 가리키는 인덱스 입력 항목을 보고합니다.

r e b u i l d _ f r e e l i s t s 객체의 사용 가능 영역 목록을 재구축합니다.

s k i p _ c o r r u p t _ b l o c k s 이 프로시저를 사용하면 테이블과 인덱스를 스캔하는 동안 훼손되었다고

표시된 블록을 무시합니다. 이 프로시저를 사용하지 않으면 훼손되었다고

표시된 블록이 발생하는 경우 ORA-1578 오류를 받습니다.

a d m i n _ t a b l e s DBMS_REPAIR 복구와 고아 키 테이블에 대한 관리 함수(create, drop,

p u r g e )를 제공합니다. 주: 이러한 테이블은 항상 SYS 스키마에서 생성됩

니다.

1단계: 훼손 감지와 보고

D B M S _ R E PA I R를 사용하기 전에 수행해야 할 첫 번째 작업은 훼손을 감지하고 보고하는 것입니다. 보고 기능은 블록에 발생한 문제를 나타낼 뿐 아니라 관련 복구 지시어도 식별합니다. DBMS_REPAIR 이외에도 훼손을 감지하는 여러 옵션이 있습니다. 표 1 9 - 2는 여러 감지 방법에 대해 설명합니다.

표 19-2 훼손 감지 방법 비교

감지 방법 설명

D B M S _ R E P A I R 특정 테이블, 분할 영역 또는 인덱스에 대해 블록 검사를 수행합니다. 복구 테

이블에 결과를 채웁니다.

DB_VERIFY 오프라인 데이터베이스에서블록 검사를 수행하는 외부 명령줄 유틸리티입니다.

ANALYZE VALIDATE STRUCTURE 옵션과 함께 사용되며 인덱스, 테이블 또는 클러스

터 구조의 무결성을 검증하고 테이블과 인덱스의 동기화를 검사하거나 검증합

니다.

1 9 - 2 Oracle8i 관리자 설명서

D B M S _REPAIR 패키지 내용

표 19-2 훼손 감지 방법 비교(계속)

감지 방법 설명

DB_BLOCK_CHECKING 블록이 훼손되었다고 실제로 표시되기 전에 훼손된 블록을 식별합니다. 블록에

변경 사항이 만들어질 때 검사를 수행합니다.

D B M S _ R E PAIR: check_object와 admin_tables 프로시저 사용

c h e c k _ o b j e c t 프로시저는 특정 객체에 대한 블록 훼손을 검사하고 보고합니다. 인덱스와 테이블에 대한 A NA LY Z E. . . VA L I DATE STRUCTURE 문과 유사하게 인덱스와 데이터 블록에 대해 블록 검사를 각각 수행합니다.

c h e c k _ o b j e c t는 훼손을 보고할 뿐 아니라 f i x _ c o r r u p t _ b l o c k s가 객체에 대해이후에 실행되었을 때 발생할 수 있는 모든 수정 사항도 식별합니다. a d m i n _ t a b l e s프로시저가 우선 생성해야 하는 복구 테이블이 채워지면 이 정보는 사용 가능하게 됩니다.

c h e c k _ o b j e c t 프로시저를 실행한 후 복구 테이블의 단순한 질의는 객체에 대한 훼손과 복구 지시어를 보여줍니다. 이 정보를 사용하여 보고된 문제를 해결하는 최적의방법에 액세스할 수 있습니다.

DB_VERIFY: 오프라인 데이터베이스 검사 수행

일반적으로 데이터 훼손 문제가 발생하면 오프라인 진단 유틸리티로 D B _ V E R I F Y를사용합니다.

참조: D B _ V E R I F Y에 대한 자세한 내용은 O racle8i Utilities를참조하십시오.

A N A LYZE: 훼손 보고

A NA LYZE TA B L E. . . VA L I DATE STRUCTURE 문은 분석된 객체의 구조를 검증합니다. Ora c l e이 구조를 성공적으로 검증하면 검증 확인 메시지를 사용자에게 돌려줍니다. 객체 구조가 훼손된 경우 O ra c l e은 오류 메시지를 사용자에게 돌려줍니다.이 경우 객체를 삭제하거나 재생성합니다.

참조: A NA LYZE 문에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

D B _ B LOCK_CHECKING (블록 검사 초기화 매개변수)

DB_BLOCK_CHECKING 매개변수(기본값은T RU E )를 통해 인스턴스에 대한 블록검사를 설정할 수 있습니다. 이러한 설정은 데이터와 인덱스 블록이 수정될 때마다 검

데이터 블록 훼손 감지와 복구 1 9 - 3

1단계: 훼손 감지와 보고

사를 수행합니다. DB_BLOCK_CHECKING은동적 매개변수로 A LTER SY S T E MSET 문으로 수정할 수 있습니다.

2단계: DBMS_REPAIR 사용의비용과 이점 평가

D B M S _ R E PA I R를 사용하기 전에 이를 사용하여 생기는 이점을 비용과 관련하여 비교해야합니다. 훼손된객체를 해결하는데 사용 가능한 다른 옵션도 살펴보아야합니다.

우선 다음 질문에 답하십시오.

1 . 훼손 범위는?

훼손과 복구 작업이 있는지 결정하려면 c h e c k _ o b j e c t 프로시저를 실행하고 복구 테이블을 질의합니다.

2 . 블록 훼손을 해결하는데 사용 가능한 다른 옵션은?

데이터가 다른 소스로부터 사용 가능한 경우 객체를 삭제, 재생성 또는 다시 채웁니다. 훼손된 테이블에서 C R E ATE TA B L E...AS SELECT 문을 실행하여 새로운 테이블을 생성할 수도 있습니다.

SELECT 문에서 훼손된 행을 제외시켜 훼손을 무시할 수 있습니다.

매체 복구를 수행합니다.

3 . D B M S _ R E PA I R를 사용하여 객체를 사용할 수 있게 만들 때 발생할 수 있는 논리적 훼손이나 부작용은 무엇인가? 이것은 해결 가능한가? 수행해야 할 작업은무엇인가?

훼손되었다고 표시된 블록에 있는 행에 액세스할 수 없습니다. 그러나 유효하게액세스할 수 있는 행인 경우에도 훼손되었다고 표시될 수 있습니다.

블록이 훼손되었다고 표시되면 참조 무결성 제약 조건은 중단됩니다. 이러한 상황이 발생하면 제약 조건을 비활성화하거나 재활성화하십시오. 불일치 사항이 있다면 보고됩니다. 모든 문제점을 수정한 후 제약 조건을 다시 활성화할 수 있습니다.

테이블에 정의된 트리거가 있으면 논리적 훼손이 발생할 수 있습니다. 예를 들어,행을 다시 삽입한 경우 삽입 트리거를 실행해야 합니까? 설치된 트리거와 트리거의 사용법을 이해하는 경우에만 이러한 문제점을 해결할 수 있습니다.

사용 가능 영역 목록 블록에 액세스하지 못할 수도 있습니다. 훼손된 블록이 사용가능 영역 목록의 앞부분이나 뒷부분이라면 영역 관리 작업이 사용 가능 영역 목록

1 9 - 4 Oracle8i 관리자 설명서

2단계: DBMS_REPAIR 사용의비용과 이점 평가

을 다시 초기화합니다. 사용가능 영역 목록에 있어야 하는 블록이 없을 수도 있습니다. r e b u i l d _ f r e e l i s t s 프로시저를 실행하여 이 문제점을 해결할 수 있습니다.

인덱스와 테이블은 동기화되지 않을 수 있습니다. 먼저 d u m p _ o r p h a n _ k e y s 프로시저로 이 문제점을 해결할 수 있습니다. (훼손된 데이터 재구축에 유용한 키에서 정보를 얻습니다.) 그런 다음 A LTER INDEX REBUILD ONLINE 문을실행하여 테이블과 인덱스를 다시 동기화할 수 있습니다.

4 . 복구 작업이 데이터 손실과 관련되어 있다면 데이터를 읽어 들일 수 있는가?

데이터 블록이 훼손되었다고 표시되면 인덱스에서 데이터를 읽어 들일 수 있습니다. d u m p _ o r p h a n _ k e y s 프로시저를 사용하여 이 정보를 읽어 들일 수 있습니다. 물론 이러한 방법으로 데이터를 읽어 들이는 것은 인덱스와 테이블 간의 중복된 양에 좌우됩니다.

3단계: 객체를 사용 가능하게 만들기

이 단계에서 D B M S _ R E PA I R는 테이블과 인덱스를 스캔하는 동안 훼손을 무시하여객체를 사용할 수 있도록 만듭니다.

훼손 복구: fix_corrupt_blocks와 s k i p _ c o r r u p t _ b l o c ks 프로시저 사용

D B M S _ R E PA I R로 복구할 수 없는 훼손을 건너뛰는 환경을 설정하여 훼손된 객체를사용 가능하도록 만듭니다.

데이터 블록의 잘못된 행과 같이 훼손이 데이터 손실과 관련된 경우 f i x _ c o r r u p t _b l o c k s 프로시저는 그러한 모든 블록을 훼손되었다고 표시합니다. 그런 다음 s k i p _c o r r u p t _ b l o c k s 프로시저를 실행하여 객체에 대해 훼손되었다고 표시된 블록을 건너뛸 수 있습니다. 건너뛰기가 설정되면 테이블과 인덱스를 스캔하면서 훼손되었다고표시된 모든 블록을 건너뜁니다. 이것은 매체와 소프트웨어 훼손 블록 모두에 적용됩니다.

훼손된 블록 건너뛰기의 의미

인덱스와 테이블이 동기화되지 않으면 하나의 질의를 인덱스에만 실행하고 이후 질의는 인덱스와 테이블 모두에 실행하는 상황에서 SET TRANSATION READ ONLY트랜잭션이 일치하지 않을 수 있습니다. 테이블 블록이 훼손되었다고 표시되면 두 질의는 다른 결과를 돌려주므로 읽기 전용 트랜잭션 규칙을 어기게 됩니다. 이에 접근하는 한 방법은 SET TRANSATION READ ONLY 트랜잭션에서훼손 사항을 건너뛰지 않는 것입니다.

데이터 블록 훼손 감지와 복구 1 9 - 5

3단계: 객체를 사용 가능하게 만들기

체인화된 행을 선택할 때도 유사한 문제가 발생합니다. 본질적으로 동일한 행을 질의해도 훼손을 액세스하거나 액세스하지 못하므로 다른 결과를 얻게 됩니다.

4단계: 훼손 복구와 손실 데이터 재구축

객체를 사용 가능하게 만든 후 다음 복구 작업을 수행할 수 있습니다.

d u m p _ o r p h a n _ keys 프로시저를 사용한 데이터 복구

d u m p _ o r p h a n _ k e y s 프로시저는 훼손된 데이터 블록의 행을 가리키는 인덱스 입력항목을 보고합니다. 그러한 모든 인덱스 입력 항목은 키와 훼손된 ROW I D를 저장하는 고아 키 테이블에 삽입됩니다.

인덱스 입력 항목 정보를 읽어 들인 후 A LTER INDEX REBUILD ONLINE 문을사용하여 인덱스를 재구축할 수 있습니다.

re b u i l d _ f re e l i s ts 프로시저를 사용한 사용 가능 영역 목록 복구

“훼손”으로 표시된 블록이 사용 가능 영역 목록의 앞부분 또는 뒷부분에 있으면 사용가능 영역 목록을 다시 초기화하고 오류를 돌려줍니다. 이렇게 하면 훼손된 블록이사용 가능 영역에서 제외되지만 훼손된 블록 다음의 모든 블록의 사용 가능 영역 목록을 액세스할 수 없게 됩니다.

r e b u i l d _ f r e e l i s t s 프로시저를 사용하여 사용 가능 영역 목록을 다시 초기화할수 있습니다. 사용 가능 영역 목록에 있는 블록에 적합한 객체를 스캔하면 마스터 사용 가능 영역 목록에 추가됩니다. 사용 가능 영역 목록 그룹은 유효한 방식으로 블록을 할당(한 번에 한 블록씩)하여 처리됩니다. 객체에서“훼손”으로 표시된 모든 블록은 재구축 작업 동안 무시됩니다.

한계점과 제한 사항

D B M S _ R E PAIR 프로시저에는 다음과 같은 한계점이 있습니다.

■ L O B S를 가진 테이블, 중첩 테이블 및 VA R R AY S는 지원되지만 행을 벗어난 열은 무시됩니다.

■ s k i p _ c o r r u p t _ b l o c k s와 r e b u i l d _ f r e e l i s t s 프로시저는 클러스터를 지원하지만 c h e c k _ o b j e c t 프로시저는 지원하지 않습니다.

■ 인덱스 구성 테이블과 LOB 인덱스는 지원되지 않습니다.

■ d u m p _ o r p h a n _ k e y s 프로시저는 비트맵 인덱스나 함수 기준 인덱스에서는 작동하지 않습니다.

1 9 - 6 Oracle8i 관리자 설명서

4단계: 훼손 복구와 손실 데이터 재구축

■ d u m p _ o r p h a n _ k e y s 프로시저는 3 , 9 5 0바이트 길이 이상의 키는 처리하지 못합니다.

D B M S _ REPAIR 프로시저

이 단원에서는 D B M S _ R E PAIR 프로시저에 대해 자세하게 설명합니다.

c h e c k _ o b j e c t

c h e c k _ o b j e c t 프로시저는 지정된 객체를 검사하며 훼손과 복구 지시어에 대한 정보로 복구 테이블을 채웁니다. 검증은 객체의 모든 블록을 검사하는 블록 검사로 이루어집니다. 객체의 일부를 검사하려면 범위, 분할 영역 이름 또는 하위 분할 영역 이름 등을 선택적으로 지정할 수 있습니다.

procedure check_object(schema_name IN varchar2,object_name IN varchar2,partition_name IN varchar2 DEFAULT NULL,object_type IN binary_integer DEFAULT TABLE_OBJECT,repair_table_name IN varchar2 DEFAULT ’REPAIR_TABLE’,flags IN binary_integer DEFAULT NULL,relative_fno IN binary_integer DEFAULT NULL,block_start IN binary_integer DEFAULT NULL,block_end IN binary_integer DEFAULT NULL,corrupt_count OUT binary_integer)

데이터 블록 훼손 감지와 복구 1 9 - 7

D B M S _REPAIR 프로시저

표 19-3 check_object 프로시저

인수 설명

s c h e m a _ n a m e 검사될 객체의 스키마 이름

o b j e c t _ n a m e 검사될 테이블이나 인덱스 이름

p a r t i t i o n _ n a m e 검사될분할 영역또는 하위 분할 영역 이름. 분할된객체이고p a r t i t i o n _

(선택 사항) n a m e을 지정하지 않으면 모든 분할 영역이나 하위 분할 영역을 검사합니

다. 분할된 객체이고 지정된 분할 영역이 하위 분할 영역을 포함하면 모든

하위 분할 영역을 검사합니다.

o b j e c t _ t y p e 처리될 객체 유형. TABLE_OBJECT이거나 I N D E X _ O B J E C T입니다. 기본

(선택사항) 값은 T A B L E _ O B J E C T입니다.

r e p a i r _ t a b l e _ n a m e 채워질복구 테이블 이름. 테이블은 SYS 스키마에 있어야 합니다.

(선택 사항) a d m i n _ t a b l e s 프로시저를 사용하여 복구 테이블을 생성합니다. 기본

이름은‘R E P A I R _ T A B L E’입니다.

f l a g s (선택사항) 이후 사용을 위해 예약합니다.

r e l a t i v e _ f n o 관련 파일 번호. 블록 범위를 지정할 때 사용합니다.

(선택사항)

b l o c k _ s t a r t 블록 범위를 지정할 때 처리하는 첫 번째 블록. 객체가 단일 테이블, 분할

(선택 사항) 영역 또는 하위 분할 영역인 경우에만 지정할 수 있습니다.

b l o c k _ e n d (선택 사항) 블록 범위를 지정할 때 처리하는 마지막 블록. 객체가 단일 테이블, 분할

영역 또는 하위 분할 영역인 경우에만 지정할 수 있습니다.

b l o c k _ s t a r t나 block_end 중 하나만 지정하면 나머지 하나는파일에 있는

첫 번째 또는 마지막 블록에 대한 기본값을 적용합니다.

c o r r u p t _ c o u n t 보고되는 훼손 수

f i x _ c o r r u p t _ b l o c ks

이 프로시저를 사용하여 c h e c k _ o b j e c t 프로시저가 이전에 생성한 복구 테이블의정보에 준하여 지정된 객체에서 훼손된 블록을 수정합니다. 블록에 발생한 변경 사항이 효력을 발생하기 전에 블록이 여전히 훼손된 상태인지 검사합니다. 블록 소프트웨어를 훼손되었다고 표시하여 훼손된 블록을 복구합니다. 복구 작업이 효과를 나타내면 복구 테이블의 관련 행은 수정된 시간 기록으로 갱신됩니다.

1 9 - 8 Oracle8i 관리자 설명서

D B M S _REPAIR 프로시저

procedure fix_corrupt_blocks(schema_name IN varchar2,object_name IN varchar2,partition_name IN varchar2 DEFAULT NULL,object_type IN binary_integer DEFAULT TABLE_OBJECT,repair_table_name IN varchar2 DEFAULT ’REPAIR_TABLE’,flags IN boolean DEFAULT NULL,fix_count OUT binary_integer)

표 19-4 fix_corrupt_blocks 프로시저

인수 설명

s c h e m a _ n a m e 스키마 이름

o b j e c t _ n a m e 수정될 훼손된 블록을 가진 객체 이름

p a r t i t i o n _ n a m e 처리될 분할 영역 또는 하위분할 영역 이름. 분할된객체이고p a r t i t i o n _

(선택사항) n a m e을 지정하지 않으면 모든 분할 영역과 하위 분할 영역을 처리합니다.

분할된 객체이고 지정된 분할 영역이 하위 분할 영역을 포함하면 모든 하

위 분할 영역을 처리합니다.

o b j e c t _ t y p e 처리될 객체 유형. TABLE_OBJECT이거나 I N D E X _ O B J E C T입니다. 기본

(선택사항) 값은 T A B L E _ O B J E C T입니다.

r e p a i r _ t a b l e _ n a m e 복구 지시어를 가진 복구 테이블 이름. SYS 스키마에 있어야 합니다.

(선택사항)

f l a g s (선택 사항) 이후 사용을 위해 예약합니다.

fix_count 수정된 블록 수

d u m p _ o r p h a n _ ke y s

훼손된 데이터 블록에 있는 행을 가리키는 인덱스 입력 항목을 보고합니다. 각각에대해 이러한 인덱스 입력 항목이 발생하면 행은 지정된 고아 테이블에 삽입됩니다.

복구 테이블을 지정하면 기본 테이블과 관련된 모든 훼손된 블록을 소프트웨어 훼손으로 표시된 모든 데이터 블록과 함께 처리합니다. 복구 테이블을 지정하지 않으면훼손되었다고 표시된 블록만 처리합니다.

이 정보는 테이블에 있는 손실된 행의 재구축 및 진단 목적에 유용합니다.

procedure dump_orphan_keys(schema_name IN varchar2,object_name IN varchar2,

데이터 블록 훼손 감지와 복구 1 9 - 9

DBMS_REPAIR 프로시저

partition_name IN varchar2 DEFAULT NULL,object_type IN binary_integer DEFAULT INDEX_OBJECT,repair_table_name IN varchar2 DEFAULT ’REPAIR_TABLE’,orphan_table_name IN varchar2 DEFAULT ’ORPHAN_KEY_TABLE’,key_count OUT binary_integer)

표 19-5 dump_orphan_keys 프로시저

인수 설명

s c h e m a _ n a m e 스키마 이름

o b j e c t _ n a m e 객체 이름

p a r t i t i o n _ n a m e 처리될 분할영역또는 하위 분할 영역 이름. 분할된객체이고p a r t i t i o n _

(선택 사항) n a m e을 지정하지 않으면 모든 분할 영역과 하위 분할 영역을 처리합니다.

분할된 객체이고 지정된 분할 영역이 하위 분할 영역을 포함하면 모든 하

위 분할 영역을 처리합니다.

o b j e c t _ t y p e 처리될 객체 유형. 기본값은 I N D E X _ O B J E C T입니다.

(선택사항)

r e p a i r _ t a b l e _ n a m e 기본 테이블에 있는 훼손된 블록에 대한 정보를 가진 복구 테이블 이름.

(선택사항) 지정된 테이블은 SYS 스키마에 있어야 합니다. a d m i n _ t a b l e s 프로시

저는 테이블을 생성하는데 사용됩니다.

o r p h a n _ t a b l e _ n a m e 훼손된 데이터 블록에 있는 행을 참조하는 각 인덱스 입력 항목에 대한 정

(선택사항) 보로 채우는 고아 키 테이블 이름. 지정된 테이블은 SYS 스키마에 있어야

합니다. a d m i n _ t a b l e s 프로시저는 테이블을 생성하는데 사용됩니다.

k e y _ c o u n t 처리될인덱스 입력 항목 수

re b u i l d _ f re e l i s ts

지정된 객체에 대한 사용 가능 영역 목록을 재구축합니다. 사용 가능한 모든 블록은마스터 사용 가능 영역 목록에 있습니다. 다른 모든 사용 가능 목록은 0이 됩니다. 객체에 여러 개의 사용 가능 영역 그룹이 있으면 사용 가능 블록은 모든 사용 가능 영역목록에 분산되고 RO U N D - ROBIN 방식으로 다른 그룹에 할당됩니다.

procedure rebuild_freelists(schema_name IN varchar2,object_name IN varchar2,partition_name IN varchar2 DEFAULT NULL,

1 9 - 1 0 Oracle8i 관리자 설명서

D B M S _REPAIR 프로시저

object_type IN binary_integer DEFAULT TABLE_OBJECT);

표 19-6 rebuild_freelists 프로시저

인수 설명

s c h e m a _ n a m e 스키마 이름

o b j e c t _ n a m e 사용 가능 영역 목록이 재구축될 객체 이름

p a r t i t i o n _ n a m e 사용 가능 영역 목록이 재구축될 분할 영역 또는 하위 분할 영역 이름. 분

(선택사항) 할된 객체이고 p a r t i t i o n _ n a m e을 지정하지 않으면 모든 분할 영역과

하위 분할 영역을 처리합니다. 분할된 객체이고 지정된 분할 영역이 하위

분할 영역을 포함하면 모든 하위 분할 영역을 처리합니다.

o b j e c t _ t y p e 처리될 객체 유형. TABLE_OBJECT이거나 I N D E X _ O B J E C T입니다. 기본

(선택사항) 값은 T A B L E _ O B J E C T입니다.

s k i p _ c o r r u p t _ b l o c ks

지정된 객체 중 인덱스와 테이블을 스캔하는 동안 훼손된 블록을 건너뛰는 작업을 활성화하거나 비활성화할 수 있습니다. 객체가 테이블이면 건너뛰는 작업은 테이블과인덱스에 적용됩니다. 객체가 클러스터면 클러스터에 있는 모든 테이블과 인덱스에적용됩니다.

procedure skip_corrupt_blocks(schema_name IN varchar2,object_name IN varchar2,partition_name IN varchar2 DEFAULT NULL,object_type IN binary_integer DEFAULT TABLE_OBJECT,flags IN boolean DEFAULT SKIP_FLAG);

데이터 블록 훼손 감지와 복구 1 9 - 1 1

DBMS_REPAIR 프로시저

표 19-7 skip_corrupt_blocks 프로시저

인수 설명

s c h e m a _ n a m e 처리될 객체의 스키마 이름

o b j e c t _ n a m e 객체 이름

p a r t i t i o n _ n a m e 처리될 분할 영역또는 하위 분할 영역 이름. 분할된객체이고p a r t i t i o n _

(선택사항) n a m e을 지정하지 않으면 모든 분할 영역과 하위 분할 영역을 처리합니다.

분할된 객체이고 지정된 분할 영역이 하위 분할 영역을 포함하면 모든 하

위 분할 영역을 처리합니다.

o b j e c t _ t y p e 처리될 객체 유형. TABLE_OBJECT이거나 C L U S T E R _ O B J E C T입니다. 기

(선택사항) 본값은 T A B L E _ O B J E C T입니다.

f l a g s ` S K I P _ F L A G를 지정하면 인덱스와 테이블을 스캔하는 동안 객체에 대해 소

(선택사항) 프트웨어 훼손 블록을 건너뜁니다. NOSKIP_FLAG를지정하면 소프트웨어

훼손 블록이 발생하는 스캔 작업은 O R A - 1 5 7 8을 돌려줍니다.

a d m i n _ t a b l e s

복구 및 고아 키 테이블에 대한 관리 기능을 제공합니다.

procedure admin_tables(table_name IN varchar2,table_type IN binary_integer,action IN binary_integer,tablespace IN varchar2 DEFAULT NULL);

1 9 - 1 2 Oracle8i 관리자 설명서

D B M S _REPAIR 프로시저

표 19-8 admin_tables 프로시저

인수 설명

t a b l e _ n a m e 처리될 테이블 이름. 지정된 t a b l e _ t y p e에 준하는 기본값은‘O R P H A N _

K E Y _ T A B L E’또는‘R E P A I R _ T A B L E’입니다. 테이블 이름을 지정할 때

해당 접두어‘O RPH A N _’또는‘RE P A I R _’를 사용해야 합니다.

t a b l e _ t y p e 테이블 유형. ORPHAN_TABLE 또는 REPAIR_TABLE 중 하나입니다.

a c t i o n 수행해야 하는 관리 작업을 나타냅니다. CREATE_ACTION, PURGE_AC-

TION 또는 D R O P _ A C T I O N이어야 합니다. 테이블이 있는데 C R E A T E _

A C T I O N을 지정하면 오류를 받습니다. PU R G E _ A C T I O N은 현재 존재하지

않는 객체와 관련된 테이블의 모든 행을 삭제하도록 지시합니다. 테이블이

없는데 D R O P _ A C T I O N을 지정하면 오류를 받습니다.

CRE A T E _ A C T I O N과 D R O P _ A C T I O N을 지정하면 이름이 D B A _ < t a b l e _ n a -

m e >인 관련 뷰가 각각 생성되고 삭제됩니다. 뷰를 정의하여 현재 존재하지

않는 객체와 관련된 행을 제거합니다.

SYS 스키마에서 생성됩니다.

t a b l e s p a c e 테이블을 생성할 때 사용하는 테이블스페이스를 나타냅니다. 기본적으로

(선택사항) S Y S의 기본 테이블스페이스를 사용합니다. 테이블스페이스가 지정되고

작업이 C R E A T E _ A C T I O N이 아니면 오류를 받습니다.

D B M S _ REPAIR 예외 사항

9 4 2 복구 테이블이 없습니다.

1 4 1 8 지정된 인덱스가 없습니다.

2 4 1 2 0 부적합한 매개변수입니다.

2 4 1 2 1 CA S CA D E _ F L AG와 블록 범위를 지정할 수 없습니다.

2 4 1 2 2 부적합한 블록 범위입니다.

2 4 1 2 4 부적합한 작업 매개변수가 지정되었습니다.

2 4 1 2 6 CA S CA D E _ F L AG가 지정되었고 객체가 테이블이 아닙니다.

데이터 블록 훼손 감지와 복구 1 9 - 1 3

D B M S _REPAIR 예외 사항

2 4 1 2 7 테이블스페이스가 지정되었고 작업이 C R E AT E _ AC T I O N이 아닙니다.

24128 분할 영역이 분할되지 않은 객체에 대해 지정되었습니다.

24129 부적합한 고아 키 테이블 이름 - ‘O R P H A N _’접두어를 가져야 합니다.

24129 지정된 복구 테이블이‘R E PA I R _’접두어로 시작하지 않습니다.

24131 복구 테이블에 잘못된 열이 있습니다.

24132 복구 테이블 이름이 너무 깁니다.

1 9 - 1 4 Oracle8i 관리자 설명서

D B M S _REPAIR 예외 사항

20스키마 객체에 대한 일반적 관리

이 장에서는 1 1장에서 1 9장까지는 다루지 않은 일반적 스키마 객체 관리에 대해 설명하며다음 내용을 다룹니다.

■ 단일 작업으로 다중 테이블과 뷰 생성

■ 스키마 객체 이름 바꾸기

■ 테이블, 인덱스 및 클러스터 분석

■ 테이블과 클러스터 잘라버리기

■ 트리거 활성화 및 비활성화

■ 무결성 제약 조건 관리

■ 객체 종속성 관리

■ 객체 이름 분석 관리

■ 데이터 딕셔너리의 저장 영역 매개변수 변경

■ 스키마 객체 정보 나열

스키마 객체에 대한 일반적 관리 2 0 - 1

단일 작업으로 다중 테이블과 뷰 생성

스키마 객체를 생성하려면 포함된 작업에 대한 권한이 필요합니다. 예를 들어,C R E ATE SCHEMA 명령어를 사용하여 다중 테이블을 생성하려면 테이블 생성에필요한 권한이 있어야 합니다.

SQL 문 C R E ATE SCHEMA를 사용하여 단일 작업으로 여러 개의 테이블과 뷰를생성하고 권한을 부여할 수 있습니다. CREATE SCHEMA 문은 단일 작업으로 여러 개의 테이블과 뷰를 생성하고 권한을 보장받고자 할 때 유용합니다. 각각의 테이블, 뷰 또는 권한 부여에 실패하면 전체 명령문은 롤백됩니다. 생성되는 객체가 없으며 부여받은 권한도 없습니다. 다음은 두 테이블과 두 테이블의 데이터를 조인하는뷰를 생성하는 명령문입니다.

CREATE SCHEMA AUTHORIZATION scottCREATE TABLE dept (

deptno NUMBER(3,0) PRIMARY KEY,dname VARCHAR2(15),loc VARCHAR2(25)

CREATE TABLE emp (empno NUMBER(5,0) PRIMARY KEY,ename VARCHAR2(15) NOT NULL,job VARCHAR2(10),mgr NUMBER(5,0),hiredate DATE DEFAULT (sysdate),sal NUMBER(7,2),comm NUMBER(7,2), deptno NUMBER(3,0) NOT NULLCONSTRAINT dept_fkey REFERENCES dept)

CREATE VIEW sales_staff ASSELECT empno, ename, sal, commFROM empWHERE deptno = 30WITH CHECK OPTION CONSTRAINT sales_staff_cnstGRANT SELECT ON sales_staff TO human_resources;

C R E ATE SCHEMA 문은 ANSI CREATE TA B L E과 C R E ATE VIEW 명령어에O racle 확장자를 지원하지 않습니다. 여기에는 S T O R AGE 절이 포함됩니다.

스키마 객체 이름 바꾸기

객체 이름을 바꾸려면 객체를 소유해야 합니다. 다음 방법 중 하나로 스키마 객체 이름을 바꿀 수 있습니다.

■ 객체를 삭제하고 재생성

■ SQL 문 R E NA M E을 사용하여 객체 이름 바꾸기

2 0 - 2 Oracle8i 관리자 설명서

단일 작업으로 다중 테이블과 뷰 생성

객체를 삭제하고 재생성하면 객체에 부여된 모든 권한을 잃게 됩니다. 객체를 재생성할 때 권한을 다시 부여받아야 합니다. RENAME 문을 사용하여 테이블, 뷰, 시퀀스 또는 이들 각각의 전용 동의어의 이름을 바꿀 수 있습니다. RENAME 문을 사용할 때 객체에 부여된 권한은 새 이름의 객체로 전달됩니다. 예를 들어, SA L E S _S TAFF 뷰의 이름을 바꾸는 명령문은 다음과 같습니다.

RENAME sales_staff TO dept_30;

주: 내장 PL/SQL 프로그램 단위, 공용 동의어, 인덱스 또는 클러스터의 이름은 바꿀 수 없습니다. 이러한 객체의 이름을 바꾸려면 객체를삭제하고 재생성해야 합니다.

스키마 객체의 이름을 바꾸기 전에 다음을 고려하십시오.

■ 이름이 바뀐 객체에 종속된 모든 뷰나 PL/SQL 프로그램 단위가 무효화되므로 다음에 사용하기 전에 재컴파일해야 합니다.

■ 이름이 바뀐 객체의 모든 동의어는 사용할 때 오류를 발생합니다.

참조: O ra c l e이 객체 종속성을 관리하는 방법에 대한 자세한 내용은 20-23 페이지“객체 종속성 관리”를 참조하십시오.

테이블, 인덱스 및 클러스터 분석

이 단원에서는 테이블, 인덱스 및 클러스터를 분석하는 방법을 설명하며 다음 내용을다룹니다.

■ 테이블, 인덱스 및 클러스터에 대한 통계 사용

■ 테이블, 인덱스 및 클러스터 검증

■ 테이블과 클러스터의 체인화된 행 나열

테이블, 인덱스 또는 클러스터를 분석하여 데이터를 수집하거나 저장 영역 형식의 유효성을 검증할 수 있습니다. 테이블, 클러스터또는 인덱스를 분석하려면 이를 소유하고 있거나 A NA LYZE ANY 시스템 권한이 있어야 합니다.

이러한 스키마 객체를 분석하여 특정 객체에 대한 통계를 수집하거나 갱신할 수 있습니다. DML 문을 실행할 때 참조한 객체에 대한 통계는 명령문의 가장 효율적인 실행 계획을 결정하는데 사용됩니다. 이러한 최적화를“비용 기준 최적화”라고 합니다.통계는 데이터 딕셔너리에 저장됩니다.

스키마 객체에 대한 일반적 관리 2 0 - 3

테이블, 인덱스 및 클러스터 분석

테이블, 인덱스 또는 클러스터를 분석하여 객체의 구조를 검증할 수 있습니다. 예를들어, 하드웨어나 다른 시스템 장애와 같은 경우 인덱스가 훼손되어 제대로 수행하지못할 수도 있습니다. 인덱스를 검증하면 인덱스의 모든 입력 항목이 관련된 테이블의정확한 행을 가리키는지 확인할 수 있습니다. 스키마 객체가 훼손되면 이를 삭제하고재생성할 수 있습니다.

테이블이나 클러스터를 분석하여 테이블이나 클러스터의 체인화된 행에 대한 정보를수집할 수 있습니다. 이러한 결과는 행을 갱신하는데 필요한 여유 공간이 충분한지를결정하는데 유용합니다. 예를 들어, 이 정보는 P C T F R E E가 테이블이나 클러스터에대해 제대로 설정되었는지를 나타냅니다.

참조: 수행 통계에 대한 테이블, 인덱스 및 클러스터 분석과 최적기에 대한 자세한 내용은 O racle8i Tuning을참조하십시오.

인덱스 구성 테이블 분석에 대한 내용은 1 4장“테이블 관리”를 참조하십시오.

테이블, 인덱스 및 클러스터에 대한 통계 사용

SQL 문 A NA LY Z E에 S TATISTICS 옵션을 사용하여 테이블, 인덱스 또는 클러스터의 물리적 저장 영역 특성에 대한 통계를 수집하고 데이터 딕셔너리에 저장합니다.분석된 객체에 액세스하는 SQL 문에 대한 가장 효율적인 실행 계획을 선택할 때 비용 기준 최적화를 활용한다면 O ra c l e은 이러한 통계를 사용합니다. 분석된 객체를 액세스하는 효율적인 SQL 문을 작성하는데도 A NA LYZE 명령어에 의해 생성된 통계를 사용합니다.

A NA LYZE 문에 COMPUTE STAT I S T I C S나 E S T I M ATE STATISTICS 옵션을사용하면 통계를 계산하거나 예측할 수 있습니다.

COMPUTE 통계를 계산할 때 전체 객체를 검색하여 객체에 대한 데이터를 수집

STATISTICS 합니다. 이 데이터를 사용하여 객체에 대한 정확한 통계를 계산합니

다. 계산된 통계는 객체에 따라 약간의 편차가 있습니다. 전체 객체

를 검색하여 통계 계산에 대한 정보를 수집하므로 객체 크기가 클수

록 필요한 정보를 수집하는데 드는 작업도 많아집니다.

2 0 - 4 Oracle8i 관리자 설명서

테이블, 인덱스 및 클러스터 분석

ESTIMATE 통계를 낼 때 객체의 각 부분으로부터 대표적인 정보를 수집합니다.

STATISTICS 이 정보의 부분 집합은 객체에 대한 합리적이고 예측된 통계를 제공

합니다. 예측된 통계의 정확성은 O r a c l e에 의해 사용된 표본 추출

방법이 객체를 얼마나 잘 대표하느냐에 따라 다릅니다. 통계 예측에

필요한 정보를 수집하는데는 객체의 부분만을 검색하므로 객체를

빠르게 분석할 수 있습니다. 예측치를 만들 때 사용해야 하는 행의

수나 백분율을 지정할 수 있습니다.

주: 테이블이나 클러스터에 대한 통계를 계산할 때 계산 수행에 필요한임시 영역의 양은 지정된 행의 수와 관련이 있습니다. COMPUTES TAT I S T I C S의 경우 전체 테이블을 유지하고 정렬하기 위한 충분한임시 영역과 각 행에 대한 작은 오버헤드가 필요합니다. ESTIMAT ES TAT I S T I C S의 경우에는 필요한 행의 예제를 유지하고 정렬하기 위한충분한 임시 영역과 각 행에 대한 작은 오버헤드가 필요합니다. 인덱스의 경우 분석을 위한 임시 영역이 필요하지 않습니다.

참조: SQL 문 A NA LY Z E에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

통계를 포함하는 데이터 딕셔너리 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를참조하십시오.

객체 통계 보기

객체에 대한 통계를 계산하든 예측하든 통계는 데이터 딕셔너리에 저장됩니다. 다음데이터 딕셔너리 뷰를 사용하여 통계를 질의할 수 있습니다.

■ U S E R _ I N D E X E S, ALL_INDEXES, DBA_INDEXES

■ U S E R _ TA B L E S, ALL_TA B L E S, DBA_TA B L E S

■ U S E R _ TA B _ C O L U M N S, ALL_TA B _ C O L U M N S, DBA_TA B _ C O L U M N S

주: 이러한 뷰의 행은 통계 열에 통계를 수집한 인덱스, 테이블 및 클러스터에 대한 입력 항목만을 포함합니다. 객체를 분석할 때마다 객체의 입력 항목이 갱신됩니다.

스키마 객체에 대한 일반적 관리 2 0 - 5

테이블, 인덱스 및 클러스터 분석

테이블 통계 테이블에서 다음 통계를 수집할 수 있습니다.

주: * 표시된 숫자는 통계를 계산할 때 항상 정확합니다.

■ 행 수

■ 사용한 블록 수*

■ 사용하지 않은 블록 수

■ 평균 사용 가능한 빈 영역

■ 체인화된 행 수

■ 평균 행 길이

■ 열당 서로 다른 값의 수

■ 열당 두 번째로 작은 값*

■ 열당 두 번째로 큰 값*

주: 테이블과 관련된 모든 인덱스에 대한 통계는 테이블이 분석될 때자동으로 수집됩니다.

인덱스 통계 인덱스에서 다음 통계를 수집할 수 있습니다.

■ 인덱스 레벨*

■ 최하위 블록 수

■ 서로 다른 키의 수

■ 평균 최하위 블록/키의 수

■ 평균 데이터 블록/키의 수

■ 인수 클러스터화

클러스터 통계 클러스터에 대해 수집할 수 있는 유일한 통계는 평균 클러스터 키 체인 길이입니다. 이 통계는 예측되거나 계산될 수 있습니다. 클러스터에 있는 테이블

2 0 - 6 Oracle8i 관리자 설명서

테이블, 인덱스 및 클러스터 분석

과 클러스터의 테이블에 관련된 모든 인덱스(클러스터 키 인덱스를 포함하여)에 대한통계는 클러스터를 분석할 때 자동으로 수집됩니다.

주: A NA LYZE 문을 실행했을 때 데이터 딕셔너리가 지정된 객체에대한 통계를 포함하고 있다면 새 통계는 데이터 딕셔너리에 있는 이전통계를 바꿉니다.

통계 계산

EMP 테이블에 대한 통계를 계산하는 명령문은 다음과 같습니다.

ANALYZE TABLE emp COMPUTE STATISTICS;

다음 질의는 기본적인 1064 행의 통계 예제를 사용하여 EMP 테이블에서 통계를 예측합니다.

ANALYZE TABLE emp ESTIMATE STATISTICS;

E S T I M ATE STATISTICS 옵션에 SAMPLE 옵션을 포함하여 O ra c l e이 사용해야하는 통계 예제를 지정합니다. 테이블에 있는 행이나 인덱스 값의 수 또는 백분율을나타내는 정수를 지정할 수 있습니다. 다음은 각 옵션의 명령문을 나타내는 예입니다.

ANALYZE TABLE empESTIMATE STATISTICS

SAMPLE 2000 ROWS;ANALYZE TABLE emp

ESTIMATE STATISTICSSAMPLE 33 PERCENT;

모든 경우 50% 이상 또는 객체에 있는 행 또는 인덱스의 값에 50% 이상이 되는 행이나 인덱스 값의 수를 지정하면 O ra c l e은 예측하기 보다는 정확한 통계를 계산합니다.

스키마 객체에 대한 통계 제거

A NA LYZE 명령어에 DELETE STATISTICS 옵션을 사용하여 데이터 딕셔너리에서 테이블, 인덱스 및 클러스터에 대한 통계를 제거할 수 있습니다. 예를 들어, 객체에 대한 명령문에 비용 기준 최적화를 사용하지 않으려면 객체에 대한 통계를 삭제할수 있습니다. 데이터 딕셔너리에서 EMP 테이블의 통계를 삭제하는 명령문은 다음과같습니다.

ANALYZE TABLE emp DELETE STATISTICS;

스키마 객체에 대한 일반적 관리 2 0 - 7

테이블, 인덱스 및 클러스터 분석

공유 S Q L과 통계 분석

테이블, 클러스터 또는 인덱스 분석은 현재 공유 SQL 문에 영향을 줄 수 있습니다.공유 SQL 문은 현재 공유 풀에 있는 명령문입니다. 통계를 갱신하거나 삭제하기 위해 객체를 분석할 때마다 분석된 객체를 참조하는 모든 공유 SQL 문은 메모리에서지워지고 다음 번 명령문을 실행할 때는 새 통계를 사용할 수 있습니다.

다음 프로시저를 호출할 수 있습니다.

D B M S _ U T I L I T Y . - A N A L Y Z E _ S C H E M A ( )

이 프로시저는 스키마 이름과 분석 방법(‘C O M P U T E’, ‘E S T I M AT E’또는‘D E -L E T E’)의 두 인수를 취하며 스키마에 있는 모든 객체에 대한 통계를 수집합니다.

D B M S _ D D L . - A N A L Y Z E _ O B J E C T S ( )

이 프로시저는 객체 유형(‘C L U S T E R’,‘TA B L E’또는‘I N D E X’) ,객체의 스키마,객체 이름과 분석 방법(‘C O M P U T E’, ‘E S T I M AT E’또는‘D E L E T E’)의 네 인수를 취하며 객체에 대한 통계를 수집합니다.

통계를 갱신하려면 이러한 프로시저를 주기적으로 호출해야 합니다.

테이블, 인덱스 및 클러스터 검증

A NA LYZE 명령어에 VA L I DATE STRUCTURE 옵션을사용하여 테이블, 인덱스,클러스터 또는 스냅샷 구조의 무결성을 검증합니다. 구조가 유효하면 오류가 발생하지 않습니다. 그러나 구조가 훼손되면 오류 메시지를 받게 됩니다. 테이블, 인덱스 또는 클러스터가 훼손되면 이를 삭제하고 재생성해야 합니다. 스냅샷이 훼손되면 완전히 새로 수정하고 문제가 해결되었는지를 확인합니다. 해결되지 않았다면 스냅샷을제거하고 재생성합니다.

EMP 테이블을 분석하는 명령문은 다음과 같습니다.

ANALYZE TABLE emp VALIDATE STRUCTURE;

CA S CADE 옵션을 사용하여 객체와 모든 관련된 객체를 검증할 수 있습니다. EMP테이블과 모든 관련된 인덱스를 검증하는 명령문은 다음과 같습니다.

ANALYZE TABLE emp VALIDATE STRUCTURE CASCADE;

테이블과 클러스터의 체인화된 행 나열

A NA LYZE 명령어에 LIST CHAINED ROWS 옵션을사용하여 테이블이나 클러스터의 체인화된 행과 이전된 행을 볼 수 있습니다. 이 명령어의 결과는 LIST CHAI-NED ROWS 옵션이돌려주는 정보를 수용하기 위해 명시적으로 생성된 특정 테이블에 저장됩니다.

2 0 - 8 Oracle8i 관리자 설명서

테이블, 인덱스 및 클러스터 분석

A NA LY Z E. . .LIST CHAINED ROWS 문이돌려주는 데이터를 수용할 적합한 테이블을 생성하려면 O ra c l e과 함께 제공되는 UTLCHAIN.SQL 스크립트를 사용합니다. UTLCHAIN.SQL 스크립트는 스크립트를 실행하는 사용자의 스키마에C H A I N E D _ ROW S라는 테이블을 생성합니다.

C H A I N E D _ ROWS 테이블을 생성한 후 A NA LYZE 문을 사용할 때 이를 지정합니다. 예를 들어, 다음 명령문은 EMP_DEPT 클러스터의 체인화된 행에 대한 정보를포함하는 행을 C H A I N E D _ ROWS 테이블에 삽입합니다.

ANALYZE CLUSTER emp_dept LIST CHAINED ROWS INTO chained_rows;

참조: UTLCHAIN.SQL 스크립트의 이름과 위치는 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오.

테이블이나 클러스터에 있는 체인화된 행과 이전된 행의 수를 줄이는데 대한 자세한내용은 O racle8i Tuning을 참조하십시오.

테이블과 클러스터 잘라버리기

테이블의 모든 행이나 클러스터화된 테이블 그룹의 모든 행을 삭제하여 테이블 또는클러스터는 남아 있지만 완전히 비게 할 수 있습니다. 예를 들어, 월별 데이터를 포함하는 테이블이 있을 수 있습니다. 그러면 매월 말에 데이터를 아카이브한 후 테이블을 비워야 (모든 행을 삭제해야) 합니다.

테이블에서 모든 행을 삭제하는데는 세 가지 옵션이 있습니다.

1 . DELETE 문 사용

DELETE 문을 사용하여 테이블의 행을 삭제할 수 있습니다. 예를 들어, EMP테이블에서 모든 행을 삭제하는 명령문은 다음과 같습니다.

DELETE FROM emp;

2 . D RO P과 C R E ATE 문 사용

테이블을 삭제한 다음 재생성할 수 있습니다. 예를 들어, EMP 테이블을 삭제하고 재생성하는 명령문은 다음과 같습니다.

DROP TABLE emp;CREATE TABLE emp ( . . . );

3 . T RU N CATE 사용

SQL 문 T RU N CAT E를 사용하여 테이블의 모든 행을 삭제할 수 있습니다. 예를 들어, EMP 테이블을 잘라버리는 명령문은 다음과 같습니다.

TRUNCATE TABLE emp;

스키마 객체에 대한 일반적 관리 2 0 - 9

테이블과 클러스터 잘라버리기

DELETE 사용

DELETE 명령어를 사용할 때 테이블이나 클러스터에 행이 많이 있으면 행이 삭제될때마다 많은 시스템 자원이 소모됩니다. 예를 들어, CPU 시간, 리두 로그 영역과 테이블이나 관련된 인덱스에 대한 롤백 세그먼트 영역은 자원을 필요로 합니다. 또한각 행이 삭제될 때 트리거가 실행됩니다. 삭제되어 빈 테이블이나 클러스터에 이전에할당되었던 영역은 해당 객체와 관련되어 남게 됩니다. DELETE로는 삭제할 행을선택할 수 있지만 T RU N CAT E와 D RO P은 객체 전체를 삭제합니다.

D R O P과 C R E ATE 사용

테이블이나 클러스터를 삭제하고 재생성하면 관련된 모든 인덱스, 무결성 제약 조건과 트리거도 삭제되며 삭제된 테이블이나 클러스터화된 테이블에 종속된 모든 객체는무효화됩니다. 삭제된 테이블이나 클러스터화된 테이블에 부여된 모든 권한도 삭제됩니다.

T R U N C ATE 사용

T RU N CATE 문은 테이블이나 클러스터에서 모든 행을 삭제하는 빠르고 효율적인 방법을 제공합니다. TRU N CATE 문은 어떤 롤백 정보도 만들지 않고 즉시 커밋합니다. TRU N CAT E는 DDL 문으로 롤백될 수 없습니다. TRU N CATE 문은 잘라버릴테이블과 관련된 구조 (제약 조건과 트리거) 및 권한에 영향을 주지 않습니다. TRU -N CATE 문은 현재 테이블에 할당된 영역을 잘라버린 후에 포함하는 테이블스페이스로 복귀되도록 지정합니다.

데이터베이스 관리자는 사용자의 관련된 스키마에 있는 테이블이나 클러스터를 잘라버릴 수 있습니다. 또한 D ROP ANY TABLE 시스템 권한이 있는 사용자는 모든스키마의 테이블이나 클러스터를 잘라버릴 수 있습니다.

상위 키를 포함하는 테이블이나 클러스터화된 테이블을 잘라버리기 전에 해당 테이블을 참조하는 다른 테이블의 모든 외래 키는 비활성화되어야 합니다. 자기 참조 제약조건은 비활성화되지 않아도 됩니다.

T RU N CATE 문이 테이블에서 행을 삭제하면 해당 테이블에 관련된 트리거는 실행되지 않습니다. 또한 감사 기능이 활성화되면 T RU N CATE 문은 DELETE 문에 해당하는 감사 정보를 생성하지 않습니다. 대신 발생한 T RU N CATE 문에 대해 단일 감사 레코드가 생성됩니다.

해시 클러스터는 잘라버릴 수 없습니다. 또한 해시 클러스터나 인덱스 클러스터 내의테이블도 개별적으로 잘라버릴 수 없습니다. 인덱스 클러스터를 잘라버리면 클러스터

2 0 - 1 0 Oracle8i 관리자 설명서

테이블과 클러스터 잘라버리기

에 있는 모든 테이블의 모든 행이 삭제됩니다. 모든 행이 각각의 클러스터화된 테이블에서 삭제되어야 한다면 DELETE 명령어를 사용하거나 테이블을 삭제하고 재생성합니다.

T RU N CATE 명령어의 REUSE STORAG E나 D ROP STORAGE 옵션은 현재 테이블이나 클러스터에 할당된 영역을 잘라버린 후에 포함하는 테이블스페이스로 복귀되도록 제어합니다. 기본 옵션인 D ROP STORAG E는 결과 테이블에 할당된 확장영역 수를 M I N E X T E N T S의 원래 설정값으로 줄입니다. 해제된 확장 영역은 시스템에 복귀되며 다른 객체가 사용할 수 있습니다.

선택적으로 REUSE STORAGE 옵션은 현재 테이블이나 클러스터에 할당된 모든영역이 할당된 채로 남아 있도록 지정합니다. 예를 들어, 다음 명령문은 이후의 삽입과 삭제에 사용할 수 있는 클러스터로 이전에 할당되었던 모든 확장 영역을 남겨 두면서 EMP_DEPT 클러스터를 잘라버립니다.

TRUNCATE CLUSTER emp_dept REUSE STORAGE;

R E U S E나 D ROP STORAGE 옵션은 관련된 인덱스에도 적용됩니다. 테이블이나클러스터를 잘라버리면 관련된 인덱스도 잘라버리게 됩니다. 잘라버린 테이블, 클러스터나 관련된 인덱스의 저장 영역 매개변수는 잘라버린 결과로 변경되지 않습니다.

참조: 감사에 대한 내용은 2 5장“데이터베이스 사용 감사”를 참조하십시오.

트리거 활성화 및 비활성화

데이터베이스 트리거는 데이터베이스에 내장된 프로시저이며 사용자가 테이블에 행을추가하는 것과 같은 특정한 수정 작업을 수행할 때 활성화(“실행”)됩니다. 트리거를사용하면 O ra c l e의 표준 기능을 보충하여 고도의 사용자 정의 데이터베이스 관리 시스템을 제공할 수 있습니다. 예를 들어, 트리거를 생성하여 테이블에 대한 DML 작업을 제한하고 정규 업무 시간 동안에 발생된 명령문만 허용할 수 있습니다.

데이터베이스 트리거는 다음 명령문이 관련 테이블에 대해 발생될 때 암시적으로 실행됩니다.

■ I N S E RT

■ U P DAT E

■ D E L E T E

■ S TA RT U P

■ S H U T D OW N

■ L O G O N

스키마 객체에 대한 일반적 관리 2 0 - 1 1

트리거 활성화 및 비활성화

트리거는 서로 다른 다음 두 가지 모드 중 하나가 될 수 있습니다.

활성화 트리거링 명령문이 발생되고 트리거 제한이 T R U E면 활성화된 트리거는 자

신의 트리거 본문을 실행합니다. 기본적으로 트리거는 처음 생성될 때 활성화

됩니다.

비활성화 트리거링 명령문이 발생되고 트리거 제한이 T R U E라 해도 비활성화된 트리

거는 자신의 트리거 본문을 실행하지 않습니다.

A LTER TABLE 문을 사용하여 트리거를 활성화하거나 비활성화하려면 테이블을 소유하거나 테이블에 대한 A LTER 객체 권한이 있거나 A LTER ANY TABLE 시스템 권한이 있어야 합니다. ALTER TRIGGER 문을사용하여 각각의 트리거를 활성화하거나 비활성화하려면 트리거를 소유하거나 A LTER ANY TRIGGER 시스템권한이 있어야 합니다.

참조: 트리거에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

트리거 생성에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

트리거 활성화

A LTER TRIGGER 문에 E NABLE 옵션을 사용하여 비활성화된 트리거를 활성화합니다. INVENTORY 테이블에서 R E O R D E R라는 비활성화된 트리거를 활성화하려면 다음 명령문을 입력합니다.

ALTER TRIGGER reorder ENABLE;

특정 테이블에 대해 정의한 모든 트리거를 활성화하려면 A LTER TABLE 문에E NABLE ALL TRIGGER 옵션을 사용합니다. INVENTORY 테이블에 대해 정의한 모든 트리거를 활성화하려면 다음 명령문을 입력합니다.

ALTER TABLE inventoryENABLE ALL TRIGGERS;

트리거 비활성화

다음 조건 중 하나가 참이면 트리거를 일시적으로 비활성화할 수 있습니다.

■ 트리거가 참조하는 객체를 사용할 수 없는 경우

■ 대규모 데이터 로드를 수행해야 하며 트리거를 실행하지 않고 빠르게 처리하고자할 경우

■ 트리거가 적용되는 테이블에 데이터를 로드하는 경우

2 0 - 1 2 Oracle8i 관리자 설명서

트리거 활성화 및 비활성화

A LTER TRIGGER 문에 D I SABLE 옵션을 사용하여 트리거를 비활성화합니다.I N V E N T O RY 테이블에서 REORDER 트리거를 비활성화하려면 다음 명령문을 입력합니다.

ALTER TRIGGER reorder DISABLE;

A LTER TABLE 문에 D I SABLE ALL TRIGGERS 옵션을 사용하여 테이블에 관련된 모든 트리거를 동시에 비활성화할 수 있습니다. 예를 들어, INVENTORY 테이블에 대해 정의한 모든 트리거를 비활성화하려면 다음 명령문을 입력합니다.

ALTER TABLE inventoryDISABLE ALL TRIGGERS;

무결성 제약 조건 관리

무결성 제약 조건은 데이터베이스의 데이터에 대한 규칙 또는 명령문입니다. 활성화제약 조건은 데이터베이스에 데이터가 입력되거나 갱신될 때 검사하여 제약 조건 규칙을 따르지 않는 데이터가 입력되는 것을 방지합니다. 제약 조건은 고유성을 보장하며, 마스터-디테일 관계를 유지 관리하고, 표현식을 따르는지 검사하거나 N U L L이입력될 수 없도록 유지 관리합니다.

이 규칙 또는 명령문은 제약 조건이 활성화되고 유효하면 항상 참입니다. 그러나 제약 조건이 비활성화되고 (또는“유효하지 않은 활성화”상태) 무결성 제약 조건에 위배되는 데이터도 데이터베이스에 있을 수 있으므로 이 명령문은 참이 아닐 수도 있습니다. 다음 단원에서는 무결성 제약 조건 관리를 위한 처리 방법 및 프로시저에 대해설명합니다.

■ 무결성 제약 조건 상태

■ 제약 조건 검사 지연

■ 연관된 인덱스를 가진 제약 조건 관리

■ 정의에 따른 무결성 제약 조건 설정

■ 기존의 무결성 제약 조건 수정

■ 무결성 제약 조건 삭제

■ 제약 조건 예외 사항 보고

참조: 제약 조건을 활성화하는 동안 특정 무결성 제약 조건에 대한 예외 사항을 식별할 수 있습니다. 20-21 페이지“제약조건 예외 사항 보고”를 참조하십시오.

무결성 제약 조건에 대한 일반적인 내용은 O racle8i 개념 설명서를 참조하십시오.

스키마 객체에 대한 일반적 관리 2 0 - 1 3

무결성 제약 조건 관리

무결성 제약 조건 상태

테이블에 정의된 무결성 제약 조건은 다음 네 가지 상태 중 하나입니다.

유효하지 않은 제약 조건이 비활성화되면 제약 조건에 포함된 열의 데이터 값에 제

약 조건에서 정의한 규칙을 강제로 수행하지 않습니다. 그러나 제약

조건 정의는 데이터 딕셔너리에 보유됩니다.

이 모드는 데이터 웨어하우스 롤업 또는 로드를 수행하거나 로드 프

로세스의 속도를 높이고자 할 때 유용합니다.

유효하지 않은 유효하지 않은 활성화 제약 조건을 가진 테이블은 잘못된 데이터를

활성화 포함할 수 있지만 새로운 잘못된 데이터는 추가할 수 없습니다.

이 상태는 유효한 활성화 상태를 사용하여 테이블의 데이터를 검증하

기 전의 중간 상태로 유용합니다. 모든새로운 데이터가 제약 조건을

위반하지 않도록 하며 제약 조건을 유효하지 않은 활성화 상태에서

유효한 활성화 상태로 변경할 때는 잠금이 필요하지않습니다.

이 모드는 예를 들어, 데이터 웨어하우스 로드 다음에 예외 사항 검

사를 위한 제약 조건을 활성화하지 않으려고 할 때 유용합니다.

유효한 활성화 활성화 제약 조건이 강제로 수행되면 유효하다고 알려집니다. (테이

블 데이터의 유효성이 검사됩니다.) 제약 조건 정의는 데이터 딕셔

너리에 저장됩니다.

이것이 제약 조건 처리의 정상적인 작업 상태입니다. 이 상태는 일

반 O L T P를 처리하는 동안 잘못된 데이터가 입력되지 않도록 하는

데 유용합니다.

유효한 비활성화 인덱스 없이 고유 제약 조건을 가질 수 있습니다. 이 상태에 있는

테이블은 갱신될 수 없습니다.

EXCHANGE PARTITION 문을사용하여 분할되지 않은 데이터

를 분할된 테이블로 로드할 수 있습니다. 또한 데이터 웨어하우징

목적으로 테이블을 가지고 있으며 영역 사용을 최소화하려는 경우

유용합니다.

제약 조건 비활성화

무결성 제약 조건에 의해 정의된 규칙을 강제로 수행하려면 제약 조건이 항상 활성화되어야 합니다. 그러나 다음과 같은 수행 상의 이유로 테이블의 무결성 제약 조건을일시적으로 비활성화하고자 할 수도 있습니다.

■ 대규모 데이터를 테이블에 로드할 때

2 0 - 1 4 Oracle8i 관리자 설명서

무결성 제약 조건 관리

비활성화

■ 테이블을 대량으로 변경하는 일괄처리 작업을 수행할 때 (예를 들어, 기존 번호에1 0 0 0을 더하여 모든 사원의 번호 변경)

■ 한 번에 한 테이블씩 임포트하거나 엑스포트할 때

세 가지 경우 모두 특히 데이터 웨어하우스 구성에서 일시적으로 무결성 제약 조건을비활성화하여 작업 수행을 개선할 수 있습니다.

제약 조건이 비활성화된 동안에는 제약 조건을 위반하는 데이터를 입력할 수 있습니다. 따라서 위에 나열된 작업이 완료되면 항상 제약 조건을 활성화해야 합니다.

유효하지 않은 활성화 제약 조건

제약 조건이 유효하지 않은 활성화 상태에서는 이후의 모든 명령문이 제약 조건에 순응하는지 검사됩니다. 그러나 테이블에 있는 기존 데이터는 검사되지 않습니다. 유효하지 않은 활성화 상태의 제약 조건을 가진 테이블은 잘못된 데이터를 포함할 수 있지만 새로운 잘못된 데이터가 추가될 수는 없습니다. 유효하지 않은 제약 조건을 활성화 상태로 만드는 것은 유효한 O LTP 데이터를 업로드하는 데이터 웨어하우스 구성에서 매우 유용합니다.

제약 조건을 활성화하면 검증하지 않아도 됩니다. 유효하지 않은 상태로 제약 조건을활성화하면 제약 조건을 활성화하고 검증하는 것보다 매우 빠릅니다. 또한 이미 활성화된 제약 조건을 검증하는 것은 이전에 사용할 수 없게 된 제약 조건을 검증하는 것과는 달리 검증하는 동안 DML 잠금이 필요하지 않습니다. 강제 수행은 검증하는 동안 위반 사항이 없도록 보장합니다. 따라서 검증하지 않고 활성화하면 일반적으로 제약 조건을 활성화하는 것과 연관된 고장 시간을 줄일 수 있습니다.

제약 조건 활성화

제약 조건이 활성화 상태면 제약 조건을 위반하는 행은 테이블에 삽입될 수 없습니다.그러나 제약 조건이 비활성화 상태인 동안에는 이러한 행이 삽입될 수 있습니다. 이러한 행은 제약 조건에 대해 예외 사항이라고 합니다. 제약 조건이 유효하지 않은 활성화상태면 제약 조건이 비활성화 상태인 동안 입력된 데이터로 인한 위반 사항이 남게 됩니다. 제약 조건을 위반하는 행은 제약 조건을 활성화 상태로 만들기 위해 갱신되거나삭제되어야 합니다.

E XCEPTIONS 테이블에서 제약 조건을 위반하는 모든 행을 검사할 수 있습니다.

참조: E XCEPTIONS 테이블에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

스키마 객체에 대한 일반적 관리 2 0 - 1 5

무결성 제약 조건 관리

무결성 제약 조건 상태: 프로시저와 장점

다음 순서로 무결성 제약 조건 상태를 사용하면 가장 효과적입니다.

1 . 비활성화 상태

2 . 작업 수행 (로드, 엑스포트, 임포트)

3 . 유효하지 않은 활성화 상태

4 . 활성화 상태

이러한 순서로 제약 조건을 사용하면 다음과 같은 장점이 있습니다.

■ 잠금이 사용되지 않습니다.

■ 모든 제약 조건이 동시에 활성화됩니다.

■ 제약 조건 활성화가 병렬로 수행됩니다.

■ 테이블에서 동시 작업이 허용됩니다.

제약 조건 검사 지연

O ra c l e이 제약 조건을 검사할 때 제약 조건이 충족되지 않으면 오류를 표시합니다.트랜잭션이 끝날 때까지 제약 조건 유효성 검증을 지연시킬 수 있습니다.

SET CONSTRAINTS 문을 실행하면 SET CONSTRAINTS 모드는 트랜잭션이실행될 동안이나 다른 SET CONSTRAINTS 문이 모드를 재설정할 때까지 지속됩니다.

주: 트리거 내에서 SET CONSTRAINT 문을실행할 수 없습니다.

참조: SET CONSTRAINTS 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

제약 조건에 대한 일반적인 내용은 O racle8i 개념 설명서를 참조하십시오.

제약 조건 검사 지연 방법

해당 데이터 선택 작업하는 데이터가 다음 특성이 있으면 UNIQUE 및 F O R E I G N키에 대한 제약 조건 검사를 지연시키고자 할 수 있습니다.

■ 테이블이 스냅샷입니다.

2 0 - 1 6 Oracle8i 관리자 설명서

무결성 제약 조건 관리

■ 데이터를 동일한 순서로 반환할 것인지가 확실하지 않은 다른 응용 프로그램에 의해 조작되는 대량의 데이터가 있는 테이블

■ FOREIGN 키에 대한 계단식 갱신 작업

외부 응용 프로그램에 의해 조작되는 대량의 데이터를 처리할 경우 트랜잭션이 끝날때까지 유효성에 대한 제약 조건 검사를 지연시킬 수 있습니다.

제약 조건이 지연 가능하게 생성되었는지 여부 확인 해당 테이블을 식별하여 선택한다음 테이블의 FOREIGN, UNIQUE 및 P R I M A RY 키 제약 조건이 지연 가능하게 생성되었는지 확인합니다. 다음과 유사한 명령문을 실행하여 위의 작업을 수행할수 있습니다.

CREATE TABLE dept (deptno NUMBER PRIMARY KEY,dname VARCHAR2 (30));

CREATE TABLE emp (empno NUMBER,ename VARCHAR2 (30),deptno NUMBER REFERENCES (dept),CONSTRAINT epk PRIMARY KEY (empno) DEFERRABLE,CONSTRAINT efk FOREIGN KEY (deptno)REFERENCES (dept. deptno) DEFERRABLE);

INSERT INTO dept VALUES (10, ’Accounting’);INSERT INTO dept VALUES (20, ’SALES’);INSERT INTO emp VALUES (1, ’Corleone’, 10);INSERT INTO emp VALUES (2, ’Costanza’, 20);COMMIT;

SET CONSTRAINT efk DEFERRED;UPDATE dept SET deptno = deptno + 10

WHERE deptno = 20;

SELECT * from emp ORDER BY deptno;EMPNO ENAME DEPTNO----- -------------- -------

1 Corleone 102 Costanza 20

UPDATE emp SET deptno = deptno + 10WHERE deptno = 20;

SELECT * FROM emp ORDER BY deptno;

EMPNO ENAME DEPTNO----- -------------- -------

1 Corleone 102 Costanza 30

COMMIT;

스키마 객체에 대한 일반적 관리 2 0 - 1 7

무결성 제약 조건 관리

모든 제약 조건이 지연되도록 설정 데이터 조작을 위해 사용되는 응용 프로그램에서데이터를 실제로 처리하기 전에 모든 제약 조건이 지연되도록 설정해야 합니다. 모든지연 가능한 제약 조건이 지연되도록 설정하려면 다음 DML 문을 사용합니다.

SET CONSTRAINTS ALL DEFERRED;

주: SET CONSTRAINTS 문은 현재 트랜잭션에만 적용됩니다. 제약조건 생성 시 지정된 기본값은 제약 조건이 있는 한 지속됩니다. AL-TER SESSION SET CONSTRAINTS 문은 현재 세션에만 적용됩니다.

커밋 검사 (선택 사항) COMMIT 실행 바로 직전에 SET CONSTRAINTS ALLI M M E D I ATE 문을 실행하여 커밋 전에 제약 조건 위반 사항을 검사할 수 있습니다.제약 조건에 문제가 있으면 이 명령문은 실패하고 오류를 발생시킨 제약 조건이 식별됩니다. 제약 조건이 위반된 상황에서 커밋하면 트랜잭션은 롤백되고 오류 메시지를받게 됩니다.

연관된 인덱스를 가진 제약 조건 관리

UNIQUE 또는 P R I M A RY 키를 생성할 때 O ra c l e은 기존 인덱스가 제약 조건에대해 고유성을 강제로 수행하는데 사용될 수 있는지 확인합니다. 그러한 인덱스가 없으면 O ra c l e이 인덱스를 생성합니다.

O ra c l e이 고유한 인덱스를 사용하여 제약 조건을 강제로 수행한 경우 이 인덱스와 연관된 제약 조건을 삭제하거나 비활성화하면 해당 인덱스가 삭제됩니다.

활성화된 외래 키가 P R I M A RY 또는 UNIQUE 키를 참조하면 P R I M A RY 키나UNIQUE 키 제약 조건 또는 인덱스를 삭제하거나 비활성화할 수 없습니다.

주: 지연 가능한 UNIQUE 및 P R I M A RY 키는 모두 고유하지 않은인덱스를 사용해야 합니다.

정의에 따른 무결성 제약 조건 설정

무결성 제약 조건을 C R E ATE TA B L E이나 A LTER TABLE 문에 정의하면 다음제약 조건 중 하나의 절을 포함하여 무결성 제약 조건을 활성화 또는 비활성화하거나, 유효화 또는 무효화합니다.

■ E NA B L E

2 0 - 1 8 Oracle8i 관리자 설명서

무결성 제약 조건 관리

■ D I SA B L E

■ E NABLE [VA L I DAT E ]

■ D I SABLE [NOVA L I DAT E ]

■ E NABLE NOVA L I DAT E

■ D I SABLE VA L I DAT E

제약 조건 정의에서 이러한 절이 식별되지 않으면 O ra c l e은 자동으로 제약 조건을 활성화하고 유효화합니다.

정의에 따른 제약 조건 비활성화

다음 C R E ATE TA B L E과 A LTER TABLE 문은 무결성 제약 조건을 정의하고 비활성화합니다.

CREATE TABLE emp (empno NUMBER(5) PRIMARY KEY DISABLE, . . . ;

ALTER TABLE empADD PRIMARY KEY (empno) DISABLE;

무결성 제약 조건을 정의하고 비활성화하는 A LTER TABLE 문은 무결성 제약 조건을 위반하는 테이블의 행으로 인해 실패하지 않습니다. 규칙을 강제로 수행하지 않으므로 제약 조건을 정의할 수 있습니다.

참조: 제약 조건 예외 사항에 대한 자세한 내용은 20-21 페이지“제약 조건 예외 사항 보고”를 참조하십시오.

정의에 따른 제약 조건 활성화

다음 C R E ATE TA B L E과 A LTER TABLE 문은 무결성 제약 조건을 정의하고 활성화합니다.

CREATE TABLE emp (empno NUMBER(5) CONSTRAINT emp.pk PRIMARY KEY, . . . ;

ALTER TABLE empADD CONSTRAINT emp.pk PRIMARY KEY (empno);

테이블의 행이 무결성 제약 조건을 위반하여 무결성 제약 조건을 정의하고 활성화를시도하는 A LTER TABLE 문이 실패할 수도 있습니다. 이 경우 명령문은 롤백되며제약 조건 정의는 저장되거나 활성화되지 않습니다.

스키마 객체에 대한 일반적 관리 2 0 - 1 9

무결성 제약 조건 관리

관련된 인덱스를 생성하는 UNIQUE 키나 P R I M A RY KEY를 활성화하려면 테이블소유자는 인덱스를 포함할 테이블스페이스에 대한 할당량 또는 U N L I M I T E DTA B L E S PACE 시스템 권한이 있어야 합니다.

기존의 무결성 제약 조건 수정

A LTER TABLE 문을 사용하여 제약 조건을 활성화 또는 비활성화하거나 수정할 수있습니다.

활성화된 제약 조건 비활성화

무결성 제약 조건을 비활성화하는 명령문은 다음과 같습니다.

ALTER TABLE deptDISABLE CONSTRAINT dname_ukey;

ALTER TABLE deptDISABLE PRIMARY KEY,DISABLE UNIQUE (dname, loc);

유효하지 않은 비활성화 무결성 제약 조건을 활성화하는 명령문은 다음과 같습니다.

ALTER TABLE deptENABLE NOVALIDATE CONSTRAINT dname_ukey;

ALTER TABLE deptENABLE NOVALIDATE PRIMARY KEY,ENABLE NOVALIDATE UNIQUE (dname, loc);

비활성화 무결성 제약 조건을 활성화하거나 유효화하는 명령문은 다음과 같습니다.

ALTER TABLE deptMODIFY CONSTRAINT dname_key VALIDATE;

ALTER TABLE deptMODIFY PRIMARY KEY ENABLE NOVALIDATE;

비활성화 무결성 제약 조건을 활성화하는 명령문은 다음과 같습니다.

ALTER TABLE deptENABLE CONSTRAINT dname_ukey;

ALTER TABLE deptENABLE PRIMARY KEY,ENABLE UNIQUE (dname, loc);

UNIQUE 키나 P R I M A RY KEY 제약 조건과 모든 종속된 FOREIGN KEY 제약조건을 단일 작업으로 비활성화하거나 삭제하려면 D I SA B L E이나 D ROP 절에CA S CADE 옵션을 사용합니다. 예를 들어, PRIMARY KEY 제약 조건과 이에 종속된 FOREIGN KEY 제약조건을 비활성화하는 명령문은 다음과 같습니다.

ALTER TABLE deptDISABLE PRIMARY KEY CASCADE;

2 0 - 2 0 Oracle8i 관리자 설명서

무결성 제약 조건 관리

무결성 제약 조건 삭제

무결성 제약 조건이 강제로 수행하는 규칙이 더 이상 참이 아니거나 제약 조건이 더

이상 필요하지 않으면 무결성 제약 조건을 삭제할 수 있습니다. ALTER TABLE 문

에 D ROP 절을 사용하여 제약 조건을 삭제할 수 있습니다. 무결성 제약 조건을 삭제

하는 명령문은 다음과 같습니다.

ALTER TABLE deptDROP UNIQUE (dname, loc);

ALTER TABLE empDROP PRIMARY KEY,DROP CONSTRAINT dept_fkey;

UNIQUE 키와 P R I M A RY KEY 제약 조건을 삭제하면 관련된 고유 인덱스도 삭제됩니다. FOREIGN KEY가 U N I Q U E이나 P R I M A RY KEY를 참조하는 경우D ROP 문에 CA S CADE CONSTRAINTS 절을 포함해야 합니다. 그렇지 않으면제약 조건을 삭제할 수 없습니다.

제약 조건 예외 사항 보고

제약 조건이 유효한 상태일 때 예외 사항이 있으면 오류를 돌려주고 무결성 제약 조건은 무효화 상태로 남습니다. 무결성 제약 조건 예외 사항이 있기 때문에 명령문을성공적으로 수행할 수 없다면 명령문은 롤백됩니다. 예외 사항이 있으면 제약 조건의모든 예외 사항은 갱신되거나 삭제되어야 제약 조건을 유효화할 수 있습니다.

C R E ATE TABLE 문을 사용하여 제약 조건을 위반하는 행을 알아낼 수는 없습니다.무결성 제약 조건을 위반하는 행을 알아내려면 A LTER TABLE 문에 E NABLE 절의 E XCEPTIONS 옵션을 실행합니다. EXCEPTIONS 옵션은ROW I D, 테이블 소유자, 테이블 이름 및 모든 예외 사항 행의 제약 조건 이름을 지정된 테이블에 배치합니다.

주: 제약 조건을 활성화하기 전에 E NABLE 절의 E XCEPTIONS 옵션으로부터 정보를 수용하려면 적합한 예외 사항 보고 테이블을 생성해야 합니다. EXC E P T I O N S라는 테이블을 생성하는 U T L E XC P T. S Q L스크립트를 보내 예외 사항 테이블을 생성할 수 있습니다. 스크립트를수정하고 다시 보내 다른 이름을 가진 추가 예외 사항 테이블을 생성할수 있습니다.

다음 명령문은 DEPT 테이블의 P R I M A RY KEY 유효화를 시도합니다. 예외 사항이 있으면 정보는 E XC E P T I O N S라는 테이블에 삽입됩니다.

스키마 객체에 대한 일반적 관리 2 0 - 2 1

무결성 제약 조건 관리

ALTER TABLE dept ENABLE PRIMARY KEY EXCEPTIONS INTO exceptions;

DEPT 테이블에 중복된 기본 키 값이 있고 P R I M A RY KEY 제약 조건 이름이SY S _ C 0 0 6 1 0이라면 다음 행은 이전 명령문에 의해 E XCEPTIONS 테이블에 배치될수 있습니다.

SELECT * FROM exceptions;

ROWID OWNER TABLE_NAME CONSTRAINT------------------ --------- -------------- ----------- AAAAZ9AABAAABvqAAB SCOTT DEPT SYS_C00610AAAAZ9AABAAABvqAAG SCOTT DEPT SYS_C00610

다음 예와 같이 자세한 질의는 예외 사항 보고 테이블과 마스터 테이블의 행을 조인하여 특정 제약 조건을 위반하는 실제 행을 나타냅니다.

SELECT deptno, dname, loc FROM dept, exceptionsWHERE exceptions.constraint = ‘SYS_C00610‘AND dept.rowid = exceptions.row_id;

DEPTNO DNAME LOC---------- -------------- ------------- 10 ACCOUNTING NEW YORK10 RESEARCH DALLAS

제약 조건을 위반하는 모든 행은 제약 조건을 포함하는 테이블에서 갱신되거나 삭제되어야 합니다. 예외 사항을 갱신할 때 제약 조건을 위반하는 값을 제약 조건과 일치하는 값이나 널로 변경해야 합니다. 마스터 테이블의 행을 갱신하거나 삭제한 후 예외 사항 보고 테이블의 예외 사항에 해당하는 행을 삭제하여 이후의 예외 사항 보고와 혼동되지 않도록 해야 합니다. 마스터 테이블과 예외 사항 보고 테이블을 갱신하는 명령문은 트랜잭션 일관성을 보장하기 위해 동일한 트랜잭션에 있어야 합니다.

다음 트랜잭션을 실행하여 위에 있는 예에서 예외 사항을 수정합니다.

UPDATE dept SET deptno = 20 WHERE dname = ‘RESEARCH‘;DELETE FROM exceptions WHERE constraint = ‘SYS_C00610‘;COMMIT;

2 0 - 2 2 Oracle8i 관리자 설명서

무결성 제약 조건 관리

예외 사항 관리 목적은 예외 사항 보고 테이블의 모든 예외 사항을 삭제하는 것입니다.

주: 비활성화된 제약 조건을 가지는 테이블에서 현재의 예외 사항을 수정하는 동안 다른 사용자는 새로운 예외 사항을 생성하는 명령문을 실행할 수도 있습니다. 예외 사항을 제거하기 전에 유효하지 않은 제약조건을 활성화하여 이를 피할 수 있습니다.

참조: U T L E XC P T.SQL 스크립트의 정확한 이름과 위치는 운영 체제마다 다릅니다.자세한 내용은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

객체 종속성 관리

이 단원에서는 다양한 객체 종속성을 설명하며 다음 내용을 다룹니다.

■ 뷰 직접 재컴파일

■ 프로시저와 함수 직접 재컴파일

■ 패키지 직접 재컴파일

표 2 0 - 1은 객체가 종속된 다른 객체의 변경 사항에 어떤 영향을 받는지를 나타냅니다.

표 20-1 객체 상태에 영향을 주는 작업

스키마 객체에 대한 일반적 관리 2 0 - 2 3

객체 종속성 관리

객체의 결과 상태

오류가없으면 VALID

오류가없으면 VALID

없음: 객체는 삭제됨

종속된 객체의 결과 상

변경 사항 없음1

INVALID

INVALID

1

작업

CR EATE 테이블, 시퀀스, 동의어

A L T E R 테이블(A D D 열 M O D I F Y 열)

R E N A M E 테이블, 시퀀스, 동의어, 뷰

D R O P 테이블, 시퀀스, 동의어, 뷰,

프로시저, 함수, 패키지

표 20-1 객체 상태에 영향을 주는 작업 (계속)

O ra c l e은 잘못된 뷰나 PL/SQL 프로그램 단위를 다음에 사용할 때 자동으로 재컴파일합니다. 그리고 사용자는 올바른 SQL 명령어에 COMPILE 매개변수를 사용하여뷰나 프로그램 단위를 강제로 재컴파일할 수 있습니다. 강제 컴파일은 종속 뷰나 프로그램 단위가 잘못되었지만 현재 사용되지 않을 때 오류 검사를 위해 자주 사용됩니다. 이 경우 뷰나 프로그램 단위가 실행되기 전에는 자동으로 재컴파일되지 않습니다.

2 0 - 2 4 Oracle8i 관리자 설명서

객체 종속성 관리

객체의 결과 상태

오류가 없으면 V A L I D,

구문 또는 권한 오류면

INVALID

오류가 없으면 V A L I D,

구문 또는 권한 오류면

I N V A L I D

변경 사항 없음

변경 사항 없음

변경 사항 없음

변경 사항 없음

종속된 객체의 결과 상

변경 사항 없음1

INVALID

객체에 종속된 사용자

의 모든 객체는 INVA-

LID3

객체에 종속된 데이터

베이스의 모든 객체는

INVALID3

사용자의 모든 객체는

INVALID4

데이터베이스의 모든

객체는 INVALID4

작업

CR EATE 뷰, 프로시저2

CREATE OR REPLACE 뷰 또는

프로시저2

REVOKE 객체 권한3 ON 객체

TO/FROM 사용자

REVOKE 객체 권한3 ON 객체

TO/FROM PUBLIC

REVOKE 시스템 권한4 TO/FROM

사용자

REVOKE 시스템 권한4 TO/FROM

PUBLIC

1 이전에 객체가 없었다면 종속된 객체가 무효화될 수 있습니다.

2 독립형 프로시저와 함수, 패키지 및 트리거

3 SELECT, INSERT, UPDATE, DELETE, EXECUTE를포함하는 DML 객체 권한만 해당. 재

검증 시 재컴파일할 필요가 없습니다.

4 SELECT, INSERT, UPDATE, DELETE ANY TABLE, EXECUTE ANY PROCEDUR E를 포

함하는 DML 시스템 권한만 해당. 재검증 시 재컴파일할 필요가 없습니다.

잘못된 종속 객체를 식별하려면 USER_/ALL_/DBA_OBJECTS 뷰를질의합니다.

뷰 직접 재컴파일

뷰를 직접 재컴파일하려면 뷰가 스키마에 있거나 A LTER ANY TABLE 시스템 권한이 있어야 합니다. ALTER VIEW 명령어에 COMPILE 매개변수를 사용하여 뷰를 재컴파일합니다. 스키마에 포함된 EMP_DEPT 뷰를 재컴파일하는 명령문은 다음과 같습니다.

ALTER VIEW emp_dept COMPILE;

프로시저와 함수 직접 재컴파일

프로시저를 직접 재컴파일하려면 프로시저가 스키마에 있거나 A LTER A N YP ROCEDURE 시스템 권한이 있어야 합니다. ALTER PRO C E D U R E /F U N C T I O N문에 COMPILE 매개변수를 사용하여 독립형 프로시저나 함수를 재컴파일합니다. 스키마에 포함된 내장 프로시저 U P DAT E _ SA L A RY를 재컴파일하는 명령문은 다음과같습니다.

ALTER PROCEDURE update_salary COMPILE;

패키지 직접 재컴파일

패키지를 직접 재컴파일하려면 패키지가 스키마에 있거나 A LTER ANY PRO C E -DURE 시스템 권한이 있어야 합니다. ALTER PAC K AGE 문에 COMPILE 매개변수를 사용하여 패키지 본문만 또는 패키지 사양과 본문 모두를 재컴파일합니다.ACCT_MGMT 패키지의 본문만 또는 본문과 사양을 함께 각각 재컴파일하는 명령문은 다음과 같습니다.

ALTER PACKAGE acct_mgmt COMPILE BODY;ALTER PACKAGE acct_mgmt COMPILE PACKAGE;

객체 이름 분석 관리

이 단원에서는 O ra c l e이 객체 이름을 분석하는 방법에 대해 설명합니다.

1 . O ra c l e은 먼저 SQL 문에서 참조한 이름의 첫 번째 조각에 대해 객체로서의 자격이 있는지를 검사합니다. 예를 들어, SCOTT. E M P에서 S C O T T이 첫 번째조각입니다. 한 조각으로만 이루어졌다면 그 한 조각이 첫 번째 조각이 됩니다.

스키마 객체에 대한 일반적 관리 2 0 - 2 5

객체 이름 분석 관리

a . O ra c l e은 현재 스키마에서 객체 이름의 첫 번째 조각과 일치되는 이름을 가

진 객체를 검색합니다. 검색에 실패했다면 b 단계로 갑니다.

b . 현재 스키마에 스키마 객체가 없으면 O ra c l e은 객체 이름의 첫 번째 조각과

일치되는 공용 동의어를 검색합니다. 검색에 실패하면 c 단계로 갑니다.

c . 공용 동의어 검색에 실패하면 객체 이름의 첫 번째 조각과 일치하는 이름을

가진 스키마를 검색합니다. 검색에 성공하면 b 단계로 돌아가 이름의 두 번째

조각을 객체로 사용하여 객체로서의 자격을 가진 스키마에서 찾습니다. 두 번

째 조각이 이전에 객체로서의 자격을 가진 객체와 대응되지 않거나 두 번째

조각이 없으면 O ra c l e은 오류를 돌려줍니다.

c 단계에서 찾은 스키마가 없다면 객체는 객체로서의 자격이 없으며 O ra c l e

은 오류를 돌려줍니다.

2 . 스키마 객체가 스키마 객체로서의 자격을 부여받았다면 이름의 나머지 조각도 검색된 객체의 유효한 부분과 일치해야 합니다. 예를 들어, SCOTT. E M P. D E P T -N O가 이름이라면 S C O T T은 스키마 자격이 있는 것이고 E M P는 테이블 자격이있는 것이며 E M P가 테이블이므로 D E P T N O는 열에 해당되어야 합니다. EMP가 패키지 자격이 있다면 D E P T N O는 해당 패키지의 공용 상수, 변수, 프로시저또는 함수에 해당해야 합니다.

분산 데이터베이스에서 전역 객체 이름을 동의어 내에서 명시적이거나 암시적으로 사용하면 지역 O ra c l e은 참조를 지역적으로 분석합니다. 예를 들어, 동의어는 원격 테이블의 전역 객체 이름으로 분석됩니다. 부분적으로 분석된 명령문은 원격 데이터베이스로 보내지고 원격 O ra c l e은 여기에 설명된 대로 객체를 분석합니다.

데이터 딕셔너리의 저장 영역 매개변수 변경

이 단원에서는 데이터 딕셔너리의 저장 영역 매개변수 변경에 대해 설명하며 다음 내용을 다룹니다.

■ 데이터 딕셔너리의 구조

■ 데이터 딕셔너리의 저장 영역 변경을 요구하는 오류

데이터베이스의 규모가 매우 크거나 비정상적으로 많은 양의 객체, 테이블의 열, 제약 조건 정의, 사용자 또는 다른 정의를 포함한다면 데이터 딕셔너리를 구성하는 테이블은 어느 시점에 추가 확장 영역을 얻을 수 없을 것입니다. 예를 들어, 데이터 딕셔너리 테이블은 추가 확장 영역을 필요로 하지만 SYSTEM 테이블스페이스에는 충분한 연속 영역이 없을 수 있습니다. 이 경우 객체를 유지하려는 테이블스페이스가

2 0 - 2 6 Oracle8i 관리자 설명서

데이터 딕셔너리의 저장 영역 매개변수 변경

충분한 영역을 가지는 것처럼 보여도 새 객체를 생성할 수는 없습니다. 사용자 생성세그먼트의 저장 영역 설정을 변경하는 것과 동일한 방법으로 기초가 되는 데이터 딕셔너리 테이블의 저장 영역 매개변수에 더 많은 확장 영역이 할당되도록 변경하여 이러한 상황을 해결할 수 있습니다. 예를 들어, 데이터 딕셔너리 테이블의 N E X T나PCTINCREASE 값을조정할 수 있습니다.

경고: 데이터 딕셔너리 객체의 저장 영역 설정을 변경할 때 주의해야 합니다. 제대로 설정하지 않으면 데이터 딕셔너리의 구조를 훼손시켜 전체데이터베이스를 재생성해야 할 수 있습니다. 예를 들어, 데이터 딕셔너리 테이블 US ER $의 P C T I NC R E AS E를 0으로, NEXT를 2 K로 설정하면 테이블은 빠르게 세그먼트의 최대 확장 영역 수에 도달하게 되며전체 데이터베이스를 엑스포트, 재생성 또는 임포트하지 않고는 더 이상의 사용자나 롤을 생성할 수 없게 됩니다.

데이터 딕셔너리의 구조

다음 테이블과 클러스터는 데이터베이스에 있는 모든 사용자 생성 객체의 정의를 포함합니다.

S EG $ 데이터베이스에서 정의한 세그먼트 (임시 세그먼트 포함)

O BJ $ 데이터베이스의 사용자 정의 객체(클러스터화된 테이블 포함)로 인덱스

는 I _ O B J 1과 I _ O B J 2

U N DO $ 데이터베이스에서 정의한 롤백 세그먼트로 인덱스는 I _ U N D O 1

F ET $ 세그먼트에 할당되지 않은 사용 가능한 빈 확장 영역

U ET $ 세그먼트에 할당된 확장 영역

TS $ 데이터베이스에서 정의한 테이블스페이스

F I LE $ 데이터베이스를 구성하는 파일로 인덱스는 I_FILE1

F I L E XT $ AUTOEXTEND 옵션이설정된 데이터 파일

T AB $ 데이터베이스에서 정의한 테이블(클러스터화된 테이블 포함)로 인덱스

는 I_TAB1

스키마 객체에 대한 일반적 관리 2 0 - 2 7

데이터 딕셔너리의 저장 영역 매개변수 변경

C LU $ 데이터베이스에서 정의한 클러스터

I ND $ 데이터베이스에서정의한인덱스로인덱스는 I _ I N D 1

I C OL $ 열에서 정의한 인덱스를 가지는 열(혼합 인덱스에 있는 각 열의 개별

입력 항목 포함)로 인덱스는 I_ICOL1

C OL $ 데이터베이스의 테이블에서 정의한 열로 인덱스는 I _ C O L 1과 I_COL2

C ON$ 데이터베이스에서 정의한 제약 조건(제약 조건 소유자의 정보 포함)으

로 인덱스는 I _ C O N 1과 I_CON2

C D EF $ C ON $의 제약 조건 정의로 인덱스는 I_CDEF1, I_CDEF2와

I_CDEF3

C C OL $ 열에서 정의한 제약 조건을 가지는 열(혼합 키에 있는 각 열의 개별 입

력 항목 포함)로 인덱스는 I_CCOL1

U S ER $ 데이터베이스에서 정의한 사용자와 롤로 인덱스는 I_USER1

T SQ $ 사용자의 테이블스페이스 할당량 (사용자에 대해 정의된 각 테이블스페

이스 할당량에 대한 하나의 입력 항목 포함)

C_OBJ# T AB $, CLU $, ICOL $, IND $와 C OL $를 포함하는 클러스터로 인

덱스는 I_OBJ#

C_TS# F ET $, TS $와 F I LE $를 포함하는 클러스터로 인덱스는 I_TS#

C_USER# U S E R $와 T S Q$를 포함하는 클러스터로 인덱스는 I_USER#

C_COBJ# C D EF $와 C C OL $를 포함하는 클러스터로 인덱스는 I_COBJ#

다음은 모든 데이터 딕셔너리 세그먼트 중에서 꼭 변경해야 할 항목입니다.

C_TS# 데이터베이스의 빈 영역이 많이 단편화된 경우

C_OBJ# 테이블에 인덱스나 열이 많은 경우

2 0 - 2 8 Oracle8i 관리자 설명서

데이터 딕셔너리의 저장 영역 매개변수 변경

C ON $,C_COBJ# 무결성 제약 조건을 많이 사용한 경우

C_USER# 해당 데이터베이스에서 정의한 사용자가 많은 경우

클러스터화된 테이블에서는 테이블이 아닌 클러스터의 저장 영역 설정을 변경해야 합니다.

데이터 딕셔너리의 저장 영역 변경을 요구하는 오류

확장 영역을 할당할 수 없을 때 사용자가 데이터 딕셔너리에 추가 확장 영역을 할당해야 하는 새 객체를 생성하려고 하면 오류가 발생합니다. 오류 메시지 O R A - 1 6 5 3“failed to allocate extent of size num in tablespace ‘n a m e‘ “은 이러한 문제를 나타냅니다.

이러한 메시지를 받았는데 변경할 테이블이나 롤백 세그먼트 같은 세그먼트가 세그먼트를 정의할 때 지정한 한계에 도달하지 않았다면 정의를 포함하는 객체의 저장 영역설정을 확인합니다.

예를 들어, 테이블에 새 P R I M A RY KEY 제약 조건을 정의하려는 중에 O R A - 1 5 4 7을 받았는데 O ra c l e이 키에 대해 생성해야 하는 인덱스의 영역이 충분하지 않다면D B A _ S E G M E N T S를 질의하고 C ON $나 C _ C O B J #의 저장 영역 매개변수 변경을고려하여 C ON $나 C _ C O B J #를 다른 확장 영역에 할당할 수 없는지 확인합니다.

참조: 자세한 내용은 20-33 페이지“예 7: 추가 확장 영역을 할당할 수 없는 세그먼트 나열”을 참조하십시오.

스키마 객체 정보 나열

데이터 딕셔너리는 이 설명서에서 설명한 스키마 객체에 대한 많은 뷰를 제공합니다.다음은 스키마 객체와 관련된 뷰를 요약한 목록입니다.

■ A L L _ O B J E C T S, USER_OBJECTS, DBA_OBJECTS

■ A L L _ CATA L O G, USER_CATA L O G, DBA_CATA L O G

■ A L L _ TA B L E S, USER_TA B L E S, DBA_TA B L E S

■ A L L _ TA B _ C O L U M N S, USER_TA B _ C O L U M N S, DBA_TA B _ C O L U M N S

■ A L L _ TA B _ C O M M E N T S, USER_TA B _ C O M M E N T S

■ A L L _ C O L _ C O M M E N T S, USER_COL_COMMENTS, DBA_COL_COMMENTS

■ A L L _ V I E W S, USER_VIEWS, DBA_VIEWS

스키마 객체에 대한 일반적 관리 2 0 - 2 9

스키마 객체 정보 나열

■ A L L _ I N D E X E S, USER_INDEXES, DBA_INDEXES

■ A L L _ I N D _ C O L U M N S, USER_IND_COLUMNS, DBA_IND_COLUMNS

■ U S E R _ C L U S T E R S, DBA_CLUSTERS

■ U S E R _ C L U _ C O L U M N S, DBA_CLU_COLUMNS

■ A L L _ S E Q U E N C E S, USER_SEQUENCES, DBA_SEQUENCES

■ A L L _ SY N O N Y M S, USER_SY N O N Y M S, DBA_SY N O N Y M S

■ A L L _ D E P E N D E N C I E S, USER_DEPENDENCIES, DBA_DEPENDENCIES

다음 데이터 딕셔너리 뷰는 데이터베이스의 세그먼트 정보를 포함합니다.

■ U S E R _ S E G M E N T S

■ D B A _ S E G M E N T S

다음 데이터 딕셔너리 뷰는 데이터베이스의 확장 영역 정보를 포함합니다.

■ U S E R _ E X T E N T S

■ D B A _ E X T E N T S

■ U S E R _ F R E E _ S PAC E

■ D B A _ F R E E _ S PAC E

딕셔너리 저장 영역 O racle 패키지

표 2 0 - 2는 SQL 기능에 PL/SQL 액세스를 허용하거나 데이터베이스 기능을 확장하기 위해 제공하는 패키지를 설명합니다.

표 20-2 제공되는패키지: 추가 기능

2 0 - 3 0 Oracle8i 관리자 설명서

스키마 객체 정보 나열

프로시저 설명

dbms_space.unused_space 객체(테이블, 인덱스 또는 클러스터)에서 사용하

지 않는 영역 정보를 돌려줍니다.

dbms_space.free_blocks 객체(테이블, 인덱스 또는 클러스터)에서 빈 블록

정보를 돌려줍니다.

dbms_session.free_unused_ 많은 양의 메모리( 1 0 0 K보다 큰)를 필요로 하는

user_memory 작업 수행 후 사용하지 않은 메모리를 회수하는

프로시저. 이 프로시저는 메모리 수요가 많은 때

만 사용해야 합니다.

다음 예는 기타 다양한 스키마 객체를 나타내는 방법을 보여줍니다.

예 1: 유형별로 스키마 객체 나열

다음 질의를 실행한 사용자가 소유한 모든 객체를 나타내는 질의입니다.

SELECT object_name, object_type FROM user_objects;

OBJECT_NAME OBJECT_TYPE------------------------- ------------------- EMP_DEPT CLUSTEREMP TABLEDEPT TABLEEMP_DEPT_INDEX INDEXPUBLIC_EMP SYNONYMEMP_MGR VIEW

예 2: 열 정보 나열

이름, 데이터 유형, 길이, 전체 자리수, 소수점 이하 자리수 및 기본 데이터 값과 같은 열 정보는 _COLUMNS 접미사로 끝나는 뷰 중 하나를 사용하여 나타낼 수 있습니다. 예를 들어, 다음 질의는 E M P와 DEPT 테이블의 모든 기본 열 값을 나타냅니다.

SELECT table_name, column_name, data_defaultFROM user_tab_columnsWHERE table_name = ‘DEPT‘ OR table_name = ‘EMP‘;

TABLE_NAME COLUMN_NAME DATA_DEFAULT---------- --------------- -------------------- DEPT DEPTNODEPT DNAMEDEPT LOC ‘NEW YORK‘EMP EMPNOEMP ENAMEEMP JOBEMP MGREMP HIREDATE SYSDATEEMP SALEMP COMMEMP DEPTNO

모든 열이 사용자가 지정한 기본값을 가지는 것은 아닙니다. 이러한 열은 자동으로널을 기본값으로 가집니다.

스키마 객체에 대한 일반적 관리 2 0 - 3 1

스키마 객체 정보 나열

예 3: 뷰와 동의어의 종속성 나열

뷰나 동의어를 생성할 때 뷰 또는 동의어는 기초가 되는 기본 객체를 기반으로 합니다. ALL/USER/DBA_DEPENDENCIES 데이터딕셔너리 뷰는 뷰의 종속성을 나타낼 때, ALL/USER/DBA_SYNONYMS 데이터딕셔너리 뷰는 동의어의 기본 객체를 나타낼 때 사용할 수 있습니다. 예를 들어, 다음 질의는 J WARD 사용자가 생성한 동의어의 기본 객체를 나타냅니다.

SELECT table_owner, table_name, synonym_nameFROM sys.dba_synonymsWHERE owner = ‘JWARD‘;

TABLE_OWNER TABLE_NAME SYNONYM_NAME---------------------- ------------ ----------------- SCOTT DEPT DEPTSCOTT EMP EMP

예 4: 일반적인 세그먼트 정보 나열

다음 질의는 각 롤백 세그먼트의 이름, 각 롤백 세그먼트를 포함하는 테이블스페이스와 각 롤백 세그먼트의 크기를 돌려줍니다.

SELECT segment_name, tablespace_name, bytes, blocks, extents FROM sys.dba_segmentsWHERE segment_type = ‘ROLLBACK‘;

SEGMENT_NAME TABLESPACE_NAME BYTES BLOCKS EXTENTS------------ --------------- ------ -------- ---------RS1 SYSTEM 20480 10 2RS2 TS1 40960 20 3SYSTEM SYSTEM 184320 90 3

예 5: 일반적인 확장 영역 정보 나열

현재 데이터베이스에 할당된 확장 영역에 대한 일반적인 정보는 D B A _ E X T E N T S데이터 딕셔너리 뷰에 저장됩니다. 예를 들어, 다음 질의는 롤백 세그먼트와 관련된확장 영역과 각 확장 영역의 크기를 나타냅니다.

SELECT segment_name, bytes, blocksFROM sys.dba_extentsWHERE segment_type = ‘ROLLBACK‘;

2 0 - 3 2 Oracle8i 관리자 설명서

스키마 객체 정보 나열

SEGMENT_NAME BYTES BLOCKS--------------- ---------- ----------RS1 10240 5RS1 10240 5SYSTEM 51200 25SYSTEM 51200 25SYSTEM 51200 25

SYSTEM 롤백 세그먼트는 크기가 5 0 K인 세 개의 확장 영역으로 구성되는 반면RS1 롤백 세그먼트는 1 0 K인 두 개의 확장 영역으로 구성됩니다.

예 6: 데이터베이스의 빈 영역(확장 영역) 나열

데이터베이스의 빈 확장 영역(어느 세그먼트에도 할당되지 않은 확장 영역)에 대한정보는 D B A _ F R E E _ S PACE 데이터 딕셔너리 뷰에 저장됩니다. 예를 들어, 다음 질의는 각 테이블스페이스의 빈 확장 영역을 통해 사용 가능한 빈 영역의 양을 나타냅니다.

SELECT tablespace_name, file_id, bytes, blocksFROM sys.dba_free_space;

TABLESPACE_NAME FILE_ID BYTES BLOCKS-------------------- --------- -------- ---------- SYSTEM 1 8120320 3965SYSTEM 1 10240 5TS1 2 10432512 5094

예 7: 추가 확장 영역을 할당할 수 없는 세그먼트 나열

D B A _ F R E E _ S PAC E와 D B A _ S E G M E N T S, DBA_TA B L E S, DBA_CLUSTERS,D B A _ I N D E X E S, DBA_RO L L B AC K _ S E G S를 조합하여 사용하면 데이터 딕셔너리 객체만을 위해 추가 확장 영역을 할당할 수 없는 다른 세그먼트를 결정할 수 있습니다.

세그먼트는 다음과 같은 경우에 확장 영역에 할당될 수 없습니다.

■ 세그먼트를 포함하는 테이블스페이스가 다음 확장 영역을 위해 충분한 여유가 없는 경우

■ S E G. M A X _ E X T E N T S의 데이터 딕셔너리에 기록된 대로 세그먼트가 최대 확장영역 수를 가진 경우

스키마 객체에 대한 일반적 관리 2 0 - 3 3

스키마 객체 정보 나열

■ 세그먼트가 운영 체제마다 다른 데이터 블록 크기가 허용하는 최대 확장 영역 수를 가진 경우

주: M A X E X T E N T S에 대한 S T O R AGE 절 값이 무제한일 수 있지만 데이터 딕셔너리 테이블은 허용된 블록의 최대값보다 큰 M A X E X -T E N T S를 가질 수 없습니다. 따라서 데이터 딕셔너리 테이블은 무제한 형식으로 변환될 수 없습니다.

다음 질의는 위의 기준에 부합하는 모든 세그먼트 이름, 소유자, 테이블스페이스를돌려줍니다.

SELECT seg.owner, seg.segment_name,seg.segment_type, seg.tablespace_name,DECODE(seg.segment_type,

‘TABLE‘, t.next_extent,‘CLUSTER‘, c.next_extent,‘INDEX‘, i.next_extent,‘ROLLBACK‘, r.next_extent)

FROM sys.dba_segments seg,sys.dba_tables t,sys.dba_clusters c,sys.dba_indexes i,sys.dba_rollback_segs r

WHERE ((seg.segment_type = ‘TABLE‘AND seg.segment_name = t.table_nameAND seg.owner = t.ownerAND NOT EXISTS (SELECT tablespace_name

FROM dba_free_space freeWHERE free.tablespace_name = t.tablespace_nameAND free.bytes >= t.next_extent))

OR (seg.segment_type = ‘CLUSTER‘AND seg.segment_name = c.cluster_nameAND seg.owner = c.ownerAND NOT EXISTS (SELECT tablespace_name

FROM dba_free_space freeWHERE free.tablespace_name = c.tablespace_nameAND free.bytes >= c.next_extent))

OR (seg.segment_type = ‘INDEX‘AND seg.segment_name = i.index_nameAND seg.owner = i.ownerAND NOT EXISTS (SELECT tablespace_nameFROM dba_free_space free

WHERE free.tablespace_name = i.tablespace_nameAND free.bytes >= i.next_extent))

OR (seg.segment_type = ‘ROLLBACK‘AND seg.segment_name = r.segment_name

2 0 - 3 4 Oracle8i 관리자 설명서

스키마 객체 정보 나열

AND seg.owner = r.ownerAND NOT EXISTS (SELECT tablespace_nameFROM dba_free_sapce free WHERE free.tablespace_name = r.tablespace_name

AND free.bytes >= r.next_extent)))OR seg.extents = seg.max_extents OR seg.extents = data_block_size;

주: 이 질의를 사용할 때 d a t a _ b l o c k _ s i z e를 시스템의 데이터 블록 크기로 바꿉니다.

추가 확장 영역을 할당할 수 없는 세그먼트를 발견했다면 원인에 따라 다음 두 가지방법 중 하나로 문제를 해결합니다.

■ 테이블스페이스가다 찼다면데이터파일을테이블스페이스에추가합니다.

■ 세그먼트가 너무 많은 확장 영역을 가지고 세그먼트에 대해 M A X E X T E N T S를

늘릴 수 없다면 다음 단계를 수행합니다. 첫째, 세그먼트에서 데이터를 엑스포트

합니다. 둘째, 세그먼트를 삭제하고 재생성한 다음 너무 많은 확장 영역을 할당하

지 않도록 INITIAL 값을 크게 설정합니다. 셋째, 데이터를 다시 세그먼트로 임

포트합니다.

스키마 객체에 대한 일반적 관리 2 0 - 3 5

스키마 객체 정보 나열

2 0 - 3 6 Oracle8i 관리자 설명서

스키마 객체 정보 나열

롤백 세그먼트 관리 2 1 - 1

21롤백 세그먼트 관리

이 장에서는 롤백 세그먼트 관리 방법을 설명하며 다음 내용을 다룹니다.

■ 롤백 세그먼트 관리에 대한 지침 사항

■ 롤백 세그먼트 생성

■ 롤백 세그먼트에 대한 저장 영역 매개변수 지정

■ 롤백 세그먼트를 온라인 및 오프라인으로 설정

■ 트랜잭션을 롤백 세그먼트에 명시적으로 지정

■ 롤백 세그먼트 삭제

■ 롤백 세그먼트 정보 모니터링

참조: Pa rallel Server 옵션으로 O ra c l e을 사용할 경우 O racle8i Pa rallel Serv e r

Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

롤백 세그먼트 관리에 대한 지침 사항

2 1 - 2 Oracle8i 관리자 설명서

롤백 세그먼트 관리에 대한 지침 사항

이 단원에서는 데이터베이스의 롤백 세그먼트를 생성하고 관리하기 전에 고려해야 할

지침 사항을 설명하고 다음 내용을 다룹니다.

■ 다중 롤백 세그먼트 사용

■ 공용 및 전용 롤백 세그먼트 사이에서 선택

■ 롤백 세그먼트 자동 획득 지정

■ 적합한 롤백 세그먼트 크기 설정

■ 여러 개의 동일 크기 확장 영역을 가지는 롤백 세그먼트 생성

■ 각 롤백 세그먼트에 대한 최적의 확장 영역 수 설정

■ 롤백의 저장 영역 위치 설정

모든 데이터베이스는 하나 이상의 롤백 세그먼트를 포함합니다. 롤백 세그먼트는 트

랜잭션을 롤백하는 이벤트에서 트랜잭션을 기록하는 데이터베이스의 부분입니다. 롤

백 세그먼트를 사용하여 읽기 일관성, 롤백 트랜잭션, 데이터베이스 복구를 제공합니

다.

참조: 롤백 세그먼트에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십시오.

다중 롤백 세그먼트 사용

다중 롤백 세그먼트를 사용하면 많은 세그먼트로 롤백 세그먼트 경합을 분산시키므로

시스템 성능이 향상됩니다. 다음과 같은 상황에서 다중 롤백 세그먼트가 필요합니다.

■ 데이터베이스를 생성할 때 SY S T E M이라는 단일 롤백 세그먼트가 SYSTEM 테

이블스페이스에 생성됩니다. SY S T E M이 아닌 테이블스페이스에서도 객체를 생성

할 수 있지만 SY S T E M이 아닌 객체는 SY S T E M이 아닌 테이블스페이스에 적어

도 하나의 추가 롤백 세그먼트를 만든 후 온라인으로 설정해야 생성할 수 있습니

다.

■ 많은 트랜잭션을 동시에 처리할 때 더 많은 롤백 정보가 생성됩니다. TRAN-

SACTIONS 매개변수로는 관리자가 예상하는 인스턴스에 대한 동시 트랜잭션 수

를, TRANSAC T I O N S _ P E R _ RO L L B ACK_SEGMENT 매개변수로는 각 롤백

세그먼트에서 처리해야 할 트랜잭션 수를 지정할 수 있습니다. 그런 다음 인스턴

스가 데이터베이스를 열면 데이터베이스는 최대 트랜잭션을 처리하기 위해

T R A N SAC T I O N S / T R A N SAC T I O N S _ P E R _ RO L L B AC K _ S E G M E N T만큼의

롤백 세그먼트를 얻으려고 시도합니다. 따라서 매개변수를 설정한 후에 T R A N -

SAC T I O N S / T R A N SAC T I O N S _ P E R _ RO L L B AC K _ S E G M E N T만큼의 롤

백 세그먼트를 생성합니다.

참조: O racle Pa rallel Server 환경에서 인스턴스를 시작하려면 각 인스턴스는

SYSTEM 롤백 세그먼트는 물론 각각의 롤백 세그먼트를 액세스해야 합니다. 자세한

내용은 O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

롤백 세그먼트를 SYSTEM 테이블스페이스에추가

인스턴스는 필요한 다른 롤백 세그먼트뿐 아니라 SYSTEM 롤백 세그먼트를 항상 획

득합니다. 그러나 다중 롤백 세그먼트가 있으면 O ra c l e은 특정 시스템 트랜잭션에 대

해서만 SYSTEM 롤백 세그먼트를 사용하며 사용자 트랜잭션을 다른 롤백 세그먼트

로 분산시킵니다. SY S T E M이 아닌 다른 롤백 세그먼트에 너무 많은 트랜잭션이 있

을 경우 O ra c l e은 SYSTEM 세그먼트를 사용합니다.

공용 및 전용 롤백 세그먼트 사이에서 선택

인스턴스가 데이터베이스를 열면 인스턴스는 전용 롤백 세그먼트를 명시적으로 획득

합니다. 공용 롤백 세그먼트는 롤백 세그먼트를 필요로 하는 모든 인스턴스가 사용할

수 있는 롤백 세그먼트 풀을 형성합니다.

데이터베이스에 Pa rallel Server 옵션이 없다면 공용 및 전용 롤백 세그먼트는 동일

합니다. 따라서 모든 공용 롤백 세그먼트를 생성할 수 있습니다. Pa rallel Server 옵

션이 있는 데이터베이스는 데이터베이스를 여는 각 인스턴스가 SYSTEM 롤백 세그

먼트 외에 적어도 하나의 롤백 세그먼트를 획득할 만큼 충분한 세그먼트를 가지고 있

다면 공용 세그먼트만을 가질 수 있습니다. Oracle Pa rallel Serv e r를 사용할 때 전

용 롤백 세그먼트를 사용할 수도 있습니다.

참조: Pa rallel Server 옵션과롤백 세그먼트에 대한 자세한 내용은 O racle8i Pa ra l l e l

S e rver Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

공용 및 전용 롤백 세그먼트에 대한 자세한 내용은 O racle8i 개념 설명서를 참조하십

시오.

롤백 세그먼트 자동 획득 지정

기본적으로 인스턴스를 시작하면 인스턴스는 T R A N SAC T I O N S / T R A N SAC T I O -

N S _ P E R _ RO L L B AC K _ S E G M E N T만큼의 롤백 세그먼트를 획득합니다. 인스턴스

가 특정 크기나 특정 테이블스페이스를 가지는 특정 롤백 세그먼트를 획득하게 하려

면 인스턴스의 매개변수 파일에 있는 RO L L B ACK_SEGMENTS 매개변수에 롤백

세그먼트 이름을 지정합니다.

롤백 세그먼트 관리에 대한 지침 사항

롤백 세그먼트 관리 2 1 - 3

T R A N SAC T I O N S / T R A N SAC T I O N S _ P E R _ RO L L B AC K _ S E G M E N T만큼의 세

그먼트 값보다 많은 롤백 세그먼트를 지정해도 인스턴스는 이 매개변수에 나열된 모

든 롤백 세그먼트를 획득합니다. 롤백 세그먼트는 전용 또는 공용입니다.

적합한 롤백 세그먼트 크기 설정

전체 롤백 세그먼트 크기는 데이터베이스에서 실행되는 가장 일반적인 트랜잭션 크기

를 기반으로 설정해야 합니다. 일반적으로 일괄 작업같이 오래 실행되는 트랜잭션은

큰 롤백 세그먼트에서 수행하는 것이 더 좋은 반면 데이터베이스가 작은 롤백 세그먼

트를 많이 가질 때는 짧은 트랜잭션의 수행 성능이 더 좋습니다. 일반적으로 롤백 세

그먼트는 크기에 관계없이 쉽게 트랜잭션을 다룰 수 있지만 트랜잭션이 매우 짧거나

긴 극단적인 경우 사용자는 적합한 크기의 롤백 세그먼트를 원합니다.

시스템이 짧은 트랜잭션만 실행하고 있다면 롤백 세그먼트의 크기는 주 메모리에 저

장될 수 있도록 작아야 합니다. 롤백 세그먼트 크기가 아주 작으면 L RU 알고리즘에

따라 롤백 세그먼트가 S GA에 있을 확률이 높고 디스크 입출력이 적어지므로 데이터

베이스 성능이 향상됩니다. 작은 롤백 세그먼트의 주된 단점은 다른 트랜잭션이 자주

갱신하는 레코드를 포함하는 긴 질의를 수행할 때“snapshot too old”라는 오류가

발생할 확률이 높다는 것입니다. 이 오류는 다른 갱신된 입력 항목이 롤백 세그먼트

를 차지하고 있어 읽기 일관성이 필요한 롤백 입력 항목을 겹쳐쓰기 때문에 발생합니

다. 응용 프로그램의 트랜잭션을 설계할 때 이 사항을 고려하여 트랜잭션을 작은 단

위 작업으로 만들면 이 문제를 피할 수 있습니다.

반대로 오래 실행되는 트랜잭션은 큰 롤백 세그먼트로 수행되어야 좋은데 이것은 오

래 실행되는 트랜잭션의 롤백 입력 항목이 사전에 할당된 큰 롤백 세그먼트의 확장

영역에 맞기 때문입니다.

데이터베이스 시스템의 응용 프로그램이 매우 짧은 트랜잭션과 매우 긴 트랜잭션을

혼합하여 동시에 실행할 때 트랜잭션이 트랜잭션/롤백 세그먼트 크기에 준하여 롤백

세그먼트에 명시적으로 지정되면 성능은 최적화될 수 있습니다. 롤백 세그먼트의

동적 확장 영역 할당과 잘라내기를 최소화할 수 있습니다. 이것은 대부분의 시스템에

는 필요하지 않으며 극단적으로 길거나 짧은 트랜잭션의 경우에 해당됩니다.

극단적으로 짧거나 긴 트랜잭션을 혼합하여 실행할 때 성능을 최적화하려면 각 트랜

잭션 유형(작은 것, 중간, 큰 것)에 대해 적합한 크기를 가진 롤백 세그먼트를 많이

만들어야 합니다. 대부분의 롤백 세그먼트는 전형적인 트랜잭션에 해당되고 적은 수

의 롤백 세그먼트가 비전형적인 트랜잭션에 해당되어야 합니다. 롤백 세그먼트의 크

기를 증가시켜야 한다면 롤백 세그먼트가 의도한 크기를 돌려주도록 각각의 롤백 세

그먼트에 대해 O P T I M A L을 설정합니다.

롤백 세그먼트 관리에 대한 지침 사항

2 1 - 4 Oracle8i 관리자 설명서

데이터베이스 관리자는 다른 유형의 트랜잭션에 해당하는 다른 롤백 세그먼트 집합을

사용자에게 알려야 합니다. 트랜잭션을 명시적으로 특정 롤백 세그먼트에 지정하는

것은 좋지 않습니다. 그러나 비전형적인 트랜잭션을 위해 생성한 해당 롤백 세그먼트

에 비전형적인 트랜잭션을 지정할 수 있습니다. 예를 들어, 큰 롤백 세그먼트에 큰 일

괄 작업을 포함하는 트랜잭션을 지정할 수 있습니다.

트랜잭션의 혼합이 많이 쓰이지 않는 경우 각 롤백 세그먼트는 데이터베이스에서 가

장 큰 테이블 크기의 1 0 %가 되어야 합니다. 대부분의 SQL 문은 테이블의 10% 미

만에 영향을 주기 때문입니다. 따라서 이 정도 크기의 롤백 세그먼트는 대부분의

SQL 문이 수행하는 작업을 저장하기에 충분해야 합니다.

일반적으로 롤백 세그먼트에 대해 M A X E X T E N T S를 높게 설정해야 합니다. 그러면

롤백 세그먼트는 필요할 때마다 계속 확장 영역을 할당할 수 있습니다.

여러 개의 동일 크기 확장 영역을 가지는 롤백 세그먼트 생성

각 롤백 세그먼트의 전체 할당 영역은 동일한 크기를 가지는 여러 개의 확장 영역으

로 나뉘어야 합니다. 일반적으로 최적의 롤백 입출력 수행은 인스턴스의 각 롤백 세

그먼트가 1 0에서 2 0개의 동일한 크기의 확장 영역을 가질 때 이루어집니다.

원하는 롤백 세그먼트의 전체 초기 크기와 세그먼트에 대한 초기 확장 영역의 수를

결정한 후 다음 공식을 사용하여 롤백 세그먼트의 각 확장 영역 크기를 계산합니다.

T / n = s

T = 바이트 단위의 전체 초기 롤백 세그먼트 크기

n = 초기에 할당되는 확장 영역 수

s = 초기에 할당되는 각 확장 영역을 바이트로 계산한 크기

s를 계산한 후 롤백 세그먼트를 생성하고 I N I T I A L과 NEXT 저장 영역 매개변수를 s로, MINEXTENTS를 n으로 지정합니다. PCTINCREASE는 롤백세그먼트에 대해서는 지정할 수 없으며 기본값은 0입니다. 또한 확장 영역의크기 s가 데이터 블록 크기의 정확한 배수가 아닌 경우에는 다음 배수로 반올림됩니다.

각 롤백 세그먼트에 대한 최적의 확장 영역 수 설정

각 롤백 세그먼트의 OPTIMAL 매개변수를 설정할 때 시스템이 실행할 트랜잭션 종

류를 조심스럽게 평가해야 합니다. 오래 실행되는 트랜잭션을 자주 실행하는 시스템

롤백 세그먼트 관리에 대한 지침 사항

롤백 세그먼트 관리 2 1 - 5

의 경우 O P T I M A L이 큰 값이어야 확장 영역을 환원하여 자주 할당하지 않아도 됩니

다. 또한 현재 사용하는 데이터에 긴 질의를 실행하는 시스템의 경우에는“s n a p s h o t

too old”라는 오류가 발생하는 것을 막기 위해 O P T I M A L이 큰 값이어야 합니다. 주

로 짧은 트랜잭션과 질의를 실행하는 시스템에서는 O P T I M A L이 작은 값이어야 롤

백 세그먼트가 메모리에 저장될 수 있도록 유지되고 시스템의 성능이 향상됩니다.

롤백 세그먼트의 OPTIMAL 설정 효과를 측정하고 모니터하려면 M O N I T O R

RO L L B ACK 문을 사용합니다. 각 롤백 세그먼트에 대해 다음 통계가 주어집니다.

S i z e, High Water 롤백 세그먼트에 할당된 가장 큰 영역으로

바이트 단위 크기

S i z e, Optimal 바이트 단위로 표현된 롤백 세그먼트의

OPTIMAL 크기

O c c u r rences, Wraps 트랜잭션이 롤백 세그먼트의 한 확장 영역

에서 다른 기존 확장 영역까지 계속 작성하

는 누적 횟수

O c c u r rences, Extends 새 확장 영역이 롤백 세그먼트에 할당되는

누적 횟수

Shrinks O ra c l e이 롤백 세그먼트에서 확장 영역을

잘라내는 누적 횟수

Av e rage Size, Shrunk O ra c l e이 롤백 세그먼트에서 잘라낸 영역

의 평균 크기로 바이트 단위

Av e rage Size, Active 현재 롤백 세그먼트에서 사용 중인 확장 영역의 평

균 바이트수를시간에따라측정한것

인스턴스가 동등한 크기의 확장 영역이 있는 동일한 크기의 롤백 세그먼트를 가진다

면 부여된 롤백 세그먼트에 대한 OPTIMAL 매개변수는 Av e rage Sizes, Ac t i v e보

롤백 세그먼트 관리에 대한 지침 사항

2 1 - 6 Oracle8i 관리자 설명서

다 조금 더 높게 설정되어야 합니다. 표 2 1 - 1은 이 모니터에 주어진 통계 해석 방법에

대한추가정보를 제공합니다.

표 21-1 현재 OPTIMAL 설정의효과 분석

롤백 저장 영역 위치 설정

가능하다면 모든 롤백 세그먼트를 유지하는 하나의 테이블스페이스를 특별히 생성합

니다. 이러한 방법으로 모든 롤백 세그먼트 데이터는 다른 유형의 데이터와는 별도로

저장됩니다. 이“롤백 세그먼트”테이블스페이스를 생성하면 다음과 같은 이점이 있

습니다.

■ 롤백 세그먼트를 유지하는 테이블스페이스는 항상 온라인으로 유지할 수 있습니

다. 따라서 롤백 세그먼트를 조합한 저장 영역의 크기는 항상 최대가 됩니다. 일

부 롤백 세그먼트를 사용할 수 없으면 전체 데이터베이스 작업이 영향을 받을 수

있습니다.

■ 현재 사용 중인 롤백 세그먼트를 가지는 테이블스페이스는 오프라인으로 설정할

수 없으므로 데이터베이스의 모든 롤백 세그먼트를 유지하는 테이블스페이스를 지

정하면 다른 테이블스페이스에 저장된 데이터를 데이터베이스의 롤백 세그먼트에

신경쓰지 않고 오프라인으로 설정할 수 있도록 보장합니다.

■ 테이블스페이스가 확장 영역을 자주 할당하고 해제하는 롤백 세그먼트를 포함한다

면 테이블스페이스의 사용 가능 확장 영역은 더욱 단편화될 것입니다.

롤백 세그먼트 생성

롤백 세그먼트를 생성하려면 C R E ATE RO L L B ACK SEGMENT 시스템 권한이 있

어야 합니다. SQL 문 C R E ATE RO L L B ACK SEGMENT를 사용하여 데이터베이

롤백 세그먼트 생성

롤백 세그먼트 관리 2 1 - 7

Average Sizes,

Shrinks Shrunk 분석 및 권장

Low Low Average Sizes, active가 Sizes, Optimal

에 가까우면 OPTIMAL 설정은 정확합니다. 그

렇지 않으면 OPTIMAL은 너무 큽니다. 확장 영

역이 충분히 환원되지 않았습니다.

Low High 우수: 좋은 OPTIMAL 설정

High Low OPTIMAL이 너무 작습니다. 확장 영역이 너무

많이 환원되었습니다.

High High 주기적인 긴 트랜잭션이 이러한 통계를 야기합니

다. Shrinks가 낮아질 때까지 OPTIMAL 매개

변수를 더 높게 설정합니다.

롤백 세그먼트에 대한 저장 영역 매개변수 지정

2 1 - 8 Oracle8i 관리자 설명서

스에 추가 롤백 세그먼트를 생성합니다. 새 롤백 세그먼트를 포함하는 테이블스페이

스는 온라인이어야 합니다.

USERS 테이블스페이스의 기본 저장 영역 매개변수를 사용하여 USERS 테이블스페

이스에 USERS_RS 공용 롤백 세그먼트를 생성하는 명령문은 다음과 같습니다.

CREATE PUBLIC ROLLBACK SEGMENT users_rs TABLESPACE users;

새 롤백 세그먼트를 온라인으로 설정

전용 롤백 세그먼트를 생성하면 새 롤백 세그먼트 이름을 데이터베이스의 매개변수

파일에 있는 RO L L B ACK_SEGMENTS 매개변수에 추가해야 합니다. 그러면 인스

턴스를 시작할 때 인스턴스는 전용 롤백 세그먼트를 획득할 수 있습니다. 예를 들어,

두 개의 새 롤백 세그먼트를 만들고 이름을 R S 1과 R S 2로 한다면 매개변수 파일의

RO L L B ACK_SEGMENTS 매개변수는다음과 같아야 합니다.

ROLLBACK SEGMENTS= (RS1, RS2)

참조: 롤백 세그먼트가 생성되면 롤백 세그먼트를 온라인으로 설정해야 인스턴스의

트랜잭션이 사용할 수 있습니다. 자세한 내용은 21-10 페이지“롤백 세그먼트를 온라

인 및 오프라인으로 설정”을 참조하십시오.

롤백 세그먼트에 대한 저장 영역 매개변수 지정

이 단원에서는 롤백 세그먼트 저장 영역 매개변수 지정을 설명하고 다음 내용을 다룹

니다.

■ 롤백 세그먼트 생성 시 저장 영역 매개변수 설정

■ 롤백 세그먼트의 저장 영역 매개변수 변경

■ 롤백 세그먼트의 형식 변경

■ 롤백 세그먼트 직접 환원

롤백 세그먼트 생성 시 저장 영역 매개변수 설정

저장 영역 매개변수와 다음의 최적 크기를 가지는 DATA1_RS 공용롤백 세그먼트를

생성한다고 합시다.

■ 롤백 세그먼트에 5 0 K의 초기 확장 영역을 할당합니다.

■ 롤백 세그먼트에 5 0 K의 두 번째 확장 영역을 할당합니다.

■ 롤백 세그먼트의 최적 크기는 7 5 0 K입니다.

■ 세그먼트 생성 시 초기에 할당된 확장 영역 수와 최소 확장 영역 수는 1 5입니다.

■ 롤백 세그먼트가 할당할 수 있는 최대 확장 영역 수는 초기 확장 영역을 포함하여

1 0 0입니다.

이러한 특성을 가지는 롤백 세그먼트를 생성하는 명령문은 다음과 같습니다.

CREATE PUBLIC ROLLBACK SEGMENT data1_rsTABLESPACE usersSTORAGE (

INITIAL 50KNEXT 50KOPTIMAL 750KMINEXTENTS 15MAXEXTENTS 100);

롤백 세그먼트의 저장 영역 매개변수 변경

롤백 세그먼트를 생성한 후 롤백 세그먼트의 저장 영역 매개변수를 변경할 수 있습니

다. 그러나 현재 롤백 세그먼트에 할당된 확장 영역의 크기는 변경할 수 없습니다. 나

중에 생성될 확장 영역에만 영향을 줄 수 있습니다.

SQL 문 A LTER RO L L B ACK SEGMENT를 사용하여 롤백 세그먼트의 저장 영역

매개변수를 변경합니다.

DATA1_RS 롤백 세그먼트가 할당할 수 있는 최대 확장 영역 수를 변경하는 명령문

은 다음과 같습니다.

ALTER PUBLIC ROLLBACK SEGMENT datal_rsSTORAGE (MAXEXTENTS 120);

롤백 세그먼트의 설정을 변경할 수 있는 것처럼 OPTIMAL 매개변수를 포함하여 SYSTEM 롤백 세그먼트의 설정을 변경할 수 있습니다.

참조: 롤백 세그먼트 크기와 저장 영역 매개변수 (OPTIMAL 포함) 설정에 대한 지

침은 21-2 페이지“롤백 세그먼트 관리에 대한 지침 사항”을 참조하십시오.

롤백 세그먼트의 형식 변경

롤백 세그먼트를 변경하려면 A LTER RO L L B ACK SEGMENT 시스템 권한이 있

어야 합니다.

롤백 세그먼트의 제한 또는 무제한 형식을 정의할 수 있습니다. 제한 또는 무제한 형

식으로 변환할 때 롤백 세그먼트를 오프라인으로 설정해야 합니다. 롤백 세그먼트에

롤백 세그먼트에 대한 저장 영역 매개변수 지정

롤백 세그먼트 관리 2 1 - 9

무제한 형식을 정의하면 세그먼트의 확장 영역은 최소한 4개의 데이터 블록을 가져야

합니다. 따라서 제한된 형식의 롤백 세그먼트가 확장 영역에 4개 이하의 데이터 블록

을 가진다면 무제한 형식으로 변환될 수 없습니다. 제한 형식에서 무제한 형식으로

변환하고자 하는데 확장 영역에 4개 이하의 데이터 블록이 있는 경우 롤백 세그먼트

를 삭제하고 재생성하는 것이 유일한 방법입니다.

롤백 세그먼트 직접 환원

롤백 세그먼트를 환원하려면 A LTER RO L L B ACK SEGMENT 시스템 권한이 있

어야 합니다.

SQL 문 A LTER RO L L B ACK SEGMENT를 사용하여 직접 롤백 세그먼트의 크기

를 줄일 수 있습니다. 환원할 롤백 세그먼트는 온라인이어야 합니다.

RBS1 롤백 세그먼트를 1 0 0 K로 환원하는 명령문은 다음과 같습니다.

ALTER ROLLBACK SEGMENT rbs1 SHRINK TO 100K;

참조: A LTER RO L L B ACK SEGMENT 문에 대한 자세한 설명은 O ra c l e 8 iSQL 참조서를 참조하십시오.

롤백 세그먼트를 온라인 및 오프라인으로 설정

이 단원에서는 롤백 세그먼트를 온라인이나 오프라인으로 설정하는 내용을 설명하고

다음 내용을 다룹니다.

■ 롤백 세그먼트를 온라인으로 설정

■ 롤백 세그먼트를 오프라인으로 설정

롤백 세그먼트는 트랜잭션이 사용할 수 있는 상태인 온라인이거나 사용할 수 없는 상

태인 오프라인입니다. 일반적으로 롤백 세그먼트는 온라인으로 트랜잭션이 사용할 수

있습니다.

다음과 같은 상황에서는 온라인 롤백 세그먼트를 오프라인으로 설정하고자 할 것입니

다.

■ 테이블스페이스를 오프라인으로 설정하고자 하며 테이블스페이스가 롤백 세그먼트

를 포함할 때, 테이블스페이스가 트랜잭션이 현재 사용하고 있는 롤백 세그먼트를

포함하는 경우에는 테이블스페이스를 오프라인으로 설정할 수 없습니다. 관련된

롤백 세그먼트를 사용하지 않으려면 테이블스페이스를 오프라인으로 설정하기 전

에 롤백 세그먼트를 오프라인으로 설정해야 합니다.

롤백 세그먼트를 온라인 및 오프라인으로 설정

2 1 - 1 0 Oracle8i 관리자 설명서

■ 롤백 세그먼트를 삭제하고 싶지만 트랜잭션이 현재 이를 사용하기 때문에 삭제할

수 없습니다. 롤백 세그먼트를 사용하지 않으려면 롤백 세그먼트를 삭제하기 전에

오프라인으로 설정해야 합니다.

주: SYSTEM 롤백 세그먼트는 오프라인으로 설정할 수 없습니다.

나중에 트랜잭션이 롤백 세그먼트를 사용할 수 있도록 오프라인 롤백 세그먼트를 다시 온라인으로 설정하고자 할 수도 있습니다. 롤백 세그먼트가 생성될 때 오프라인으로 초기화되므로 인스턴스의 트랜잭션이 사용하기 전에 새로 만들어진 롤백 세그먼트를 명시적으로 온라인으로 설정해야 합니다. 롤백 세그먼트를 포함하는 데이터베이스를 액세스하는 인스턴스를 통해 오프라인 롤백 세그먼트를 온라인으로 설정할 수 있습니다.

롤백 세그먼트를 온라인으로 설정

현재 상태( D B A _ RO L L B ACK_SEGS 데이터 딕셔너리 뷰에 나타난 것처럼)가

O F F L I N E이나 PA RT LY AVA I L A B L E인 롤백 세그먼트만을 온라인으로 설정할 수

있습니다. SQL 문 A LTER RO L L B ACK SEGMENT에 ONLINE 옵션을 사용하

여 오프라인 롤백 세그먼트를 온라인으로 설정합니다.

PA R T LY AVAILABLE 롤백 세그먼트를 온라인으로 설정

PA RT LY AVAILABLE 상태인 롤백 세그먼트는 미확정이거나 복구된 분산 트랜잭

션의 데이터를 포함하지만 복구된 트랜잭션은 아닙니다. DBA_RO L L B AC K _ S E G S

데이터 딕셔너리 뷰를 보면 PA RT LY AVAILABLE 상태임을 알 수 있습니다. 트랜

잭션을 R E C O가 자동으로 해결하거나 D B A가 직접 해결할 때까지 롤백 세그먼트는

보통 이 상태에 있게 됩니다. 그러나 모든 롤백 세그먼트가 PA RT LY AVA I L A B L E

상태일 수도 있습니다. 이 경우 위에서 설명한 대로 PA RT LY AVAILABLE 세그먼

트를 온라인으로 설정할 수 있습니다.

미확정 트랜잭션에 대해 롤백 세그먼트가 사용하는 자원은 트랜잭션이 해결될 때까지

액세스할 수 없습니다. 결과적으로 롤백 세그먼트에 할당된 다른 트랜잭션이 추가 영

역을 필요로 한다면 롤백 세그먼트는 증가되어야 합니다.

PA RT LY AVAILABLE 세그먼트를 온라인으로 설정하는 대안으로 미확정 트랜잭션

이 해결될 때까지 새 롤백 세그먼트를 임시로 생성하는 것이 쉬울 것입니다.

롤백 세그먼트를 자동으로 온라인으로 설정

데이터베이스를 시작할 때마다 롤백 세그먼트를 자동으로 온라인으로 설정하려면 세

그먼트 이름을 데이터베이스 매개변수 파일의 RO L L B ACK_SEGMENTS 매개변수

에 추가해야 합니다.

롤백 세그먼트를 온라인 및 오프라인으로 설정

롤백 세그먼트 관리 2 1 - 1 1

롤백 세그먼트를 온라인으로 설정: 예

다음 명령문은 USER_RS_2 롤백 세그먼트를 온라인으로 설정합니다.

ALTER ROLLBACK SEGMENT user_rs_2 ONLINE;

롤백 세그먼트를 온라인으로 설정한 후 D B A _ RO L L B ACK_SEGS 데이터딕셔너리 뷰의 상태는 O N L I N E입니다.

참조: RO L L B AC K _ S E G M E N T S와 D B A _ RO L L B ACK_SEGS 매개변수에 대한

내용은 O racle8i Refe re n c e를 참조하십시오.

롤백 세그먼트 상태를 확인하는 질의를 보려면 21-14 페이지“롤백 세그먼트 정보 표

시”를 참조하십시오.

롤백 세그먼트를 오프라인으로 설정

온라인 롤백 세그먼트를 오프라인으로 설정하려면 A LTER RO L L B ACK SEGMENT

명령어에 OFFLINE 옵션을 사용합니다. DBA_RO L L B ACK_SEGS 데이터 딕셔너리

뷰의 롤백 세그먼트 상태는“O N L I N E”이어야 하며 현재 인스턴스가 롤백 세그먼트를

획득할 수 있어야 합니다.

다음 예는 USER_RS_2 롤백 세그먼트를 오프라인으로 설정합니다.

ALTER ROLLBACK SEGMENT user_rs_2 OFFLINE;

현재 사용 중인 롤백 입력 항목을 포함하지 않는 롤백 세그먼트를 오프라인으로설정하려면 O ra c l e은 즉시 세그먼트를 오프라인으로 설정하고 상태를“O F F -L I N E”으로 변경합니다.

반대로 현재 사용하는 트랜잭션의 (지역, 원격 또는 분산) 롤백 데이터를 포함하는 롤백 세그먼트를 오프라인으로 설정하려면 O ra c l e은 이후의 트랜잭션이롤백 세그먼트를 액세스하지 못하게 하고 롤백 세그먼트를 사용하는 모든트랜잭션이 끝난 후에 오프라인으로 설정합니다. 롤백 세그먼트는 트랜잭션이끝날 때까지 자신을 오프라인으로 설정하려는 인스턴스가 아닌 다른 인스턴스에의해서는 온라인으로 설정될 수 없습니다. 이 기간 동안 D B A _ RO L L B AC K _SEGS 뷰에 있는 롤백 세그먼트 상태는 O N L I N E으로 유지됩니다. 그러나V $RO L L S TAT 뷰의 롤백 세그먼트 상태는 PENDING OFFLINE입니다.

롤백 세그먼트를 오프라인으로 설정하고 상태를 PENDING OFFLINE으로 변경한

인스턴스는 언제든지 롤백 세그먼트를 다시 온라인으로 설정할 수 있습니다. 롤백세그

먼트가 다시 온라인으로 설정되면 정상적으로 작동할 것입니다.

공용 및 전용 롤백 세그먼트를 오프라인으로 설정

공용 또는 전용 롤백 세그먼트를 오프라인으로 설정하면 명시적으로 이를 다시 온라

인으로 설정하거나 인스턴스를 재시작할 때까지 롤백 세그먼트는 오프라인으로 유지

롤백 세그먼트를 온라인 및 오프라인으로 설정

2 1 - 1 2 Oracle8i 관리자 설명서

됩니다.

참조: 롤백 세그먼트 상태를 보는 방법은 21-14 페이지“롤백 세그먼트 정보 표시”를

참조하십시오.

D B A _ RO L L B AC K _ S E G S와 V $RO L L S TAT 뷰에 대한 내용은 O racle8i Refe r -

e n c e를 참조하십시오.

트랜잭션을 롤백 세그먼트에 명시적으로 지정

SET TRANSACTION 문에 USE RO L L B ACK SEGMENT 절을 사용하여 트랜

잭션을 특정 롤백 세그먼트에 명시적으로 지정할 수 있습니다. 트랜잭션은 다음과 같

은 이유로 롤백 세그먼트에 명시적으로 지정됩니다.

■ 트랜잭션이 생성하는 롤백 정보의 예측량은 지정된 롤백 세그먼트의 현재 확장 영

역에 맞을 수 있습니다.

■ 롤백 세그먼트에 대해 추가 확장 영역을 동적으로 할당 및 해제할 필요가 없습니

다. 추가 확장 영역의 동적 할당은 시스템의 전체 성능을 저하시킵니다.

트랜잭션을 롤백 세그먼트에 명시적으로 지정하려면 롤백 세그먼트는 현재 인스턴스

에 대해 온라인이어야 하며 SET TRANSACTION USE RO L L B ACK SEGME-

NT 문이 트랜잭션의 첫 번째 명령문이어야 합니다. 특정 롤백 세그먼트가 온라인이

아니거나 SET TRANSACTION USE RO L L B ACK SEGMENT 절이 트랜잭션의

첫 번째 명령문이 아니라면 오류를 돌려줍니다.

예를 들어, 많은 작업을 (대부분의 트랜잭션보다 더 많은) 포함하는 트랜잭션을 시작

하려 한다면 다음과 같이 트랜잭션을 큰 롤백 세그먼트에 지정할 수 있습니다.

SET TRANSACTION USE ROLLBACK SEGMENT large_rs1;

트랜잭션을 커밋한 후 사용자가 새 트랜잭션을 특정 롤백 세그먼트에 명시적으로지정하지 않으면 O ra c l e은 자동으로 다음 트랜잭션을 사용 가능한 롤백 세그먼트에 지정합니다.

롤백 세그먼트 삭제

세그먼트의 확장 영역이 디스크 상에서 너무 단편화되었거나 세그먼트를 다른 테이블

스페이스에 재위치시켜야 할 때는 롤백 세그먼트를 삭제할 수 있습니다.

롤백 세그먼트를 삭제하기 전에 롤백 세그먼트 상태가 O F F L I N E인지 확인합니다.

삭제할 롤백 세그먼트가 현재 O N L I N E, PA RT LY AVA I L A B L E, NEEDS

R E C OV E RY나 I N VALID 상태면 삭제할 수 없습니다. 상태가 I N VA L I D면 세그먼

트는 이미 삭제된 것입니다. 롤백 세그먼트를 삭제하기 전에 오프라인으로 설정해야

합니다.

롤백 세그먼트 삭제

롤백 세그먼트 관리 2 1 - 1 3

롤백 세그먼트 정보 모니터링

2 1 - 1 4 Oracle8i 관리자 설명서

롤백 세그먼트를 삭제하려면 D ROP RO L L B ACK SEGMENT 시스템 권한이 있어

야 합니다.

롤백 세그먼트가 오프라인이면 SQL 문 D ROP RO L L B ACK SEGMENT를 사용하

여 삭제할 수 있습니다.

DATA1_RS 롤백세그먼트를 삭제하는 명령문은 다음과 같습니다.

DROP PUBLIC ROLLBACK SEGMENT data1_rs;

D ROP RO L L B ACK SEGMENT 문을 사용한다면 PUBLIC 키워드를 포함하거나 생략하여 삭제할 롤백 세그먼트의 정확한 유형을 공용 또는 전용으로나타냅니다.

주: RO L L B AC K _ S E G M E N T S에 지정된 롤백 세그먼트가 삭제되면데이터베이스 매개변수 파일을 편집하여 삭제된 롤백 세그먼트 이름을RO L L B ACK_SEGMENTS 매개변수 목록에서 제거합니다. 다음 인스턴스를 시작하기 전에 이 단계가 수행되지 않으면 삭제된 롤백 세그먼트를 획득할 수 없으므로 다음 인스턴스를 시작할 수 없습니다.

롤백 세그먼트가 삭제되면 상태가 I N VA L I D로 변경됩니다. 다음 롤백 세그먼트를 생성할 때 가능하다면 삭제된 롤백 세그먼트가 사용했던 행을 사용하고, 삭제된 롤백세그먼트의 행은 더 이상 D B A _ RO L L B ACK_SEGS 뷰에 나타나지 않습니다.

참조: D B A _ RO L L B ACK_SEGS 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를

참조하십시오.

롤백 세그먼트 정보 모니터링

해당 작업의 MONITOR 사용 방법에 대한 자세한 내용은 21-5 페이지“각 롤백 세

그먼트에 대한 최적의 확장 영역 수 설정”을 참조하십시오.

롤백 세그먼트 정보 표시

D B A _ RO L L B ACK_SEGS 데이터 딕셔너리 뷰는 데이터베이스의 롤백 세그먼트 정

보를 저장합니다. 예를 들어, 다음 질의는 데이터베이스의 각 롤백 세그먼트 이름, 관

련된 테이블스페이스 및 상태를 나열합니다.

SELECT segment_name, tablespace_name, status FROM sys.dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME STATUS------------- ---------------- ------SYSTEM SYSTEM ONLINEPUBLIC_RS SYSTEM ONLINEUSERS_RS USERS ONLINE

또한 다음 데이터 딕셔너리 뷰에는 롤백 세그먼트를 포함하여 데이터베이스의 세그먼

트 정보가 있습니다.

■ U S E R _ S E G M E N T S

■ D B A _ S E G M E N T S

모든 롤백 세그먼트 표시

다음 질의는 각 롤백 세그먼트의 이름, 롤백 세그먼트를 포함하는 테이블스페이스 이

름과 크기를 돌려줍니다.

SELECT segment_name, tablespace_name, bytes, blocks, extentsFROM sys.dba_segments

WHERE segment_type = ‘ROLLBACK‘;

SEGMENT_NAME TABLESPACE_NAME BYTES BLOCKS EXTENTS------------ --------------- --------- ---------- ----------- RS1 SYSTEM 20480 10 2RS2 TS1 40960 20 3SYSTEM SYSTEM 184320 90 3

롤백 세그먼트가 오프라인인지 표시

롤백 세그먼트를 오프라인으로 설정하면 롤백 세그먼트에서 사용 중인 모든 트랜잭션

을 끝내기 전까지는 실제로 오프라인으로 설정되지 않습니다. 오프라인으로 설정하려

는 시각과 실제로 오프라인으로 설정되는 시각 사이에 D B A _ RO L L B AC K _ S E G S의

상태는 O N L I N E이지만 새 트랜잭션이 사용할 수는 없습니다. 다음 질의를 사용하여

인스턴스에 대한 롤백 세그먼트가 이러한 상태에 있는지를 결정합니다.

SELECT name, xacts ‘ACTIVE TRANSACTIONS‘FROM v $rollname, v $rollstat

WHERE status = ‘PENDING OFFLINE‘AND v $rollname.usn = v $rollstat.usn;

NAME ACTIVE TRANSACTIONS---------- -------------------RS2 3

롤백 세그먼트 정보 모니터링

롤백 세그먼트 관리 2 1 - 1 5

인스턴스가 Pa rallel Server 구성의 일부인 경우 이 질의는 다른 인스턴스의 롤백 세

그먼트가 아닌 현재 인스턴스의 롤백 세그먼트 정보를 나타냅니다.

지연된 롤백 세그먼트 표시

다음 질의는 어떤 롤백 세그먼트가 전용이고 공용인지를 표시합니다. 이 질의는 현재

인스턴스에 대해 온라인인 롤백 세그먼트 정보만을 나타냅니다.

SELECT segment_name, tablespace_name, ownerFROM sys.dba_rollback_segs;

SEGMENT_NAME TABLESPACE_NAME OWNER------------ --------------- ------- SYSTEM SYSTEM SYSPUBLIC_RS SYSTEM PUBLICUSERS_RS USERS SYS

지연된 모든 롤백 세그먼트 표시

다음 질의는 지연된 모든 롤백 세그먼트(테이블스페이스가 다시 온라인으로 설정될

때까지 오프라인 상태인 테이블스페이스의 롤백 입력 항목을 유지하기 위해 생성된

롤백 세그먼트)를 나타냅니다.

SELECT segment_name, segment_type, tablespace_nameFROM sys.dba_segments

WHERE segment_type = ‘DEFERRED ROLLBACK‘;

SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME------------ ----------------- --------------- USERS_RS DEFERRED ROLLBACK USERS

롤백 세그먼트 정보 모니터링

2 1 - 1 6 Oracle8i 관리자 설명서

IV데이터베이스 보안

22보안 정책 구축

이 장에서는 데이터베이스 작업에 대한 보안 정책 개발 지침을 제시하며 다음 내용을 다룹니다.

■ 시스템 보안 정책

■ 데이터 보안 정책

■ 사용자 보안 정책

■ 암호 관리 정책

■ 감사 정책

보안 정책 구축 2 2 - 1

시스템 보안 정책

이 단원에서는 시스템 보안 정책을 설명하며 다음 내용을 다룹니다.

■ 데이터베이스 사용자 관리

■ 사용자 인증

■ 운영 체제 보안

데이터베이스마다 모든 보안 정책을 유지 관리하는 보안 관리자가 한 사람 이상 있어야 합니다. 데이터베이스 시스템 규모가 작다면 데이터베이스 관리자가 보안 관리자를 병행해도 됩니다. 그러나 대규모의 데이터베이스 시스템인 경우 특정인 또는 그룹이 보안 관리자로서 책임을 수행해야 합니다.

시스템 보안을 담당할 사람을 결정한 다음 각 데이터베이스에 맞게 보안 정책을 수립해야 합니다. 데이터베이스 보안 정책은 다음 단원에서 설명하는 세부 정책을 포함해야 합니다.

데이터베이스 사용자 관리

데이터베이스 사용자들을 통해 오라클 데이터베이스 정보에 액세스할 수 있습니다.따라서 데이터베이스 사용자 관리는 보안을 엄격하게 유지 관리해야 합니다. 데이터베이스 시스템 규모와 데이터베이스 사용자 관리를 위한 작업 분량에 따라 다르기는하지만 보안 관리자는 데이터베이스 사용자를 생성, 변경, 삭제할 수 있는 권한이 있는 유일한 사용자가 됩니다. 한편 많은 관리자가 데이터베이스 사용자 관리 권한을가질 수도 있습니다. 그러나 신뢰할 수 있는 사람만이 데이터베이스 사용자를 관리할수 있는 강력한 권한을 가져야 합니다.

사용자 인증

O ra c l e은 호스트 운영 체제나 네트워크 서비스 또는 데이터베이스를 사용하여 데이터베이스 사용자를 인증합니다. 일반적으로 다음 이유로 호스트 운영 체제를 통해 사용자를 인증합니다.

■ 사용자는 사용자명 또는 암호 없이 더 빠르고 편리하게 O ra c l e에 접속할 수 있습

니다.

■ 운영 체제에서 사용자 인증을 중앙 집중적으로 제어할 수 있습니다. 운영 체제와

데이터베이스가 정보를 교환한다면 O ra c l e은 사용자명과 암호를 저장하거나 관리

하지 않아도 됩니다.

■ 데이터베이스와 운영 체제 감사 기록에 있는 사용자 입력 항목에 대한 정보를 교

환할 수 있습니다.

시스템 보안 정책

2 2 - 2 Oracle8i 관리자 설명서

호스트 운영 체제가 사용자 인증을 지원하지 못하면 데이터베이스가 사용자를 인증합니다.

참조: 네트워크 인증에 대한 자세한 내용은 O racle8i Distributed Database Sys-t e m s를 참조하십시오.

사용자 인증에 대한 자세한 내용은 23-11 페이지“사용자 생성”을 참조하십시오.

운영 체제 보안

가능하다면 오라클 데이터베이스와 데이터베이스 응용 프로그램을 실행하는 운영 체제 환경에 대해 보안 관련 내용을 고려해야 합니다.

■ 데이터베이스 관리자는 파일을 생성하고 삭제할 수 있는 운영 체제 권한이 있어야

합니다.

■ 일반 데이터베이스 사용자는 데이터베이스에 관련된 파일을 생성하고 삭제할 수

있는 운영 체제 권한을 가질 수 없습니다.

■ 운영 체제가 사용자의 데이터베이스 롤을 식별한다면 보안 관리자는 운영 체제 계

정의 보안 도메인을 수정할 수 있는 운영 체제 권한이 있어야 합니다.

참조: 오라클 데이터베이스에 대한 운영 체제 보안 정보는 사용자 운영 체제별 오라클설명서를 참조하십시오.

데이터 보안 정책

데이터 보안은 객체 레벨에서 데이터베이스 액세스와 사용을 제어하는 방법을 포함합니다. 상세한 액세스 제어로 데이터 액세스를 더 작은 레벨로 제한한 수도 있습니다.데이터 보안 정책은 특정 스키마 객체에 액세스할 수 있는 사용자와 객체에 대해 사용자가 수행할 수 있는 작업 유형을 결정합니다. 예를 들어, 사용자 S C O T T은 E M P테이블에 S E L E C T와 I N S E RT 문을 실행할 수 있지만 DELETE 문은 실행할 수 없습니다. 또한 데이터 보안 정책은 각 스키마 객체를 감사하는 작업을 정의해야 합니다.

데이터 보안 정책은 주로 데이터베이스의 데이터에 설정할 보안 레벨에 따라 결정됩니다. 예를 들어, 임의의 사용자가 스키마 객체를 만들 수 있도록 하거나 시스템의 다른 사용자에게 자신의 객체에 액세스할 수 있는 권한을 부여하려면 데이터베이스의데이터 보안에 신경쓰지 않아도 됩니다. 반대로 데이터베이스 관리자와 보안 관리자만이 객체를 만들 수 있고, 롤이나 사용자가 객체에 대해 제한적으로 액세스하도록하려면 데이터 보안이 강력히 제어되어야 합니다.

데이터 보안 정책

보안 정책 구축 2 2 - 3

전체적인 데이터 보안은 데이터 유형에 따라 다릅니다. 별로 중요하지 않은 데이터라면 데이터 보안 정책이 느슨하게 설정될 수 있습니다. 그러나 중요한 데이터라면 객체에 대한 액세스가 엄격하게 제어되도록 데이터 정책을 수립해야 합니다.

사용자 보안 정책

이 단원에서는 사용자 보안 정책에 대해 설명하며 다음 내용을 다룹니다.

■ 일반 사용자 보안

■ 최종 사용자 보안

■ 관리자 보안

■ 응용 프로그램 개발자 보안

■ 응용 프로그램 관리자 보안

일반 사용자 보안

모든 유형의 데이터베이스 사용자에 대해 다음 일반 사용자 보안 항목을 생각해 봅시다.

■ 암호 보안

■ 권한 관리

암호 보안

데이터베이스가 사용자 인증을 관리하면 보안 관리자는 데이터베이스 액세스 보안을유지 관리하는 암호 보안 정책을 수립해야 합니다. 예를 들어, 데이터베이스 사용자는암호가 다른 사람에게 누설되었을 때는 물론이고 일정한 간격으로 사용자 암호를 변경해야 합니다. 사용자에게 암호를 변경하도록 하여 권한이 없는 사용자가 데이터베이스를 액세스하는 횟수를 감소시킬 수 있습니다.

보안 처리된 암호를 사용한 보안 접속

암호의 기밀성을 보호하도록 O ra c l e은 클라이언트/서버와 서버/서버 접속에 대한 보안 처리된 암호를 사용하여 구성될 수 있습니다.

다음 값을 설정하여 접속을 검증할 때 사용되는 암호를 항상 보안 처리하도록 요구할수 있습니다.

사용자 보안 정책

2 2 - 4 Oracle8i 관리자 설명서

■ 클라이언트 시스템에서 O R A _ E N C RYPT_LOGIN 환경 변수를 T RU E로 설정

■ D B L I N K _ E N C RYPT_LOGIN 서버 초기화 매개변수를 T RU E로 설정

클라이언트와 서버에 모두 설정하면 암호는 네트워크 상에서“명확하게”전달되는 것이 아니라 수정된 D E S (데이터 보안 처리 표준) 알고리즘을 사용하여 보안 처리됩니다.

분산 질의를 수행할 때와 같이 D B L I N K _ E N C RYPT_LOGIN 매개변수를 사용하여두 개의 O racle 서버를 접속합니다. 클라이언트에서 접속하면 O ra c l e은O R A _ E N C RYPT_LOGIN 환경 변수를 검사합니다.

암호를 사용하여 서버 접속을 시도할 때마다 O ra c l e은 서버로 전달하기 전에 암호를보안 처리합니다. 접속을 실패하고 감사를 설정했다면 접속 실패가 감사 로그에 기록됩니다. 이 때 O ra c l e은 D B L I N K _ E N C RY P T _ L O G I N이나 O R A _ E N C RY P T _LOGIN 값을 확인합니다. 변수가 FA L S E로 설정되었다면 보안 처리되지 않은 버전의 암호를 사용하여 재접속해 봅니다. 성공적으로 접속되면 감사 기록에 있는 이전의접속 실패 기록을 접속으로 바꾸어 연결합니다. 나쁜 의도를 가진 사용자가 보안 처리되지 않은 암호를 사용하여 데이터베이스에 재접속하려는 것을 방지하려면 해당 값에 T RU E를 설정해야 합니다.

권한 관리

보안 관리자는 모든 사용자에 대한 권한 관리에 관련된 사항을 고려해야 합니다. 예를 들어, 사용자가 많은 데이터베이스에서는 사용자가 사용할 수 있는 권한 관리를위해 롤(사용자나 다른 롤에 부여한 관련된 권한 그룹)을 사용하는 것이 더 유익합니다. 반면에 소수 사용자가 사용하는 데이터베이스에서는 사용자에게 권한을 명확하게부여하고 롤 사용을 피하는 것이 바람직합니다.

사용자나 응용 프로그램 또는 객체가 많은 데이터베이스를 관리하는 보안 관리자라면롤에 의해 많은 이점을 얻을 수 있습니다. 롤은 복잡한 상황에서 권한 관리 작업을 매우 단순화시킬 수 있습니다.

최종 사용자 보안

보안 관리자는 최종 사용자 보안에 대한 정책을 정의해야 합니다. 데이터베이스 규모가 크고 사용자가 많다면 보안 관리자는 사용자 그룹을 분류하고 각 사용자 그룹별로사용자 롤을 생성하며, 각 사용자 롤에 필요한 권한이나 응용 프로그램 롤을 부여

사용자 보안 정책

보안 정책 구축 2 2 - 5

하고 사용자들에게 사용자 롤을 지정할 수 있습니다. 또한 보안 관리자는 예외 사항을 고려하여 각 사용자에게 어떤 권한을 명시적으로 부여해야 할지를 결정합니다.

최종 사용자 권한 관리에 대한 롤 사용

롤은 다른 그룹의 데이터베이스 사용자가 필요로 하는 일반적인 권한을 부여하고 관리하는 가장 쉬운 방법입니다.

회사의 회계 부서에 근무하는 모든 사용자에게는 AC C T S _ R E C E I VA B L E과AC C T S _ PAYABLE 데이터베이스 응용 프로그램을 실행할 수 있는 권한이 있어야합니다. 롤은 두 응용 프로그램과 관련되어 있으며 이러한 응용 프로그램을 실행하는데 필요한 객체 권한이 있습니다.

다음은 데이터베이스 관리자나 보안 관리자가 보안을 구현하는 작업입니다.

1 . AC C O U N TA N T라는 롤을 생성합니다.

2 . AC C O U N TANT 롤에 AC C T S _ R E C E I VA B L E과 AC C T S _ PAYABLE 데이터베이스 응용 프로그램에 대한 롤을 부여합니다.

3 . 회계 부서의 모든 사용자에게 AC C O U N TANT 롤을 부여합니다.

그림 2 2 - 1은 이 보안 모델을 나타냅니다.

그림 22-1 사용자 롤

이 계획은 다음과 같은 상황을 설명합니다.

사용자 보안 정책

2 2 - 6 Oracle8i 관리자 설명서

ACCOUNTANT 롤

ACCTS_REC 롤ACCTS_PAY 롤

ACCTS_PAY 응용 프로그램을실행할 수 있는권한

ACCTS_REC 응용 프로그램을실행할 수 있는권한

사용자

사용자롤

응용 프로그램 롤

응용 프로그램 권한

■ 회계사들이 새 데이터베이스 응용 프로그램에 대해 롤을 필요로 한다면 응용 프로

그램의 롤을 AC C O U N TANT 롤에 부여할 수 있으며, 회계 부서의 모든 사용자

들은 새 데이터베이스 응용 프로그램과 관련된 권한을 자동으로 부여받습니다. 응

용 프로그램의 롤은 응용 프로그램 사용을 필요로 하는 사용자 개인에게 개별적으

로 부여하지 않아도 됩니다.

■ 마찬가지로 회계 부서에서 특정 응용 프로그램을 더 이상 사용하지 않는다면 응용

프로그램의 롤을 AC C O U N TANT 롤에서 삭제할 수 있습니다.

■ AC C T S _ R E C E I VA B L E이나 AC C T S _ PAYABLE 응용 프로그램이 필요로 하는

권한이 변경되면 응용 프로그램의 롤에 대해 새 권한을 부여하거나 삭제할 수 있

습니다. AC C O U N TANT 롤의 보안 도메인과 AC C O U N TANT 롤을 부여한 모

든 사용자는 자동으로 권한이 수정됩니다.

■ 사용자가 하나의 롤만을 필요로 하는 위치에 인덱스를 가집니다.

일반 사용자 권한 관리를 효율적이고 쉽게 하려면 가능한 모든 상황에서 롤을 사용합니다.

관리자 보안

보안 관리자는 관리자 보안에 대한 정책이 있어야 합니다. 예를 들어, 데이터베이스규모가 크고 여러 유형의 데이터베이스 관리자가 있을 때 관련된 관리 권한을 일부관리 롤로 그룹화할지를 결정할 수 있습니다. 그러면 관리 롤은 해당 관리자에게 부여됩니다. 반대로 데이터베이스 규모가 작고 소수 관리자가 관리할 경우 관리 롤을하나로 만들어 모든 관리자에게 부여하는 것이 더 편리합니다.

SYS와 SYS T E M으로의 접속 보호

데이터베이스를 생성한 후에는 권한이 없는 사용자가 데이터베이스를 액세스하지 못하도록 SY S와 SYSTEM 사용자명의 암호를 즉시 변경합니다. SY S와 SY S T E M으로접속하면 사용자는 데이터베이스를 다양한 방법으로 수정할 수 있는 강력한 권한을 갖게 됩니다. 따라서 이 두 사용자명으로 부여된 권한은 아주 중요하므로 엄선된 데이터베이스 관리자만이 사용할 수 있어야 합니다.

참조: SY S와 SY S T E M에 대한 암호는 23-15 페이지“사용자 변경”에 설명한 절차를 사용하여 수정할 수 있습니다.

사용자 보안 정책

보안 정책 구축 2 2 - 7

관리자 접속 보호

데이터베이스 관리자만이 관리자 권한으로 데이터베이스를 접속할 수 있어야 합니다.SY S D B A로 접속하면 사용자는 데이터베이스에 시작, 종료, 복구 등과 같은 작업을수행하거나 데이터베이스의 객체에 대해 생성, 삭제 등과 같은 작업을 수행할 수 있는 무제한 권한을 갖게 됩니다. SYS 권한으로 접속한 (예를 들어, connect asS Y S D B A / S Y S O P E R) 사용자만 데이터 딕셔너리 테이블을 변경할 수 있습니다.

관리자 권한 관리에 대한 롤 사용

롤은 시스템 권한과 데이터베이스의 인사 관리를 제어하는 가장 쉬운 방법입니다.

예를 들어, 대규모 데이터베이스 설치 관리 책임이 여러 사람의 데이터베이스 관리자에게 분산되어 있다고 합시다. 그러면 각각의 관리자는 다음의 세부적인 데이터베이스 관리 작업을 수행해야 합니다.

■ 객체 생성과 유지 관리를 책임지고 있는 관리자

■ 데이터베이스 성능 조정 및 성능 평가를 책임지고 있는 관리자

■ 새로운 사용자를 생성하고 각 사용자마다 롤과 권한을 부여하는 작업을 책임지고

있는 보안 관리자

■ 시작, 종료, 백업과 같은 주기적으로 반복되는 데이터베이스 작업을 책임지고 있

는 데이터베이스 관리자

■ 데이터베이스 복구와 같은 긴급 상황을 책임지고 있는 관리자

■ 데이터베이스 관리를 실습하기 위해 제한된 권한을 부여하는 경험이 없는 새로운

데이터베이스 관리자

위의 예에서 보안 관리자는 다음과 같이 관리자 개개인에 대한 보안을 구축해야 합니다.

1. 각 유형의 작업을 수행하는데 필요한 권한을 배타적으로 포함하는 6가지 롤(예를들어, DBA_OBJECTS, DBA_TUNE, DBA_SECURITY, DBA_MAIN-TAIN, DBA_RECOV, DBA_NEW)을정의해야 합니다.

2 . 각 롤에 적합한 권한을 부여합니다.

3 . 각 유형의 데이터베이스 관리자에게 해당하는 롤을 부여합니다.

이러한 계획은 이후 발생할 수 있는 문제를 다음과 같은 방법으로 감소시킵니다.

사용자 보안 정책

2 2 - 8 Oracle8i 관리자 설명서

■ 데이터베이스 관리자의 업무 내용이 더 많은 책임을 지도록 변경되면 데이터베이

스 관리자에게 새로운 책임에 따라 다른 관리 롤을 부여할 수 있습니다.

■ 데이터베이스 관리자의 업무 내용이 더 적은 책임을 지도록 변경되면 데이터베이

스 관리자는 해당하는 관리 롤을 제거할 수 있습니다.

■ 데이터 딕셔너리는 항상 각 롤과 각 사용자에 대한 정보를 가지며 각 관리자의 업

무를 알리는데 정보를 사용할 수 있습니다.

응용 프로그램 개발자 보안

보안 관리자는 데이터베이스를 사용하는 응용 프로그램 개발자를 위해 특별한 보안정책을 정의해야 합니다. 보안 관리자는 응용 프로그램 개발자에게 객체를 생성할 수있는 권한을 부여할 수 있습니다. 그러나 객체를 생성할 수 있는 권한을 데이터베이스 관리자에게만 부여하여 개발자가 데이터베이스 관리자에게 객체 생성을 요청하도록 할 수도 있습니다.

응용 프로그램 개발자와 개발자의 권한

데이터베이스 응용 프로그램 개발자는 개발 작업을 완수하기 위해 특별한 권한을 필요로 하는 유일한 데이터베이스 사용자입니다. 최종 사용자와 다르게 개발자는C R E ATE TA B L E, CREATE PRO C E D U R E와 같은 시스템 권한이 있어야 합니다. 그러나 전체 데이터베이스 기능을 제한하기 위해 필요한 시스템 권한만을 개발자에게 부여해야 합니다.

응용 프로그램 개발자의 환경: 테스트 및 제품화된 데이터베이스

많은 경우 응용 프로그램 개발은 데이터베이스 테스트로 제한하며 제품화된 데이터베이스로 액세스하는 것을 허용하지 않습니다. 이 제한으로 응용 프로그램 개발자가 데이터베이스 자원에 대해 일반 사용자와 경합하지 않도록 하여 응용 프로그램 개발자가 제품화된 데이터베이스에 결정적인 영향을 줄 수 없도록 합니다.

응용 프로그램을 완전히 개발하고 테스트한 후 응용 프로그램이 제품화된 데이터베이스로 액세스하도록 하며 제품화된 데이터베이스의 최종 사용자가 사용할 수 있도록합니다.

사용자 보안 정책

보안 정책 구축 2 2 - 9

자유로운 응용 프로그램과 제어된 응용 프로그램 개발

데이터베이스 관리자는 응용 프로그램 개발자에게 부여할 권한을 결정할 때 다음 옵션을 정의할 수 있습니다.

자유로운 개발 응용 프로그램 개발자는 테이블, 인덱스, 프로시저, 패키지 등의 새 스키마

객체를 생성할 수 있습니다. 이 옵션은 응용 프로그램 개발자가 다른 객체와

독립적으로 응용 프로그램을 개발할 수 있도록 합니다.

제어된 개발 응용 프로그램 개발자는 새 스키마 객체를 생성할 수 없습니다. 필요한 모든

테이블, 인덱스, 프로시저등은 응용 프로그램 개발자가 요청하면 데이터베이

스 관리자가 생성합니다. 이 옵션은 데이터베이스 관리자가 데이터베이스의

영역 사용과 데이터베이스 정보로 액세스하는 경로를 완벽하게 제어합니다.

두 옵션 중 하나만 사용해야 하는 데이터베이스 시스템도 있지만 다른 시스템들은 두옵션을 혼합해서 사용할 수 있습니다. 예를 들어, 응용 프로그램 개발자는 내장 프로시저와 패키지를 만들 수 있지만 테이블과 인덱스는 생성할 수 없습니다. 보안 관리자는 다음 사항을 바탕으로 설정할 옵션을 결정합니다.

■ 데이터베이스의 영역 사용 제어 정도

■ 스키마 객체로 액세스하는 경로 제어 정도

■ 응용 프로그램 개발에 사용하는 데이터베이스—테스트 데이터베이스를 응용 프로

그램 개발에 사용한다면 좀더 자유로운 응용 프로그램 개발 보안 정책을 사용할

수 있습니다.

응용 프로그램 개발자에 대한 롤과 권한

보안 관리자는 롤을 생성하여 응용 프로그램 개발자가 필요로 하는 권한을 관리할 수있습니다. 예를 들어, APPLICAT I O N _ D E V E L O P E R라는 롤은 C R E AT ETA B L E, CREATE VIEW 및 C R E ATE PROCEDURE 시스템 권한을 포함합니다. 응용 프로그램 개발자의 롤을 정의할 때 다음 사항을 고려합시다.

■ 일반적으로 응용 프로그램 개발자에게 C R E ATE 시스템 권한을 부여하여 개발자

자신의 객체를 생성할 수 있도록 합니다. 그러나 사용자가 다른 사용자 스키마에

서 객체를 생성할 수 있는 C R E ATE ANY 시스템 권한을 응용 프로그램 개발자

에게는 부여하지 않습니다. 이 제한으로 개발자 자신의 계정에서만 새 객체를 생

성할 수 있습니다.

■ 객체 권한은 응용 프로그램 개발자가 사용하는 롤에는 거의 부여되지 않습니다.

롤을 통해 객체 권한을 부여하면 다른 객체를 생성할 때 유용성을 제한하므로 이 방

사용자 보안 정책

2 2 - 1 0 Oracle8i 관리자 설명서

법은 가끔 비실용적입니다. 응용 프로그램 개발자가 개발 목적으로 자신의 객체를

생성하도록 하는 것이 더 실용적입니다.

응용 프로그램 개발자에 대한 영역 제한

보통 응용 프로그램 개발자에게 개발 과정의 일부분으로 객체를 생성할 수 있는 권한을 부여하지만 보안 관리자는 각 응용 프로그램 개발자가 사용할 수 있는 데이터베이스 영역의 위치와 용량 제한을 유지 관리해야 합니다. 예를 들어, 보안 관리자는 각응용 프로그램 개발자에 대해 다음 제한 사항을 특별히 설정하고 제한해야 합니다.

■ 개발자가 테이블이나 인덱스를 생성할 수 있는 테이블스페이스

■ 개발자가 액세스할 수 있는 각 테이블스페이스 할당량

참조: 개발자의 보안 도메인을 변경하여 제한 사항을 설정할 수 있습니다. 자세한 내용은 23-15 페이지“사용자 변경”을 참조하십시오.

응용 프로그램 관리자 보안

많은 데이터베이스 응용 프로그램을 가진 (예를 들어, 선행 컴파일러, Forms 응용프로그램) 대규모 데이터베이스 시스템에서 응용 프로그램 관리자를 별도로 선정할수도 있습니다. 응용 프로그램 관리자는 다음 작업을 수행해야 합니다.

■ 응용 프로그램에 대한 롤 생성 및 각 응용 프로그램 롤 권한 관리

■ 데이터베이스 응용 프로그램이 사용하는 객체 생성 및 관리

■ 필요하다면 응용 프로그램 코드, Oracle 프로시저와패키지 유지 관리 및 갱신

때때로 응용 프로그램 관리자는 응용 프로그램을 설계하는 응용 프로그램 개발자이기도 합니다. 그러나 이러한 작업은 개발자의 책임이 아니므로 데이터베이스 응용 프로그램에 익숙한 다른 사람에게 할당될 수도 있습니다.

암호 관리 정책

데이터베이스 보안 시스템에서 암호는 항상 기밀로 유지되어야 합니다. 아직도 암호는 도난, 위조, 오용되기 쉽습니다. 데이터베이스 보안에 대한 강력한 제어를 위해O ra c l e의 암호 관리 정책은 D B A에 의해 제어됩니다.

암호 관리 정책

보안 정책 구축 2 2 - 1 1

이 단원에서는 O racle 암호 관리의 다음과 같은 측면을 설명합니다.

■ 계정 잠금

■ 암호 변경 및 만기

■ 암호 기록

■ 암호 복잡성 검증

계정 잠금

특정 사용자가 지정된 횟수 이상 로그인 시도에 실패하면 서버는 자동으로 해당 사용자의 계정을 잠급니다. DBA는 C R E ATE PROFILE 문을 사용하여 로그인 시도 시허용된 실패 횟수를 지정합니다. DBA는 계정이 잠금 상태로 남아 있게 되는 시간도지정합니다.

다음 예에서 사용자 A S H W I N I에 대한 최대 로그인 실패 횟수는 4이며 계정이 잠금상태로 남아 있게 되는 기간은 3 0일입니다. 계정은 3 0일이 지난 후에는 자동으로 잠금이 해제됩니다.

CREATE PROFILE prof LIMITFAILED_LOGIN_ATTEMPTS 4PASSWORD_LOCK_TIME 30;

ALTER USER ashwini PROFILE prof;

D B A가 계정 잠금 해제를 위한 기간을 지정하지 않으면 AC C O U N T _ L O C K _T I M E이 기본값이 됩니다. DBA가 AC C O U N T _ L O C K _ T I M E을 U N L I M I T E D로지정하면 시스템 보안 담당자가 계정을 명시적으로 해제해야 합니다. 따라서 계정이잠금 상태로 남아 있게 되는 기간은 D B A가 사용자에게 할당된 자원 프로파일을 구성하는 방법에 따라 달라집니다.

사용자가 계정에 로그인하면 사용자의 실패한 로그인 시도 횟수는 0으로 재설정됩니다.

보안 담당자가 명시적으로 사용자의 계정을 잠글 수도 있습니다. 이 경우 계정에 대한 잠금은 자동으로 해제되지 않습니다. 보안 담당자가 계정 잠금을 해제해야 합니다.

참조: C R E ATE PROFILE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

암호 변경 및 만기

D B A는 C R E ATE PROFILE 문을 사용하여 암호의 최대 실행 기간을 지정합니다.지정된 기간이 지나면 암호는 만기되고 사용자나 D B A가 암호를 변경해야 합니다.

암호 관리 정책

2 2 - 1 2 Oracle8i 관리자 설명서

다음 명령문은 A S H W I N I가 만기되기 전에 동일한 암호를 9 0일 동안 사용할 수 있음을 나타냅니다.

CREATE PROFILE prof LIMITFAILED_LOGIN_ATTEMPTS 4PASSWORD_LOCK_TIME 30PASSWORD_LIFE_TIME 90;

ALTER USER ashwini PROFILE prof;

D B A는 C R E ATE PROFILE 문을 사용하여 유예 기간을 지정할 수도 있습니다. 사용자는 암호가 만기된 다음 첫 번째 데이터베이스 로그인 시도부터 유예 기간에 들어가게 됩니다. 유예 기간 동안에는 계정에 로그인할 때마다 경고 메시지가 표시되며유예 기간이 끝날 때까지 계속 표시됩니다. 사용자는 유예 기간 안에 암호를 변경해야 합니다. 유예 기간 동안 암호를 변경하지 않으면 계정이 만기되고 암호가 변경되기 전까지 해당 계정으로 로그인할 수 없게 됩니다. 그림 2 2 - 2는 암호 실행 기간과유예 기간의 시간순 배열을 보여줍니다.

그림 22-2 암호 실행 기간과 유예 기간의 시간순 배열

예를 들어, 암호의 실행 기간이 6 0일이고 유예 기간은 3일입니다. 사용자가 6 0일이지난 어느 날, 70일이나 1 0 0일 또는 그 이외의 날, 즉 암호 실행 기간 이후에 첫 번째 로그인을 시도하면 사용자는 암호가 3일 후 만기된다는 경고 메시지를 받게 됩니다. 사용자가 유예 기간의 첫 번째 날부터 3일 이내에 암호를 변경하지 않으면 사용자 계정은 만기됩니다. 다음 명령문은 사용자가 만기되는 3일 이내에 암호를 변경해야 함을 나타냅니다.

CREATE PROFILE prof LIMITFAILED_LOGIN_ATTEMPTS 4ACCOUNT_LOCK_TIME 30PASSWORD_GRACE_TIME 3;

ALTER USER ashwini PROFILE prof;

보안 담당자가 명시적으로 계정을 만기시킬 수도 있습니다. 이것은 새로운 계정에 특히 유용합니다.

암호 관리 정책

보안 정책 구축 2 2 - 1 3

마지막암호변경

암호 실행 기간 후첫 번째 로그인

만기 . . .

암호 실행기간

... 유예 기간 ...

참조: C R E ATE PROFILE 문에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

암호 기록

D B A는 C R E ATE PROFILE 문을 사용하여 사용자가 암호를 다시 사용할 수 없는시간 간격을 지정합니다.

다음 명령문에서 D B A는 사용자가 암호를 6 0일 동안 다시 사용할 수 없음을 나타냅니다.

CREATE PROFILE prof LIMITPASSWORD_REUSE_TIME 60PASSWORD_REUSE_MAX UNLIMITED;

다음 명령문은 현재 암호를 다시 사용하기 전에 암호를 변경해야 하는 횟수가 세 번임을 보여줍니다.

CREATE PROFILE prof LIMITPASSWORD_REUSE_MAX 3PASSWORD_REUSE_TIME UNLIMITED;

주: PA S S W O R D _ R E U S E _ T I M E이나 PA S S W O R D _ R E U S E _ M A X중 하나를 지정하면 나머지 하나는 U N L I M I T E D로 설정하거나 아예지정하지 말아야 합니다.

암호 복잡성 검증

O ra c l e의 암호 복잡성 검증 루틴은 기본 프로파일 매개변수를 설정하는 PL/SQL 스크립트( u t l p w d m g. s q l )를 사용하여 지정할 수 있습니다.

암호 복잡성 검증 루틴은 다음 검사를 수행합니다.

■ 암호의 최소 길이는 4입니다.

■ 암호는 사용자 I D와 동일하면 안됩니다.

■ 암호는 적어도 하나 이상의 영문자, 숫자, 구두점으로 구성되어야 합니다.

■ 암호는 w e l c o m e, account, database, user와같이 단순한 단어와 일치하면 안

됩니다.

암호 관리 정책

2 2 - 1 4 Oracle8i 관리자 설명서

■ 암호는 이전 암호와 적어도 세 자 이상 달라야 합니다.

주: 오라클사에서는 A LTER USER 문이 암호 검증 기능을 완전하게제공하지 않으므로 A LTER USER 문을 사용하여 암호를 변경하는 것을 권장하지 않습니다. 대신, OCIPa s s w o rd C h a n g e ( )를 사용하여 암호를 변경해야 합니다.

암호 검증 루틴 형식화 지침

D B A는 P L / S Q L이나 다른 업체의 도구를 사용하여 기존 암호 검증 복잡성 루틴을향상시키거나 자신의 암호 검증 루틴을 생성할 수 있습니다.

D B A가 만든 PL/SQL 호출은 다음 형식을 지켜야 합니다.

routine_name (userid_parameter IN VARCHAR(30),password_parameter IN VARCHAR(30),old_password_parameter IN VARCHAR(30))RETURN BOOLEAN

새로운 루틴이 생성되면 해당 루틴은 사용자의 프로파일이나 시스템 기본 프로파일을사용하여 암호 검증 루틴으로 할당되어야 합니다.

CREATE/ALTER PROFILE profile_name LIMITPASSWORD_VERIFY_FUNCTION routine_name

암호 검증 루틴은 SY S가 소유해야 합니다.

암호 검증 루틴: 예제 스크립트 다음의 예제 스크립트는 기본 암호 자원 한계를 설정하고 최소 암호 복잡성을 검사하도록 합니다. 새로운 암호에 대한 사용자 고유의 복잡성 검사를 개발할 때의 모델로 이 예제 스크립트를 사용할 수 있습니다.

이 스크립트는 기본 암호 자원 매개변수를 설정하고 암호 기능 활성화를 위해 실행되어야 합니다. 그러나 필요하다면 기본 자원 매개변수를 변경할 수 있습니다.

기본 암호 복잡성 기능은 다음의 최소 복잡성 검사를 수행합니다.

■ 암호는 최소 길이 요구 사항을 만족해야 합니다.

■ 암호는 사용자명과 동일하지 않아야 합니다. 요구 사항에 근거하여 이 기능을 수

정할 수 있습니다.

암호 관리 정책

보안 정책 구축 2 2 - 1 5

이 기능은 SYS 스키마에 생성되어야 하며 스크립트를 실행하기 전에 connect sys/<password> as sysdba 로 접속해야 합니다.

CREATE OR REPLACE FUNCTION verify_function(username varchar2,

password varchar2,old_password varchar2)RETURN boolean ISn boolean;m integer;differ integer;isdigit boolean;ischar boolean;ispunct boolean;digitarray varchar2(20);punctarray varchar2(25);chararray varchar2(52);

BEGINdigitarray:= ‘0123456789’;chararray:= ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;punctarray:=’!”#$%&()’’*+,-/:;<=>?_’;

--Check if the password is same as the usernameIF password = username THEN

raise_application_error(-20001, ’Password same as user’);END IF;

--Check for the minimum length of the passwordIF length(password) < 4 THEN

raise_application_error(-20002, ’Password length less than 4’);END IF;

--Check if the password is too simple. A dictionary of words may --be maintained and a check may be made so as not to allow the --words that are too simple for password.

IF NLS_LOWER(password) IN (’welcome’, ’database’, ’account’, ’user’,’password’, ’oracle’, ’computer’, ’abcd’) THEN raise_application_error(-20002, ’Password too simple’);END IF;

--Check if the password contains at least one letter, one digit --and one punctuation mark.--1. Check for the digit--You may delete 1. and replace with 2. or 3.

isdigit:=FALSE;m := length(password);FOR i IN 1..10 LOOP

FOR j IN 1..m LOOPIF substr(password,j,1) = substr(digitarray,i,1) THENisdigit:=TRUE;

암호 관리 정책

2 2 - 1 6 Oracle8i 관리자 설명서

GOTO findchar;END IF;

END LOOP;END LOOP;IF isdigit = FALSE THEN

raise_application_error(-20003, ’Password should contain at leastone digit, one character and one punctuation’);END IF;

--2. Check for the character<<findchar>>ischar:=FALSE;FOR i IN 1..length(chararray) LOOP

FOR j IN 1..m LOOPIF substr(password,j,1) = substr(chararray,i,1) THEN

ischar:=TRUE;GOTO findpunct;

END IF;END LOOP;

END LOOP;IF ischar = FALSE THEN

raise_application_error(-20003, ’Password should contain at leastone digit one character and one punctuation’);END IF;--3. Check for the punctuation

<<findpunct>>ispunct:=FALSE;FOR i IN 1..length(punctarray) LOOP

FOR j IN 1..m LOOPIF substr(password,j,1) = substr(punctarray,i,1) THEN

ispunct:=TRUE;GOTO endsearch;

END IF;END LOOP;

END LOOP;IF ispunct = FALSE THEN raise_application_error(-20003, ’Passwords h o u l d c o n t a i n a t l e a s t o n e \ d i g i t , o n e c h a r a c t e r a n d o n epunctuation’);END IF;

<<endsearch>>

--Check if the password differs from the previous password by atleast 3 letters

IF old_password = ’’ THENraise_application_error(-20004, ’Old password is null’);

END IF;--Everything is fine; return TRUE;

differ := length(old_password) - length(password);

IF abs(differ) < 3 THENIF length(password) < length(old_password) THEN

암호 관리 정책

보안 정책 구축 2 2 - 1 7

m := length(password);ELSEm:= length(old_password);

END IF;differ := abs(differ);FOR i IN 1..m LOOP

IF substr(password,i,1) != substr(old_password,i,1) THENdiffer := differ + 1;

END IF;END LOOP;IF differ < 3 THEN

raise_application_error(-20004, ’Password should differ by at least 3 characters’);

END IF;END IF;--Everything is fine; return TRUE;

RETURN(TRUE);END;

감사 정책

보안 관리자는 각 데이터베이스의 감사 프로시저에 대한 정책을 정의해야 합니다. 예를 들어, 데이터베이스에 손상을 입힐 만한 작업이 없다면 감사 작업을 수행하지 않아도 됩니다. 감사해야 한다면 보안 관리자는 데이터베이스를 감사하는 세부 사항 레벨을 결정해야 합니다. 보통 일반 시스템 감사는 데이터베이스에 손상을 입힐 수 있는 작업의 원인을 알아낸 후 보다 상세히 감사합니다.

감사 정책

2 2 - 1 8 Oracle8i 관리자 설명서

23사용자와 자원 관리

이 장에서는 오라클 데이터베이스에 대한 액세스 제어 방법을 설명하며 다음 내용을 다룹니다.

■ 세션 및 사용자 사용권 지정

■ 사용자 인증

■ O racle 사용자

■ 프로파일로 자원 관리

■ 데이터베이스 사용자와 프로파일 정보 나열

참조: 사용자와 프로파일 보안 정책 수립에 대한 지침 사항은 2 2장“보안 정책 구축”을 참조하십시오.

권한과 롤은 사용자의 데이터베이스 액세스와 데이터베이스 내의 스키마 객체를 제어합니다. 권한과 롤에 대한 내용은 2 4장“사용자 권한과 롤 관리”를 참조하십시오.

사용자와 자원 관리 2 3 - 1

세션 및 사용자 사용권 지정

이 단원에서는 세션 및 사용자 사용권 지정을 설명하며 다음 내용을 다룹니다.

■ 동시 사용 사용권 지정

■ 접속 권한

■ 최대 세션 수 설정

■ 세션 경고 한계 설정

■ 데이터베이스 실행 중 동시 사용 한계 변경

■ 명명된 사용자 한계

■ 사용권 지정 한계와 현재 값 보기

O ra c l e은 사이트에서 O racle 서버 사용권 계약을 준수하는지의 여부를 확인하는 관리자의 임무를 돕습니다. 사이트에 동시 사용 사용권이 지정되어 있다면 데이터베이스에 동시에 접속할 수 있는 세션 수를 추적하고 제한할 수 있습니다. 사이트에 명명된 사용자 사용권이 지정되어 있다면 데이터베이스에서 생성할 수 있는 명명된 사용자 수를 제한할 수 있습니다. 어느 경우든 관리자가 사용권 지정을 제어하고 기능을활성화하여 적절한 한계를 설정해야 합니다.

사용권 지정 기능을 사용하려면 사용자 사이트가 계약한 사용권 유형 및 최대 세션수와 최대 명명된 사용자 수를 알고 있어야 합니다. 일반적으로 동시 사용권 지정이나 명명된 사용자 사용권 지정 중 하나를 사용합니다.

주: 드물게 어떤 사이트는 동시 사용 또는 명명된 사용자 사용권 지정이 아닌 무제한 사용권을 가질 수 있습니다. 이 경우에는 매개변수 파일에서 L I C E N S E _ M A X _ S E S S I O N S, LICENSE_SESSIONS_WA R N I N G, LICENSE_MAX_USERS를 생략하거나 세 가지를 모두 0으로 설정하여 사용권 지정 방법을 비활성화합니다.

동시 사용 사용권 지정

동시 사용 사용권 지정은 특정 컴퓨터의 데이터베이스에 동시에 접속할 수 있는 세션수를 제한합니다. 인스턴스를 시작하기 전에 동시에 접속할 수 있는 세션 수의 한계를 설정할 수 있습니다. 실제로 초기 설치 절차의 한 부분으로 한계를 설정해야 합니다. 데이터베이스 실행 중에 최대 동시 세션 수를 변경할 수 있습니다.

2 3 - 2 Oracle8i 관리자 설명서

세션 및 사용자 사용권 지정

참조: 초기 설치 절차에 대한 내용은 2장“오라클 데이터베이스 생성”을 참조하십시오.

접속 권한

인스턴스 세션 한계에 도달하면 RESTRICTED SESSION 권한이있는 사용자(보통D B A )만이 데이터베이스에 접속할 수 있습니다. RESTRICTED SESSION 권한이있는 사용자가 접속하면 O ra c l e은 사용자에게 최대 한계에 도달했다는 메시지를 보내고 A L E RT 파일에 메시지를 기록합니다. 최대값에 도달하면 데이터베이스 관리자는데이터베이스에 접속하여 불필요한 프로세스를 종료해야 합니다. Oracle 사용권 계약을 업그레이드하지 않으면 최대 사용권 지정 한계를 증가시킬 수 없습니다.

최대 동시 세션 한계 설정뿐 아니라 동시 세션 수에 대한 경고 한계를 설정할 수 있습니다. 경고 한계에 도달해도 최대 한계에 도달할 때까지 추가 사용자는 계속 데이터베이스에 접속할 수 있습니다. 그러나 O ra c l e은 추가로 접속할 때마다 A L E RT 파일에 메시지를 기록하고 RESTRICTED SESSION 권한이있는 사용자에게 최대 한계에 도달했다는 경고 메시지를 보냅니다.

사용자가 관리자 권한으로 접속해도 한계는 적용됩니다. 그러나 O ra c l e은 사용자가첫 번째 명령문을 실행한 다음 한계를 강제로 수행합니다.

O ra c l e은 동시 사용 한계를 강제로 수행할 뿐만 아니라“고수위”를 사용하여 각 인스턴스에 대한 최대 동시 세션 수를 추적합니다.

참조: 세션 종료에 대한 내용은 4-15 페이지“세션 종료”를 참조하십시오.

O racle 사용권 지정 제한 업그레이드에 대한 내용은 23-6 페이지의“사용권 지정 한계와 현재 값 보기”를 참조하십시오.

사용자와 자원 관리 2 3 - 3

세션 및 사용자 사용권 지정

P a rallel Server 동시 사용 한계

인스턴스가 Pa rallel Serv e r에서 실행 중일 때 각 인스턴스는 자신의 동시 사용 한계와 경고 한계를 가질 수 있습니다. 그러나 인스턴스 한계의 합이 사이트의 동시 사용사용권 지정 한계를 초과하면 안됩니다.

경고: TP 모니터 같은 소프트웨어 또는 하드웨어 다중화를 통해O ra c l e에 접속한 세션은 동시 사용 한계에 개별적으로 계산됩니다. 그러나 O racle 사용권 지정 처리 방법은 이런 식으로 접속한 세션 수를구분할 수 없습니다. 사이트에서 소프트웨어 또는 하드웨어 다중화를사용한다면 이것을 고려하여 최대 동시 사용 한계를 다중화 세션에 대한계정 수보다 적게 설정해야 합니다.

참조: Pa rallel Server 환경에서의 한계 설정 및 변경에 대한 자세한 내용은O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

최대 세션 수 설정

한 인스턴스에 대한 최대 동시 세션 수를 설정하려면 매개변수 L I C E N S E _M A X _ S E S S I O N S를 다음과 같이 설정합니다.

LICENSE_MAX_SESSIONS = 80

이 한계를 설정하면 경고 한계 L I C E N S E _ S E S S I O N S _ WA R N I N G을 설정하지 않아도 됩니다. 그러나 경고 한계를 사용하면 거의 최대 사용 한계에 도달했다는 경고를보내므로 최대 한계 관리가 더 쉽습니다.

세션 경고 한계 설정

인스턴스에 대한 경고 한계를 설정하려면 인스턴스를 시작할 때 사용하는 매개변수파일에 매개변수 L I C E N S E _ S E S S I O N S _ WA R N I N G을 설정합니다.

세션 경고 한계는 최대 동시 사용 한계 L I C E N S E _ M A X _ S E S S I O N S보다 작게 설정합니다.

데이터베이스 실행 중 동시 사용 한계 변경

데이터베이스 실행 중에 최대 동시 사용 한계 또는 경고 한계를 변경하려면 A LT E RSYSTEM 명령어를 옵션과 함께 사용합니다. 다음 명령문은 최대 한계를 1 0 0개의

2 3 - 4 Oracle8i 관리자 설명서

세션 및 사용자 사용권 지정

동시 세션으로 변경합니다.

ALTER SYSTEM SET LICENSE_MAX_SESSIONS = 100;

다음 명령문은 경고 한계와 최대 한계를 모두 변경합니다.

ALTER SYSTEMSET LICENSE_MAX_SESSIONS = 64LICENSE_SESSIONS_WARNING = 54;

현재 세션 수보다 작은 값을 한계로 설정하면 현재 세션이 그대로 유지됩니다. 그러나 새로 설정한 값은 인스턴스를 종료할 때까지 앞으로의 접속에 강제로 수행됩니다. 한계를 영구적으로 변경하려면 매개변수 파일의 매개변수 값을 변경합니다.

데이터베이스 실행 중에 동시 사용 한계를 변경하려면 A LTER SYSTEM 권한이 있어야 합니다. 물론 인스턴스의 최대 한계에 도달한 다음 인스턴스에 접속하려면 R E -STRICTED SESSION 권한이있어야 합니다.

경고: O racle 서버 사용권을 업그레이드하지 않았다면 동시 사용 한계를 증가시키지 마십시오. 자세한내용은 오라클 담당 사원에게 문의하십시오.

명명된 사용자 한계

명명된 사용자 사용권은 특정 컴퓨터에서 O racle 사용 권한을 가진 사용자 수를 제한합니다. 이 사용권을 강제로 수행하려면 인스턴스를 시작하기 전에 데이터베이스에생성한 사용자 수에 한계를 설정할 수 있습니다. 인스턴스를 실행하는 동안 최대 사용자 수를 변경하거나 한계를 모두 비활성화할 수 있습니다. 한계에 도달하면 더 이상 사용자를 생성할 수 없습니다. 사용자를 생성하려고 하면 O ra c l e은 최대 사용자수만큼의 사용자를 생성했다는 오류 메시지를 돌려주고 메시지를 A L E RT 파일에 기록합니다.

이 처리 방법은 데이터베이스를 액세스하는 모든 사용자가 고유한 사용자명을 가지며사용자명을 공유하지 않는다는 가정 하에 작동합니다. 여러 사용자가 동일한 사용자명으로 접속하는 것은 허용되지 않습니다.

참조: Pa rallel Serv e r로 실행 중인 인스턴스에서 동일한 데이터베이스에 접속한 모든 인스턴스는 동일한 명명된 사용자 한계를 가지고 있어야 합니다. 자세한 내용은O racle8i Pa rallel Server Concepts and Ad m i n i s t ra t i o n을 참조하십시오.

사용자와 자원 관리 2 3 - 5

세션 및 사용자 사용권 지정

사용자 한계 설정

데이터베이스에서 생성되는 사용자 수를 제한하려면 데이터베이스의 매개변수 파일에LICENSE_MAX_USERS 매개변수를 설정합니다. 다음은 최대 사용자를 2 0 0으로설정한 예입니다.

LICENSE_MAX_USERS = 200

데이터베이스를 시작할 때 데이터베이스에 L I C E N S E _ M A X _ U S E R S보다 많은 사용자가 있다면 O ra c l e은 경고를 보내고 A L E RT 파일에 메시지를 기록합니다. 사용자수가 한계보다 작아질 때까지 또는 사용자를 삭제하거나 O racle 사용권을 업그레이드할 때까지 추가 사용자를 생성할 수 없습니다.

사용자 한계 변경

명명된 사용자 최대 한계를 변경하려면 A LTER SYSTEM 명령어에 L I C E N C E _MAX_USERS 옵션을 사용합니다. 다음 명령문은 정의된 최대 사용자 수를 3 0 0으로변경합니다.

ALTER SYSTEM SET LICENSE_MAX_USERS = 300;

현재 사용자 수보다 작은 값으로 한계를 변경하면 O ra c l e은 오류를 돌려주고 이전 한계를 계속 사용합니다. 한계를 변경하면 인스턴스를 종료할 때까지 새로 설정한 한계가 유지됩니다. 한계를 영구적으로 변경하려면 매개변수 파일의 L I C E N S E _MAX_USERS 값을 변경합니다.

명명된 사용자 최대 한계를 변경하려면 A LTER SYSTEM 권한이있어야 합니다.

경고: O racle 사용권을 올바로 업그레이드할 때까지는 명명된 사용자한계를 증가시키지 마십시오. 자세한내용은 오라클 담당 사원에게 문의하십시오.

사용권 지정 한계와 현재 값 보기

V $LICENSE 데이터 딕셔너리 뷰를 질의하면 인스턴스에 대한 모든 사용권 지정,현재 세션 수, 최대 동시 세션 수에 대해 설정된 현재 한계를 볼 수 있습니다. 이 정보를 사용하여 더 많은 동시 세션 또는 명명된 사용자가 O ra c l e을 사용할 수 있도록O racle 사용권을 업그레이드해야 할지의 여부를 결정할 수 있습니다.

SELECT sessions_max s_max,sessions_warning s_warning,sessions_current s_current,

2 3 - 6 Oracle8i 관리자 설명서

세션 및 사용자 사용권 지정

sessions_highwater s_high,users_maxFROM v$license;

S_MAX S_WARNING S_CURRENT S_HIGH USERS_MAX-------------------------------------------------------100 80 65 82 50

또한 O ra c l e은 데이터베이스를 종료할 때 데이터베이스 A L E RT 파일에 세션 고수위를 기록하므로 데이터베이스 관리자가 확인할 수 있습니다.

현재 데이터베이스에 정의되어 있는 명명된 사용자 수를 보려면 다음 질의를 사용합니다.

SELECT COUNT(*) FROM dba_users;

COUNT(*)---------- 174

사용자 인증

이 단원에서는 사용자 인증에 대해 설명하며 다음 내용을 다룹니다.

■ 데이터베이스 인증

■ 외부 인증

■ 엔터프라이즈 인증

데이터베이스 세션 생성을 허용하기 전에 사용자 신분을 인증하는 방법에 따라 사용자를 정의하는 방법에는 세 가지가 있습니다.

1 . O ra c l e이 사용자 식별 및 인증을 모두 수행하도록 O ra c l e을 구성할 수 있습니다. 이것을 데이터베이스 인증이라고 합니다.

2 . 인증은 운영 체제나 네트워크 서비스에 맡기고 O ra c l e이 사용자 식별만을 수행하도록 구성할 수 있습니다. 이것을 외부 인증이라고 합니다.

3 . 인증은 O racle 보안 서비스가 수행하고 O ra c l e이 사용자 식별만을 수행하도록구성할 수 있습니다. 이것을 엔터프라이즈 인증이라고 합니다.

사용자와 자원 관리 2 3 - 7

사용자 인증

데이터베이스 인증

사용자에 대한 데이터베이스 인증을 선택한 경우 사용자 계정, 암호, 해당 사용자 인증에 대한 관리는 전적으로 O ra c l e이 수행합니다. Ora c l e이 사용자를 인증하도록 하려면 사용자를 생성하거나 변경할 때 사용자 암호를 지정합니다. 사용자는 언제든 자신의 암호를 변경할 수 있으며 암호는 보안 처리된 형식으로 저장됩니다. 데이터베이스가 다중 바이트 문자 집합을 사용하더라도 각 암호는 단일 바이트 문자로 구성되어야 합니다.

데이터베이스 인증을 사용하는 경우 보안을 향상시키기 위해 O ra c l e은 계정 잠금, 암호 변경 및 만기, 암호 기록, 암호 복잡성 검증 등을 포함한 암호 관리를 사용하도록권장합니다.

다음 명령문은 O ra c l e이 식별하고 인증하는 사용자를 생성합니다.

CREATE USER scott IDENTIFIED BY tiger;

참조: C R E ATE USER와 A LTER USER 문에 대한 자세한 내용은 O racle8i SQL참조서를 참조하십시오.

유효한 암호에 대한 자세한 내용은 O racle8i SQL 참조서를참조하십시오.

O racle 암호 관리에 대한 자세한 내용은 2 2장“보안 정책 구축”을 참조하십시오.

데이터베이스 인증의 장점

다음은 데이터베이스 인증의 장점입니다.

■ 사용자 계정과 모든 인증은 데이터베이스가 제어합니다. 데이터베이스 외부에 의

존할 필요는 없습니다.

■ O ra c l e은 데이터베이스 인증을 사용할 때 보안을 향상시키기 위해 강력한 암호 관

리 기능을 제공합니다.

■ 소규모 사용자 집단을 관리하기가 보다 쉽습니다.

외부 인증

사용자에 대해 외부 인증을 선택하는 경우 사용자 계정은 O ra c l e이 유지 관리하지만암호 관리와 사용자 인증은 외부 서비스가 수행합니다. 이러한 외부 서비스는 운영체제나 N e t 8과 같은 네트워크 서비스일 수 있습니다.

외부 인증을 사용하는 경우 데이터베이스는 데이터베이스 계정에 대한 액세스를 제한하기 위해 기본이 되는 운영 체제 또는 네트워크 인증 서비스에 의존합니다. 데이터

2 3 - 8 Oracle8i 관리자 설명서

사용자 인증

베이스 암호는 이러한 유형의 로그인에 대해서는 사용되지 않습니다. 운영 체제나 네트워크 서비스가 허용하면 이들이 사용자를 인증하도록 할 수 있습니다. 이 경우O S _ AUTHENT_PREFIX 매개변수를 설정하고 O racle 사용자명에 이 접두어를 사용합니다. 이 매개변수는 O ra c l e이 모든 사용자의 운영 체제 계정 이름의 시작 부분에 추가하는 접두어를 정의합니다. Ora c l e은 사용자가 접속하고자 할 때 접두어가 붙은 사용자명과 데이터베이스에 있는 O racle 사용자명을 비교합니다.

예를 들어, OS_AU T H E N T _ P R E F I X가 다음과 같이 설정되었다고 가정합시다.

OS_AUTHENT_PREFIX=OPS$

운영 체제 계정 이름이“T S M I T H”인 사용자가 오라클 데이터베이스에 접속하여 운영 체제에 의해 인증받고자 하는 경우, Ora c l e은 해당 데이터베이스 사용자“O PS $T S M I T H”가 있는지를 확인하고 있으면 사용자를 접속시킵니다. 운영 체제가인증한 모든 사용자는“O PS $T S M I T H”와 같이 접두어를 포함해야 합니다.

이전 버전의 O ra c l e과 역방향 호환성에 대한 이 매개변수의 기본값은“O P S $”입니다. 그러나 접두어 값을 다른 문자열이나 Null 문자열(빈 이중 인용 부호 집합: “”)로 설정할 수 있습니다. Null 문자열을 사용하면 O racle 사용자명이 운영 체제 사용자명과 정확하게 일치하므로 운영 체제 계정 이름에 접두어를 추가하지 않아도 됩니다.

O S _ AU T H E N T _ P R E F I X를 설정하면 데이터베이스 존속 주기 동안 동일한 값으로유지됩니다. 접두어를 변경하는 경우 이전 접두어를 포함한 모든 데이터베이스 사용자명은 암호 인증을 사용하도록 변경하지 않는 한 접속하기 위해 사용될 수 없습니다.

다음 명령어는 O ra c l e이 식별하고 운영 체제 또는 네트워크 서비스가 인증하는 사용자를 생성합니다.

CREATE USER scott IDENTIFIED EXTERNALLY;

C R E ATE USER IDENTIFIED EXTERNA L LY를 사용하면 운영 체제 또는 네트워크 서비스를 통해 인증해야 하며 암호를 사용하여 인증할 수 없는 데이터베이스 계정을 생성할 수 있습니다.

참조: O S _ AUTHENT_PREFIX 매개변수의 텍스트는 일부 운영 체제에 대해 대소문자를 구분합니다. 이 초기화 매개변수에 대한 자세한 내용은 사용자 운영 체제별오라클 설명서를 참조하십시오.

운영 체제 인증

기본적으로 O ra c l e은 보안 접속을 통해 운영 체제가 인증한 로그인만을 허용합니다.따라서 운영 체제를 사용하여 사용자를 인증하려는 경우 기본적으로 해당 사용자는N e t 8을 통해 데이터베이스에 접속할 수 없습니다. 이것은 이러한 접속이 N e t 8을 사

사용자와 자원 관리 2 3 - 9

사용자 인증

용하므로 사용자는 다중 스레드 서버를 사용하여 접속할 수 없음을 의미합니다. 이기본 제한 사항에 의해 원격 사용자는 네트워크 접속을 통해 다른 운영 체제 사용자를 가장할 수 없습니다.

원격사용자가 네트워크 접속을 통해다른 운영 체제 사용자를 가장하는 것을허용하고,네트워크 클라이언트로 운영 체제 사용자 인증을 사용하려는 경우 데이터베이스의 매개변수 파일에 있는 R E M O T E _ O S _ AUTHENT (기본값은 FALSE) 매개변수를 T RU E로 설정합니다. R E M O T E _ O S _ AUTHENT 초기화 매개변수를 T RU E로 설정하면R D B M S는 비보안 접속을 통해 수신된 클라이언트 운영 체제 사용자명을 수용할 수있고 계정 액세스를 위해 이를 사용할 수 있습니다. 변경 사항은 다음에 인스턴스를시작하고 데이터베이스를 마운트한 후 효력을 가집니다.

네트워크 인증

네트워크 인증은 N e t 8을 통해 수행되며 Ke r b e ro s와 같은 다른 업체의 서비스 사용을 위해 구성됩니다. 유일한 외부 인증 서비스로 N e t 8을 사용하는 경우 N e t 8은 보안접속만을 허용하므로 R E M O T E _ O S _ AUTHENT 매개변수 설정과는 관계가 없습니다.

참조: 네트워크 인증에 대한 내용은 O racle8i Distributed Database Systems를참조하십시오.

외부 인증의 장점

다음은 외부 인증의 장점입니다.

■ 스마트 카드, 지문, Ke r b e ros, 운영 체제와 같은 보다 많은 인증 처리 기법을 이

용할 수 있습니다.

■ 위에서 나열한 방법과 같은 인증을 위해 일부 외부 처리 기법을 이미 사용 중인

경우 이러한 처리 기법을 데이터베이스에 사용하기 위한 관리 오버헤드가 감소할

수도 있습니다.

엔터프라이즈 인증

사용자에 대해 엔터프라이즈 인증을 선택한 경우 사용자 계정은 O ra c l e이 유지 관리하지만 암호 관리 및 사용자 인증은 O racle 보안 서비스( O S S )가 수행합니다. 이 인증 서비스는 다중 오라클 데이터베이스 서버에서 공유할 수 있으며 사용자 인증 및권한 정보는 중앙 집중식으로 관리할 수 있습니다.

다음 명령어를 사용하여 O ra c l e이 식별하고 O racle 보안 서비스가 인증하는 사용자(전역 사용자라고 함)를 생성합니다.

2 3 - 1 0 Oracle8i 관리자 설명서

사용자 인증

CREATE USER scott IDENTIFIED GLOBALLY as ‘<external name>‘;

참조: < E X T E R NAL NAME> 내용에 대한 정보는 O racle8i Distributed Dat-abase Systems를참조하십시오.

엔터프라이즈 인증의 장점

다음은 엔터프라이즈 인증의 장점입니다.

■ 많은 데이터베이스를 가진 대규모 사용자 집단을 관리하기가 보다 쉽습니다.

■ 산업 표준 공용 키 인증을 사용할 수 있는데, 이는 상호 운용성을 향상시킵니다.

참조: 엔터프라이즈 인증에 대한 내용은 O racle8i Distributed Database Systems를 참조하십시오.

O racle 사용자

각 오라클 데이터베이스는 유효한 데이터베이스 사용자 목록을 가집니다. 데이터베이스를 액세스하려면 사용자는 데이터베이스 응용 프로그램을 실행하고 데이터베이스에정의된 유효한 사용자명을 사용하여 데이터베이스 인스턴스로 접속해야 합니다. 이단원에서는 데이터베이스 사용자 관리 방법을 설명하며 다음 내용을 다룹니다.

■ 사용자 생성

■ 사용자 변경

■ 사용자 삭제

사용자 생성

데이터베이스 사용자를 생성하려면 C R E ATE USER 시스템 권한이 있어야 합니다.새로운 사용자를 생성할 때 생성자가 특정 테이블스페이스에 대한 할당량을 가지지않더라도 데이터베이스의 임의의 테이블스페이스에 대해 할당량을 지정할 수 있습니다. 이러한 권한 때문에 보안 관리자는 C R E ATE USER 시스템 권한이 있는 유일한사용자입니다.

SQL 문 C R E ATE USER를 사용하여 사용자를 생성합니다. 이러한 옵션을 사용하여 사용자의 기본 세그먼트 테이블스페이스와 임시 세그먼트 테이블스페이스, 테이블스페이스 할당량, 프로파일을 지정할 수 있습니다.

CREATE USER OPS$jwardIDENTIFIED EXTERNALLYDEFAULT TABLESPACE data_tsTEMPORARY TABLESPACE temp_ts

사용자와 자원 관리 2 3 - 1 1

Oracle 사용자

QUOTA 100M ON test_tsQUOTA 500K ON data_tsPROFILE clerk;

참조: 새로 생성한 사용자는 C R E ATE SESSION 시스템 권한이 부여될 때까지는데이터베이스에 접속할 수 없습니다. 24-9 페이지“시스템 권한과 롤 부여”를 참조하십시오.

이름 지정

각 데이터베이스 내에서 사용자명은 다른 사용자명과 롤에 대해 고유해야 합니다. 사용자와 롤은 동일한 이름을 가질 수 없습니다. 각 사용자는 관련된 스키마를 가집니다. 스키마 내에서 각 스키마 객체는 고유한 이름을 가져야 합니다.

사용자의 인증 설정

이전 C R E ATE USER 문에서 새로운 사용자는 운영 체제를 사용하여 인증을 받습니다. 사용자명은 기본 접두어“O PS $”를 포함합니다. OS_AUTHENT_PREFIX 매개변수를 다르게 설정하면 (즉, 접두어를 붙이지 않거나 다른 접두어를 지정하면) 지정한 값에 따라 접두어를 생략하거나 올바른 접두어로 대치하여 사용자명을 수정합니다.

대안으로 데이터베이스와 암호를 사용하여 인증을 받는 사용자를 생성할 수도 있습니다

CREATE USER jwardIDENTIFIED BY airplane. . . ;

이 경우 접속하고자 하는 사용자는 데이터베이스에 접속하려면 정확한 암호를 사용해야 합니다.

다중 바이트 문자 집합에서의 사용자 암호 다중 바이트 문자 집합을 사용하는 데이터베이스에서 암호는 단일 바이트 문자만을 포함해야 합니다. 다중 바이트 문자는 암호로 인정되지 않습니다.

참조: 올바른 암호에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

기본 테이블스페이스 할당

각 사용자는 하나의 기본 테이블스페이스를 가집니다. 사용자가 스키마 객체를 생성한 후 객체를 저장할 테이블스페이스를 지정하지 않으면 O ra c l e은 사용자의 기본 테이블스페이스에 객체를 저장합니다.

2 3 - 1 2 Oracle8i 관리자 설명서

Oracle 사용자

모든 사용자의 기본 테이블스페이스의 기본 설정은 SYSTEM 테이블스페이스입니다.사용자가 객체를 생성하지 않는다면 이 기본 설정은 문제가 되지 않습니다. 그러나사용자가 특정 유형을 가진 객체를 생성하면 특별히 사용자의 기본 테이블스페이스설정을 고려해야 합니다. 사용자를 생성할 때 사용자의 기본 테이블스페이스를 설정하여 나중에 변경할 수 있습니다. 사용자의 기본 테이블스페이스를 변경하면 설정을변경한 후에 생성한 객체에만 영향을 줍니다.

지정할 테이블스페이스를 결정할 때 다음 사항을 고려하십시오.

■ 테이블, 뷰, 클러스터 같은 객체를 생성할 수 있는 권한이 있는 사용자의 기본 테

이블스페이스를 설정합니다.

■ 할당량을 가진 사용자에 대한 테이블스페이스에 기본 테이블스페이스를 설정합니

다.

■ 가능하다면 동일한 데이터 파일의 데이터 딕셔너리 객체와 사용자 객체 사이의 경

합을 줄이기 위해 사용자의 기본 테이블스페이스를 SYSTEM 테이블스페이스가

아닌 다른 테이블스페이스로 설정합니다.

위의 C R E ATE USER 문에서 J WA R D의 기본 테이블스페이스는 DATA _ T S입니다.

임시 테이블스페이스 할당

각 사용자는 임시 테이블스페이스를 가집니다. 사용자가 임시 세그먼트를 필요로 하는 SQL 문을 실행하면 O ra c l e은 사용자의 임시 테이블스페이스에 해당 세그먼트를저장합니다.

사용자의 임시 테이블스페이스를 명확하게 설정하지 않았다면 기본값은 SYSTEM 테이블스페이스입니다. 그러나 각 사용자의 임시 테이블스페이스를 설정하는 것은 임시세그먼트와 다른 유형의 세그먼트 사이에서 파일 경합을 줄입니다. 사용자를 생성할때 사용자의 임시 테이블스페이스를 설정하여 나중에 변경할 수 있습니다.

이전 C R E ATE USER 문에서 J WA R D의 임시 테이블스페이스는 T E M P _ T S이며테이블스페이스는 임시 세그먼트를 저장하기 위해 명시적으로 생성됩니다. .

테이블스페이스 할당량 지정

각 사용자에게 임의의 테이블스페이스에 대해 테이블스페이스 할당량을 지정할 수 있습니다. 할당량을 지정하면 다음 두 가지를 수행합니다.

■ 특정 유형의 객체를 생성하는 권한이 있는 사용자는 지정한 테이블스페이스에서

객체를 생성할 수 있습니다.

■ O ra c l e은 지정한 테이블스페이스에서 사용자 객체의 저장 영역으로 할당될 수 있

는 영역의 용량을 제한합니다.

기본적으로 사용자는 데이터베이스에 있는 테이블스페이스에 대해 할당량을 가지지않습니다. 사용자에게 스키마 객체를 생성할 수 있는 권한이 있다면 사용자가 객체를

사용자와 자원 관리 2 3 - 1 3

Oracle 사용자

생성할 수 있도록 할당량을 지정해야 합니다. 최소한 사용자에게 기본 테이블스페이스에 대한 할당량을 지정하고 사용자가 객체를 생성할 다른 테이블스페이스에 대해추가 할당량을 지정해야 합니다.

사용자에게 각 테이블스페이스에 있는 특정 크기의 디스크 영역에 대해 개별 할당량을 지정하거나 모든 테이블스페이스에 무제한 디스크 영역을 지정할 수 있습니다. 특정 할당량을 지정하면 데이터베이스에서 사용자 객체가 너무 많은 영역을 소비하는것을 방지합니다.

사용자를 생성할 때 사용자의 테이블스페이스 할당량을 지정하거나 나중에 할당량을추가 또는 변경할 수 있습니다. 새로 지정한 할당량이 이전보다 적으면 다음 조건을만족합니다.

■ 사용자가 이미 새로운 테이블스페이스 할당량을 초과했다면 테이블스페이스에 있

는 사용자 객체는 객체에 결합된 영역이 새 할당량 아래로 떨어질 때까지 더 많은

영역을 할당받을 수 없습니다.

■ 사용자가 새로운 테이블스페이스 할당량을 초과하지 않았다면 또는 테이블스페이

스에 있는 사용자의 객체가 사용한 영역이 새 할당량 보다 적다면 사용자 객체는

새 할당량에 도달할 때까지 영역을 할당받을 수 있습니다.

테이블스페이스 액세스 철회 사용자의 현재 할당량을 0으로 변경하여 사용자의 테이블스페이스 액세스를 철회할 수 있습니다. 할당량을 0으로 지정하면 철회된 테이블스페이스에 있는 사용자의 객체는 유지되지만 새로운 영역을 할당받을 수는 없습니다.

UNLIMITED TABLESPACE 시스템 권한 사용자에게 UNLIMITED TA B L E S -PACE 시스템 권한을 부여하면 사용자는 데이터베이스에서 크기를 제한하지 않고 테이블스페이스를 사용합니다. 이 시스템 권한은 사용자에게 주어진 명시적인 테이블스페이스 할당량을 무효화하며 후에 이 권한을 철회하면 명시적인 할당량이 다시 효력을 갖게 됩니다. 이 권한은 롤이 아닌 사용자에게만 부여할 수 있습니다.

UNLIMITED TA B L E S PACE 시스템 권한을 부여하기 전에 다음 사항을 고려하십시오.

장점

■ 하나의 명령문으로 데이터베이스의 모든 테이블스페이스에 대한 무제한 액세스 권

한을 사용자에게 부여할 수 있습니다.

단점

■ 권한은 사용자에 대한 명시적 테이블스페이스 할당량을 무효화합니다.

■ UNLIMITED TA B L E S PACE 권한이 있는 사용자로부터의 테이블스페이스 액세

스를 선택적으로 철회할 수 없습니다. 권한을 철회한 후 선택적으로 액세스를 부

여할 수 있습니다.

2 3 - 1 4 Oracle8i 관리자 설명서

Oracle 사용자

기본 롤 설정

C R E ATE USER 문에 사용자의 기본 롤을 설정할 수 없습니다. 처음 사용자를 생성할 때 사용자의 기본 롤 설정은 A L L이며 이것은 사용자에게 부여된 모든 롤을 기본롤로 설정합니다. 사용자의 기본 롤을 변경하려면 A LT E R USER 명령어를 사용합니다.

경고: (사용자 롤 이외의) 롤을 생성하면 롤은 암시적으로 부여되며 기본 롤처럼 추가됩니다. MAX_ENA B L E D _ RO L E S보다 많은 롤을 가지고 있다면 로그인 시 오류가 발생할 것입니다. MAX_ENA B L E D _RO L E S보다 적은 수의 롤을 갖도록 사용자의 기본 롤을 변경하여 오류발생을 피할 수 있습니다. 따라서 사용자 롤을 생성하기 전에 S YS와S YS T E M의 D E FAU LT ROLE 설정값을 변경해야 합니다.

사용자 변경

사용자는 자신의 암호를 변경할 수 있습니다. 그러나 사용자의 보안 도메인에 대한다른 옵션을 변경하려면 A LTER USER 시스템 권한이 있어야 합니다. 일반적으로보안 관리자는 A LTER USER 시스템 권한이 있는 유일한 사용자로 모든 사용자의보안 도메인을 변경할 수 있습니다. ALTER USER 권한은 수정 작업을 수행하는사용자가 특정 테이블스페이스에 대한 할당량을 가지지 않아도 데이터베이스에 있는모든 테이블스페이스에서 각 사용자에게 테이블스페이스 할당량을 설정할 수 있는 기능을 포함합니다.

SQL 문 A LTER USER를 사용하여 사용자의 보안 설정을 변경할 수 있습니다. 사용자의 보안 설정을 변경하면 현재 세션에는 영향을 주지 않고 사용자의 이후 세션에영향을 줍니다.

다음 명령문은 사용자 AV Y R RO S의 보안 설정을 변경합니다.

ALTER USER avyrrosIDENTIFIED EXTERNALLYDEFAULT TABLESPACE data_tsTEMPORARY TABLESPACE temp_tsQUOTA 100M ON data_tsQUOTA 0 ON test_tsPROFILE clerk;

A LTER USER 문은 AV Y R RO S의 보안 설정을 다음과 같이 변경합니다.

■ AV Y R RO S의 운영 체제 계정을 사용하여 인증을 변경합니다.

■ AV Y R RO S의 기본 테이블스페이스와 임시 테이블스페이스를 명시적으로 설정합

니다.

■ AV Y R RO S에 DATA_TS 테이블스페이스에대해 100M 할당량을 지정합니다.

사용자와 자원 관리 2 3 - 1 5

Oracle 사용자

■ T E S T _ T S에 대한 AV Y R RO S의 할당량을 철회합니다.

■ AV Y R RO S에 CLERK 프로파일을 지정합니다.

사용자의 인증 처리 기법 변경

D B A가 아닌 대부분의 사용자는 다음과 같이 A LTER USER 문으로 자신의 암호를변경할 수 있습니다.

ALTER USER andyIDENTIFIED BY swordfish;

사용자는 특별한 권한(데이터베이스에 접속할 수 있는 권한 외) 없이 이러한 방법으로 자신의 암호를 변경할 수 있습니다. 사용자의 암호는 자주 변경하는 것이 바람직합니다.

오라클 데이터베이스 인증과 외부 인증과 엔터프라이즈 인증 사이에서 전환하려면 사용자는 A LTER USER 권한이 있어야 합니다. 보통 D B A에게만 이 권한이 있습니다.

다중 바이트 문자 집합에서의 암호 다중 바이트 문자 집합을 사용하는 데이터베이스에서 암호는 단일 바이트 문자만을 포함합니다. 다중 바이트 문자는 암호로 인정하지않습니다.

참조: 올바른 암호에 대한 자세한 내용은 O racle8i SQL 참조서를 참조하십시오.

사용자의 기본 롤 변경

기본 롤은 사용자가 세션을 생성할 때 사용자에게 자동으로 활성화됩니다. 사용자에게 0 이상의 기본 롤을 지정할 수 있습니다.

참조: 사용자의 기본 롤 변경에 대한 자세한 내용은 2 4장“사용자 권한과 롤 관리”를참조하십시오.

사용자 삭제

사용자를 삭제할 때 사용자와 사용자에 관련된 스키마는 데이터 딕셔너리에서 제거되며 사용자의 스키마에 들어 있는 스키마 객체가 있다면 모두 즉시 삭제됩니다.

주: 사용자 스키마와 관련된 객체는 남아 있어야 하지만 데이터베이스에 대한 사용자 액세스를 취소해야 한다면 사용자로부터 C R E AT ESESSION 권한을 철회합니다.

2 3 - 1 6 Oracle8i 관리자 설명서

Oracle 사용자

현재 데이터베이스에 접속한 사용자를 삭제할 수는 없습니다. 접속한 사용자를 삭제하려면 SQL 문 A LTER SY S T E M에 KILL SESSION 절을 사용하여 사용자 세션을 먼저 종료해야 합니다.

사용자와 사용자의 스키마 객체를 모두 삭제하려면 D ROP USER 시스템 권한이 있어야 합니다. DROP USER 시스템권한은 강력하므로 일반적으로 보안 관리자는 이권한을 가질 수 있는 유일한 사용자 유형입니다.

SQL 문 D ROP USER를 사용하여 데이터베이스에서 사용자를 삭제할 수 있습니다.

사용자의 스키마에 스키마 객체가 있다면 CA S CADE 옵션을 사용하여 사용자와 관련된 객체 및 사용자의 테이블에 대한 외래 키를 삭제합니다. CA S CA D E를 지정하지 않고 사용자 스키마가 객체를 가지고 있다면 오류 메시지가 돌아오며 사용자는 삭제되지 않습니다. 객체를 포함하는 스키마를 가진 사용자를 삭제하기 전에 사용자 스키마가 포함하는 객체와 사용자가 삭제되기 전에 객체를 삭제하는 함축적 의미에 대해 철저히 조사해야 합니다. 또한 알려지지 않은 단계적 효과에 주의해야 합니다. 예를 들어, 테이블을 소유하는 사용자를 삭제하고자 하는 경우 해당 사용자의 특정 테이블에 의존하는 뷰나 프로시저가 있는지 확인합니다.

DROP USER jones CASCADE;

참조: 세션 종료에 대한 자세한 내용은 4-15 페이지“세션 종료”를 참조하십시오.

프로파일로 자원 관리

프로파일은 자원 제한의 명명된 집합입니다. 자원 제한을 설정하면 O ra c l e은 데이터베이스 사용법과 사용자의 프로파일에 정의된 인스턴스 자원을 제한합니다. 각 사용자에게 프로파일을 지정하고 특정 프로파일이 없는 사용자에게 기본 프로파일을 지정할 수 있습니다. 프로파일이 효력을 발휘하려면 자원 제한을 데이터베이스 전체에 설정해야 합니다.

이 단원에서는 프로파일 관리에 대해 설명하고 다음 내용을 다룹니다.

■ 프로파일 생성

■ 프로파일 지정

■ 프로파일 변경

■ 조합 한계 사용

■ 프로파일 삭제

■ 자원 제한 활성화 및 비활성화

사용자와 자원 관리 2 3 - 1 7

프로파일로 자원 관리

프로파일 생성

프로파일을 생성하려면 C R E ATE PROFILE 시스템권한이 있어야 합니다. SQL 문C R E ATE PRO F I L E을 사용하여 프로파일을 생성할 수 있습니다. 동시에 특정 자원제한을 명시적으로 설정할 수 있습니다.

다음 명령문은 프로파일 C L E R K을 생성합니다.

CREATE PROFILE clerk LIMITSESSIONS_PER_USER 2CPU_PER_SESSION unlimitedCPU_PER_CALL 6000LOGICAL_READS_PER_SESSION unlimitedLOGICAL_READS_PER_CALL 100IDLE_TIME 30CONNECT_TIME 480;

새로운 프로파일에 대해 지정되지 않는 자원 제한은 D E FAU LT 프로파일에서 설정한한계로 설정됩니다. 또한 D E FAU LT 프로파일에 대해 제한을 지정할 수 있습니다.

D E FA U LT 프로파일 사용

각 데이터베이스에는 D E FAU LT 프로파일이 있으며 제한은 다음과 같은 두 가지 경

우에 사용합니다.

■ 명시적으로 지정된 프로파일이 없는 사용자는 D E FAU LT 프로파일에 설정한 모

든 한계를 따릅니다.

■ 프로파일에 지정되지 않은 한계는 D E FAU LT 프로파일의 해당 한계를 사용합니

다.

처음에 D E FAU LT 프로파일의 모든 한계는 U N L I M I T E D로 설정됩니다. 그러나 보

안 관리자는 D E FAU LT 프로파일 사용자가 자원을 무제한으로 사용하는 것을 방지하

기 위해 A LTER PROFILE 문을사용하여 기본 한계를 변경해야 합니다.

ALTER PROFILE default LIMIT. . . ;

A LTER PROFILE 시스템 권한이 있는 사용자는 D E FAU LT 프로파일에 있는 한계

를 조정할 수 있습니다. DEFAU LT 프로파일은 삭제할 수 없습니다.

프로파일 지정

프로파일을 생성한 다음 데이터베이스 사용자에게 프로파일을 지정할 수 있습니다.

각 사용자에게는 주어진 시간에 하나의 프로파일만이 지정될 수 있습니다. 이미 프로

파일을 가지고 있는 사용자에게 프로파일을 지정하면 새 프로파일 지정이 기존 프로

2 3 - 1 8 Oracle8i 관리자 설명서

프로파일로 자원 관리

파일을 무효화합니다. 프로파일 지정은 현재 세션에 영향을 주지 않습니다. 프로파일

은 사용자에게만 지정할 수 있으며 롤이나 다른 프로파일에는 부여할 수 없습니다.

SQL 명령어 C R E ATE USER 또는 A LTER USER를 사용하여 사용자에게 프로파

일을 지정할 수 있습니다.

참조: 사용자에게 프로파일을 지정하는데 대한 자세한 내용은 23-11 페이지의“사용

자 생성”과 23-15 페이지의“사용자변경”을 참조하십시오.

프로파일 변경

SQL 문 A LTER PRO F I L E을 사용하여 프로파일의 자원 제한 설정값을 변경할 수

있습니다. 프로파일을 변경하려면 A LTER PROFILE 시스템권한이 있어야 합니다.

조정한 프로파일의 한계는 이전에 설정한 프로파일 한계를 무효화합니다. 한계를

D E FAU LT 값으로 조정하면 자원 제한은 데이터베이스에 대한 기본 한계 집합으로

되돌아갈 수 있습니다. 프로파일을 변경할 때 조정하지 않은 모든 프로파일은 이전

설정값을 유지합니다. 프로파일을 변경해도 현재 세션에 영향을 주지 않습니다. 새로

설정한 프로파일은 프로파일을 수정한 다음에 생성된 세션에만 적용됩니다.

다음 명령문은 CLERK 프로파일을 변경합니다.

ALTER PROFILE clerk LIMITCPU_PER_CALL defaultLOGICAL_READS_PER_SESSION 20000;

참조: 기본 프로파일에 대한 내용은 23-18 페이지“D E FAU LT 프로파일 사용”을 참조하십시오.

조합 한계 사용

조합 한계를 통해 한 세션에 대한 전체 자원 비용을 제한할 수 있습니다. 프로파일에대해 특정 자원 제한을 명시적으로 설정할 뿐 아니라 프로파일의 모든 자원 제한을책임질 단일 조합 한계를 설정할 수 있습니다. SQL 문 C R E ATE PROFILE 또는A LTER PRO F I L E의 COMPOSITE_LIMIT 매개변수를 사용하여 프로파일의 조합한계를 설정할 수 있습니다. 조합 한계는 사용된 모든 자원의 가중 합인 서비스 단위를 통해 설정됩니다.

다음 C R E ATE PROFILE 문은 COMPOSITE_LIMIT 매개변수를사용하여 정의됩니다.

CREATE PROFILE clerk LIMITCOMPOSITE_LIMIT 20000SESSIONS_PER_USER 2CPU_PER_CALL 1000;

사용자와 자원 관리 2 3 - 1 9

프로파일로 자원 관리

명시적 자원 제한과 조합 한계가 한 프로파일에 대해 동시에 있을 수 있습니다. 처음도달된 한계가 세션에서 작동을 중단합니다. 조합 한계를 사용하면 시스템 자원 사용을 제한하는데 더 유연합니다.

조합 한계값 결정

정확한 조합 한계는 평균 프로파일 사용자가 사용하는 자원의 총량에 따라 다릅니다.각 자원에 대해 특정 한계를 설정한 경우 일반적인 프로파일 사용자를 위한 조합 자원 사용의 일반적인 범위를 결정하려면 사용 내역 정보를 수집해야 합니다.

참조: 조합 한계를 계산하는 방법에 대한 내용은 O racle8i SQL 참조서를참조하십시오.

자원 비용 설정

각 시스템은 시스템만의 특성을 가집니다. 일부 시스템 자원이 다른 것보다 더 유용할 수 있습니다. Ora c l e은 데이터베이스 관리자가 각 시스템 자원의 비용을 설정하도록 합니다. 비용은 데이터베이스 레벨에서 각 시스템 자원의 가중치입니다. 비용은프로파일의 조합 한계에만 적용됩니다. 비용은 개별 자원 제한을 명시적으로 설정하는데는 적용되지 않습니다.

자원비용을 설정하려면 A LTER RESOURCE 시스템권한이 있어야 합니다.

CPU_PER_SESSION, LOGICAL_READS_PER_SESSION, CONNECT_T I M E, PRIVAT E _ S GA 같은 자원에만 비용을 설정합니다. SQL 명령어 A LT E RR E S O U RCE COST를 사용하여 데이터베이스 비용을 설정합니다.

ALTER RESOURCE COSTCPU_PER_SESSION 1LOGICAL_READS_PER_SESSION 50;

비용이 크다는 것은 해당 자원이 매우 비싸다는 것을 의미하며 반면에 적은 비용은해당 자원이 비싸지 않다는 것을 의미합니다. 기본적으로 각 자원은 초기 비용을 0으로 설정합니다. 비용 0은 해당 자원을 조합 한계에서 고려하지 말아야 함을 의미합니다. (즉, 해당 자원을 사용할 때 비용을 지불하지 않습니다.) 어떤 자원이든 비용을N U L L로 줄 수는 없습니다.

참조: 자원 비용 설정에 대한 추가 정보와 권장 사항은 사용자 운영 체제별 오라클 설명서와 O racle8i SQL 참조서를 참조하십시오.

2 3 - 2 0 Oracle8i 관리자 설명서

프로파일로 자원 관리

프로파일 삭제

프로파일을 삭제하려면 D ROP PROFILE 시스템 권한이 있어야 합니다. SQL 문D ROP PRO F I L E을 사용하여 프로파일을 삭제할 수 있습니다. 현재 사용자에게 지정되어 있는 프로파일을 삭제하려면 CA S CADE 옵션을 사용합니다.

다음 명령문은 프로파일 C L E R K이 사용자에게 지정되어 있어도 프로파일을 삭제합니다.

DROP PROFILE clerk CASCADE;

삭제된 프로파일이 지정된 사용자에게는 자동으로 D E FAU LT 프로파일이 지정됩니다. DEFAU LT 프로파일은 삭제될 수 없습니다. 프로파일을 삭제해도 삭제 작업은현재 사용 중인 세션에는 영향을 주지 않습니다. 프로파일을 삭제한 다음 생성된 세션만 수정된 프로파일 지정을 따릅니다.

자원 제한 활성화 및 비활성화

인증된 데이터베이스 사용자는 항상 프로파일을 생성하고 사용자에게 지정하며 변경하거나 삭제할 수 있습니다. 그러나 프로파일에 대한 자원 제한 설정은 연관된 데이터베이스에 대해 자원 제한을 설정했을 때만 강제로 수행됩니다. 자원 제한 강제 수행은 다음 두 단원에서 설명하는 두 가지 방법을 사용하여 활성화하거나 비활성화할수 있습니다.

데이터베이스가 열려 있는 동안 자원 제한 강제 수행을 변경하려면 A LT E RSYSTEM 시스템 권한이 있어야 합니다.

데이터베이스 시작 전에 자원 제한 활성화 및 비활성화

데이터베이스를 일시적으로 종료할 수 있다면 데이터베이스 매개변수 파일의 초기화매개변수 R E S O U RC E _ L I M I T을 사용하여 자원 제한을 활성화하거나 비활성화할 수있습니다. 이 매개변수에 유효한 값은 T RU E (활성화)와 FA L S E (비활성화)입니다.기본적으로 이 매개변수 값은 FA L S E로 설정됩니다. 매개변수 파일을 편집하면 데이터베이스 인스턴스를 재시작해야 편집한 내용이 반영됩니다. 인스턴스를 시작할 때마다 새 매개변수 값은 자원 제한 강제 수행을 활성화하거나 비활성화합니다.

데이터베이스가 열려 있는 동안 자원 제한 활성화 및 비활성화

데이터베이스를 일시적으로 종료할 수 없거나 자원 제한 기능을 일시적으로 변경해야한다면 SQL 명령어 A LTER SY S T E M을 사용하여 자원 제한 강제 수행을 활성화하거나 비활성화할 수 있습니다. 인스턴스가 시작되면 A LTER SYSTEM 문은R E S O -

사용자와 자원 관리 2 3 - 2 1

프로파일로 자원 관리

U RCE_LIMIT 매개변수로 설정한 값을 무효화합니다. 예를 들어, 다음 명령문은 데이터베이스의 자원 제한 강제 수행을 활성화합니다.

ALTER SYSTEMSET RESOURCE_LIMIT = TRUE;

주: 이것은 암호 자원에 적용되지 않습니다.

A LTER SYSTEM 문은 자원 제한 강제 수행을 영구적으로 결정하지는 않습니다.데이터베이스를 종료하고 재시작하면 자원 제한 강제 수행은 R E S O U RC E _ L I M I T매개변수에 설정된 값에 의해 결정됩니다.

데이터베이스 사용자와 프로파일 정보 나열

데이터 딕셔너리는 다음과 같은 모든 사용자와 프로파일에 대한 정보를 저장합니다.

■ 데이터베이스의 모든 사용자

■ 테이블, 클러스터, 인덱스에 대한 각 사용자의 기본 테이블스페이스

■ 임시 세그먼트에 대한 각 사용자의 테이블스페이스

■ 각 사용자의 영역 할당량

■ 각 사용자에게 지정된 프로파일과 자원 제한

■ 사용할 수 있는 시스템 자원에 할당된 비용

■ 각 현재 세션의 메모리 사용

다음은 데이터베이스 사용자와 프로파일에 대한 데이터 딕셔너리 뷰입니다.

■ A L L _ U S E R S

■ U S E R _ U S E R S

■ D B A _ U S E R S

■ U S E R _ T S _ Q U O TA S

■ D B A _ T S _ Q U O TA S

■ U S E R _ PA S S W O R D _ L I M I T S

■ U S E R _ R E S O U RC E _ L I M I T S

2 3 - 2 2 Oracle8i 관리자 설명서

데이터베이스 사용자와 프로파일 정보 나열

■ D B A _ P RO F I L E S

■ R E S O U RC E _ C O S T

■ V $S E S S I O N

■ V $S E S S TAT

■ V $S TAT NA M E

참조: 각 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

사용자와 프로파일 정보 나열: 예

이 단원의 예에서는 데이터베이스에서 다음 명령문이 실행되었다고 가정합시다.

CREATE PROFILE clerk LIMITSESSSIONS_PER_USER 1IDLE_TIME 30CONNECT_TIME 600;

CREATE USER jfeeIDENTIFIED BY wildcatDEFAULT TABLESPACE usersTEMPORARY TABLESPACE temp_tsQUOTA 500K ON usersPROFILE clerk;

CREATE USER dcranneyIDENTIFIED BY bedrockDEFAULT TABLESPACE usersTEMPORARY TABLESPACE temp_tsQUOTA unlimited ON users;

CREATE USER userscottIDENTIFIED BY “scott1”PASSWORD_LIFETIME 60PASSWORD_GRACE_TIME 10;

모든 사용자와 관련 정보 나열

다음 질의는 데이터베이스에 정의된 사용자와 그들과 연관된 정보를 나열합니다.

SELECT username, profile, account_status from dba_users;USERNAME PROFILE ACCOUNT_STATUS--------------- --------------- --------------- SYS DEFAULT OPEN

사용자와 자원 관리 2 3 - 2 3

데이터베이스 사용자와 프로파일 정보 나열

SYSTEM DEFAULT OPENBLAKE DEFAULT OPENSCOTT DEFAULT OPENADAMS DEFAULT OPENJFEE CLERK OPENDCRANNEY DERAULT OPENJONES DEFAULT OPENCLARK DEFAULT OPENUSERSCOTT DEFAULT LOCKED

모든 암호는 보안 유지를 위해 암호화됩니다.

모든 테이블스페이스 할당량 나열

다음 질의는 각 사용자에게 특별히 지정된 모든 테이블스페이스 할당량을 나열합니다.

SELECT * FROM sys.dba_ts_quotas;TABLESPACE USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS---------- --------- -------- ---------- ------- ----------SYSTEM SYSTEM 0 0 0 0USER JFEE 0 512000 0 250USER DCRANNEY 0 -1 0 -1

특정 할당량을 지정하면 M A X _ BYTES 열에 정확한 숫자가 나타납니다. 무제한 할당량은“- 1”로 표시됩니다.

모든 프로파일과 지정된 한계 나열

다음 질의는 데이터베이스에 있는 모든 프로파일과 각 프로파일에 지정된 한계 설정을 나열합니다.

SELECT * FROM sys.dba_profiles ORDER BY profile;

PROFILE RESOURCE_NAME RESOURCE LIMIT---------- ------------------------ ---------- ----------DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITEDDEFAULT SESSIONS_PER_USER KERNEL 1DEFAULT CPU_PER_CALL KERNEL UNLIMITEDDEFAULT LOGICAL_READS_PER_CALL KERNEL 30DEFAULT CONNECT_TIME KERNEL 600DEFAULT IDLE_TIME KERNEL UNLIMITEDDEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITEDDEFAULT CPU_PER_SESSION KERNEL UNLIMITEDDEFAULT PRIVATE_SGA KERNEL UNLIMITEDDEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITEDDEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED

2 3 - 2 4 Oracle8i 관리자 설명서

데이터베이스 사용자와 프로파일 정보 나열

DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD UNLIMITEDDEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITEDPROF COMPOSITE_LIMIT KERNEL DEFAULTPROF PRIVATE_SGA KERNEL DEFAULTPROF CONNECT_TIME KERNEL DEFAULTPROF IDLE_TIME KERNEL DEFAULTPROF LOGICAL_READS_PER_CALL KERNEL DEFAULTPROF LOGICAL_READS_PER_SESSION KERNEL DEFAULTPROF SESSIONS_PER_USER KERNEL DEFAULTPROF CPU_PER_CALL KERNEL DEFAULTPROF CPU_PER_SESSION KERNEL DEFAULTPROF FAILED_LOGIN_ATTEMPTS PASSWORD 5PROF PASSWORD_LIFE_TIME PASSWORD 60PROF PASSWORD_REUSE_MAX PASSWORD UNLIMITEDPROF PASSWORD_LOCK_TIME PASSWORD 1PROF PASSWORD_GRACE_TIME PASSWORD 10PROF PASSWORD_VERIFY_FUNCTION PASSWORD UNLIMITEDPROF PASSWORD_REUSE_TIME PASSWORD 6032 rows selected.

사용자 세션별 메모리 사용 보기

다음 질의는 모든 현재 세션을 나열하고 세션당 O racle 사용자와 현재 메모리 사용을보여줍니다.

SELECT username, value || ‘bytes‘ “Current session memory“FROM v$session sess, v$sesstat stat, v$statname name

WHERE sess.sid = stat.sidAND stat.statistic# = name.statistic#AND name.name = ‘SESSION_MEMORY‘;

“C u r rent session memory”에 나타난 영역의 양은 다중 스레드 서버로 접속한 각세션에 대한 공유 풀에 할당됩니다. PRIVAT E _ S GA 자원 제한으로 각 사용자에게할당되는 메모리 양을 제한할 수 있습니다.

인스턴스를 시작한 후 각 세션에 할당할 수 있는 최대 메모리 크기를 보려면 위 질의의‘session memory’를‘max session memory’로 바꿉니다.

사용자와 자원 관리 2 3 - 2 5

데이터베이스 사용자와 프로파일 정보 나열

예제

이 단원에는 이 장에서 설명한 함수 사용 예가 있습니다.

1. 다음 명령문은 p rof 프로파일을 생성합니다.

CREATE PROFILE prof limitFAILED_LOGIN_ATTEMPTS 5PASSWORD_LIFE_TIME 60PASSWORD_REUSE_MAX 60PASSWORD_REUSE_TIME UNLIMITEDPASSWORD_VERIFY_FUNCTION verify_functionPASSWORD_LOCK_TIME 1PASSWORD_GRACE_TIME 10;

2 . 다음 명령문은 p rof 프로파일에서 사용자명과 동일한 암호를 가진 사용자를 생성합니다.

CREATE USER userscott IDENTIFIED BY userscott PROFILE prof;ORA-28003: Password verification for the specified password failedORA-20001: Password same as user

3. 다음 명령문은 p rof 프로파일에서“s c o t t 1 %”에 의해 식별되는 사용자 u s e rs c o t t을 생성합니다

CREATE USER userscott IDENTIFIED BY “ s c o t t %“ PROFILE prof;

4 . 다음 명령문은 사용자의 암호를“s c o t t %”로 다시 변경하고 오류를 돌려줍니다.

ALTER USER userscott IDENTIFIED BY “scott%“;ORA-28007: The password cannot be reused

5. 다음 명령문은 사용자 계정을 잠급니다.

ALTER USER userscott ACCOUNT LOCK;

6. 다음 명령문은 사용자 계정 상태를 확인합니다.

SELECT username, user_id, account_status, lock_dateFROM dba_users

WHERE username=‘USERSCOTT‘;

7 . 다음 명령문은 암호의 기간을 종료합니다.

ALTER USER userscott PASSWORD EXPIRE;

8 . 다음 명령문은 사용자 계정 상태를 확인합니다.

2 3 - 2 6 Oracle8i 관리자 설명서

예제

SELECT username, user_id, account_status, expiry_dateFROM dba_usersWHERE username=‘USERSCOTT‘;

9 . 다음 명령문은 사용자에 대한 잠금을 해제합니다.

ALTER USER userscott ACCOUNT UNLOCK;

1 0 . 다음 명령문은 사용자 계정 상태를 확인합니다.

SELECT username, user_id, account_status, expiry_dateFROM dba_usersWHERE username=‘USERSCOTT‘;

사용자와 자원 관리 2 3 - 2 7

예제

2 3 - 2 8 Oracle8i 관리자 설명서

예제

24사용자 권한과 롤 관리

이 장에서는 시스템 작업을 실행하는 능력 제어 방법 및 권한과 롤을 사용하여 스키마 객체를 액세스하는 방법을 설명하며 다음 내용을 다룹니다.

■ 사용자 권한 식별

■ 사용자 롤 관리

■ 사용자 권한과 롤 부여

■ 사용자 권한과 롤 철회

■ 운영 체제나 네트워크를 사용한 롤 부여

■ 권한과 롤 정보 나열

참조: 데이터베이스 액세스 제어에 대한 내용은 2 3장을 참조하십시오.

일반적인 데이터베이스 보안 정책에 대한 제안 사항은 2 2장을 참조하십시오.

사용자 권한과 롤 관리 2 4 - 1

사용자 권한 식별

이 단원에서는 O racle 사용자 권한에 대해 설명하며 다음 내용을 다룹니다.

■ 시스템 권한

■ 객체 권한

사용자 권한은 특정 유형의 SQL 문을 실행하거나 다른 사용자 객체를 액세스할 수있는 권리입니다. Ora c l e은 보통 함께 부여되거나 철회되는 권한을 그룹으로 묶어 그룹에 대한 단축키를 제공합니다.

시스템 권한

서로 다른 1 0 0가지의 시스템 권한이 있습니다. 각 시스템 권한을 사용하여 사용자가특정 데이터베이스 작업이나 데이터베이스 작업의 클래스를 수행하도록 합니다.

보안을 위해 시스템 권한은 사용자가 데이터 딕셔너리에 액세스하는 것을 허용하지않습니다. 따라서 U P DATE ANY TA B L E, SELECT ANY TA B L E, CREAT EANY INDEX와 같은 ANY 권한을 가진 사용자는 딕셔너리 테이블과 P U B L I C에부여되지 않은 뷰를 액세스할 수 없습니다.

경고: 시스템 권한은 강력한 권한이 될 수 있으므로 롤과 데이터베이스사용자를 선별하여 신중하게 권한을 부여해야 합니다. ANY 권한을 가진 사용자는 데이터 딕셔너리를 액세스할 수 없습니다.

참조: 시스템 권한에 대한 자세한 목록 및 설명은 O racle8i SQL 참조서를 참조하십시오.

시스템 권한 제한 사항

딕셔너리 보호 처리 기법은 권한이 없는 사용자가 딕셔너리 객체를 액세스하지 못하도록 합니다.

딕셔너리 객체를 액세스할 수 있는 사용자는 SY S D B A와 SY S O P E R만으로 제한되어 있습니다. 다른 스키마의 객체를 액세스할 수 있도록 하는 시스템 권한이 있다 해도 딕셔너리 객체를 액세스할 수는 없습니다. 예를 들어, SELECT ANY TA B L E권한이 있으면 다른 스키마의 뷰와 테이블을 액세스할 수 있지만 동적 성능 뷰의 기본 테이블, 뷰, 패키지, 동의어와같은 딕셔너리 객체를 조회할 수는 없습니다.

또한 SQL*Plus 명령어 connect SYS/password로 접속하고자 하면 실패하게 됩니다. 그러나 다음의 두 SQL*Plus 명령어는 올바릅니다.

2 4 - 2 Oracle8i 관리자 설명서

사용자 권한 식별

connect SYS/password as SYSDBAconnect SYS/password as SYSOPER

자주 사용되는 딕셔너리 객체 액세스

명시적 객체 권한을 가진 사용자와 SY S D B A는 딕셔너리 객체를 액세스할 수 있습니다. 그러나 딕셔너리 객체를 액세스해야 하지만 명시적 객체 권한이 없는 경우 다음롤을 부여받을 수 있습니다.

■ S E L E C T _ CATA L O G _ RO L E

사용자는 이 롤에 부여된 모든 엑스포트된 카탈로그 뷰와 테이블을 S E L E C T할 수있습니다. 데이터 딕셔너리의 모든 엑스포트된 뷰와 테이블을 액세스해야 하는 사용자에게 이 롤을 부여합니다.

■ E X E C U T E _ CATA L O G _ RO L E

딕셔너리의 엑스포트된 패키지에 대한 EXECUTE 권한을 제공합니다.

■ D E L E T E _ CATA L O G _ RO L E

사용자는 AUD $테이블에서 레코드를 삭제할 수 있습니다.

이러한 롤은 데이터베이스 관리자가 딕셔너리 보안을 유지 관리하면서 딕셔너리의 특정 객체를 액세스할 수 있도록 합니다.

주: SY S D B A는 딕셔너리의 엑스포트되지 않은 객체에 대한 객체 권한을 사용자에게 부여하면 안됩니다. 부여하면 데이터베이스의 무결성이손상될 수 있습니다.

참조: 엑스포트된 테이블이나 뷰에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

객체 권한

각 유형의 객체는 해당 객체와 연관된 서로 다른 권한을 가집니다. 객체 및 관련 권한에 대한 자세한 목록은 O racle8i SQL 참조서를참조하십시오.

객체 권한 단축키

ALL 및 ALL PRIVILEGES 단축키는객체에 대해 사용할 수 있는 모든 객체 권한을 부여하거나 철회할 수 있습니다. 이 단축키는 권한이라기 보다는 GRANT 및R E VOKE 문에서 한 단어로 모든 객체 권한을 부여하거나 철회하는 방법입니다. 모

사용자 권한과 롤 관리 2 4 - 3

사용자 권한 식별

든 객체 권한을 ALL 단축키를 사용하여 부여해도 각 권한별로 철회할 수 있습니다.

또한 개별적으로 부여한 권한은 모두 ALL 단축키를 사용하여 한번에 철회할 수 있습니다. 그러나 R E VOKE ALL을 실행할 때 (철회한 REFERENCES 권한에 의해 무결성 제약 조건이 결정되므로) 철회 작업에 의해 무결성 제약 조건도 함께 삭제될 경우 R E VOKE 문에 CA S CADE CONSTRAINTS 옵션을사용합니다.

사용자 롤 관리

이 단원에서는 롤 관리를 설명하며 다음 내용을 다룹니다.

■ 롤 생성

■ 미리 정의된 롤

롤은 여러 가지 권한과 롤의 그룹으로 사용자에게 동시에 부여되고 철회될 수 있습니다. 롤은 각 사용자별로 활성화 여부를 결정할 수 있습니다.

참조: 롤에 대한 내용은 O racle8i 개념 설명서를 참조하십시오.

롤 생성

SQL 문 C R E ATE RO L E을 사용하여 롤을 생성할 수 있습니다.

롤을 생성하려면 C R E ATE ROLE 시스템 권한이 있어야 합니다. 일반적으로 보안관리자만이 이 시스템 권한을 가집니다.

주: 롤을 생성한 즉시 롤이 롤에 관련된 시스템 권한을 가지는 것은 아닙니다. 새로운 롤과 권한을 연결하려면 새로운 롤에 권한 또는 다른롤을 부여해야 합니다.

다음 문은 BICENTENNIAL 암호를 사용하여 데이터베이스에 의해 인증된C L E R K이라는 롤을 생성합니다.

CREATE ROLE clerkIDENTIFIED BY bicentennial;

롤 이름

롤을 생성할 때 롤에 데이터베이스의 기존 사용자명이나 롤 이름과 구분되는 고유한이름을 지정해야 합니다. 롤은 모든 사용자의 스키마에 있지 않습니다.

2 4 - 4 Oracle8i 관리자 설명서

사용자 롤 관리

다중 바이트 문자 집합에서의 롤 이름

다중 바이트 문자 집합을 사용하는 데이터베이스에 대해 오라클사에서는 각 롤의 이름에 적어도 하나의 단일 바이트 문자를 포함하도록 권장합니다. 롤 이름에 다중 바이트 문자만을 사용하면 보안 처리된 롤 이름이나 보안 처리된 암호 조합으로는 보안유지가 상당히 어렵습니다.

미리 정의된 롤

표 2 4 - 1에 나열된 롤은 오라클 데이터베이스에서 자동으로 정의됩니다. 이 롤은 이전O racle 버전과 역방향 호환성을 제공합니다. 이러한 미리 정의된 롤에 사용자가 정의한 롤에 수행하는 것과 마찬가지로 권한과 롤을 부여하거나 철회할 수 있습니다.

표 24-1 미리 정의된 롤

사용자 권한과 롤 관리 2 4 - 5

사용자 롤 관리

C O N N E C T1

ALTER SESSION, CR EATE CLUSTER, CR EA T E

DATABASE LINK, CR EATE SEQUENCE, CR EA T E

SESSION, CR EATE SYNONYM, CREATE TABLE,

CREATE VIEW

CR EATE TYP E7

C REATE TYP E, EXECUTE, EXECUTE ANY

T Y P E

R ES O UR C E1 , 2

C R EATE CLUSTER, C R EATE INDEXTYPE, C RE A T E

OP ERATOR, CR EATE P RO C E D UR E, C R EA T E

SEQUENCE, C R EATE TABLE, CR EATE TRIGGER,

CREATE TYP E

D B A1 , 3 , 4

WITH ADMIN OPTION이있는 모든 시스템 권한

E X P _ F U L L _ D A T A B A S E5

SELECT ANY TABLE, BACKUP ANY TABLE,

I N SE RT, DELETE, AND UPDATE ON THE TABLES

SYS.INCVID, SYS.INCFIL, AND SYS.INCEXP

I M P _ F U L L _ D A T A B A S E5

BECOME USER

D E L E T E _ C A T A L O G _ R O L E6

이 롤에 대한 모든 딕셔너리 패키지의 DELETE 권한

E X E C U T E _ C A T A L O G _ R O L E6

이 롤에 대한 모든 딕셔너리 패키지의 EXECUTE 권한

S E L E C T _ C A T A L O G _ R O L E6

이 롤에 대한 모든 카탈로그 테이블 및 뷰의 S E L E C T

권한

롤 이름 롤에 부여된 권한

표 24-1 미리 정의된 롤 (계속)

롤 인증

사용자가 롤을 활성하고자 할 때 데이터베이스 롤은 선택적으로 인증을 요구할 수 있습니다. 롤 인증은 암호를 사용한 데이터베이스, 운영 체제, 네트워크 서비스에 의해유지 관리될 수 있습니다.

롤 인증 방법을 변경하려면 A LTER ANY ROLE 시스템 권한이 있거나 A D M I NO P T I O N을 가진 롤을 부여받아야 합니다.

참조: 네트워크 롤에 대한 자세한 내용은 O racle8i Distributed Database Syste-m s를 참조하십시오.

2 4 - 6 Oracle8i 관리자 설명서

사용자 롤 관리

1SQL.BSQ에 의해 생성됩니다. 역방향 호환성 지원. 사용을 권장하지 않습니다.

2RESOURCE 롤을 부여받은 사용자는 UNLIMITED TABLESPACE 시스템 권한도 명시적으로 부

여받습니다. (UNLIMITED TABLESPACE 시스템 권한은 RESOURCE 롤의 일부가 아닙니다. )

역방향 호환성 지원. 사용을권장하지않습니다.3DBA 롤을 부여받은 사용자는 ADMIN OPTION과 함께 UNLIMITED TABLESPACE 시스템

권한도 명시적으로 부여받습니다. (ADMIN OPTION과 함께 사용하는 U N L I M I T E D

T A B L E S P A C E 시스템 권한은 D B A 롤의 일부가 아닙니다.) 따라서 DBA 롤을 철회하면

UNLIMITED TABLESPACE 권한도 철회되어야 합니다.4C A T E X P . S Q L을 실행하면 E X P _ F U L L _ D A T A B A S E와 IMP_FULL_DATABASE 롤도포함합니다.

5CATEXP.SQL에 의해 생성됩니다.

6이러한 롤은 DBA 롤이 없지만 데이터 딕셔너리의 뷰와 테이블을 액세스해야 하는 사용자에게 부

여되어야 합니다.7Oracle 객체 옵션이 데이터베이스 서버에 설치된 경우에만 CREATE TYPE 명령어를 사용할 수

있습니다.8C A T . S Q L에 의해 생성됩니다.

9C A T Q U E U E . S Q L에 의해 생성됩니다.

10고급 대기열 처리 옵션이 있는 경우에만 부여됩니다.

11Inteligent Agents 옵션이있는 경우에만 부여됩니다.

롤 이름 롤에 부여된 권한

R E C O V E R Y _ C A T A L O G _ O W N E R8

DROP ROLE

RECOVERY_CATALOG_OWNER, CREATE

ROLE RECOVERY_CATALOG_OWNER

CREATE TRIGGER, CREATE PROCEDURE

TO RECOVERY_CATALOG_OWNER

H S _ A D M I N _ R O L E9

H S _ E X T E R N A L _ O B J E C T ,

H S _ E X T E R N A L _ U S E R

A Q _ U S E R _ R O L E10

A Q _ A D M I N I S T R A T O R _ R O L E10

S N M P A G E N T11

데이터베이스에 의한 롤 인증

롤 사용은 관련된 암호로 보호할 수 있습니다. 암호를 사용하여 보호되는 롤을 부여받으면 SET ROLE 문에 해당 롤에 대한 적합한 암호를 주어 롤을 활성화하거나 비활성화할 수 있습니다.

주: 다중 바이트 문자 집합을 사용하는 데이터베이스에서 롤에 대한 암호는 단일 바이트 문자만을 포함해야 합니다. 다중 바이트 문자는 암호에서 받아들이지 않습니다.

참조: 올바른 암호에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

운영 체제에 의한 롤 인증

다음 명령문은 AC C T S _ R E C라는 롤을 생성하고 운영 체제가 롤 사용을 인증합니다.

CREATE ROLE role IDENTIFIED EXTERNALLY;

운영 체제를 사용한 롤 인증은 운영 체제가 운영 체제 권한과 응용 프로그램을 동적으로 링크할 수 있을 때만 유용합니다. 사용자가 응용 프로그램을 시작할 때 운영 체제는 사용자에게 운영 체제 시스템 권한을 부여합니다. 부여된 운영 체제 권한은 해당 응용 프로그램과 관련된 롤에 대응하며 응용 프로그램은 응용프로그램 롤을 활성화합니다. 응용 프로그램을 종료할 때 이전에 부여된 운영 체제 권한은 사용자 운영체제 계정에서 철회됩니다.

운영 체제가 롤을 인증하면 운영 체제 레벨에서 각 사용자에 대한 정보를 구성해야합니다. 이 작업은 운영 체제마다 다릅니다.

운영 체제가 롤을 부여하면 운영 체제가 롤을 인증하지 않아도 됩니다. 이 작업은 중복됩니다.

참조: 운영 체제가 부여하는 롤에 대한 자세한 내용은 24-16 페이지“운영 체제나 네트워크를 사용한 롤 부여”를 참조하십시오.

롤 인증과 네트워크 클라이언트

사용자가 N e t 8으로 데이터베이스에 접속했다면 기본적으로 운영 체제는 사용자의 롤을 인증할 수 없습니다. 이것은 이 접속이 N e t 8을 필요로 하는 것처럼 다중 스레드

사용자 권한과 롤 관리 2 4 - 7

사용자 롤 관리

서버를 통한 접속을 포함합니다. 원격 사용자는 네트워크 접속으로 다른 운영 체제사용자를 가장할 수 있으므로 이 제한은 기본입니다.

보안 위험을 생각하지 않고 네트워크 클라이언트에 대해 운영 체제 롤 인증을 사용하려면 데이터베이스 매개변수 파일에서 매개변수 R E M O T E _ O S _ RO L E S를 T RUE 로 설정합니다. 이러한 변경 사항을 반영하려면 인스턴스를 재시작하고 데이터베이스를 마운트해야 합니다. (이 매개변수의 기본값은 FA L S E입니다. )

인증 보류

인증 없이 롤을 생성할 수도 있습니다. 보안 없이 롤을 생성하면 롤을 부여받은 모든사용자가 롤의 활성화 여부를 결정할 수 있습니다.

롤의 인증 방법 변경

SQL 문 A LTER RO L E을 사용하여 롤의 인증 방법을 설정하거나 변경할 수 있습니다.

다음 명령문은 CLERK 롤을 외부에서 인증받도록 변경합니다.

ALTER ROLE clerkIDENTIFIED EXTERNALLY;

사용자의 기본 롤 변경

사용자의 기본 롤 목록은 SQL 문 A LTER USER를 사용하여 설정하거나 변경할 수있습니다.

참조: 이러한 옵션에 대한 자세한 내용은 23-15 페이지“사용자 변경”을 참조하십시오.

MAX_ENABLED_ROLES 매개변수 사용 사용자는 초기화 매개변수 M A X _E NA B L E D _ RO L E S에 지정된 수만큼의 롤을 활성화할 수 있습니다. 기본 롤을 활성화함으로써 간접적으로 부여되는 모든 롤도 이 값에 포함됩니다. 데이터베이스 관리자는 매개변수 값을 수정하여 이러한 제한 사항을 변경할 수 있습니다. 매개변수 값이 크면 각 사용자 세션은 동시에 활성화된 롤을 더 많이 가질 수 있습니다. 그러나매개변수 값이 크면 클수록 각 사용자 세션에 대해 더 큰 메모리 영역이 필요합니다.이것은 P GA 크기가 각 사용자 세션에 대해 영향을 받으며 롤마다 4 바이트씩 필요하기 때문입니다. 한 사용자가 동시에 활성화할 수 있는 롤의 최대 수를 결정한 후 이값을 M A X _ E NA B L E D _ ROLES 매개변수에 지정합니다.

롤 삭제

어떤 경우에는 데이터베이스에서 롤을 삭제해야 합니다. 삭제된 롤을 부여 받은 모든사용자와 롤의 보안 도메인은 삭제된 롤 권한이 없음을 반영하기 위해 즉시 변경됩니

2 4 - 8 Oracle8i 관리자 설명서

사용자 롤 관리

다. 삭제된 롤에 간접적으로 부여된 모든 롤도 영향을 받는 보안 도메인으로부터 제거되어야 합니다. 롤을 삭제하면 모든 사용자의 기본 롤 목록에서 롤을 자동으로 제거합니다.

객체 생성은 롤을 통해 받은 권한에 종속적이지 않으므로 롤 삭제 시 테이블과 다른객체들은 삭제되지 않습니다.

롤을 삭제하려면 D ROP ANY ROLE 시스템 권한이나 ADMIN OPTION을 포함하는 롤을 부여받아야 합니다.

SQL 문 D ROP RO L E을 사용하여 롤을 삭제할 수 있습니다.

다음 명령문은 CLERK 롤을 삭제합니다.

DROP ROLE clerk;

사용자 권한과 롤 부여

이 단원에서는 권한 및 롤 부여를 설명하며 다음 내용을 다룹니다.

■ 시스템 권한과 롤 부여

■ 객체 권한과 롤 부여

■ 열에 권한 부여

시스템 권한과 롤 부여

SQL 문 G R A N T를 사용하여 시스템 권한과 롤을 다른 사용자나 롤에 부여할 수 있습니다.

시스템 권한이나 롤을 부여하려면 부여할 모든 시스템 권한과 롤에 대해 A D M I NO P T I O N을 가지고 있어야 합니다. 또한 GRANT ANY ROLE 시스템 권한이 있는 사용자는 데이터베이스에 있는 모든 롤을 부여할 수 있습니다.

다음 명령문은 사용자 J WA R D에게 시스템 권한과 AC C T S _ PAY 롤을 부여합니다.

GRANT create session, accts_payTO jward;

사용자 권한과 롤 관리 2 4 - 9

사용자 권한과 롤 부여

주: 동일한 GRANT 문에서 시스템 권한 및 롤을 객체 권한과 함께부여할 수 없습니다.

ADMIN 옵션

사용자가 롤을 생성할 때 롤은 자동으로 ADMIN OPTION이 있는 생성자에게 부여됩니다. ADMIN 옵션이 있는 권한을 부여받은 사용자는 다음과 같은 확장된 기능을가집니다.

■ 권한을 부여받은 사용자는 데이터베이스의 사용자나 다른 롤에 시스템 권한 또는롤을 부여하거나 철회할 수 있습니다. (사용자는 자기 자신으로부터는 롤을 철회할 수 없습니다. )

■ 권한을 부여받은 사용자는 또한 ADMIN OPTION으로 시스템 권한이나 롤을 부여할 수 있습니다.

■ 롤의 권한을 부여받은 사용자는 롤을 변경하거나 삭제할 수 있습니다.

다음 명령문은 보안 관리자가 M I C H A E L에게 NEW_DBA 롤을부여합니다.

GRANT new_dba TO michael WITH ADMIN OPTION;

사용자 M I C H A E L은 NEW_DBA 롤에 내포되어 있는 모든 권한뿐만 아니라 필요시 NEW_DBA 롤을 부여, 철회 또는 삭제할 수 있습니다. 이러한 강력한 기능 때문에 ADMIN OPTION으로 시스템 권한과 롤을 부여할 때 주의해야 합니다. 이러한권한은 일반적으로 보안 관리자에게 있으며 다른 관리자나 시스템의 다른 사용자에게는 거의 부여되지 않습니다.

객체 권한과 롤 부여

SQL 명령어G R A N T를 사용하여 롤과 사용자에게 객체 권한을 부여할 수 있습니다.

객체 권한을 부여하려면 다음 조건 중 하나를 만족해야 합니다.

■ 사용자가 지정된 객체를 소유하고 있는 경우

■ 사용자가 GRANT OPTION으로객체 권한을 부여받은 경우

다음 명령문은 EMP 테이블의 모든 열에 대한 S E L E C T, INSERT, DELETE 객체권한을 사용자 J F E E와 T S M I T H에게 부여합니다.

2 4 - 1 0 Oracle8i 관리자 설명서

사용자 권한과 롤 부여

GRANT select, insert, delete ON emp TO jfee, tsmith;

사용자 J F E E와 T S M I T H에게 EMP 테이블의 E NA M E과 JOB 열에 대해서만I N S E RT 객체 권한을 부여하려면 다음 명령문을 수행합니다.

GRANT insert(ename, job) ON emp TO jfee, tsmith;

사용자 J F E E에게 SA L A RY 뷰에 대해 모든 객체 권한을 부여하려면 다음 예처럼ALL 단축키를 사용합니다.

GRANT ALL ON salary TO jfee;

주: 동일한 GRANT 문에서는 시스템 권한 및 롤을 객체 권한과 함께부여할 수 없습니다.

GRANT OPTION

스키마에 객체를 포함하는 사용자는 모든 연관된 객체 권한을 GRANT OPTION과함께 자동으로 부여받습니다. 이러한 특별한 권한은 권한을 부여받은 사용자에게 다음과 같은 확장된 권한을 허용합니다.

■ 권한을 부여받은 사용자는 GRANT OPTION이 없어도 다른 사용자에게 객체 권한을 부여할 수 있습니다.

■ 권한을 부여받은 사용자가 GRANT OPTION으로 테이블에 대해 객체 권한을 받았고 권한을 부여받은 사용자가 C R E ATE VIEW나 C R E ATE ANY VIEW 시스템 권한을 가지고 있다면 권한을 부여받은 사용자는 테이블에 뷰를 생성할 수있으며 뷰의 해당 권한을 데이터베이스의 다른 사용자나 롤에 부여할 수 있습니다.

GRANT OPTION은 롤에 객체 권한을 부여할 때는 사용할 수 없습니다. Ora c l e은롤을 부여받은 사용자가 롤을 통해 받은 객체 권한을 전달할 수 없도록 롤을 통한 객체 권한 전달을 막습니다.

사용자 권한과 롤 관리 2 4 - 1 1

사용자 권한과 롤 부여

열에 권한 부여

테이블의 각 열에 I N S E RT, UPDATE 또는 REFERENCES 권한을 부여할 수 있습니다.

경고: 열에 I NS E RT 권한을 부여하기 전에 테이블이 NOT NULL 제약 조건을 정의한 열을 포함하고 있는지 확인합니다. NOT NULL 열에 대한 삽입 권한을 포함하지 않는 선택적 삽입 기능을 부여한다면 사용자는 테이블에 어떤 행도 삽입할 수 없습니다. 이러한 상황을 방지하려면 각 NOT NULL 열을 삽입 가능하게 하거나 N U L L이 아닌 기본값을 가지도록 합니다. 그렇지 않으면 권한을 부여받은 사용자는 테이블에 행을 삽입할 수 없으며 오류를 받게 됩니다.

S C O T T에게 ACCOUNTS 테이블의 ACCT_NO 열에 대한 I N S E RT 권한을 부여합니다.

GRANT INSERT (acct_no)ON accounts TO scott;

사용자 권한과 롤 철회

이 단원에서는 사용자 권한과 롤을 철회하는 기능과 다음 내용을 다룹니다.

■ 시스템 권한과 롤 철회

■ 객체 권한과 롤 철회

시스템 권한과 롤 철회

SQL 문R E VO K E를 사용하여 시스템 권한이나 롤을철회할 수 있습니다.

시스템 권한이나 롤에 대해 ADMIN OPTION을 가진 사용자는 다른 데이터베이스사용자나 롤로부터 권한이나 롤을 철회할 수 있습니다. 권한 부여자가 원래의 권한이나 롤을 부여한 사용자일 필요는 없습니다. 또한 GRANT ANY RO L E을 가진 사용자는 어떤 롤도 철회할 수 있습니다.

다음 명령문은 T S M I T H로부터 C R E ATE TABLE 시스템 권한과 ACCTS_REC 롤을 철회합니다.

REVOKE create table, accts_rec FROM tsmith;

2 4 - 1 2 Oracle8i 관리자 설명서

사용자 권한과 롤 철회

주: 시스템 권한이나 롤에 대해 ADMIN OPTION을 선택적으로 철회할 수는 없습니다. 권한과 롤을 철회한 후 ADMIN OPTION 없이 권한과 롤을 다시 부여해야 합니다.

객체 권한과 롤 철회

SQL 명령어 R E VO K E를 사용하여 객체 권한을 철회할 수 있습니다.

객체 권한을 철회하려면 철회자는 철회할 객체 권한을 맨 처음 부여한 사용자여야 합니다.

예를 들어, 최초 부여자가 사용자 J F E E와 T S M I T H로부터 EMP 테이블의 S E L E -C T, INSERT 권한을 철회하는 명령문은 다음과 같습니다.

REVOKE select, insert ON empFROM jfee, tsmith;

다음 명령문은 DEPT 테이블에서 H U M A N _ R E S O U RCE 롤에 처음 부여된 모든권한을 철회합니다.

REVOKE ALL ON dept FROM human_resources;

주: 위의 명령문은 권한 부여자가 허용한 권한만을 철회합니다. 즉, 다른 사용자가 부여한 권한은 철회할 수 없습니다. 객체 권한에 대해GRANT OPTION만을 선택하여 철회할 수는 없습니다. 객체 권한을철회한 후 GRANT OPTION 없이 다시 부여해야 합니다. 사용자 자신의 객체 권한은 철회할 수 없습니다.

열에 대한 객체 권한 철회

사용자는 테이블과 뷰에 대한 I N S E RT, UPDAT E, REFERENCES 권한을 특정열에 선택하여 부여할 수 있지만 유사한 R E VOKE 문으로 열에서 특정 권한만을 철회할 수는 없습니다. 대신 권한 부여자는 먼저 테이블이나 뷰의 모든 열에 대한 객체권한을 철회하고 남아 있어야 하는 특정 권한을 선택하여 열에 다시 부여해야 합니다.

예를 들어, DEPT 테이블의 D E P T N O와 D NAME 열에 대한 U P DATE 권한을H U M A N _ R E S O U RCES 롤에 부여했다고 합시다.

사용자 권한과 롤 관리 2 4 - 1 3

사용자 권한과 롤 철회

DEPTNO 열에 대한 U P DATE 권한만을 철회하려면 다음 두 명령문을 실행합니다.

REVOKE UPDATE ON dept FROM human_resources;GRANT UPDATE (dname) ON dept TO human_resources;

R E VOKE 문은 H U M A N _ R E S O U RCES 롤로부터 DEPT 테이블의 모든 열에 대한 U P DATE 권한을 철회합니다. GRANT 문은 H U M A N _ R E S O U RCES 롤에D NAME 열에 대한 U P DATE 권한을 다시 부여합니다.

REFERENCES 객체 권한 철회

REFERENCES 객체 권한을 부여받은 사용자가 외래 키 제약 조건(현재 있다면)을생성하는 권한을 사용한 경우 권한 부여자는 R E VOKE 문에 CA S CA D ECONSTRAINTS 옵션을지정해야 권한을 철회할 수 있습니다.

REVOKE REFERENCES ON dept FROM jward CASCADE CONSTRAINTS;

현재 철회된 REFERENCES 권한을 사용하여 정의된 외래 키 제약 조건은 CA S -CADE CONSTRAINTS 옵션을지정해야 삭제될 수 있습니다.

권한 철회 효력

권한 유형에 따라 권한을 철회할 때 단계적인 효과가 나타날 수 있습니다.

시스템 권한

DDL 작업과 관련된 시스템 권한을 철회할 때는 해당 권한이 ADMIN OPTION으로 부여되는가에 관계없이 단계적인 효과를 가지지 않습니다. 예를 들어, 다음과 같은 상황을 생각해 봅시다.

1 . 보안 관리자는 J F E E에게 C R E ATE TABLE 시스템 권한을 ADMIN OPTI-O N과 함께 부여합니다.

2 . J F E E가 테이블을 생성합니다.

3 . J F E E가 T S M I T H에게 C R E ATE TABLE 시스템권한을 부여합니다.

4 . T S M I T H가 테이블을 생성합니다.

5 . 보안 관리자가 J F E E로부터 C R E ATE TABLE 시스템권한을 철회합니다.

6 . J F E E의 테이블은 존재합니다. TSMITH는 테이블과 C R E ATRE TABLE 시스템 권한을 계속 가집니다.

2 4 - 1 4 Oracle8i 관리자 설명서

사용자 권한과 롤 철회

단계적인 효과는 DML 작업과 관련된 시스템 권한을 철회할 때 관찰될 수 있습니다.예를 들어, 사용자에게 SELECT ANY TABLE 권한을 부여했으며 그 사용자가 프로시저를 생성했다면 사용자의 스키마에 있는 모든 프로시저는 재사용 전에 권한을다시 부여해야 합니다.

객체 권한

객체 권한 철회는 단계적인 효과를 발생할 수 있으므로 R E VOKE 문을 실행하기 전에 나타날 효과를 자세히 조사해야 합니다.

■ DML 객체 권한과 관련된 객체 권한은 DML 객체 권한을 철회할 때 영향을 받습니다. 예를 들어, TEST라는 프로시저 본문에 EMP 테이블에서 데이터를 질의하는 SQL 문을 포함한다고 합시다. EMP 테이블에 대한 SELECT 권한이 T E S T프로시저 소유자로부터 철회되면 해당 프로시저는 더 이상 실행될 수 없습니다.

■ A LTER 및 INDEX 객체 권한을 철회해도 A LT E R와 INDEX DDL 객체 권한이 필요한 객체 정의는 영향을 받지 않습니다. 예를 들어, 다른 사용자 테이블에대해 인덱스를 생성한 사용자로부터 INDEX 권한을 철회해도 인덱스는 남아 있습니다.

■ 사용자로부터 테이블에 대한 REFERENCES 권한을 철회할 때 삭제된REFERENCES 권한을 필요로 하는 모든 외래 키 무결성 제약 조건은 자동으로삭제됩니다. 예를 들어, 사용자 J WA R D에게 DEPT 테이블의 DEPTNO 열에대한 REFERENCES 권한이 부여되고 DEPTNO 열을 참조하는 EMP 테이블의DEPTNO 열에 대해 외래 키를 생성합니다. DEPT 테이블의DEPTNO 열에 대한 REFERENCES 권한이 철회되면 EMP 테이블의 DEPTNO 열의 외래 키 제약 조건은 REFERENCES 권한을철회하는 동시에 삭제됩니다.

■ GRANT OPTION을 사용하여 전달된 객체 권한은 권한 부여자의 객체 권한이철회되면 함께 철회됩니다. 예를 들어, USER1이 GRANT OPTION으로SELECT 객체 권한을 부여받고 EMP 테이블에 대한 SELECT 권한을 U S E R 2에게 부여했다고 합시다. 이후에 U S E R 1으로부터 SELECT 권한을 철회하면U S E R 2의 권한도 함께 철회됩니다. USER1과 U S E R 2의 철회된 SELECT 권한과 관련된 모든 객체는 앞에서 설명한 것처럼 영향을 받습니다.

사용자 그룹 P U B L I C에 대한 권한 부여 및 철회

사용자 그룹 P U B L I C에 권한 또는 롤을 부여하거나 철회할 수 있습니다. PUBLIC은 모든 데이터베이스 사용자가 액세스할 수 있으므로 P U B L I C에 부여된 권한과 롤은 모든 데이터베이스 사용자가 액세스할 수 있습니다.

사용자 권한과 롤 관리 2 4 - 1 5

사용자 권한과 롤 철회

모든 데이터베이스 사용자가 특정 권한과 롤을 필요로 한다면 보안 관리자와 데이터베이스 사용자는 해당 권한이나 롤을 P U B L I C에 부여할 수 있습니다. 각 데이터베이스 사용자는 해당 그룹의 현재 작업을 수행하는데 필요한 권한만을 가져야 합니다.

P U B L I C에서 권한을 철회하면 중요한 전달 효과를 발생시킬 수 있습니다. PUBLIC으로부터 SELECT ANY TA B L E, UPDATE ON emp 같은DML 작업과 관련된권한을 철회하면 함수와 패키지를 포함하여 데이터베이스에 있는 모든 프로시저는 재사용되기 전에 권한을 다시 부여해야 합니다. 따라서 P U B L I C에 D M L과 관련된 권한을 부여할 때 신중하게 생각해야 합니다.

참조: 객체 종속성에 대한 자세한 내용은 20-23 페이지“객체 종속성 관리”를 참조하십시오.

권한 부여와 철회가 효력을 발생하는 시기

부여하고 철회한 권한에 따라 권한 부여 및 철회는 서로 다른 시기에 효력을 발생합니다.

■ 사용자, 롤 또는 P U B L I C에 시스템 권한과 객체 권한을 부여하거나 철회하면 즉시 효력을 발생합니다.

■ 사용자, 롤 또는 P U B L I C에 롤을 부여하거나 철회하면 현재 사용자 세션이 롤을부여하거나 철회한 다음 해당 롤을 활성화하기 위해 SET ROLE 문을 실행했을때 또는 롤을 철회하거나 부여한 후 새로운 사용자 세션을 생성한 경우에 효력을발생합니다.

운영 체제나 네트워크를 사용한 롤 부여

이 단원에서는 운영 체제나 네트워크를 통해 롤을 부여하는 방법과 다음 내용을 다룹니다.

■ 운영 체제 롤 식별 사용

■ 운영 체제 롤 관리 사용

■ O S _ RO L E S = T RU E일 때 롤 부여 및 철회

■ O S _ RO L E S = T RU E일 때 롤 활성화 및 비활성화

■ 운영 체제 롤 관리로 네트워크 접속 사용

보안 관리자가 사용자에게 GRANT 및 R E VOKE 문을 사용하여 데이터베이스 롤을명확하게 부여하거나 철회하는 대신 O ra c l e을 운영하는 운영 체제가 접속할 때 사용자에게 롤을 부여할 수 있습니다. 운영 체제를 사용하여 롤을 관리하고 사용자가 세

2 4 - 1 6 Oracle8i 관리자 설명서

운영 체제나 네트워크를 사용한 롤 부여

션을 생성할 때 롤을 O ra l c e에 전달합니다. 이러한 방법 중 한 부분에서 각 사용자의기본 롤과 ADMIN OPTION으로 사용자에게 부여된 롤을 식별할 수 있습니다. 사용자에게 롤에 대한 권한을 부여하기 위해 운영 체제를 사용해도 모든 롤은 데이터베이스 내에서 생성되어야 하고 롤에 GRANT 문을 사용하여 권한을 지정해야 합니다.

네트워크 서비스를 통해 롤을 부여할 수도 있습니다. 네트워크 롤에 대한 내용은O racle8i Distributed Database Systems를참조하십시오.

사용자의 데이터베이스 롤을 식별하기 위해 운영 체제를 사용할 때의 장점은 오라클데이터베이스에 대한 권한 관리를 외부화할 수 있다는 것입니다. 운영 체제에 의해제공되는 보안 기능을 사용하여 사용자의 권한을 제어합니다. 이러한 옵션은 수많은시스템 작업에 대한 보안을 중앙 집중화하는 장점을 제공합니다. 예를 들어, MVSO racle 관리자는 데이터베이스 사용자의 롤을 식별하기 위해 R ACF 그룹을 필요로하고 UNIX Oracle 관리자는 UNIX 그룹을 필요로 할 수 있으며 VMS Oracle 관리자는 데이터베이스 사용자의 롤을 식별하기 위해 권한 식별자를 사용할 수 있습니다.

사용자의 데이터베이스 롤을 식별하기 위해 운영 체제를 사용할 때의 최대 단점은 롤레벨에서만 권한 관리를 수행할 수 있다는 것입니다. 운영 체제를 사용하여 각 권한을 부여할 수는 없으나 GRANT 문을 사용하면 데이터베이스 내에서 권한을 부여할수 있습니다.

이러한 기능 사용의 두 번째 단점은 운영 체제가 롤을 관리하면 기본적으로 사용자가다중 스레드 서버나 다른 네트워크 접속을 통해 데이터베이스에 액세스할 수 없다는 것입니다. 그러나 이러한 기본 사항은 변경될 수 있습니다. 24-19 페이지“운영체제 롤 관리로 네트워크 접속 사용”을 참조하십시오.

참조: 이 단원에서 설명한 기능은 일부 운영 체제에서만 사용할 수 있습니다. 이러한기능은 운영 체제마다 다릅니다. 사용자 운영 체제별 오라클 설명서를 참조하십시오.

운영 체제 롤 식별 사용

세션을 생성할 때 운영 체제를 사용하여 각 사용자의 데이터베이스 롤을 식별하도록데이터베이스를 작동하려면 초기화 매개변수 O S _ RO L E S를 T RU E로 설정합니다.(현재 작동 중이면 인스턴스를 재시작합니다.) 사용자가 데이터베이스로 세션을 생성하려고 하면 O ra c l e은 운영 체제가 식별한 데이터베이스 롤을 사용하여 사용자의 보안 도메인을 초기화합니다.

사용자에 대한 데이터베이스 롤을 식별하려면 각 O racle 사용자의 운영 체제 계정은사용자가 사용할 수 있는 데이터베이스 롤을 표시하는 운영 체제 식별자(그룹, 권한

사용자 권한과 롤 관리 2 4 - 1 7

운영 체제나 네트워크를 사용한 롤 부여

식별자 등 다른 유사한 이름으로 불림)가 있어야 합니다. 롤 사양은 사용자의 기본 롤과 ADMIN OPTION을 가질 수 있는 롤을 표시할 수 있습니다. 사용하는 운영 체제에 관계없이 운영 체제 레벨에서의 롤 사양은 다음 형식을 따릅니다.

ORA_<ID>_<ROLE>[_[D][A]]where:

I D

ID 정의는 운영 체제마다 다릅니다. 예를 들어, VMS에서 I D는 데이터베이스의 인스턴스 식별자입니다. MVS에서 I D는 시스템 유형입니다. UNIX에서 I D는 시스템I D입니다.

D

이 선택 문자는 이 롤이 데이터베이스 사용자의 기본 롤임을 나타냅니다.

A

이 선택 문자는 이 롤이 ADMIN OPTION으로 사용자에게 부여한 롤임을 나타냅니다. 이 문자를 사용하면 사용자는 다른 롤에만 이 롤을 부여할 수 있습니다. (롤을 관리하기 위해 운영 체제를 사용하는 경우 사용자에게 롤을 부여할 수 없습니다. )

주: D 또는 A 문자를 지정하면 앞에 밑줄을 붙여야 합니다.

예를 들어, 운영 체제 계정은 프로파일에 다음과 같이 식별된 롤을 가집니다.

ORA_PAYROLL_ROLE1ORA_PAYROLL_ROLE2_AORA_PAYROLL_ROLE3_DORA_PAYROLL_ROLE4_DA

해당 사용자가 O ra c l e의 PAY ROLL 인스턴스에 접속하면 RO L E 3과 RO L E 4는 기본 롤이며 RO L E 2와 RO L E 4는 ADMIN OPTION을 사용할 수 있습니다.

운영 체제 롤 관리 사용

운영 체제가 롤을 관리할 때 데이터베이스 롤이 운영 체제 사용자에게 부여된다는 것에 유의하십시오. OS 사용자가 접속할 수 있는 모든 데이터베이스 사용자에게는 인증된 데이터베이스 롤이 활성화되어 있을 것입니다. 이런 이유로 O S _ RO L E S = T R -

2 4 - 1 8 Oracle8i 관리자 설명서

운영 체제나 네트워크를 사용한 롤 부여

U E로 설정하면 모든 O racle 사용자를 IDENTIFIED EXTERNA L LY로 정의해야하며 그 결과 데이터베이스 계정은 권한을 부여받은 OS 계정과 관련됩니다.

O S _ R O L E S = T R U E일 때 롤 부여 및 철회

O S _ RO L E S를 T RU E로 설정하면 운영 체제는 사용자에게 롤을 부여하고 철회하는것을 완전히 관리합니다. GRANT 문을 통해 사용자에게 이전에 부여한 롤은 적용되지 않습니다. 그러나 데이터 딕셔너리에는 계속 남아 있습니다. 운영 체제 레벨에서사용자에게 부여한 롤만이 적용됩니다. 사용자는 롤과 사용자에게 권한을 부여할 수있습니다.

주: 운영 체제가 ADMIN OPTION으로 사용자에게 롤을 부여하면 사용자는 다른 롤에만 해당 롤을 부여할 수 있습니다.

O S _ R O L E S = T R U E일 때 롤 활성화 및 비활성화

O S _ RO L E S를 T RU E로 설정하면 운영 체제가 부여한 롤은 SET ROLE 명령어를사용하여 동적으로 활성화될 수 있습니다. 롤이 암호나 운영 체제 권한 부여를 필요로 하도록 정의되었다면 그대로 적용됩니다. 그러나 O S _ ROLES = FA L S E일 때GRANT 문을 사용하여 롤을 부여해도 사용자 운영 체제 계정에서 식별되지 않은 롤은 SET ROLE 문에서 지정될 수 없습니다. (사용자가 롤을 지정하면 O ra c l e은 이를 무시합니다. )

O S _ ROLES = TRU E면 사용자는 매개변수 M A X _ E NA B L E D _ RO L E S에 지정한수만큼의 롤을 활성화할 수 있습니다.

운영 체제 롤 관리로 네트워크 접속 사용

운영 체제가 롤을 관리하면 기본적으로 사용자는 다중 스레드 서버를 통해 데이터베이스에 접속할 수 없습니다. 이 제한은 원격 사용자가 비보안 접속을 통해 다른 운영체제 사용자를 가장할 수 없도록 하기 위해 기본으로 지정되었습니다.

이와 같은 보안 상의 위험을 초래하지 않고 다중 스레드 서버나 다른 네트워크 접속으로 운영 체제 롤 관리를 사용하려면 데이터베이스 매개변수 파일의 매개변수R E M O T E _ O S _ RO L E S를 T RU E로 설정합니다. 이렇게 변경한 후 인스턴스를 재시작하고 데이터베이스를 마운트하면 효력이 발생합니다. (이 매개변수의 기본값은 F -A L S E입니다. )

사용자 권한과 롤 관리 2 4 - 1 9

운영 체제나 네트워크를 사용한 롤 부여

권한과 롤 정보 나열

객체에 대해 부여된 권한을 나열하려면 사용자는 다음 데이터 딕셔너리 뷰를 질의합니다.

■ A L L _ C O L _ P R I VS, USER_COL_PRIVS, DBA_COL_PRIVS

■ A L L _ C O L _ P R I VS _ M A D E, USER_COL_PRIVS _ M A D E

■ A L L _ C O L _ P R I VS _ R E C D, USER_COL_PRIVS _ R E C D

■ A L L _ TA B _ P R I VS, USER_TA B _ P R I VS, DBA_TA B _ P R I VS

■ A L L _ TA B _ P R I VS _ M A D E, USER_TA B _ P R I VS _ M A D E

■ A L L _ TA B _ P R I VS _ R E C D, USER_TA B _ P R I VS _ R E C D

■ D B A _ RO L E S

■ U S E R _ RO L E _ P R I VS, DBA_RO L E _ P R I VS

■ U S E R _ SY S _ P R I VS, DBA_SY S _ P R I VS

■ C O L U M N _ P R I V I L E G E S

■ RO L E _ RO L E _ P R I VS, RO L E _ SY S _ P R I VS, RO L E _ TA B _ P R I VS

■ S E S S I O N _ P R I VS, SESSION_RO L E S

참조: 데이터 딕셔너리 뷰에 대한 자세한 설명은 O racle8i Refe re n c e를 참조하십시오.

권한과 롤 정보 나열: 예

다음 예제에서는 다음 명령문을 실행했다고 합시다.

CREATE ROLE security_admin IDENTIFIED BY honcho;

GRANT create profile, alter profile, drop profile,create role, drop any role, grant any role, audit any,audit system, create user, become user, alter user, drop userTO security_admin WITH ADMIN OPTION;

GRANT SELECT, DELETE ON sys.aud$ TO security_admin;

GRANT security_admin, create session TO swilliams;

GRANT security_admin TO system_administrator;

GRANT create session TO jward;

2 4 - 2 0 Oracle8i 관리자 설명서

권한과 롤 정보 나열

GRANT SELECT, DELETE ON emp TO jward;

GRANT INSERT (ename, job) ON emp TO swilliams, jward;

부여된 모든 시스템 권한 나열

다음 질의는 롤과 사용자에게 부여된 모든 시스템 권한을 나열합니다.

SELECT * FROM sys.dba_sys_privs;

GRANTEE PRIVILEGE ADM------------------ -------------------------------------- ---SECURITY_ADMIN ALTER PROFILE YESSECURITY_ADMIN ALTER USER YESSECURITY_ADMIN AUDIT ANY YESSECURITY_ADMIN AUDIT SYSTEM YESSECURITY_ADMIN BECOME USER YESSECURITY_ADMIN CREATE PROFILE YESSECURITY_ADMIN CREATE ROLE YESSECURITY_ADMIN CREATE USER YESSECURITY_ADMIN DROP ANY ROLE YESSECURITY_ADMIN DROP PROFILE YESSECURITY_ADMIN DROP USER YESSECURITY_ADMIN GRANT ANY ROLE YESSWILLIAMS CREATE SESSION NOJWARD CREATE SESSION NO

부여된 모든 롤 나열

다음 질의는 사용자와 다른 롤에 부여된 모든 롤 목록을 돌려줍니다.

SELECT * FROM sys.dba_role_privs;

GRANTEE GRANTED_ROLE ADM------------------ --------------------------------------- ---SWILLIAMS SECURITY_ADMIN NO

사용자에게 부여된 객체 권한 나열

다음 질의는 지정된 사용자에게 부여된 모든 객체 권한(열에 관련된 권한은 포함되지않음)을 돌려줍니다.

SELECT table_name, privilege, grantable FROM sys.dba_tab_privsWHERE grantee= ‘JWARD‘;

TABLE_NAME PRIVILEGE GRANTABLE------------ ------------ ----------- EMP SELECT NO

사용자 권한과 롤 관리 2 4 - 2 1

권한과 롤 정보 나열

EMP DELETE NO

열에 관련하여 부여된 모든 권한 목록을 보려면 다음 질의를 사용합니다.

SELECT grantee, table_name, column_name, privilegeFROM sys.dba_col_privs;

GRANTEE TABLE_NAME COLUMN_NAME PRIVILEGE------------- ------------- ------------------- --------------SWILLIAMS EMP ENAME INSERTSWILLIAMS EMP JOB INSERTJWARD EMP NAME INSERTJWARD EMP JOB INSERT

2 4 - 2 2 Oracle8i 관리자 설명서

권한과 롤 정보 나열

사용자 세션의 현재 권한 도메인 나열

다음 질의는 질의를 실행하는 사용자에게 현재 활성화되어 있는 모든 롤을 나열합니다.

SELECT * FROM session_roles;

S W I L L I A M S가 활성화된 SECURITY_ADMIN 롤을 가지고 위의 질의를 실행하면O ra c l e은 다음 정보를 돌려줍니다.

ROLE--------------------------- SECURITY_ADMIN

다음 질의는 질의를 실행하는 사용자의 보안 도메인에서 현재 사용할 수 있는 모든시스템 권한을 나열합니다.

SELECT * FROM session_privs;

S W I L L I A M S가 활성화된 SECURITY_ADMIN 롤을 가지고 위의 질의를 실행하면O ra c l e은 다음 결과를 돌려줍니다.

PRIVILEGE----------------------------------------AUDIT SYSTEMCREATE SESSIONCREATE USERBECOME USERALTER USERDROP USERCREATE ROLEDROP ANY ROLEGRANT ANY ROLEAUDIT ANYCREATE PROFILEALTER PROFILEDROP PROFILE

S W I L L I A M S에 대해 SECURITY_ADMIN 롤을 비활성화하면 첫 번째 질의에는돌아오는 행이 없습니다. 두 번째 질의는 C R E ATE SESSION 권한에 대해 한 행만을 돌려줍니다.

데이터베이스의 롤 나열

D B A _ ROLES 데이터 딕셔너리 뷰는 데이터베이스의 모든 롤과 각 롤에 대해 사용된인증을 나열합니다. 예를 들어, 다음 질의는 데이터베이스의 모든 롤을 나열합니다.

SELECT * FROM sys.dba_roles;

사용자 권한과 롤 관리 2 4 - 2 3

권한과 롤 정보 나열

ROLE PASSWORD----------------------- --------CONNECT NORESOURCE NODBA NOSECURITY_ADMIN YES

롤의 권한 도메인 정보 나열

RO L E _ RO L E _ P R I VS, RO L E _ SY S _ P R I VS와 RO L E _ TA B _ P R I VS 데이터 딕셔너리 뷰는 롤의 권한 도메인 정보를 가집니다.

예를들어, 다음질의는 SYSTEM_ADMIN 롤에부여된모든롤을나열합니다.

SELECT granted_role, admin_optionFROM role_role_privsWHERE role = ‘SYSTEM_ADMIN‘;

GRANTED_ROLE ADM------------------------------ ---SECURITY_ADMIN NO

다음 질의는 SECURITY_ADMIN 롤에 부여된 모든 시스템 권한을 나열합니다.

SELECT * FROM role_sys_privs WHERE role = ‘SECURITY_ADMIN‘;

ROLE PRIVILEGE ADM------------------------- -------------------------------- ---SECURITY_ADMIN ALTER PROFILE YESSECURITY_ADMIN ALTER USER YESSECURITY_ADMIN AUDIT ANY YESSECURITY_ADMIN AUDIT SYSTEM YESSECURITY_ADMIN BECOME USER YESSECURITY_ADMIN CREATE PROFILE YESSECURITY_ADMIN CREATE ROLE YESSECURITY_ADMIN CREATE USER YESSECURITY_ADMIN DROP ANY ROLE YESSECURITY_ADMIN DROP PROFILE YESSECURITY_ADMIN DROP USER YESSECURITY_ADMIN GRANT ANY ROLE YES

2 4 - 2 4 Oracle8i 관리자 설명서

권한과 롤 정보 나열

다음질의는 SECURITY_ADMIN 롤에부여된 모든객체권한을 나열합니다.

SELECT table_name, privilege FROM role_tab_privsWHERE role = ‘SECURITY_ADMIN‘;

TABLE_NAME PRIVILEGE----------------------- -----------------AUD$ DELETEAUD$ SELECT

사용자 권한과 롤 관리 2 4 - 2 5

권한과 롤 정보 나열

2 4 - 2 6 Oracle8i 관리자 설명서

권한과 롤 정보 나열

25데이터베이스 사용 감사

이 장에서는 O racle 감사 기능 사용 방법과 다음 내용을 다룹니다.

■ 감사에 대한 지침 사항

■ 데이터베이스 감사 트레일 뷰 생성 및 삭제

■ 감사 트레일 정보 관리

■ 데이터베이스 감사 트레일 정보 보기

■ 데이터베이스 트리거를 사용한 감사 작업

데이터베이스 사용 감사 2 5 - 1

감사에 대한 지침 사항

이 단원에서는 감사 작업에 대한 지침 사항을 설명하며 다음 내용을 다룹니다.

■ 데이터베이스 또는 운영 체제를 통한 감사

■ 감사 정보 관리

데이터베이스 또는 운영 체제를 통한 감사

모든 데이터베이스의 데이터 딕셔너리는 SY S. AUD $라는 테이블을 가지며 이 테이블을 보통 데이터베이스 감사 트레일이라고 합니다.

데이터베이스나 운영 체제 감사 트레일은 명령문, 권한 또는 객체 감사 결과로 발생하는 모든 감사 레코드를 저장할 수 있습니다.

사용자 운영 체제는 운영 체제 감사 트레일에 데이터베이스 감사를 지원하거나 또는지원하지 않을 수 있습니다. 이 옵션을 사용할 수 있다면 데이터베이스 감사 레코드저장에 데이터베이스 또는 운영 체제의 감사 기능을 사용할 때의 장단점을 고려해야합니다.

데이터베이스 감사 트레일을 사용하면 다음과 같은 장점이 있습니다.

■ 데이터 딕셔너리에 정의되어 있는 감사 트레일 뷰로 감사 트레일의 일부분을 선택

하여 볼 수 있습니다.

■ O racle Reports와 같은 O racle 도구를 사용하여 감사 보고서를 만들 수 있습니

다.

데이터베이스 감사 트레일 대신 사용자 운영 체제 감사 트레일을 사용하면 사용자는O ra c l e과 다른 응용 프로그램에 대한 감사 레코드 외에도 여러 가지 소스에 대한 감사 레코드를 통합할 수 있습니다. 모든 감사 레코드를 통합하여 한 곳에 저장하므로시스템 작업 검사가 더욱 효율적일 수 있습니다.

참조: 운영 체제는 운영 체제 감사 기능에 의해 생성되는 감사 레코드를 저장하는 감사 트레일을 가질 수 있습니다. 그러나 이 기능은 사용자 운영 체제마다 다릅니다.사용자 운영 체제별 오라클 설명서를 참조하십시오.

감사 정보 관리

감사 작업은 상대적으로 비용이 저렴하지만 될 수 있는 대로 감사 이벤트 수를 제한해야 합니다. 이것은 감사되어야 할 명령문을 실행할 때 성능에 미치는 영향과 감사트레일의 크기를 최소화할 수 있습니다.

감사 전략을 계획할 때 다음과 같은 일반적인 지침 사항을 사용합니다.

■ 감사 목적을 평가합니다.

2 5 - 2 Oracle8i 관리자 설명서

감사에 대한 지침 사항

감사해야 하는 이유를 명확히 이해하면 적합한 감사 전략을 계획하고 불필요한 감사를 피할 수 있습니다.

예를 들어, 데이터베이스에 손상을 입힐 수 있는 작업을 조사하기 위해 감사 작업을 수행하고자 합니다. 그러나 이 정보로는 충분하지가 않습니다. 즉, 데이터베이스에 손상을 입힐 수 있는 작업 중에서 어떤 유형의 작업을 조사할지와 같은 자세한 정보가 있어야 합니다. 보다 집약된 감사 목적은 데이터베이스의 테이블에서 권한 없이 행 삭제를 감사하는 것입니다. 이렇게 하는 목적은 감사해야 할 작업 유형과 손상을 입힐 수 있는 작업에 의해 영향을 받을 수 있는 객체 유형을 줄이기 위함입니다.

■ 충분한 정보를 가지고 감사 작업을 수행합니다.

최소한의 명령문과 사용자 또는 객체를 감사하려면 대상 정보를 얻어야 합니다. 이러한 정보를 사용하여 불필요한 감사 정보와 중요한 감사 정보를 구분하며SYSTEM 테이블스페이스의 영역을 낭비하지 않도록 합니다. 충분한 보안 정보를수집해야 할 필요성과 해당 정보를 저장하고 처리할 수 있는 능력 간에 균형을 맞춰야 합니다.

예를 들어, 데이터베이스 작업 정보를 수집하기 위해 감사 작업을 수행하는 경우어떤 유형의 작업을 추적할지를 결정하고 관심 있는 작업만을 감사하며 원하는 정보를 수집하는데 필요한 시간 동안만 감사합니다. 각 세션의 논리적 입출력 정보에만 관심이 있다면 객체를 감사하지 마십시오.

데이터베이스에 손상을 입힐 수 있는 작업 감사

데이터베이스에 손상을 입힐 수 있는 작업을 모니터하기 위해 감사하는 경우 다음 지침 사항을 사용합니다.

■ 처음에는 일반적으로, 이후에는 구체적으로 감사 작업을 수행합니다.

데이터베이스에 손상을 입힐 수 있는 작업에 대한 감사를 시작하는 경우 대상이 되는 특정 사용자나 스키마 객체에 대한 정보가 많지 않습니다. 따라서 처음에는 감사 옵션을 일반적인 것으로 설정해야 합니다. 예비 감사 정보를 기록하고 분석한다음 일반적인 감사 옵션을 보다 구체적인 감사 옵션으로 변경합니다. 이러한 과정은 충분한 정보를 수집하여 데이터베이스에 손상을 입힐 수 있는 작업의 원인을 찾아낼 때까지 계속되어야 합니다.

■ 감사 트레일을 보호합니다.

데이터베이스에 손상을 입힐 수 있는 작업을 감사할 때 감사 작업 외의 작업이 감사 정보를 추가, 변경 또는 삭제할 수 없도록 감사 트레일을 보호합니다.

참조: 감사 트레일에 대한 자세한 내용은 25-16 페이지“감사 트레일 보호”를 참조하십시오.

데이터베이스 사용 감사 2 5 - 3

감사에 대한 지침 사항

정상적인 데이터베이스 작업 감사

특정 데이터베이스 작업에 대해 예전부터 현재까지의 누적 정보를 수집하기 위해 감사 작업을 수행할 때 다음 지침 사항을 준수해야 합니다.

■ 관련된 작업만 감사합니다.

불필요한 감사 정보와 의미있는 감사 정보가 섞이지 않도록 하고 관리할 감사 트레일 정보량을 줄일 수 있도록 대상이 되는 데이터베이스 작업만 감사합니다.

■ 감사 레코드를 아카이브하고 감사 트레일을 삭제합니다.

정보를 수집한 다음 관심 있는 감사 레코드를 아카이브하고 이 정보를 포함하는 감사 트레일을 삭제합니다.

데이터베이스 감사 트레일 뷰 생성 및 삭제

이 단원에서는 데이터베이스 감사 트레일 뷰를 생성 및 삭제하는 방법과 다음 내용을다룹니다.

■ 감사 트레일 뷰 생성

■ 감사 트레일 뷰 삭제

데이터베이스 감사 트레일( SY S. AUD $)은 각 오라클 데이터베이스의 데이터 딕셔너리에 있는 단일 테이블입니다. 이 테이블에 저장되어 있는 의미있는 감사 정보를 보는데 도움이 되도록 여러 개의 미리 정의된 뷰가 제공됩니다. 이 뷰는 감사 작업을 사용할 때 생성되어야 합니다. 더 이상 감사 작업이 필요하지 않을 때는 이 뷰를 삭제할수 있습니다.

감사 트레일 뷰는 CATA L O G.SQL 스크립트를 실행하면 자동으로 생성됩니다.

감사 트레일 뷰 생성

감사 기능을 사용하려면 SY S로 접속하고 CATAU D I T.SQL 스크립트를 실행하여 감사 기능 뷰를 생성합니다. 이 스크립트는 다음과 같은 뷰를 생성합니다.

■ S T M T _ AU D I T _ O P T I O N _ M A P

■ AU D I T _ AC T I O N S

■ A L L _ D E F _ AU D I T _ O P T S

■ D B A _ S T M T _ AU D I T _ O P T S

■ U S E R _ O B J _ AU D I T _ O P T S, DBA_OBJ_AU D I T _ O P T S

■ U S E R _ AU D I T _ T R A I L, DBA_AU D I T _ T R A I L

2 5 - 4 Oracle8i 관리자 설명서

데이터베이스 감사 트레일 뷰 생성 및 삭제

■ U S E R _ AUDIT_SESSION, DBA_AU D I T _ S E S S I O N

■ U S E R _ AU D I T _ S TAT E M E N T, DBA_AU D I T _ S TAT E M E N T

■ U S E R _ AU D I T _ O B J E C T, DBA_AU D I T _ O B J E C T

■ D B A _ AU D I T _ E X I S T S

■ U S E R _ AUDIT_SESSION, DBA_AU D I T _ S E S S I O N

■ U S E R _ TA B _ AU D I T _ O P T S

참조: 이러한 뷰에 대한 내용은 O racle8i Refe re n c e를 참조하십시오.

감사 정보 해석에 대한 예는 25-17 페이지“데이터베이스 감사 트레일 정보 보기”를참조하십시오.

감사 트레일 뷰 삭제

감사 기능이 비활성화되고 감사 트레일 뷰가 필요 없는 경우 데이터베이스에SY S로 접속하고 CAT N OAU D.SQL 스크립트 파일을 실행하여 뷰를 삭제합니다.CAT N OAU D.SQL 스크립트의이름과 위치는 운영 체제마다 다릅니다.

감사 트레일 정보 관리

이 단원에서는 감사 트레일 정보를 관리하는 방법을 설명하며 다음 내용을 다룹니다.

■ 기본적으로 감사되는 이벤트

■ 감사 옵션 설정

■ 데이터베이스 감사 기능 활성화 및 비활성화

■ 감사 트레일 크기와 크기 증가 제어

■ 감사 트레일 보호

감사하는 이벤트와 감사 옵션에 따라 감사 트레일 레코드는 다른 유형의 정보를 포함할 수 있습니다. 다음 정보가 특정 감사 작업에서 의미가 있다면 이러한 정보는 모든감사 트레일 레코드에 항상 포함됩니다.

■ 사용자 이름

■ 세션 식별자

■ 단말기 식별자

데이터베이스 사용 감사 2 5 - 5

감사 트레일 정보 관리

■ 액세스한 객체 이름

■ 수행했거나 수행을 시도한 작업

■ 작업 완료 코드

■ 날짜와 시간 기록

운영 체제 감사 트레일에 기록된 감사 트레일 레코드 중에는 읽을 수 없게 보안 처리되어 저장된 레코드도 있습니다. 이러한 레코드는 다음과 같이 해독할 수 있습니다.

작업 코드

수행했거나 수행하려고 한 작업을 표시합니다. AU D I T _ ACTIONS 데이터 딕셔너리테이블에는 이러한 코드와 각 코드에 대한 설명이 있습니다.

사용된 권한

작업을 수행하기 위해 사용한 모든 시스템 권한을 표시합니다. SY S T E M _PRIVILEGE_MAP 테이블은이러한 코드와 각 코드에 대한 설명을 나열합니다.

완료 코드

시도한 작업의 실행 결과를 표시합니다. 작업을 완료하면 0을 돌려주고 완료하지 못하면 작업 실패 원인을 설명하는 O racle 오류 코드를 돌려줍니다.

2 5 - 6 Oracle8i 관리자 설명서

감사 트레일 정보 관리

기본적으로 감사되는 이벤트

데이터베이스 감사 기능의 활성화 여부와 관계없이 O racle 서버는 항상 운영 체제 감사 트레일에 데이터베이스와 관련된 특정 작업을 감사합니다. 이러한 이벤트는 다음과 같습니다.

인스턴스 시작 인스턴스를 시작한 OS 사용자, 사용자의 단말기 식별자, 날짜와 시간 기록, 데이터베이스 감사 활성화 여부를 포함한 감사 레코드를 생성합니다. 인스턴스가 성공적으로 시작해야 데이터베이스 감사 트레일을 사용할 수 있으므로 이러한 감사정보는 OS 감사 트레일에 기록됩니다. 시작할 때 데이터베이스 감사 상태를 기록하는 것은 관리자가 데이터베이스 감사기능을 비활성화한 채 재시작하는 것을 방지하므로 관리자는감사되지 않는 작업을 수행할 수 있습니다.

인스턴스 종료 인스턴스를 종료한 OS 사용자, 사용자의 단말기 식별자, 날짜와 시간 기록 정보를 포함한 감사 레코드를 생성합니다.

관리자 권한으로 SY S O P E R나 SY S D B A로 O ra c l e에 접속한 OS 사용자데이터베이스에 정보를 포함한 감사 레코드를 생성합니다. 이러한 레코드는접속 관리자 권한을 가진 사용자의 가측성을 제공합니다.

O ra c l e이 액세스할 수 있는 감사 트레일을 만들지 않은 운영 체제에서 이러한 감사트레일 레코드는 백그라운드 프로세스 추적 파일과 동일한 디렉토리에 있는 O ra c l e감사 트레일 파일에 저장됩니다.

감사 옵션 설정

감사 옵션 설정에 따라 감사 레코드는 다른 유형의 정보를 포함할 수 있습니다. 그러나 모든 감사 옵션은 다음 정보를 생성합니다.

■ 감사 대상 명령문을 실행한 사용자

■ 사용자가 실행한 감사 대상 명령문을 표시하는 작업 코드(숫자)

■ 감사 대상 명령문에서 참조하는 객체

■ 감사 대상 명령문을 실행한 날짜와 시간

감사 트레일은 감사 대상 명령문과 관련된 데이터 값 정보는 저장하지 않습니다. 예를 들어, UPDATE 문을감사할 때 갱신한 행의 이전 데이터 값과 새로운 데이터 값은 저장되지 않습니다. 그러나 데이터베이스 트리거를 사용하여 테이블과 관련된

데이터베이스 사용 감사 2 5 - 7

감사 트레일 정보 관리

DML 문에 대해 특정 유형 감사를 수행할 수 있습니다.

O ra c l e은 세 가지 레벨에서 감사 옵션을 설정할 수 있도록 합니다.

명령문 테이블에 대한 SQL 문과 같이 사용된 SQL 문 유형에 준하여 감사합니다. (이러한 감사는 각각의 C R E AT E, TRU N CAT E, DROP T-ABLE 문을 기록합니다. )

권한 C R E ATE TABLE 같은특정 시스템 권한 사용을 감사합니다.

객체 EMP 테이블에서의 A LTER TABLE 같은 특정 객체에 대한 특정명령문을 감사합니다.

참조: 이러한 특정 유형의 감사를 위한 트리거 사용 예는 25-20 페이지“데이터베이스 트리거를 사용한 감사 작업”을 참조하십시오.

명령문 감사 옵션

AU D I T과 N OAUDIT 문에 포함할 수 있는 올바른 명령문 감사 옵션은 O ra c l e 8 iSQL 참조서에 나열되어 있습니다.

명령문 감사 옵션에 대한 단축키 한 단어로 관련된 여러 가지 명령문 옵션을 지정할수 있도록 단축키를 제공합니다.

단축키 자체는 명령문 옵션이 아닙니다. 오히려 AU D I T과 N OAUDIT 문에 한 단어로 관련된 몇 가지 명령문 옵션을 지정하는 방법입니다. 시스템 권한과 명령문 옵션에 대한 단축키는 O racle8i SQL 참조서에자세히 설명되어 있습니다.

접속 및 접속 해제 감사

SESSION 문 옵션과 CONNECT 단축키는 특정 유형의 명령문이 실행되었을 때는감사 레코드를 생성하지 않는다는 점에서 고유합니다. 이 옵션은 인스턴스에 접속하여 생성되는 각 세션에 대해 단일 감사 레코드를 생성합니다. 감사 레코드는 접속할때 감사 트레일에 삽입되며 접속을 해제할 때 갱신됩니다. 접속 시간, 접속 해제 시간, 처리된 논리적 및 물리적 입출력 같은 세션에 대한 누적 정보가 세션에 해당하는단일 감사 레코드에 저장됩니다.

참조: O racle8i SQL 참조서는 또한 단축키에 의해 설명되지 않는 추가 감사 옵션을나열합니다.

2 5 - 8 Oracle8i 관리자 설명서

감사 트레일 정보 관리

권한 감사 옵션

권한 감사 옵션은 해당 시스템 권한과 정확히 일치합니다. 예를 들어, DELETEANY TABLE 권한 사용을 감사하는 옵션은 DELETE ANY TA B L E입니다. 이옵션을 설정하려면 다음 예와 유사한 명령문을 사용합니다.

AUDIT DELETE ANY TABLEBY ACCESSWHENEVER NOT SUCCESSFUL;

O ra c l e의 시스템 권한은 24-2 페이지“시스템 권한”에 나열되어 있습니다.

객체 감사 옵션

O racle8i SQL 참조서는 올바른 객체 감사 옵션과 각 옵션을 사용할 수 있는 스키마객체 유형을 나열합니다.

객체 감사 옵션에 대한 단축키 스키마 객체에 대해 사용 가능한 모든 객체 감사 옵션을 지정하는데 ALL 단축키를 사용할 수 있습니다. 이 단축키 자체는 옵션이 아니라AU D I T과 N OAUDIT 문에서 한 단어로 모든 객체 감사 옵션을 지정하는 방식입니다.

감사 옵션 활성화

SQL 문 AU D I T은 명령문, 권한 감사 옵션 및 객체 감사 옵션을 설정합니다. 명령문과 권한 옵션을 설정하기 위해 SQL 문 AU D I T을 사용하려면 AUDIT SYSTEM 권한이 있어야 합니다. 객체 감사 옵션을 설정하기 위해 SQL 문 AU D I T을 사용하려면감사할 객체의 소유자이거나 AUDIT ANY 권한이있어야 합니다. 명령문과 권한 감사 옵션을 설정하는 감사 명령문은 BY 절을 포함하여 명령문과 권한 감사 옵션의 범위를 제한하는 사용자와 응용 프로그램 p roxy 목록을 지정할 수 있습니다.

사용자는 감사 작업을 위해 감사 옵션을 설정하고 다음 조건을 지정할 수 있습니다.

■ WHENEVER SUCCESSFUL/WHENEVER NOT SUCCESSFUL

■ BY SESSION/BY AC C E S S

새로운 데이터베이스 세션은 세션을 생성할 때 데이터 딕셔너리에서 감사 옵션을 선택합니다. 이러한 감사 옵션은 데이터베이스를 접속하는 동안 효력을 발생합니다. 새

데이터베이스 사용 감사 2 5 - 9

감사 트레일 정보 관리

로운 시스템이나 객체 감사 옵션을 설정하면 이후 모든 데이터베이스 세션은 이 옵션을 사용합니다. 기존 세션은 세션 생성 시의 감사 옵션을 계속 사용합니다.

경고: AUDIT 문은 감사 옵션을 설정할 뿐이며 전체적으로 감사 기능을 활성화하지는 않습니다. 감사 기능을 설정하고 현재 설정되어 있는감사 옵션에 따른 감사 레코드 생성 여부를 제어하려면 데이터베이스 매개변수 파일에 매개변수 AU D I T _ T R A I L을 설정합니다.

참조: AUDIT 명령어에 대한 자세한 설명은 O racle8i SQL 참조서를참조하십시오.

감사 기능 활성화 및 비활성화에 대한 자세한 내용은 25-13 페이지“데이터베이스 감사 기능 활성화 및 비활성화”를 참조하십시오.

명령문 권한 감사 활성화 이 옵션에 대한 기본값이며 동시에 유일한 값인 BYS E S S I O N으로 사용자에 관계없이 데이터베이스 접속 및 종료에 대한 성공과 실패를모두 감사하려면 다음 명령문을 입력합니다.

AUDIT SESSION;

다음 예와 같이 사용자를 선별하여 개별적으로 이 옵션을 설정할 수 있습니다.

AUDIT SESSIONBY scott, lori;

DELETE ANY TABLE 시스템 권한 사용 성공 및 실패를 감사하려면 다음 명령문을 사용합니다.

AUDIT DELETE ANY TABLE;

테이블에 대해 실행하지 못한 S E L E C T, INSERT, DELETE 문과 E X E C U T EP ROCEDURE 시스템 권한을 모든 데이터베이스 사용자와 개별, 감사되는 명령문에의해 감사하려면 다음 명령문을 사용합니다.

AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,EXECUTE PROCEDURE

BY ACCESSWHENEVER NOT SUCCESSFUL;

명령문이나 권한 감사 옵션을 설정하는데 AUDIT SYSTEM 시스템 권한이 필요합니다. 일반적으로 보안 관리자는 이 시스템 권한이 있는 유일한 사용자입니다.

2 5 - 1 0 Oracle8i 관리자 설명서

감사 트레일 정보 관리

객체 감사 기능 활성화 기본값인 BY SESSION에 대해 S C O T T.EMP 테이블에서성공하거나 실패한 모든 DELETE 문을 감사하려면 다음 명령문을 사용합니다.

AUDIT DELETE ON scott.emp;

사용자 J WA R D가 소유한 DEPT 테이블과 BY AC C E S S에 대해 성공한 모든S E L E C T, INSERT, DELETE 문을감사하려면 다음 명령문을 사용합니다.

AUDIT SELECT, INSERT, DELETEON jward.deptBY ACCESSWHENEVER SUCCESSFUL;

실패한 모든 SELECT 문과 기본값인 BY SESSION을 감사하는 기본 객체 감사 옵션을 설정하려면 다음 명령문을 사용합니다.

AUDIT SELECTON DEFAULTWHENEVER NOT SUCCESSFUL;

사용자는 사용자의 스키마에 포함된 객체에 대해 객체 감사 옵션을 설정할 수 있습니다. 다른 사용자의 스키마에 포함된 객체에 대해 객체 감사 옵션을 설정하거나 기본객체 감사 옵션을 설정하려면 AUDIT ANY 시스템권한이 있어야 합니다. 일반적으로 보안 관리자는 이 시스템 권한이 있는 유일한 사용자입니다.

감사 옵션 비활성화

N OAUDIT 명령어는 O ra c l e의 다양한 감사 옵션을 취소합니다. NOAUDIT 명령어를 사용하여 명령문, 권한 감사 옵션, 객체 감사 옵션을 재설정합니다. 명령문과 권한감사 옵션을 설정하는 N OAUDIT 문은 BY USER 옵션을 포함하여 명령문과 권한감사 옵션의 범위를 제한하는 사용자 목록을 지정할 수 있습니다.

N OAUDIT 문에 WHENEVER 절을 사용하여 감사 옵션을 선별하여 비활성화할 수있습니다. WHENEVER 절을지정하지 않으면 성공 및 실패 감사 옵션 전부가 비활성화됩니다.

데이터베이스 사용 감사 2 5 - 1 1

감사 트레일 정보 관리

BY SESSION/BY ACCESS 옵션은N OAUDIT 명령어가 지원하지 않습니다. 감사옵션은 설정 방법에 관계없이 적합한 N OAUDIT 문으로 취소됩니다.

경고: NOAUDIT 문은 감사 옵션을 취소할 뿐이며 전체적으로 감사 기능을 비활성화하지 않습니다. 현재 설정된 감사 옵션이 있어도 감사 기능을 취소하여 감사 레코드 생성을 중지하게 하려면 데이터베이스 매개변수 파일에서 매개변수 AU D I T _ T R A I L을 설정합니다.

참조: NOAUDIT 명령어의 완전한 구문 나열은 O racle8i SQL 참조서를 참조하십시오.

25-13 페이지“데이터베이스감사 기능 활성화 및 비활성화”를 참조하십시오.

명령문과 권한 감사 기능 비활성화

다음 명령문은 해당 감사 옵션을 취소합니다.

NOAUDIT session;NOAUDIT session BY scott, lori;NOAUDIT DELETE ANY TABLE;NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE,

EXECUTE PROCEDURE;

다음 명령문은 모든 명령문(시스템)과 권한 감사 옵션을 취소합니다.

NOAUDIT ALL;NOAUDIT ALL PRIVILEGES;

명령문과 권한 감사 옵션을 비활성화하려면 AUDIT SYSTEM 시스템 권한이 있어야 합니다.

객체 감사 기능 비활성화 다음 명령문은 해당 감사 옵션을 취소합니다.

NOAUDIT DELETEON emp;

NOAUDIT SELECT, INSERT, DELETEON jward.dept;

EMP 테이블에서 모든 객체 감사 옵션을 취소하려면 다음 명령문을 사용합니다.

NOAUDIT ALL

2 5 - 1 2 Oracle8i 관리자 설명서

감사 트레일 정보 관리

ON emp;

기본 객체 감사 옵션 비활성화 모든 기본 객체 감사 옵션을 취소하려면 다음 명령문을 사용합니다.

NOAUDIT ALLON DEFAULT;

N OAUDIT 문을 실행하기 전에 생성한 모든 스키마 객체는 객체를 생성한 다음에N OAUDIT 문을 명확히 사용하여 취소하지 않으면 해당 객체를 생성할 때의 기본 객체 감사 옵션이 계속 유효합니다.

특정 객체에 대해 객체 감사 옵션을 비활성화하려면 해당 스키마 객체의 소유자여야합니다. 다른 사용자 스키마 객체의 객체 감사 옵션을 비활성화하거나 기본 객체 감사옵션을 비활성화하려면 AUDIT ANY 시스템 권한이 있어야 합니다. 객체 감사 옵션을 비활성화하는 권한이 있는 사용자는 다른 사용자가 설정한 옵션을 무효화할 수 있습니다.

데이터베이스 감사 기능 활성화 및 비활성화

권한이 있는 데이터베이스 사용자는 항상 명령문, 권한, 객체 감사 옵션을 설정할 수있지만 O ra c l e은 데이터베이스 감사 기능을 활성화해야 감사 트레일에 감사 레코드를생성하고 저장합니다. 보통 보안 관리자가 이 작업을 책임집니다.

데이터베이스 감사 기능은 데이터베이스 매개변수 파일의 초기화 매개변수AU D I T _ T R A I L에 의해 활성화되고 비활성화됩니다. 이 매개변수는 다음과 같은 값으로 설정될 수 있습니다.

DB 데이터베이스 감사 기능을 활성화하고 모든 감사 레코드가 데이터베이스 감사 트레일에 기록되도록 합니다.

OS 데이터베이스 감사 기능을 활성화하고 모든 감사 레코드가 운영 체제감사 트레일에 기록되도록 합니다.

NONE 감사 기능을 비활성화합니다. (기본값입니다. )

매개변수 파일을 편집한 후 데이터베이스 인스턴스를 재시작하여 의도한 대로 데이터베이스 감사 기능을 활성화하거나 비활성화합니다.

데이터베이스 사용 감사 2 5 - 1 3

감사 트레일 정보 관리

참조: 매개변수 파일 편집에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

감사 트레일 크기와 크기 증가 제어

감사 트레일이 다 차서 더 이상 감사 레코드를 삽입할 수 없다면 감사 트레일을 제거할 때까지 감사 대상 명령문을 실행할 수 없으므로 감사 대상 명령문을 실행하려는모든 사용자에게 경고를 보냅니다. 따라서 보안 관리자는 감사 트레일의 크기와 크기증가를 제어해야 합니다.

감사 기능을 활성화하고 감사 레코드를 생성할 때 감사 트레일은 다음 두 가지 요인에 따라 크기가 증가합니다.

■ 설정한 감사 옵션 수

■ 감사 대상 명령문의 실행 빈도

감사 트레일의 크기 증가를 제어하려면 다음 방법을 사용합니다.

■ 데이터베이스 감사 기능을 활성화하고 비활성화합니다. 활성화하면 감사 레코드가

생성되고 감사 트레일에 저장됩니다. 비활성화하면 감사 레코드는 생성되지 않습

니다.

■ 설정할 감사 옵션을 신중히 선택합니다. 신중하게 선택한 감사 기능을 수행하면

쓸모없거나 불필요한 감사 정보는 감사 트레일에 생성되거나 저장되지 않습니다.

■ 객체 감사 기능을 수행할 수 있는 자격을 엄격하게 제어합니다. 이것은 다음 두

가지 방법으로 수행될 수 있습니다.

- 보안 관리자가 모든 객체를 소유하며 AUDIT ANY 시스템 권한을 다른 사용자에게 부여하지 않습니다. 다른 방법으로는 모든 스키마 객체를 C R E AT ESESSION 권한이 없는 해당 사용자의 스키마에 넣습니다.

- 모든 객체는 실제 데이터베이스 사용자에 해당되지 않는 스키마에 포함되며(즉, CREATE SESSION 권한을 해당 사용자에게 부여하지 않습니다.) 보안관리자는 AUDIT ANY 시스템권한이 있는 유일한 사용자입니다.

위의 두 가지 방법으로 보안 관리자는 객체 감사 기능을 완전히 제어할 수 있습니다.

데이터베이스 감사 트레일( SY S. AUD $ 테이블)의 최대 크기는 데이터베이스를 생성할 때 미리 결정됩니다. 기본적으로 1 0 K인 확장 영역을 최대 9 9개까지 이 테이블에할당할 수 있습니다.

2 5 - 1 4 Oracle8i 관리자 설명서

감사 트레일 정보 관리

감사 트레일의 크기와 증가를 제어하기 위해 SY S. AUD $를 다른 테이블스페이스로이동할 수 없습니다. 그러나 SY S. AUD $의 INITIAL 이외의 기본 저장 영역 매개변수를 수정할 수는 있습니다.

참조: 감사 레코드를 운영 체제 감사 트레일에 기록하는 경우 운영 체제 감사 트레일을관리하는 방법은 사용자 운영 체제별 오라클 설명서를 참조하십시오.

SY S. AU D$ 저장 영역 매개변수에 대한 자세한 내용은 O racle8i Refe re n c e를 참조하십시오.

감사 트레일에서 감사 레코드 삭제

감사 기능이 얼마 동안 활성화되면 보안 관리자는 사용 가능한 감사 트레일 영역을늘리고 감사 트레일 관리를 위해 데이터베이스 감사 트레일에서 레코드를 삭제할 수있습니다.

예를 들어, 감사 트레일에서 모든 감사 레코드를 삭제하려면 다음 명령문을 사용합니다.

DELETE FROM sys.aud$;

다른 방법으로 EMP 테이블 감사 작업에서 생성된 감사 트레일에서 모든 감사 레코드를 삭제하려면 다음 명령문을 사용합니다.

DELETE FROM sys.aud$WHERE obj$name=’EMP’;

기록 보관 목적으로 감사 트레일 정보를 아카이브하려면 보안 관리자는 관련 정보를일반 데이터베이스 테이블(예를 들어, “I N S E RT INTO table SELECT ...FRO Ms y s . a ud $. . .”를 사용하여)에 복사하거나 감사 트레일 테이블을 운영 체제 파일로 엑스포트할 수 있습니다.

사용자 SY S나 DELETE ANY TABLE 권한이 있는 사용자 또는 SY S가SY S. AUD $에 대한 DELETE 권한을 부여한 사용자만 데이터베이스 감사 트레일에서 레코드를 삭제할 수 있습니다.

주: 감사 트레일이 다 찬 후 접속을 감사하고 있다면 (즉, SESSION옵션을 설정했다면) 접속과 관련된 감사 레코드를 감사 트레일에 삽입할 수 없으므로 일반 사용자는 데이터베이스에 접속할 수 없습니다. 이경우 보안 관리자는 SY S로 접속하여 ( SY S가 수행하는 작업은 감사되지 않음) 감사 트레일에 사용할 수 있는 영역을 만들어야 합니다.

참조: 테이블 엑스포트에 관련된 내용은 O racle8i Utilities를참조하십시오.

데이터베이스 사용 감사 2 5 - 1 5

감사 트레일 정보 관리

감사 트레일 크기 축소

다른 데이터베이스 테이블처럼 데이터베이스 감사 트레일에서 레코드를 삭제한 후에도 이 테이블에 할당된 확장 영역은 그대로 유지됩니다.

데이터베이스 감사 트레일이 많은 확장 영역을 할당받았지만 확장 영역의 많은 부분을 사용하고 있지 않다면 데이터베이스 감사 트레일에 할당된 영역은 다음의 단계별작업을 수행하여 축소될 수 있습니다.

1 . 현재 감사 트레일에 있는 정보를 저장하려면 감사 트레일을 다른 데이터베이스테이블로 복사하거나 E X P O RT 유틸리티를 사용하여 엑스포트합니다.

2 . 관리자 권한으로 접속합니다.

3. TRU N CATE 명령어를 사용하여 SY S. AUD $를 잘라냅니다.

4. 1단계에서 생성된 아카이브된 감사 트레일 레코드를 재로드합니다.

SY S. AUD $의 새로운 버전은 현재 감사 트레일 레코드를 포함하는데 필요한 만큼의확장 영역이 할당됩니다.

주: SY S. AUD $는 직접 수정해야 하는 유일한 SYS 객체입니다.

감사 트레일 보호

데이터베이스에 손상을 입힐 수 있는 작업에 대해 감사할 때 감사 정보의 정확성과 완전성을 보장하려면 감사 트레일 레코드의 무결성을 보호해야 합니다.

권한이 없는 삭제 작업으로부터 데이터베이스 감사 트레일을 보호하려면 보안 관리자에게만 DELETE ANY TABLE 시스템 권한을 부여해야 합니다.

데이터베이스 감사 트레일의 변경 사항을 감사하려면 다음 명령문을 사용합니다.

AUDIT INSERT, UPDATE, DELETEON sys.aud$BY ACCESS;

SY S. AUD $테이블에 설정한 객체 감사 옵션의 결과로 생성되는 감사 레코드는 관리자 권한으로 접속한 사용자에 의해 감사 트레일에서 삭제만 할 수 있으며 그 자체만으로도 권한이 없는 사용으로부터 보호됩니다. 감사 트레일을 보호하는 마지막 수단으로 가능하다면 관리자 권한으로 접속하는 동안에 수행되는 모든 작업을 운영 체제감사 트레일에서 감사되도록 합니다.

2 5 - 1 6 Oracle8i 관리자 설명서

감사 트레일 정보 관리

참조: 운영 체제 감사 트레일의 가용성 및 가능한 사용에 대한 자세한 내용은 사용자운영 체제별 오라클 설명서를 참조하십시오.

데이터베이스 감사 트레일 정보 보기

이 단원에서는 감사 트레일 정보를 점검하고 해석하는 방법을 예를 들어 설명하며 다음 내용을 다룹니다.

■ 활성화된 명령문의 감사 옵션 목록 보기

■ 활성화된 권한 감사 옵션 목록 보기

■ 특정 객체에 대해 활성화된 객체 감사 옵션 목록 보기

■ 기본 객체 감사 옵션 목록 보기

■ 감사 레코드 목록 보기

■ AUDIT SESSION 옵션에대한 감사 레코드 목록 보기

데이터베이스에 손상을 입힐 수 있는 작업에 대해 데이터베이스를 감사해야 합니다.

■ 암호, 테이블스페이스 설정, 데이터베이스 사용자에 대한 디스크 할당량 등이 권

한 없이 변경

■ 배타적인 테이블 잠금을 획득한 사용자로 인해 교착 상태가 많이 발생

■ 사용자 S C O T T의 스키마에 있는 EMP 테이블에서 임의로 행이 삭제

사용자 J WA R D와 S W I L L I A M S가 이러한 유해한 작업을 수행했는지 조사하려 할때 데이터베이스 관리자는 다음 명령문을 순서대로 실행합니다.

AUDIT ALTER, INDEX, RENAME ON DEFAULTBY SESSION;

CREATE VIEW scott.employee AS SELECT * FROM scott.emp;AUDIT SESSION BY jward, swilliams;AUDIT ALTER USER;AUDIT LOCK TABLE

BY ACCESSWHENEVER SUCCESSFUL;

AUDIT DELETE ON scott.empBY ACCESSWHENEVER SUCCESSFUL;

이후에 사용자 J WA R D에 의해 다음 명령문이 실행됩니다.

ALTER USER tsmith QUOTA 0 ON users;DROP USER djones;

데이터베이스 사용 감사 2 5 - 1 7

데이터베이스 감사 트레일 정보 보기

사용자 S W I L L I A M S는 이후에 다음 명령문을 실행합니다.

LOCK TABLE scott.emp IN EXCLUSIVE MODE;DELETE FROM scott.emp WHERE mgr = 7698;ALTER TABLE scott.emp ALLOCATE EXTENT (SIZE 100K);CREATE INDEX scott.ename_index ON scott.emp (ename);CREATE PROCEDURE scott.fire_employee (empid NUMBER) ASBEGIN

DELETE FROM scott.emp WHERE empno = empid;END;

/

EXECUTE scott.fire_employee(7902);

다음 단원은 데이터 딕셔너리에서 감사 트레일 뷰를 사용하여 나열된 정보를 보여줍니다.

활성화된 명령문의 감사 옵션 목록 보기

다음 질의는 설정된 모든 명령문 감사 옵션을 돌려줍니다.

SELECT * FROM sys.dba_stmt_audit_opts;

USER_NAME AUDIT_OPTION SUCCESS FAILURE---------------- ------------------- ---------- ----------JWARD SESSION BY SESSION BY SESSIONSWILLIAMS SESSION BY SESSION BY SESSION

LOCK TABLE BY ACCESS NOT SET

뷰는 명령문 감사 옵션이 명령문이 성공할 때를 위해 설정되었는지, 실패할 때를 위해 설정되었는지 또는 BY SESSION이나 BY AC C E S S로 설정되었는지에 관한 명령문 감사 옵션 설정을 나타냅니다.

활성화된 권한 감사 옵션 목록 보기

다음 질의는 모든 설정된 권한 감사 옵션을 돌려줍니다.

SELECT * FROM sys.dba_priv_audit_opts;

USER_NAME PRIVILEGE SUCCESS FAILURE------------------- -------------------- ---------- ----------ALTER USER BY SESSION BY SESSION

2 5 - 1 8 Oracle8i 관리자 설명서

데이터베이스 감사 트레일 정보 보기

특정 객체에 대해 활성화된 객체 감사 옵션 목록 보기

다음 질의는 S C O T T의 스키마에 있는 객체에 대해 모든 설정된 감사 옵션을 돌려줍니다

SELECT * FROM sys.dba_obj_audit_optsWHERE owner = ‘SCOTT‘ AND object_name LIKE ‘EMP%‘;

OWNER OBJECT_NAME OBJECT_TY ALT AUD COM DEL GRA IND INS LOC ...------ ----------- --------- --- --- --- --- --- --- --- --- ...SCOTT EMP TABLE S/S -/- -/- A/- -/- S/S -/- -/- ...SCOTT EMPLOYEE VIEW -/- -/- -/- A/- -/- S/S -/- -/- ...

뷰는 지정한 객체에 대한 모든 감사 옵션 정보를 돌려줍니다. 뷰 정보는 다음과 같이해석됩니다.

■ 문자“-”는 해당 감사 옵션이 설정되지 않았음을 나타냅니다.

■ 문자“S”는 감사 옵션이 BY SESSION으로 설정되었음을 나타냅니다.

■ 문자“A”는 감사 옵션이 BY AC C E S S로 설정되었음을 나타냅니다.

■ 각 감사 옵션은 WHENEVER SUCCESSFUL과 WHENEVER NOT

SUCCESSFUL 두 값 중 하나로 설정될 수 있으며“/”로 구분됩니다. 예를 들

어, SCOTT. E M P에 대한 DELETE 감사 옵션은 성공한 삭제 명령문에 대해서는

BY AC C E S S로 설정되고 실패한 삭제 명령문에 대해서는 설정되지 않습니다.

기본 객체 감사 옵션 목록 보기

다음 질의는 모든 설정된 기본 객체 감사 옵션을 보여줍니다.

SELECT * FROM all_def_audit_opts;

ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE--- --- --- --- --- --- --- --- --- --- --- --- ---S/S -/- -/- -/- -/- S/S -/- -/- S/S -/- -/- -/- -/-

뷰는 U S E R _ O B J _ AU D I T _ O P T S, DBA_OBJ_AUDIT_OPTS 뷰와 유사한 정보를돌려줍니다. (앞의 예 참조)

감사 레코드 목록 보기

다음 질의는 명령문과 객체 감사 옵션에 의해 생성되는 감사 레코드를 나열합니다.

SELECT * FROM sys.dba_audit_object;

데이터베이스 사용 감사 2 5 - 1 9

데이터베이스 감사 트레일 정보 보기

AUDIT SESSION 옵션에 대한 감사 레코드 목록 보기

다음 질의는 AUDIT SESSION 문감사 옵션에 해당하는 감사 정보를 나열합니다.

SELECT username, logoff_time, logoff_lread, logoff_pread,logoff_lwrite, logoff_dlockFROM sys.dba_audit_session;

USERNAME LOGOFF_TI LOGOFF_LRE LOGOFF_PRE LOGOFF_LWR LOGOFF_DLO---------- --------- ---------- ---------- ---------- ---------- JWARD 02-AUG-91 53 2 24 0 SWILLIAMS 02-AUG-91 3337 256 630 0

데이터베이스 트리거를 사용한 감사 작업

트리거를 사용하여 O ra c l e의 내장 감사 기능을 보조할 수 있습니다. AUDIT 명령어에 의해 기록하는 것과 유사한 정보를 기록하는 트리거를 작성할 수 있지만 보다 상세한 감사 정보가 필요할 때만 이러한 트리거를 사용해야 합니다. 예를 들어, 트리거를 사용하여 테이블에서 행 단위로 값에 근거한 감사를 수행할 수 있습니다.

주: 일부 필드에서 트리거가 회계 감사 기능을 제공할 수 있는 반면O racle AUDIT 명령어는보안 감사 기능으로 고려됩니다.

데이터베이스 작업 감사를 위해 트리거 생성 여부를 결정할 때 트리거에 의한 감사와표준 오라클 데이터베이스 감사 기능이 제공하는 장점을 비교해 보아야 합니다.

■ 표준 감사 옵션은 모든 유형의 스키마 객체와 구조에 대한 D M L과 DDL 문을 포

함합니다.

■ 모든 데이터베이스 감사 정보는 O ra c l e의 감사 기능을 사용하여 중앙 집중적으로

자동 기록됩니다.

■ 표준 O racle 기능을 사용하여 활성화한 감사 기능은 트리거를 사용하여 정의된 감

사 함수보다 선언 및 관리가 쉽고 오류 발생률이 적습니다.

■ 데이터베이스에 손상을 입힐 수 있는 작업으로부터 보호하기 위해 기존의 감사 옵

션 변경도 감사할 수 있습니다.

2 5 - 2 0 Oracle8i 관리자 설명서

데이터베이스 트리거를 사용한 감사 작업

■ 데이터베이스 감사 기능을 사용하여 감사 대상 명령문( BY AC C E S S )을 실행할때나 감사 대상 명령문( BY SESSION)을 실행하는 모든 세션에 대해 매번 레코드를 생성할 수 있습니다. 트리거는 세션에 대해 감사할 수 없습니다. 감사 레코드는 트리거 감사 테이블을 참조할 때마다 생성됩니다.

■ 데이터베이스 감사는 실패한 데이터 액세스를 감사할 수 있습니다. 이에 비해 트

리거가 생성하는 감사 정보는 트리거링 명령문이 롤백되면 함께 롤백됩니다.

■ 물리적 입출력, 논리적 입출력 또는 교착 상태 같은 세션 작업뿐만 아니라 접속

및 접속 해제는 표준 데이터베이스 감사 기능에 의해 기록될 수 있습니다.

복잡한 감사 기능을 제공하기 위해 트리거를 사용할 때 일반적으로 AFTER 트리거를 사용합니다. AFTER 트리거를 사용하여 무결성 제약 조건에 대한 예외를 생성하는 명령문에 대해서도 불필요한 감사 작업이 수행되지 않도록 하면서 트리거링 명령문을 무결성 제약 조건에 적용한 후 감사 정보를 기록합니다.

감사될 정보에 따라 AFTER 행과 AFTER 문 트리거 중에서 선택하여 사용해야 합니다. 예를 들어, 행 트리거는 테이블에 대해 각 행 단위로 값에 대한 감사를 제공합니다. 또한 트리거는 감사 대상인 SQL 문을 실행하는데 대해 사용자에게“원인 코드”를 제공할 수 있으며 이것은 행 단위와 명령문 레벨의 감사에서 모두 유용하게 사용할 수 있습니다.

다음 트리거는 행 단위로 EMP 테이블에 대한 수정 사항을 감사합니다. “원인 코드”는 갱신 전에 전역 패키지 변수에 저장됩니다. 트리거는 다음 내용을 보여줍니다.

■ 트리거를 사용하여 값에 준한 감사를 수행하는 방법

■ 공용 패키지 변수를 사용하는 방법

코드에 포함되어 있는 설명은 트리거 기능을 설명합니다.

CREATE TRIGGER audit_employeeAFTER INSERT OR DELETE OR UPDATE ON empFOR EACH ROWBEGIN/* AUDITPACKAGE is a package with a public package

variable REASON. REASON could be set by theapplication by a command such as EXECUTEAUDITPACKAGE.SET_REASON(reason_string). Note that apackage variable has state for the duration of asession and that each session has separate copy ofall package variables. */

IF auditpackage.reason IS NULL THENraise_application_error(-20201, ‘Must specify reason with ‘,

데이터베이스 사용 감사 2 5 - 2 1

데이터베이스 트리거를 사용한 감사 작업

‘AUDITPACKAGE.SET_REASON(reason_string)‘);END IF;

/* If the above conditional evaluates to TRUE, theuser-specified error number and message is raised,the trigger stops execution, and the effects of the triggering statement are rolled back. Otherwise, anew row is inserted into the pre-defined auditingtable named AUDIT_EMPLOYEE containing the existingand new values of the EMP table and the reason code defined by REASON variable of AUDITPACKAGE. Notethat the “old“ values are NULL if triggeringstatement is an INSERT and the “new“ values are NULLif the triggering statement is a DELETE. */

INSERT INTO audit_employee VALUES(:old.ssn, :old.name, :old.job_classification, :old.sal,:new.ssn, :new.name, :new.job_classification, :new.sal,auditpackage.reason, user, sysdate );

END;

선택적으로 갱신할 때마다 원인 코드를 설정하려면 원인 코드를 N U L L로 재설정할수 있습니다. 다음 AFTER 문 트리거는 트리거링 문을 실행한 다음 원인 코드를N U L L로 재설정합니다.

CREATE TRIGGER audit_employee_resetAFTER INSERT OR DELETE OR UPDATE ON emp

BEGINauditpackage.set_reason(NULL);

END;

앞의 두 트리거는 동일한 유형의 SQL 문에 의해 실행됩니다. 그러나 AFTER 문 트리거는 트리거링 명령문 실행을 완료한 다음에 한 번만 실행되는 반면 AFTER 행 트리거는 트리거링 명령문의 영향을 받는 테이블의 각 행마다 실행됩니다.

2 5 - 2 2 Oracle8i 관리자 설명서

데이터베이스 트리거를 사용한 감사 작업

색인

색인-1

A

ADD LOGFILE MEMBER 옵션

A LTER DATABASE 명령어, 6-12

ADD LOGFILE 옵션

A LTER DATABASE 명령어, 6-11

ADD PA RTITION 절

A LTER TABLE 명령어, 13-11

ADMIN OPTION

정보, 24-10

철회, 24-12

admin_tables 프로시저, 19-3, 19-11

AFTER 트리거

감사, 25-21

A L E RT 파일

기록 시점, 4-12

사용, 4-10

세션 고수위, 23-7

위치, 4-11

정보, 4-10

크기, 4-11

ALL_INDEXES 뷰

데이터 채움, 20-5

A L L _ TABLES 뷰

데이터 채움, 20-5

A L L _ TAB_COLUMNS 뷰

데이터 채움, 20-5

A LTER CLUSTER 명령어

A L L O CATE EXTENT 옵션, 17-9

MAXTRANS 옵션, 12-9

인덱스 클러스터에 사용, 17-9

해시 클러스터에 사용, 18-8

A LTER DATABASE 명령어

ADD LOGFILE MEMBER 옵션, 6-12

ADD LOGFILE 옵션, 6-11

A RCHIVELOG 옵션, 7-7

CLEAR LOGFILE 옵션, 6-17

CLEAR UNA RCHIVED LOGFILE 옵션,

6-7

DATA F I L E...OFFLINE DROP 옵션,

10-8

D ROP LOGFILE MEMBER 옵션, 6-15

D ROP LOGFILE 옵션, 6-14

MOUNT 옵션, 3-7

N OA RCHIVELOG 옵션, 7-7

OPEN 옵션, 3-7

R E NAME FILE 옵션

다중 테이블스페이스의 데이터 파일, 10-10

U N R E C OVERABLE DATAFILE 옵션,

6 - 1 7

사용자에게 부분적으로 사용 가능한 데이터

베이스, 3-7

A LTER FUNCTION 명령어

COMPILE 옵션, 20-25

A LTER INDEX COA L E S C E, 16-7

A LTER INDEX 명령어, 13-18

MAXTRANS 옵션, 12-9

M OVE PA RTITION 절, 13-11

REBUILD PA RTITION 절, 13-11, 13-20

정보, 16-13

A LTER PAC K AGE 명령어

COMPILE 옵션, 20-25

A LTER PROCEDURE 명령어

COMPILE 옵션, 20-25

A LTER PROFILE 명령어

COMPOSITE_LIMIT 옵션, 23-19

자원 제한 변경, 23-19

A LTER RESOURCE COST 명령어, 23-20

A LTER ROLE 명령어

인증 방법 변경, 24-8

A LTER RO L L B ACK SEGMENT 명령어

OFFLINE 옵션, 21-12

ONLINE 옵션, 21-11, 21-12

PUBLIC 옵션, 21-9

S T O R AGE 절, 21-9

저장 영역 매개변수 변경, 21-9

A LTER SEQUENCE 명령어, 15-11

A LTER SESSION 명령어

SET SQL_TRACE 매개변수, 4-10

A LTER SYSTEM RESUME, 3-13

A LTER SYSTEM SUSPEND, 3-8

A LTER SYSTEM 명령어

A RCHIVE LOG ALL 옵션, 7-10

A RCHIVE LOG 옵션, 7-10

E NABLE RESTRICTED SESSION 옵션,

3-9

SET LICENSE_MAX_SESSIONS 옵션,

23-4

SET LICENSE_MAX_USERS 옵션, 23-6

SET LICENSE_SESSIONS_WA R N I N G

옵션, 23-4

SET MTS_DISPATCHERS 옵션, 4-7

SET MTS_SERVERS 옵션, 4-6

SET RESOURCE_LIMIT 옵션, 23-21

SWITCH LOGFILE 옵션, 6-16

A LTER TABLE 명령어

ADD PA RTITION 절, 13-11

A L L O CATE EXTENT 옵션, 14-11

D I SABLE ALL TRIGGERS 옵션, 20-13

D I SABLE 무결성 제약 조건 옵션, 20-20

D ROP PA RTITION 절, 13-12

D ROP 무결성 제약 조건 옵션, 20-21

E NABLE ALL TRIGGERS 옵션, 20-12

E NABLE 무결성 제약 조건 옵션, 20-20

MAXTRANS 옵션, 12-9

MODIFY PA RTITION 절, 13-10

SPLIT PA RTITION 절, 13-11, 13-17

T RU N CATE PA RTITION 절, 13-15

예, 14-11

A LTER TA B L E S PACE 명령어

ADD DATAFILE 매개변수, 10-5

ONLINE 옵션 예, 9-10

READ ONLY 옵션, 9-12

READ WRITE 옵션, 9-14

R E NAME DATA FILE 옵션, 10-10

A LTER TRIGGER 명령어

D I SABLE 옵션, 20-13

E NABLE 옵션, 20-12

A LTER USER 권한, 23-15

A LTER VIEW 명령어

COMPILE 옵션, 20-25

A NA LYZE TABLE VA L I DATE

S T RU C T U R E, 19-3

A NA LYZE 명령어

색인-2

CA S CADE 옵션, 20-8

COMPUTE STATISTICS 옵션, 20-7

E S T I M ATE STATISTICS SAMPLE 옵션,

20-7

LIST CHAINED ROWS 옵션, 20-9

S TATISTICS 옵션, 20-4

VA L I DATE STRUCTURE 옵션, 20-8

공유 S Q L, 20-8

A RCH 프로세스

여러 프로세스 지정, 7-20

A RCHIVE LOG 명령어

LIST 옵션, 6-14

A RCHIVE LOG 옵션

A LTER SYSTEM 명령어, 7-10

A RCHIVELOG 모드, 7-4, 7-6

데이터 파일을 오프라인 및 온라인으로 설정,

1 0 - 8

분산 데이터베이스, 7-6

수동 아카이브, 7-5

실행, 7-4

아카이브, 7-4

자동 아카이브 기능, 7-5

장점, 7-5

전환, 7-7

정의, 7-4

활성화, 7-7

AUDIT 명령어, 25-9

명령문 감사, 25-10

스키마 객체, 25-11

시스템 권한, 25-10

AUDIT_TRAIL 매개변수

설정, 25-13

B

B AC KG ROUND_DUMP_DEST 매개변수,

4 - 1 1

BAD PARAM 대상 상태, 7-14

C

CA S CADE 옵션

무결성 제약 조건, 17-11

고유 또는 기본 키 삭제 시, 20-20

CATAU D I T.SQL

실행, 25-4

CAT B L O C K.SQL 스크립트, 4-8

CAT N OAU D.SQL

실행, 25-5

CHAR 데이터 유형

열 길이 증가, 14-10

영역 사용, 12-17

CHECK 제약 조건, 20-19

check_object 프로시저, 19-3, 19-7

C H E C K P O I N T _ P ROCESS 매개변수

설정, 4-12

C K P T, 4-12

CLEAR LOGFILE 옵션

A LTER DATABASE 명령어, 6-17

COMPUTE STATISTICS 옵션, 20-7

CONNECT 롤, 24-5

C O N T ROL_FILES 매개변수

기존 제어 파일 겹쳐 쓰기, 2-10

설정

데이터베이스 생선 전, 2-10, 5-4

이름, 5-2

C R E ATE CLUSTER 명령어

HASH IS 옵션, 18-6

HASHKEYS 옵션, 18-7

SIZE 옵션, 18-6

예, 17-7

해시 클러스터, 18-4

C R E ATE CONTROLFILE 명령어

NORESETLOGS 옵션, 5-7

색인-3

RESETLOGS 옵션, 5-7

불일치 검사, 5-8

정보, 5-5

C R E ATE DATABASE 명령어

C O N T ROLFILE REUSE 옵션, 5-4

MAXLOGFILES 옵션, 6-10

MAXLOGMEMBERS 옵션, 6-10

예, 2-7

C R E ATE INDEX 명령어

ON CLUSTER 옵션, 17-8

U N R E C OV E R A B L E, 16-5

명시적으로, 16-8

제약 조건, 16-8

C R E ATE PROFILE 명령어

COMPOSITE_LIMIT 옵션, 23-19

정보, 23-18

C R E ATE ROLE 명령어

IDENTIFIED BY 옵션, 24-7

IDENTIFIED EXTERNA L LY 옵션, 24-7

C R E ATE RO L L B ACK SEGMENT 명령어

정보, 21-8

조정 지침 사항, 2-15

C R E ATE SCHEMA 명령어

다중 테이블과 뷰, 20-2

필요한 권한, 20-2

C R E ATE SEQUENCE 명령어, 15-10

C R E ATE SYNONYM 명령어, 15-12

C R E ATE TABLE 명령어

CLUSTER 옵션, 17-7

PA RTITION 절, 13-9

U N R E C OV E R A B L E, 14-4

정보, 14-9

C R E ATE TA B L E S PACE 명령어

데이터 파일 이름, 9-4

예, 9-4

C R E ATE USER 명령어

IDENTIFIED BY 옵션, 23-12

IDENTIFIED EXTERNA L LY 옵션, 23-12

C R E ATE VIEW 명령어

OR REPLACE 옵션, 15-9

WITH CHECK OPTION, 15-3

정보, 15-2

D

DATE 데이터 유형, 12-18

DB_BLOCK_BUFFERS 매개변수

데이터베이스 생성 전에 설정, 2-11

DB_BLOCK_CHECKING 매개변수, 19-3

D B _ B L O C K _ C H E C K S U M, 10-12

DB_BLOCK_SIZE 매개변수

데이터베이스 버퍼 캐시 크기, 2-11

생성 전에 설정, 2-11

DB_DOMAIN 매개변수

데이터베이스 생성 전에 설정, 2-9

D B _ NAME 매개변수

데이터베이스 생성 전에 설정, 2-9

DB_VERIFY 유틸리티, 19-3

DBA 롤, 1-6, 24-5

D B A, 1-2

D B A _ DATA _ F I L E S, 9-31, 10-13

D B A _ E X T E N T S, 10-13

D B A _ F R E E _ S PAC E, 9-31, 10-13

D B A _ F R E E _ S PAC E _ C OALESCED 뷰,

9-9

DBA_INDEXES 뷰

데이터 채움, 20-5

D B A _ RO L L B ACK_SEGS 뷰, 21-14

D B A _ S E G M E N T S, 9-31, 10-13

D B A _ TAB_COLUMNS 뷰

데이터 채움, 20-5

D B A _ TABLES 뷰

데이터 채움, 20-5

색인-4

D B A _ TA B L E S PACES 뷰, 9-15

D B A _ TA B L E S PAC E S, 9-31, 10-13

D B A _ T S _ Q U O TA S, 9-31, 10-13

D B A _ U S E R S, 9-31, 10-13

DBMS_JOB 패키지

R E M OVE 프로시저, 8-11

강제 작업 실행, 8-14

작업 대기열, 8-3

작업 변경, 8-11

작업 제출, 8-4

D B M S _ L O G M N R _ D.BUILD 패키지, 7-28

D B M S _ L O G M N R.ADD_LOGFILE 패키지

L o g M i n e r, 7-29

D B M S _ L O G M N R. S TA RT_LOGMNR 패키지

L o g M i n e r, 7-30

D B M S _ R E PAIR 패키지, 19-1

D B M S _ R E S O U RC E _ M A NAGER 패키지,

11-3

D B M S _ R E S O U RC E _ M A NAG E R _ P R I VS

패키지, 11-10

DBMS_SESSION 패키지, 11-11

D B M S _ U T I L I T Y. A NA LY Z E _ S C H E M A ( )

실행, 20-8

D E FAU LT _ C O N S U M E R _ G RO U P, 11-9

DEFERRED 대상 상태, 7-14

D ROP CLUSTER 명령어

CA S CADE CONSTRAINTS 옵션, 17-11

INCLUDING TABLES 옵션, 17-11

삭제

테이블이 없는 클러스터, 17-11

해시 클러스터, 18-9

D ROP LOGFILE MEMBER 옵션

A LTER DATABASE 명령어, 6-15

D ROP LOGFILE 옵션

A LTER DATABASE 명령어, 6-14

D ROP PA RTITION 절

A LTER TABLE 명령어, 13-12

D ROP PROFILE 명령어, 23-21

D ROP ROLE 명령어, 24-8, 24-9

D ROP RO L L B ACK SEGMENT 명령어,

2 1 - 1 4

D ROP SYNONYM 명령어, 15-12

D ROP TABLE 명령어

CA S CADE CONSTRAINTS 옵션, 14-12

정보, 14-12

클러스터화된 테이블, 17-10

D ROP TA B L E S PACE 명령어, 9-15

D ROP USER 권한, 23-17

D ROP USER 명령어, 23-17

d u m p _ o r p h a n _ keys 프로시저, 19-6, 19-9

E

E S T I M ATE STATISTICS 옵션, 20-7

E X P _ F U L L _ DATABASE 롤, 24-5

Enterprise Manager

운영 체제 계정, 1-4

Export 유틸리티

정보, 1-17

제한 모드, 3-4

F

fix_corrupt_blocks 프로시저, 19-5, 19-7

FOREIGN KEY 제약조건

활성화, 20-19

G

GRANT OPTION

정보, 24-11

철회, 24-13

GRANT 명령어

ADMIN 옵션, 24-10

GRANT 옵션, 24-11

색인-5

SY S O P E R / SYSDBA 권한, 1-13

객체 권한, 24-10

시스템 권한 및 롤, 24-9

효과를 나타내는 경우, 24-15

H

HOST 명령어

SQL*Plus, 6-13

I

I/O

분산, 2-15

I/O 분산, 2-15

I M P _ F U L L _ DATABASE 롤, 24-5

INITIAL 저장 영역 매개변수, 12-7

변경, 14-11

INITRANS 저장 영역 매개변수

기본값, 12-9

변경, 14-11

설정에 대한 지침 사항, 12-9

트랜잭션 입력 항목, 12-9

I N S E RT 권한

부여, 24-11

철회, 24-13

I N T E R NAL

O S O P E R와 O S D B A, 1-8

대체 방안, 1-8

보안, 22-8

종료를 위해 접속, 3-10

I N T E R NAL 날짜 함수

작업 실행, 8-8

Import 유틸리티

정보, 1-17

제한 모드, 3-4

J

JQ 잠금, 8-9

L

L GW R, 4-11

LICENSE_MAX_SESSIONS 매개변수

데이터베이스 생성 전에 설정, 2-12

설정, 23-4

인스턴스 실행 중에 변경, 23-4

LICENSE_MAX_USERS 매개변수

데이터베이스 생성 전에 설정, 2-12

데이터베이스 실행 중에 변경, 23-6

설정, 23-6

L I C E N S E _ S E S S I O N S _ WARNING 매개변수

설정, 23-4

인스턴스 실행 중에 변경, 23-4

L I C E N S E _ S E S S I O N _ WARNING 매개변수

데이터베이스 생성 전에 설정, 2-12

LIST CHAINED ROWS 옵션, 20-9

L O G _ A RCHIVE_BUFFERS 매개변수

설정, 7-23

L O G _ A RCHIVE_BUFFERS 초기화매개변수,

7 - 2 3

L O G _ A RCHIVE_BUFFER_SIZE 초기화

매개변수, 7-23

L O G _ A RCHIVE_DEST 초기화매개변수

대상 지정, 7-11

L O G _ A RCHIVE_DEST_n 초기화매개변수,

7-11

REOPEN 옵션, 7-19

L O G _ A RCHIVE_DUPLEX_DEST 초기화

매개변수

대상 지정, 7-11

L O G _ A RC H I V E _ M A X _ P ROCESSES 초기화

매개변수, 7-20

L O G _ A RCHIVE_MIN_SUCCEED_DEST

초기화 매개변수, 7-17

색인-6

L O G _ A RC H I V E _ S TA RT 초기화 매개변수, 7-9

BAD PARAM 대상 상태, 7-14

설정, 7-9

LOG_BLOCK_CHECKSUM 초기화매개변수

리두 블록 검사 활성화, 6-16

LOG_FILES 초기화 매개변수

로그 파일 수, 6-10

LONG 데이터 유형, 12-18

LogMiner 유틸리티, 7-25, 7-31

딕셔너리 파일, 7-27

사용, 7-29, 7-30

아카이브된 리두 로그 분석에 사용, 7-25

L o g M i n e r, 7-25

M

M A X DATAFILES 매개변수

변경, 5-5

MAXEXTENTS 저장 영역 매개변수

데이터 딕셔너리에 대한 설정, 20-27

정보, 12-8

M A X I N S TANCES 매개변수

변경, 5-5

MAXLOGFILES 매개변수

변경, 5-5

MAXLOGFILES 옵션

C R E ATE DATABASE 명령어, 6-10

M A X L O G H I S T O RY

변경, 5-5

MAXLOGMEMBERS 매개변수

변경, 5-5

MAXLOGMEMBERS 옵션

MAXTRANS 저장 영역 매개변수

변경, 14-11

기본값, 12-9

설정에 대한 지침 사항, 12-9

트랜잭션 입력 항목, 12-9

MAX_DUMP_FILE_SIZE 매개변수, 4-11

M A X _ E NA B L E D _ ROLES 매개변수

기본 롤, 24-8

롤 활성화, 24-8

MINEXTENTS 저장 영역 매개변수

변경, 14-11

정보, 12-8

MODIFY PA RTITION 절

A LTER TABLE 명령어, 13-10

M OVE PA RTITION 절

A LTER TABLE 명령어, 13-11

M T S _ D I S PATCHERS 매개변수 초기 설정,4 - 5

N

NEXT 저장 영역 매개변수, 12-8

데이터 딕셔너리에 대한 설정, 20-27

N OA RCHIVELOG 모드

데이터 파일을 오프라인으로 설정, 10-8

매체 고장, 7-4

실행, 7-4

아카이브, 7-4

전환, 7-7

정의, 7-4

최근 백업 없음, 7-4

N OAUDIT 명령어

감사 옵션 비활성화, 25-11

권한, 25-12

명령문, 25-12

스키마 객체, 25-12

NOT NULL 제약 조건, 20-19

NUMBER 데이터 유형, 12-17

Net8

서비스 이름, 7-15

아카이브된 로그 전송, 7-15

O

OPTIMAL 저장 영역 매개변수, 21-5

O R A PWD 유틸리티, 1-9

OS 인증, 1-7

색인-7

O S _ ROLES 매개변수

R E M O T E _ O S _ RO L E S, 24-19

사용, 24-17

운영 체제 인증, 24-7

O racle 블록, 2-11

O racle8i

설치, 1-18

O racle8i 서버

릴리스 식별, 1-21

사용권 계약 준수, 23-2

프로세스

모니터링, 4-8

운영 체제 이름, 4-9

체크포인트(CKPT), 4-12

추적 파일 fp r, 4-10

O racle8i 서버 프로세스

프로세스

식별 및 관리, 4-7

전용 서버 프로세스, 4-2

P

PA R A L L E L _ M A X _ S E RVERS 매개변수, 4-13

PA R A L L E L _ M I N _ S E RVERS 매개변수, 4-13

PA R A L L E L _ S E RVER_IDLE_TIME 매개변수,

4 - 1 3

PA RTITION 절

C R E ATE TABLE 명령어, 13-9

PCTFREE 저장 영역 매개변수

P C T U S E D, 12-6

기본값, 12-3

변경, 14-10

블록 오버헤드, 12-6

설정에 대한 지침 사항, 12-3

인덱스, 12-4

작업 방법, 12-2

클러스터화되지 않은 테이블, 12-4

클러스터화된 테이블, 12-4

PCTINCREASE 저장영역 매개변수

데이터 딕셔너리에 대한 설정, 20-27

변경, 12-11

정보, 12-8

PCTUSED 저장 영역 매개변수

P C T F R E E, 12-6

기본값, 12-5

변경, 14-10

블록 오버헤드, 12-6

설정에 대한 지침 사항, 12-5

작업 방법, 12-4

PL/SQL 프로그램 단위

바뀐 뷰, 15-9

삭제된 테이블, 14-12

P R I M A RY KEY 제약 조건

관련 인덱스, 16-8

관련 인덱스 삭제, 16-15

관련 인덱스의 저장 영역, 16-8

비활성화, 20-19

삭제된 경우 외래 키 참조, 20-20

생성 시 활성화, 16-8

활성화, 20-19

P ROCESSES 매개변수

데이터베이스 생성 전에 설정, 2-12

PUBLIC 사용자 그룹

권한 부여 및 철회, 24-15

프로시저, 24-15

P U B L I C _ D E FAU LT 프로파일

사용, 23-18

프로파일 삭제, 23-21

Pa rallel Server

A LTER CLUSTER. . A L L O CAT E

E X T E N T, 17-10

명명된 사용자 한계, 23-5

명명된 사용자, 2-13

색인-8

사용권이 지정된 세션 수, 2-13

세션과 경고 한계, 23-4

시퀀스 번호, 15-10

아카이브를 위한 스레드 지정, 7-11

온라인 리두 로그의 스레드, 6-2

인스턴스 데이터 파일 상한값, 10-3

자신의 롤백 세그먼트, 21- 3

R

re b u i l d _ freelists 프로시저, 19-6, 19-10

REBUILD PA RTITION 절

A LTER INDEX 명령어, 13-11, 13-20

REFERENCES 권한

CA S CADE CONSTRAINTS 옵션, 24-13

철회, 24-13

R E M O T E _ L O G I N _ PASSWORDFILE 매개

변수, 1-11

R E M O T E _ O S _ AUTHENT 매개변수

설정, 23-10

R E M O T E _ O S _ ROLES 매개변수

설정, 24-8, 24-19

R E NAME 명령어, 20-2

REOPEN 객체

L O G _ A RCHIVE_DEST_n 초기화매개변수,

7 - 1 9

R E S O U RCE 롤, 24-5

R E S O U RCE_LIMIT 매개변수

한계 활성화 및 비활성화, 23-21

RESTRICTED SESSION 권한

세션 한계, 23-3

제한 모드, 3-4

제한 모드의 인스턴스, 3-8

R E VOKE 명령어, 24-12

효과를 나타내는 시기, 24-15

RO L L B ACK_SEGMENTS 매개변수

데이터베이스 생성 전에 설정, 2-12

롤백 세그먼트 추가, 21-8

S

SCN, 10-14

S E Q U E N C E _ CACHE_ENTRIES 매개변수,

1 5 - 1 1

SET ROLE 명령어

암호 설정 방법, 24-7

운영 체제 롤 사용 시기, 24-19

SET TRANSACTION 명령어

USE RO L L B ACK SEGMENT 옵션,

2 1 - 1 3

S GA

캐시에 있는 버퍼 결정, 2-11

S H U T D OWN 명령어

A B O RT 옵션, 3-12

I M M E D I ATE 옵션, 3-11

NORMAL 옵션, 3-11

skip_corrupt_blocks 프로시저, 19-5, 19-11

SNP 백그라운드 프로세스

정보, 8-2

S O RT_AREA_SIZE 매개변수

인덱스 생성, 16-3

SPLIT PA RTITION 절, 13-18

A LTER INDEX 명령어, 13-18

A LTER TABLE 명령어, 13-11, 13-17

SQL 문

감사 옵션 비활성화, 25-12

감사 옵션 활성화, 25-10

SQL 추적 기능

활성화 시기, 4-12

SQL*Loader

인덱스, 16-3

정보, 1-17

SQL*Plus 명령어

명령어 참조, SQL*Plus

색인-9

S Q L _ T R ACE 매개변수

추적 파일, 4-10

S TALE 상태

리두 로그 멤버, 6-15

S TA RTUP 명령어, 3-2

F O RCE 옵션, 3-5

MOUNT 옵션, 3-4

NOMOUNT 옵션, 2-6, 3-3

R E C OVER 옵션, 3-5

데이터베이스 이름 지정, 3-3

SWITCH LOGFILE 옵션

A LTER SYSTEM 명령어, 6-16

SY S

권한, 1-5

보호 정책, 22-7

사용자, 1-5

소유한 객체, 1-5

초기 암호, 1-5

SY S. AUD$

감사 트레일, 25-2

생성 및 삭제, 25-4

SY S O P E R / SYSDBA 권한

권한을 부여받을 사용자 결정, 1-13

부여 및 철회, 1-13

암호 파일에 사용자 추가, 1-12

접속, 1-14

SYSTEM

보호 정책, 22-7

사용자, 1-5

소유한 객체, 1-5

초기 암호, 1-5

SYSTEM 롤백 세그먼트

저장 영역 매개변수 변경, 21-9

SYSTEM 테이블스페이스

데이터가 아닌 딕셔너리 테이블, 14-3

삭제할 수 없음, 9-15

생성된 경우, 9-4

오프라인 설정에 대한 제한 사항, 10-7

초기 롤백 세그먼트, 21-2

T

T N S NA M E S.ORA 파일, 7-12

T R A N SACTIONS 매개변수

사용, 21-2

T R A N SAC T I O N S _ P E R _ RO L L B AC K _

SEGMENT 매개변수 사용, 21-2

T RU N CATE PA RTITION 절

A LTER TABLE 명령어, 13-15

T RU N CATE 명령어, 20-9

D ROP STORAGE 옵션, 20-11

REUSE STORAGE 옵션, 20-11

U

UNIQUE 키 제약 조건

관련 인덱스 삭제, 16-15

관련 인덱스, 16-8

관련 인덱스의 저장 영역, 16- 8

비활성화, 20-19

삭제된 경우 외래 키 참조, 20-20

생성 시 활성화, 16-8

활성화, 20-19

UNLIMITED TA B L E S PACE 권한, 23-14

U N R E C OVERABLE DATAFILE 옵션

A LTER DATABASE 명령어, 6-17

U P DATE 권한

철회, 24-13

USER_DUMP_DEST 매개변수, 4-11

U S E R _ E X T E N T S, 10-13

U S E R _ F R E E, 9-31, 10-13

USER_INDEXES 뷰

데이터 채움, 20-5

U S E R _ S E G M E N T S, 9-31, 10-13

색인-1 0

U S E R _ TABLES 뷰

데이터 채움, 20-5

U S E R _ TA B L E S PAC E S, 9-31, 10-13

U S E R _ TAB_COLUMNS 뷰

데이터 채움, 20-5

U T L C H A I N . S Q L, 20-8

U T L L O C K T.SQL 스크립트, 4-8

V

V $A RCHIVE 뷰, 7-23

V $A RCHIVE_DEST 뷰

대상 상태 획득, 7-14

V $DATABASE 뷰, 7-24

V $DATA F I L E, 9-31, 10-13

V $DBFILE 뷰, 2-8

V $D I S PATCHER 뷰

디스패처 프로세스 로드 제어, 4-7

V $LICENSE 뷰, 23-6

V $LOG 뷰, 7-23

리두 데이터 보기, 6-18

아카이브 상태 표시, 7-23

온라인 리두 로드, 6-18

V $LOGFILE 뷰, 2-8

로그 파일 상태, 6-15

리두 데이터 보기, 6-18

V $LOGMNR_CONTENTS 뷰, 7-31

아카이브된 리두 로그 분석에 사용, 7-25

V $PWFILE_USERS 뷰, 1-13

V $QUEUE 뷰

디스패처 프로세스 로드 제어, 4-7

V $RO L L NAME

PENDING OFFLINE 세그먼트찾기,

2 1 - 1 5

V $RO L L S TAT

PENDING OFFLINE 세그먼트찾기,

2 1 - 1 5

V $SESSION, 8-14

V $SESSION 뷰, 4-17

V $THREAD 뷰, 6-18

리두 데이터 보기, 6-18

VA L I DATE STRUCTURE 옵션, 20-8

VA RCHAR2 데이터 유형, 12-17

영역 사용, 12-17

W

WORM 장치

읽기 전용 테이블스페이스, 9-14

ㄱ감사 트레일, 25-14

레코드, 25-7

레코드 삭제, 25-15

무결성 보호, 25-16

변경 사항 감사, 25-16

변경 사항 기록, 25-16

뷰, 25-4

뷰 삭제, 25-5

생성 및 삭제, 25-4

아카이브, 25-15

최대 크기, 25-14

크기 제어, 25-14

크기 축소, 25-16

테이블, 25-2

해석, 25-17

감사, 25-2

AUDIT 명령어, 25-9

감사 옵션 레벨, 25-8

감사 트레일 관리, 25-4

감사 트레일 레코드, 25-5

객체에 대한 단축키, 25-9

객체에 대해 필요한 권한, 25-11

권한 감사 옵션, 25-9

색인-1 1

기본 옵션 비활성화, 25-13

기본 옵션, 25-11

데이터베이스 사용, 25-2

명령문 레벨, 25-8

명령문, 25-10

보기

기본 객체 옵션, 25-19

활성화된 객체 옵션, 25-19

활성화된 권한 옵션, 25-18

활성화된 명령문 옵션, 25-18

뷰, 25-4

세션 레벨, 25-8

손상을 입힐 수 있는 작업, 25-3

스키마 객체, 25-11

시스템 권한, 25-10

시스템에 대한 단축키, 25-8

시스템에 대해 필요한 권한, 25-10

옵션 비활성화 대 감사, 25-12

옵션 비활성화, 25-11, 25-12, 25-13

옵션 활성화 대 감사, 25-10

옵션 활성화, 25-9, 25-13

운영 체제 감사 트레일, 25-7

정보 관리, 25-2

정책, 22-18

지침 사항, 25-2

트리거, 25-20

현재까지의 누적 정보, 25-4

개발자, 응용 프로그램, 22-9

객체 분석

권한, 20-3

정보, 20-3

객체, 스키마

권한 부여, 24-10

권한 철회, 24-12

권한, 24-3

기본 테이블스페이스, 23-13

삭제된 사용자 소유, 23-16

철회된 테이블스페이스, 23-14

철회의 단계적 효과, 24-14

경고

C O N T ROL_FILES 매개변수 설정, 2-10

감사 옵션 비활성화, 25-12

감사 활성화, 25-10

데이터 딕셔너리 저장 영역 변경

매개변수, 20-27

롤백 세그먼트 생성, 2-12

이중화된 제어 파일 사용, 5-2

계정

사용자

SYS 및 SY S T E M, 1-5

운영 체제

데이터베이스 관리자, 1-4

롤 식별, 24-17

계획

관계형 설계, 1-19

데이터베이스 생성, 2-2

데이터베이스, 1-18

고수위

세션용, 23-3

고장

매체

다중화된 온라인 리두 로그, 6-5

공용

동의어, 15-11

공용 롤백 세그먼트

사용을 위해 사용 가능한 상태로 표시, 21-10

오프라인으로 설정, 21-12

공유 SQL 영역

A NA LYZE 명령어, 20-8

공유 모드

롤백 세그먼트, 21-3

공유 서버 프로세스

색인-1 2

수 변경 권한, 4-6

최소 수 변경, 4-6

추적 파일, 4-10

공유 풀

A NA LYZE 명령어, 20-8

관계형 설계

계획, 1-19

관리

감사, 25-1

객체 종속성, 20-23

동의어, 15-11

롤, 24-4

롤백 세그먼트, 21-1

뷰, 15-1, 15-9

사용자, 23-11

시퀀스, 15-9

인덱스, 16-1, 16-15

작업, 8-3

클러스터 인덱스, 17-1

클러스터, 17-1

클러스터화된 테이블, 17-1

테이블, 14-1

프로파일, 23-17

권한 및 롤 철회

R E VOKE 명령어, 24-12

객체 권한 단축키, 24-3

선택한 열, 24-13

운영 체제 롤 사용 시기, 24-18

권한, 24-2, 24-3

C R E ATE SCHEMA 명령어, 20-2

RESTRICTED SESSION 시스템권한,

3-4, 3-8

각 권한 이름, 24-2

객체 감사, 25-11

객체 권한 철회, 24-12

객체 분석, 20-3

객체 철회, 24-12

객체, 24-3

계단식 철회, 24-14

관리 정책, 22-5

데이터 파일을 온라인 및 오프라인으로

설정, 10-8

데이터베이스 관리자, 1-4

로그 스위치 강제 시행, 6-16

롤 그룹화, 24-4

리두 로그 그룹 추가, 6-11

변경

기본 저장 영역 매개변수, 9-8

디스패처 권한, 4-7

롤 인증, 24-6

롤백 세그먼트, 21-9

명명된 사용자 한계, 23-6

사용자, 23-15

시퀀스, 15-10

암호, 23-16

인데스, 16-13

테이블, 14-10

부여

객체 권한, 24-10

시스템 권한, 24-9

정보, 24-9

필요한 권한, 24-10

부여 내용 나열, 24-20

뷰 바꾸기, 15-8

뷰 재컴파일, 20-25

사용 감사, 25-9

삭제

동의어, 15-12

롤, 24-9

롤백 세그먼트, 21-14

리두 로그 그룹, 6-14

뷰, 15-9

색인-1 3

시퀀스, 15-11

온라인 리두 로그 멤버, 6-15

인덱스, 16-15

클러스터, 17-10

테이블, 14-12

생성

동의어, 15-12

롤, 24-4

롤백 세그먼트, 21-7

뷰, 15-2

사용자, 23-11

시퀀스, 15-10

테이블, 14-9

테이블스페이스, 9-4

선택한 열, 24-13

세션 한계 변경, 23-5

수동 아카이브, 7-10

시스템 감사, 25-10

시스템, 24-2

열, 24-11

운영 체제

데이터베이스 관리자에게 필요함, 1-4

응용 프로그램 개발자, 22-9

이름 바꾸기

객체, 20-2

리두 로그 멤버, 6-12

여러 테이블스페이스의 데이터 파일,

10-10

테이블스페이스의 데이터 파일, 10-9

자동 아카이브 기능 비활성화, 7-9

자동 아카이브 기능 활성화, 7-8

자원 비용 설정, 23-20

자원 제한 활성화 및 비활성화, 23-21

작업 대기열, 8-4

잘라버리기, 20-10

철회, 24-12

ADMIN OPTION, 24-12

GRANT OPTION, 24-13

객체 권한, 24-14

시스템 권한, 24-12

클러스터 생성, 17-6

테이블스페이스 병합, 9-9

테이블스페이스를오프라인으로 설정, 9-10

테이블스페이스를 온라인으로 설정, 9-10

테이블스페이스에 데이터 파일 추가, 10-5

트리거 활성화 및 비 활성화, 20-12

패키지 재컴파일, 20-25

프로시저 재컴파일, 20-25

프로파일 삭제, 23-21

권한과 롤 부여

SY S O P E R / SYSDBA 권한, 1-13

객체 권한 단축키, 24-3

부여 나열, 24-19

그룹

리두 로그 파일

LOG_FILES 초기화 매개변수, 6-10

글로벌 사용자, 23-10

글로벌 인덱스

분할 영역 삭제, 13-12, 13-15

분할 영역 분할, 13-18

기록 테이블

시간 창 이동, 13-20

기본값

감사 옵션, 25-11

비활성화, 25-13

롤, 23-16

사용자 테이블스페이스, 23-12

임시 테이블스페이스, 23-13

테이블스페이스 할당량, 23-13

프로파일, 23-18

색인-1 4

내장 프로시저

P U B L I C에 부여된 권한 사용, 24-15

재컴파일 권한, 20-25

네트워크 프로토콜

각각에 대한 디스패처, 4-5

ㄷ다중 스레드 서버

데이터베이스 시작, 3-2

디스패처 구성, 4-5

시작, 4-4

운영 체제 롤 관리 제한 사항, 24-19

운영 체제 롤 인증에 대한 제한 사항, 24-7

전용 서버와 비교, 4-3

활성화 및 비활성화, 4-6

다중화

리두 로그 파일, 6-5

그룹, 6-6

아카이브된 리두 로그, 7-11

단계, 1-18, 1-20

단계적 호출, 24-14

단축키

C O N N E C T, 감사용, 25-8

객체 감사, 25-9

객체 권한, 24-3

명령문 레벨 감사 옵션, 25-8

대기 전송 모드

Net8, 7-15

RFS 프로세스, 7-15

정의, 7-15

대기열 작업 소유자, 8-7

대상

아카이브된 리두 로그

예제 시나리오, 7-18

대상, 10-5, 21-12

대상 지정

아카이브된 리두 로그, 7-11

대체 문자

뷰, 15-4

데이터

보안, 22-3

데이터 딕셔너리

V $DBFILE 뷰, 2-8

V $D I S PATCHER 뷰, 4-7

V $LOGFILE 뷰, 2-8

V $QUEUE 뷰, 4-7

삭제된 테이블, 14-12

세그먼트, 20-27

스키마 객체 뷰, 20-29

저장 영역 매개변수 변경, 20-29

저장 영역 매개변수 설정, 20-26

제어 파일과 충돌, 5-8

데이터 무결성, 20-19

무결성 제약 조건, 20-19

데이터 블록

PCTFREE 저장 영역 매개 변수, 12-3

PCTUSED 저장 영역 매개변수, 12-5

검증, 10-12

영역 사용 관리, 12-2

운영 체제 블록, 2-11

크기 변경, 2-11

크기, 2-11

클러스터에서 공유, 17-2

데이터 유형

DAT E, 12-18

L O N G, 12-18

N U M B E R, 12-17

각 유형 이름, 12-17

문자, 12-17

영역 사용, 12-17

요약, 12-19

데이터 파일

색인-1 5

M I S S I N G, 5-8

관련 테이블스페이스 검사, 9-31

관리, 10-1

기본 디렉토리, 10-5

단일 테이블의 이름 바꾸기, 10-9

데이터 블록 검증, 10-12

데이터베이스 관리자 액세스, 1-4

데이터베이스를 열 때 사용할 수 없음, 3-3

리두 로그 파일과 별도로 저장, 10-4

모니터, 10-13

보기

V $DBFILE 및 V$LOGFILE 뷰, 2-8

일반 상태, 10-13

삭제, 9-14

N OA RCHIVELOG 모드, 10-8

생성, 9-3

오프라인 설정 권한, 10-8

온라인 및 오프라인으로 설정, 10-7

온라인, 10-8

위치 재지정, 10-9, 10-10

위치 재지정, 예, 10-11

위치, 10-4

이름 바꾸기 권한, 10-9

이름 바꾸기, 10-9, 10-10

재사용, 10-5

최대 수, 10-2

최소 수, 10-2

크기, 10-4

테이블스페이스에 추가, 10-5

파일 이름 식별, 10-11

파일명 완전히 지정, 10-5

데이터베이스

C R E ATE DATABASE 명령어, 2-7

가용성, 3-7

감사, 25-1

계획, 1-18

관리

크기, 10-1

관리, 1-1

구조

분산 데이터베이스, 1-19

논리적 구조, 1-19

데이터 파일 및 리두 로그 파일 보기, 2-8

데이터베이스 마운트, 3-4

물리적 구조, 1-19

배타 모드, 3-6

백업

생성 후, 1-20

전체 백업, 2-7

병렬 모드, 3-6

사용자 책임, 1-3

삭제, 2-8

생성

문제 해결, 2-8

열기, 1-19

설계

구현, 1-20

시작

데이터베이스 생성 전, 2-6

액세스 제한, 3-4

일반 프로시저, 3-2

액세스 제한, 3-4, 3-8

열기

닫힌 데이터베이스, 3-7

이름

정보, 2-9

충돌, 2-9

이름 바꾸기, 5-5

이전, 2-3

인스턴스에 마운트, 3-7

전역 데이터베이스 이름

분산 시스템, 2-9

색인-1 6

전역 데이터베이스 이름

정보, 2-9

제어 파일 지정, 2-10

제어 파일, 5-2

제품, 22-9, 22-11

조정

대규모 데이터베이스 아카이브, 7-20

책임, 1-20

테스트, 22-9

하드웨어 평가, 1-18

데이터베이스 관리자, 1-2

정보, 1-6

보안, 22-7

보안, 22-8

보안 관리자, 1-3, 22-2

보안 및 권한, 1-4

사용자명, 1-5

암호 파일, 1-7

운영 체제 계정, 1-4

유틸리티, 1-17

응용 프로그램 관리자, 22-11

임무, 1-2

초기 우선순위, 1-17

데이터베이스 링크

작업 대기열, 8-9

데이터베이스 마운트, 3-4

배타 모드, 3-6

병렬 모드, 3-6

데이터베이스 설계 구현, 1-20

데이터베이스 시작

일반 프로시저, 3-2

정보, 3-1

데이터베이스 열기

마운트된 데이터베이스, 3-7

생성 후, 1-19

데이터베이스 자원 관리자, 11-1

데이터베이스 종료, 3-1

데이터베이스에 대한 액세스 제한

인스턴스 시작, 3-4

데이터베이스의 논리적 구조, 1-19

데이터베이스의 물리적 구조, 1-19

동의어

공용, 15-11

관리, 15-11

삭제 권한, 15-12

삭제, 15-12

삭제된 테이블, 14-12

생성 권한, 15-12

생성, 15-12

전용, 15-11

종속성 표시, 20-32

동적 성능 테이블

사용, 4-9

등록

데이터베이스 사용자, 1-20

디스패처 프로세스

새 디스패처 프로세스 생성, 4-7

수 변경 권한, 4-7

수 설정, 4-7

시작할 수, 4-5

제거, 4-7

딕셔너리 파일

L o g M i n e r, 7-27

ㄹ레벨

보안, 22-3

로그 기록자 프로세스( L GWR)

다중화된 리두 로그 파일, 6-6

사용 가능한 온라인 리두 로그, 6-3

온라인 리두 로그 파일에 기록, 6-2, 6-3

색인-1 7

추적 파일 모니터, 4-11

추적 파일, 6-6

로그 스위치

강제 시행, 6-16

권한, 6-16

다중화된 리두 로그 파일, 6-7

로그 시퀀스 번호, 6-5

설명, 6-5

아카이브될 때까지 중지, 6-7

로그 스위치 강제 시행, 6-16

A LTER SYSTEM 명령어, 6-16

로그 시퀀스 번호

제어 파일, 6-5

ADMIN OPTION 철회, 24-12

ADMIN OPTION, 24-10

CONNECT 롤, 24-5

DBA 롤, 1-6, 24-5

E X P _ F U L L _ DATA B A S E, 24-5

GRANT OPTION, 24-11

GRANT 명령어, 24-19

I M P _ F U L L _ DATA B A S E, 24-5

OS 관리와 다중 스레드 서버, 24-19

R E S O U RCE 롤, 24-5

R E VOKE 명령어, 24-19

SET ROLE 명령어, 24-19

고유한 이름, 24-4

관리, 24-4

권한

삭제, 24-9

생성, 24-4

시스템 권한 또는 롤 부여, 24-9

암호 변경, 24-6

인증 방법 변경, 24-6

권한 및 롤 나열, 24-23

기본, 23-16

나열, 24-22

다중 스레드 서버, 24-7

데이터베이스 인증, 24-7

롤 그룹화, 24-4

멀티 바이트 문자

이름, 24-5

미리 정의됨, 1-6, 24-5

보안, 22-6

부여

정보, 24-9

부여 내용 나열, 24-21

삭제, 24-8

암호 변경, 24-8

암호의 멀티 바이트 문자, 24-7

역방향 호환성, 24-5

운영 체제 부여, 24-17, 24-19

운영 체제 인증, 24-7

운영 체제를 사용하여 관리, 24-16

응용 프로그램 개발자, 22-10

인증 변경, 24-8

인증 없음, 24-8

인증, 24-6

철회, 24-12

활성화를 위한 암호, 24-7

롤백 세그먼트

AVA I L A B L E, 21-11

O F F L I N E, 21-11

PA RT LY AVA I L A B L E, 21-11

PENDING OFFLINE, 21-12

공용 및 전용 생성, 21-3

공용 변경, 21-9

관리, 21-1

관리에 대한 지침 사항, 21-2

권한

변경하기 위해 필요함, 21-9

삭제, 21-14

색인-1 8

생성하기 위해 필요함, 21-7

데이터베이스 생성 후에 생성, 21-3

동일하게 크기 확장, 21-5

명시적으로 트랜잭션 지정, 21-13

모니터, 21-6

모든 롤백 세그먼트 이름 표시, 21-15

부적합 상태, 21-14

사용 가능으로 표시, 21-10

삭제, 21-13

삭제를 위한 상태, 21-13

상태, 21-11

생성, 21-8

설정

PA RT LY AVAILABLE 세그먼트온라인,

21-11

새 롤백 세그먼트 사용 시 온라인, 21-8

온라인, 21-11

자동으로 온라인, 21-11

수 선택, 2-14

시작 시 획득, 2-12

여러 개 사용, 21-2

오프라인 롤백 세그먼트, 21-10

오프라인 상태, 21-12

오프라인으로 설정, 21-12

오프라인인지 점검, 21-12

온라인 롤백 세그먼트, 21-10

온라인 상태, 21-12

위치, 21-7

자동으로 획득, 21-3, 21-11

저장 영역 매개변수 변경, 21-9

저장 영역 매개변수, 21-8

지연됨, 21-16

초기, 21-2

크기 선택, 2-14

크기 설정, 21-4

크기 줄이기, 21-10

테이블스페이스를오프라인으로 설정, 9-12

트랜잭션, 21-13

표시

PENDING OFFLINE 세그먼트, 21-15

정보, 21-14

지연된 롤백 세그먼트, 21-16

지연된 모든 롤백 세그먼트, 21-16

할당, 2-14

확장 영역 나열, 20-32

리두 레코드, 6-2

리두 로그 버퍼

기록, 6-2

리두 로그 파일

L GW R, 6-3

계획, 6-5 ~ 6-10

권한

그룹 및 멤버 추가, 6-11

그룹, 6-6

LOG_FILES 초기화 매개변수, 6-10

멤버, 6-6

삭제, 6-14

생성, 6-11

수 줄이기, 6-10

스레드, 6-2

내용, 6-2

다중화, 6-5

그룹, 6-6

일부 멤버를 액세스할 수 없는 경우, 6-7

다중화됨

다이어그램, 6-6

모든 멤버를 액세스할 수 없는 경우, 6-7

로그 스위치, 6-5

로그 시퀀스 번호, 6-5

리두 로그의 수, 6-9

리두 입력 항목, 6-2

멤버 생성, 6-11

색인-1 9

멤버, 6-6

삭제, 6-14

생성, 6-11

최대 수, 6-10

보기, 2-8

분산 트랜잭션 정보, 6-3

블록 검증, 6-16

비활성, 6-4

사용 가능, 6-3

생성

그룹 및 멤버, 6-11

아카이브됨

내용, 7-2

로그 스위치, 6-5

장점, 7-2

아카이브된 리두 로그 파일, 7-7

아카이브된 리두 로그, 7-4

온라인 리두 로그, 6-1

온라인, 6-2

두 가지에 대한 요구 사항, 6-3

복구 사용, 6-2

스레드, 6-2

올바른 구성과 잘못된 구성, 6-7

요구 사항, 6-7

이중화됨

로그 스위치, 6-7

중요한 사용, 6-3

지우기, 6-7, 6-17

제한 사항, 6-17

활성(현재), 6-4

리두 로그 파일 지우기, 6-7, 6-17

제한 사항, 6-17

리두 입력 항목

내용, 6-2

리두 레코드 참조

릴리스

O racle8i 식별, 1-21

다른 오라클 소프트웨어 버전, 1-22

릴리스 번호 점검, 1-22

유지 관리 릴리스 번호, 1-21

특정 포트 릴리스 번호, 1-22

패치 릴리스 번호, 1-22

ㅁ매개변수 사용, 21-2

매개변수 파일

각 매개변수 이름, 2-9

데이터베이스 생성 전에 편집, 2-5

데이터베이스 생성을 위한 생성, 2-4

문자 집합, 3-14

수, 3-14

예제, 3-14

위치, 3-15

최소 설정, 2-9

매체 복구

아카이브 결과, 7-4

메모리

사용자 당 보기, 23-25

명령어, SQL

C R E ATE DATA B A S E, 6-10

명령어, SQL*Plus

A RCHIVE LOG, 6-14

H O S T, 6-13

명명된 사용자 제한, 23-5

초기 설정, 2-13

모니터

데이터 파일, 10-13

롤백 세그먼트, 21-6

성능 테이블, 4-9

인스턴스의 프로세스, 4-8

잠금, 4-8

테이블스페이스, 10-13

색인-2 0

모드

배타, 3-6

병렬, 3-6

제한, 3-4, 3-8

무결성 제약 조건

관리, 20-15

비활성, 20-14, 20-19

비활성화할 시기, 20-15

삭제 및 비활성화, 16-7

삭제, 20-21

생성 시 비활성화, 20-18

생성 시 활성화, 20-18

예외 사항, 20-21

위반 사항, 20-15

위반 사항이 있는 경우 활성화, 20-15

테이블스페이스 삭제, 9-15

활성화, 20-14

무결성 제약 조건 위반, 20-15

문숫자 데이터 유형, 12-17

문자 집합

O ra c l e에 의해 지원됨, 12-17

데이터베이스 생성 시 지정, 2-2

멀티 바이트 문자

롤 암호, 24-7

롤 이름, 24-5

사용자 암호, 23-12

매개변수 파일, 3-14

미결 영역, 11-5

미리 정의된 롤, 1-6

미확정 트랜잭션

롤백 세그먼트, 21-11

ㅂ바꾸기

뷰, 15-8

배타 모드

나머지 사용자 세션 종료, 4-16

데이터베이스, 3-6

롤백 세그먼트, 21-3

백그라운드 프로세스

O racle8i 프로세스, 4-9

백업

데이터베이스 생성 전, 2-4

새 데이터베이스 생성 후

전체 백업, 2-7

지침 사항, 1-20

아카이브 결과, 7-4

버그 수정 내용, 1-21

버전, 1-21

다른 오라클 소프트웨어, 1-22

버퍼

S GA의 버퍼 캐시, 2-11

벡터 변경, 6-2

변경

공용 롤백 세그먼트, 21-9

데이터베이스 상태, 3-7

롤백 세그먼트의 저장 영역 매개변수, 21-9

사용자, 23-15

시퀀스, 15-10

인덱스, 16-13

저장 영역 매개변수, 14-10

클러스터 인덱스, 17-9

클러스터, 17-8

클러스터화된 테이블, 17-9

테이블, 14-10, 14-11

테이블스페이스 저장 영역, 9-8

해시 클러스터, 18-8

병렬 모드

데이터베이스, 3-6

병렬 질의 옵션

서버 프로세스의 수, 4-13

인덱스 생성 병렬화, 16-5

색인-2 1

질의 서버, 4-13

테이블 생성 병렬화, 14-4

보안

R E M O T E _ O S _ ROLES 매개변수, 24-19

감사 정책, 22-18

감사 트레일 보호, 25-16

관리자, 22-2

권한 관리 정책, 22-5

권한, 22-2

데이터, 22-3

데이터베이스 관리자 정책, 22-7

데이터베이스 보안, 22-2

데이터베이스 사용자, 22-2

데이터베이스 액세스, 22-2

레벨, 22-3

멀티 바이트 문자

롤 암호, 24-7

롤 이름, 24-5

사용자 암호, 23-12

보안 관리자, 1-3

보안을 강제 시행할 롤, 22-6

사용자의 인증, 22-2

운영 체제 보안과 데이터베이스, 22-3

응용 프로그램 개발자, 22-9

일반 사용자, 22-4

정책 구축, 22-1

보안 처리

O racle 암호, 23-8

복구

새 제어 파일 생성, 5-5

자동으로 시작, 3-5

복구 불가능

테이블, 14-4

복구 불가능한 인덱스

인덱스, 16-5

부적합한 작업 상태

아카이브된 리두 로그, 7-13

분산 데이터베이스

A RCHIVELOG 모드에서 실행, 7-6

N OA RCHIVELOG 모드에서 실행, 7-6

원격 인스턴스 시작, 3-6

분산 처리

매개변수 파일 위치, 3-15

분할 영역

인덱스에 추가, 13-12

인덱스에서 삭제, 13-14

분할된 객체, 13-1 ~ 13-21

병합, 13-18

분할 영역 분할, 13-17

생성, 13-9

유지 관리 작업 중 응용 프로그램 정지,

13-21

유지 관리, 13-9 ~ 13-21

이동, 13-10

잘라버리기, 13-15

정의, 13-2

추가, 13-11

분할된 뷰

분할된 테이블로 변환, 13-18

분할된 인덱스

분할 영역 재구축, 13-20

분할된 테이블

분할 영역 분할, 13-17

분할 영역 추가, 13-11

분할되지 않은 테이블로 변환, 13-18

분할됨

분할된 테이블로 변환, 13-18

FOR UPDATE 절, 15-3

ORDER BY 절, 15-3

WITH CHECK OPTION, 15-3

색인-2 2

V $A RC H I V E, 7-23

V $A RC H I V E _ D E S T, 7-14

V $DATA B A S E, 7-24

V $ITHCWHECK OPTION, 15-3

V $L O G, 6-18, 7-23

V $L O G F I L E, 6-15, 6-18

V $L O G M N R _ C O N T E N T S, 7-25, 7-31

V $T H R E A D, 6-18

관리, 15-1, 15-9

권한, 15-2

대체 문자, 15-4

바꾸기 권한, 15-8

바꾸기, 15-8

삭제 권한, 15-9

삭제, 15-9

삭제된 테이블, 14-12

생성, 15-2

오류가 있는 채로 생성, 15-4

재컴파일 권한, 20-25

재컴파일, 20-25

종속성 표시, 20-32

블록 검증

리두 로그 파일, 6-16

비용

자원 제한, 23-20

비트매핑된 테이블스페이스, 9-5

비활성 대상 상태

아카이브된 리두 로그, 7-14

비활성화

감사 옵션, 25-11, 25-12

감사, 25-13

무결성 제약 조건, 20-18

인덱스에 영향, 16-7

자원 제한, 23-21

트리거, 20-12

아카이브, 7-7, 7-9

ㅅ사용 가능 영역

병합, 9-8

빈 확장 영역 나열, 20-33

테이블스페이스, 9-32

사용 가능한 대상 상태

아카이브된 리두 로그, 7-13

사용, 10-10, 23-10

사용 불가능한 대상 상태

아카이브된 리두 로그, 7-13

사용권

동시 사용, 23-2

동시 세션 수, 2-13

명명된 사용자 한계 변경 권한, 23-6

명명된 사용자, 23-2, 23-5

사용권 계약 준수, 2-12, 23-2

세션 기준, 23-2

세션 한계 변경 권한, 23-5

한계 보기, 23-6

사용자

PUBLIC 그룹, 24-15

고유한 사용자 이름, 2-13, 23-5

관리, 23-11

권한 관리 정책, 22-5

기본 롤 변경, 23-16

기본 테이블스페이스, 23-12

나열, 23-22

등록, 1-20

롤 삭제, 24-8

멀티 바이트 문자

암호, 23-12

메모리 사용 보기, 23-25

무제한 할당량 지정, 23-14

변경, 23-15

보안, 22-2

색인-2 3

부여된 권한 나열, 24-20

부여된 롤 나열, 24-21

사용자 보안, 22-4

사용자 이름 지정, 23-12

삭제 권한, 23-17

삭제 후 객체, 23-16

삭제, 23-16

새로 생성된 데이터베이스, 2-14

생성 권한, 23-11

세션, 종료, 4-17

수 제한, 2-13

식별, 23-7

암호 변경 권한, 23-15

암호 보안, 22-4

인증

데이터베이스 인증, 23-8

인증

정보, 22-2, 23-7

일반 사용자 보안 정책, 22-5

정보 보기, 23-23

조합 한계, 23-19

테이블스페이스 할당량 보기, 23-24

테이블스페이스 할당량 지정, 9-3

테이블스페이스 할당량, 23-13

프로파일 삭제, 23-21

프로파일 지정, 23-18

사용자명

SY S와 SY S T E M, 1-5

삭제

감사 트레일, 25-4

데이터 파일, 9-14

데이터베이스, 2-8

동의어, 15-12

롤, 24-8

롤백 세그먼트, 21-11, 21-13

무결성 제약 조건

인덱스에 영향, 16-7

정보, 20-21

뷰, 15-9

사용자, 23-16

시퀀스, 15-11

온라인 리두 로그 그룹, 6-14

온라인 리두 로그 멤버, 6-14

인덱스 분할 영역, 13-14

인덱스, 16-15

제어 파일, 5-9

클러스터 인덱스, 17-10

클러스터, 17-10

테이블 분할 영역, 13-12

테이블, 14-12

테이블스페이스

정보, 9-14

필요한 권한, 9-15

프로파일, 23-21

해시 클러스터, 18-9

삭제

테이블 통계, 20-4

생성

감사 트레일, 25-4

다중 객체, 20-2

데이터 파일, 9-3, 10-5

데이터베이스, 1-19, 2-1

C R E ATE DATABASE 실행, 2-6

다른 버전에서 이전, 2-3

문제 발생, 2-8

새 데이터베이스 백업, 2-7

설치 중, 2-3

준비, 2-2

필요 조건, 2-3

데이터베이스, 7-7

동의어, 15-12

롤백 세그먼트

색인-2 4

정보, 21-8

저장 영역 매개변수 지정, 21-8

리두 로그 멤버, 6-11

매개변수 파일, 2-4

분할된 객체, 13-9

분할된 테이블, 13-9

뷰, 15-2

시퀀스, 15-10

온라인 리두 로그 그룹, 6-11

인덱스

명시적으로, 16-8

제어 파일, 5-3

클러스터 인덱스, 17-6

클러스터, 17-6

클러스터화된 테이블, 17-6

테이블, 14-9

테이블스페이스, 9-3

필요한 롤백 세그먼트, 9-5

프로파일, 23-18

해시 클러스터, 18-4

해시 클러스터화된 테이블, 18-4

서버

다중 스레드

전용과 비교, 4-3

전용

다중 스레드와 비교, 4-3

서비스 단위

조합 한계, 23-19

설치

O ra c l e 8 i, 1-18

데이터베이스 생성, 2-3

조정 권장 사항, 2-14

성능

데이터 파일 위치, 10-4

아카이브 작업 조정, 7-20

성능 테이블

동적 성능 테이블, 4-9

세그먼트

데이터 딕셔너리, 20-27

데이터와 인덱스

기본 저장 영역 매개변수, 12-10

롤백, 21-1

모니터, 21-15

임시 저장 영역 매개변수, 12-12

정보 나열, 20-32

세션

Pa rallel Server 세션한계, 2-13

권한 도메인 나열, 24-22

동시 세션 수, 2-13

메모리 사용 보기, 23-25

인스턴스 당 한계, 23-2

인스턴스에 대한 경고 한계 설정, 23-4

인스턴스에 대한 최대 설정, 23-4

접속 및 접속 해제 감사, 25-8

현재 수와 고수위 보기, 23-6

세션 모니터, 4-8

세션 종료

비활성 세션, 4-17

비활성 세션, 예, 4-17

세션 식별, 4-16

활성 세션, 4-16

세션 한계, 사용권

초기에 설정, 2-13

세션, 사용자

비활성, 4-17

종료, 4-15

종료된 세션 보기, 4-17

종료됨으로 표시, 4-17

활성, 4-16

소프트웨어 버전, 1-21

수동 아카이브

A RCHIVELOG 모드, 7-10

색인-2 5

수정

조인 뷰, 15-4

수정 가능한 조인 뷰

정의, 15-4

스냅샷

저장 영역 매개변수, 12-10

too old

OPTIMAL 저장 영역 매개변수, 21-5

스냅샷 로그

저장 영역 매개변수, 12-10

스레드

온라인 리두 로그, 6-2

스키마 객체

감사 옵션 비활성화, 25-12

감사 옵션 활성화, 25-11

기본 감사 옵션, 25-11

다중 객체 생성, 20-2

액세스 권한, 24-3

유형별 나열, 20-31

이름 바꾸기 권한, 20-2

이름 바꾸기, 20-2, 20-3

정보 나열, 20-29

종속성, 20-23

스트림

테이프 드라이브, 7-23

시간 창

이동, 기록 테이블, 13-20

시스템 권한, 24-2

시스템 글로벌 영역( S GA), 2-11

시스템 글로벌 영역, 2-11

시스템 변경 번호(SCN)

결정된 경우, 6-2

시스템 변경 번호(SCN)

데이터 파일 점검, 10-14

시퀀스

Pa rallel Serv e r, 15-10

관리, 15-9

변경 권한, 15-10

변경, 15-10

삭제 권한, 15-11

삭제, 15-11

생성 권한, 15-10

생성, 15-10

초기화 매개변수, 15-11

식별

사용자, 23-7

쓰기 가능한 테이블스페이스, 9-14

ㅇ아카이브

고장난 대상, 7-19

권한

비활성화, 7-9

수동 아카이브, 7-10

활성화, 7-8

단점, 7-4

대상

고장, 7-16

대상 상태, 7-13

사용 가능/사용 불가능, 7-13

적합/부적합, 7-13

활성/비활성, 7-14

비활성화, 7-7

속도 향상, 7-23

수동, 7-10

시스템 성능에 대한 영향 최소화, 7-23

아카이브 모드 변경, 7-7

아카이브 버퍼 매개변수 설정, 7-22

여러 A RCH 프로세스, 7-20

자동

비활성화, 7-9

인스턴스 시작 시 비활성화, 7-9

색인-2 6

인스턴스 시작 시 활성화, 7-9

인스턴스 시작 후 활성화, 7-9

활성화, 7-8

장점, 7-4

정보 보기, 7-24

조정, 7-20

초기 모드 설정, 7-7

활성화, 7-7, 7-9

아카이브 버퍼 매개변수 설정, 7-22

아카이브 버퍼 매개변수, 7-22

아카이브된 리두 로그의 대상 상태, 7-13

아카이브된 리두 로그 분석, 7-25

아카이브된 리두 로그 전송, 7-14

대기 전송 모드, 7-14

정상 전송 모드, 7-14

아카이브된 리두 로그, 7-2

고장난 대상, 7-16

다중화, 7-11

대기 전송, 7-14

대상

고장난 대상에 재아카이브, 7-19

예제 시나리오, 7-18

대상 상태, 7-1

BAD PA R A M, 7-14

DEFERRED 7-14

사용 가능/사용 불가능, 7-13

적합/부적합, 7-13

활성/비활성, 7-14

대상 지정, 7-11

분석, 7-25

상태 정보, 7-24

아카이브 모드, 7-7

자동 아카이브 기능 활성화, 7-8

자동 아카이브 기능, 7-8

전송, 7-14

정상 전송, 7-14

조정, 7-20

암호

R E M O T E _ L O G I N _ PASSWORD 매개변수설정, 1-11

SYS 및 SY S T E M의 초기, 1-5

롤 변경 권한, 24-6

롤 변경, 24-8

롤, 24-7

변경할 권한, 23-15

사용자 보안 정책, 22-4

사용자 인증, 23-8

암호 파일, 1-12

OS 인증, 1-7

상태, 1-16

생성, 1-9

위치 재지정, 1-16

제거, 1-16

인증 파일, 1-9

액세스

객체

권한 부여, 24-10

권한 유형, 24-3

권한 철회, 24-12

데이터

관리, 24-1

시스템 권한, 24-2

데이터베이스

권한 부여, 24-9

권한 철회, 24-12

데이터베이스 관리자 계정, 1-4

제어, 23-1

제한, 3-4

엑스포트

모드, 7-14, 7-18, 7-19

여러 A RCH 프로세스 지정, 7-20

색인-2 7

I N S E RT 권한, 24-11

권한 부여, 24-11

권한 철회, 24-13

권한, 24-11

길이 증가, 14-10

부여받은 사용자 나열, 24-21

선택한 사항에 대한 권한 부여, 24-10

정보 나열, 20-31

영역

데이터베이스에 추가, 9-4

인덱스에 의해 사용, 16-14

영역 관리

P C T F R E E, 12-2

P C T U S E D, 12-4

인덱스 변경, 16-13

제약 조건 생성, 20-19

예외 사항

무결성 제약 조건, 20-21

오류

A L E RT 파일, 4-10

ORA- 01177, 5-9

ORA-00028, 4-16

ORA-01090, 3-9

ORA-01173, 5-9

ORA-01176, 5-9

ORA-1215, 5-9

ORA-1216, 5-9

ORA-1547, 20-29

ORA-1628 ~ 1630, 20-29

snapshot too old, 21-4

데이터베이스 생성 시, 2-8

인스턴스 시작 시, 3-5

제어 파일 생성 시, 5-9

추적 파일, 4-10

오프라인 테이블스페이스

롤백 세그먼트, 21-10

변경, 9-10

우선순위, 9-10

오프라인으로 설정

테이블스페이스, 9-10

온라인 롤백 세그먼트

롤백 세그먼트를 온라인으로 설정, 21-11

새 롤백 세그먼트의 경우, 21-8

오프라인으로 설정, 21-12

정보, 21-10

온라인 롤백 세그먼트

사용 시기, 21-10

온라인으로 설정, 21-11

정보, 21-10

온라인 인덱스, 16-7

온라인 리두 로그, 6-2

I N VALID 멤버, 6-15

S TALE 멤버, 6-15

관리, 6-1

구성에 대한 지침 사항, 6-5

권한

그룹 삭제, 6-14

그룹 추가, 6-11

로그 스위치 강제 시행, 6-16

멤버 삭제, 6-15

그룹 삭제, 6-14

데이터 파일과 별도로 저장, 10-4

데이터베이스가 열린 경우 사용 가능, 3-3

로그 스위치 강제 시행, 6-16

멤버 삭제, 6-14

멤버 생성, 6-11

멤버 이름 바꾸기, 6-12

백업하지 않음, 7-3

생성

그룹 및 멤버, 6-11

위치, 6-9

색인-2 8

정보 보기, 6-18

최적의 구성, 6-9

파일 수, 6-9

파일 이동, 6-13

파일 이름 바꾸기, 6-13

온라인 테이블스페이스

변경, 9-10

온라인으로 설정

테이블스페이스, 9-10

운영 체제

O racle8i 프로세스 이름, 4-9

감사, 25-2

계정, 24-17

데이터 파일 삭 제, 9-15

데이터베이스 관리자 요구 사항, 1-4

롤 식별, 24-17

롤 활성화 및 비활성화, 24-19

롤, 24-16

보안, 22-3

열린 파일 수의 한계값, 10-2

인증, 24-16

파일 이름 바꾸기 및 위치 재지정, 10-9

원격 접속, 1-16

SY S O P E R / SY S D B A로 접속, 1-14

암호 파일, 1-9

위치

롤백 세그먼트, 21-7

위치 재지정

데이터 파일, 10-9, 10-10

제어 파일, 5-5

유지 관리 릴리스 번호, 1-21

유틸리티

Export, 1-17

Import, 1-17

S Q L * L o a d e r, 1-17

데이터베이스 관리자, 1-17

응용 프로그램

유지 관리 작업 중 정지, 13-21

응용 프로그램 개발자

권한, 22-9

롤, 22-10

응용 프로그램 개발자

보안, 22-10

응용 프로그램 관리자, 1-3

데이터베이스 관리자, 22-11

이동

위치 재지정, 10-9

인덱스 분할 영역, 13-11

제어 파일, 5-5

테이블 분할 영역, 13-10

이름 바꾸기

단일 데이블을 가지는 데이터 파일, 10-9

데이터 파일, 10-9, 10-10

스키마 객체, 20-2

온라인 리두 로그 멤버, 6-12

제어 파일, 5-5

이전

데이터베이스 이전, 2-3

이중화

제어 파일, 2-10

이중화된 제어 파일

중요성, 5-2

이중화된 파일

온라인 리두 로그, 6-6

위치, 6-9

크기, 6-9

인덱스

I N I T R A N S, 16-4

M A X T R A N S, 16-4

P C T F R E E, 16-4

P C T U S E D, 16-4

S Q L * L o a d e r, 16-3

색인-2 9

개요, 16-2

관리, 16-1, 16-15

관리에 대한 지침 사항, 16-2

구조 검증, 20-8

권한

변경, 16-13

삭제, 16-15

변경, 16-13

분할 영역 추가, 13-12

삭제, 16-15

삭제된 테이블, 14-12

생성

명시적으로, 16-8

복구 불가능하게, 16-5

테이블 데이터 삽입 후, 16-3

영역 사용 모니터링, 16-14

올바른 테이블과 열, 16-8

인덱스 생성 병렬화, 16-5

임시 세그먼트, 16-3

저장 영역 매개변수 설정, 16-5

저장 영역 매개변수, 12-10

제약 조건 비활성화 및 삭제, 16-7

크기 측정, 16-5

클러스터

관리, 17-1

변경, 17-9

삭제, 17-10

생성, 17-6

테이블 당 제한, 16-3

테이블스페이스, 16-4

테이블에서 분리, 14-6

통계 분석, 20-3

확장 영역 할당, 16-6

인덱스 구성 테이블, 14-14

인덱스 분할 영역

분할, 13-18

삭제, 13-14

이동, 13-11

재구축, 13-20

인스턴스

데이터베이스 생성 전에 시작, 2-6

시작, 3-2

중지, 3-12

즉시 종료, 3-11

인스턴스 구성

전용 서버 프로세스, 4-2

인스턴스 메뉴

접속 옵션 금지, 3-9

인스턴스 시작

강제 시행, 3-5

다중 스레드 서버, 3-2

다중 스레드 서버, 4-4

데이터베이스 닫고 마운트, 3-4

데이터베이스 마운트하지 않음, 3-3

데이터베이스 생성 시, 3-3

데이터베이스 열기 및 마운트, 3-4

데이터베이스 이름 충돌, 2-9

디스패처 프로세스, 4-5

문제 발생, 3-5

배타 모드, 3-6

병렬 모드, 3-6

복구, 3-5

시스템 시작 시 자동, 3-6

예, 3-6

원격 인스턴스 시작, 3-6

일반 절차, 3-2

자동 아카이브 기능 활성화, 7-9

정상, 3-4

제한 모드, 3-4

인스턴스 시작 대화상자, 3-2

인스턴스 종료

I N T E R NA L로 접속, 3-10

색인-3 0

예, 3-11

인스턴스 중지, 3-12

접속, 3-9

정상, 3-10

즉시, 3-11

인증

관리된 데이터베이스, 23-8

사용자 생성 시 지정, 23-12

사용자, 22-2, 23-7, 23-9

암호 정책, 22-4

암호 파일, 1-9

운영 체제, 1-7

인증

다중 스레드 서버, 24-7

정보, 24-6

롤 변경, 24-8

롤 삭제, 24-8

운영 체제 롤 관리, 24-7

읽기 전용 데이터베이스 열기, 3-8

읽기 전용 테이블스페이스

WORM 장치, 9-14

데이터 파일, 10-8

생성, 9-12

쓰기 가능으로 변경, 9-14

임시 세그먼트

인덱스 생성, 16-3

임시 영역

할당, 14-6

임포트

작업, 8-7

ㅈ자동 아카이브 기능

아카이브 로그 대상, 7-8

자원

프로파일, 23-17

자원 계획 지시어, 11-2

자원 계획, 11-2

자원 소비자 그룹, 11-2

자원 제한

P U B L I C _ D E FAU LT 프로파일, 23-18

널로 설정, 23-19

비용, 23-20

비용을 설정할 권한, 23-20

비활성화, 23-21

서비스 단위, 23-19

조합 한계, 23-19

프로파일 변경, 23-19

프로파일 생성, 23-18

프로파일 지정, 23-18

프로파일, 23-17

활성화 및 비활성화할 권한, 23-21

활성화, 23-21

자원 할당 방법, 11-2

작업

I N T E R NAL 날짜 함수, 8-8

강제 실행, 8-14

관리, 8-3

데이터베이스 링크, 8-9

문제 해결, 8-10

변경, 8-11

소유자, 8-7

실행, 8-9

엑스포트, 8-7

일정 잡기, 8-3

임포트, 8-7

작업 대기열에 제출, 8-4

작업 대기열에서 제거, 8-11

작업 번호, 8-7

작업 정의, 8-7

종료, 8-14

색인-3 1

중단, 8-12

중단된 작업 실행, 8-13

중단된 작업 표시, 8-13

추적 파일, 8-10

작업 대기열, 8-2, 8-3

보기, 8-15

사용 권한, 8-4

작업 실행, 8-9

작업 일정 잡기, 8-3

작업 제거, 8-11

잠금, 8-9

작업 엑스포트, 8-7

작업 환경, 8-6

작업, 8-3

잘라버리기

권한, 20-10

분할된 객체, 13-15

클러스터, 20-9

테이블, 20-9

잠금

작업 대기열, 8-9

모니터, 4-8

재컴파일

뷰, 20-25

자동으로, 20-24

패키지, 20-25

프로시저, 20-25

함수, 20-25

저장 영역

무제한 할당량, 23-14

테이블스페이스 변경, 9-8

테이블스페이스 철회, 23-14

할당량, 23-14

저장 영역 매개변수

I N I T I A L, 12-7, 14-11

I N I T R A N S, 12-9, 14-11

M A X E X T E N T S, 12-8

M A X T R A N S, 12-9, 14-11

M I N E X T E N T S, 12-8, 14-11

N E X T, 12-8

OPTIMAL (롤백 세그먼트), 21-5

P C T F R E E, 14-10

P C T I N C R E A S E, 12-8

P C T U S E D, 14-10

SYSTEM 롤백 세그먼트, 21-9

기본, 12-7

데이터 딕셔너리, 20-26

데이터 딕셔너리, 20-27

롤백 세그먼트, 21-8

설정 변경, 12-11

우선순위, 12-11

임시 세그먼트, 12-12

적용 가능한 객체, 12-7

저장 영역 매개변수의 우선 순위, 12-11

적합한 대상 상태

아카이브된 리두 로그, 7-13

이동 가능한 테이블스페이스, 9-18

전역 데이터베이스 이름, 2-9

전용

동의어, 15-11

롤백 세그먼트, 21-8

오프라인으로 설정, 21-12

전용 서버

다중 스레드 서버와 비교, 4-3

전용 서버 프로세스

구성, 4-2

접속, 4-2

추적 파일, 4-10

접속

감사, 25-8

전용 서버, 4-2

종료 중, 3-9

색인-3 2

접속

관리자 권한, 3-10

접속 해제

감사, 25-8

정상 전송 모드

정의, 7-15

제어 파일

관리, 5-1

기본 이름, 2-10, 5-4

기존에 겹쳐 쓰기, 2-10

데이터 딕셔너리와 충돌, 5-8

데이터베이스 생성 전에 이름 지정, 2-10

로그 시퀀스 번호, 6-5

번호, 5-3

삭제, 5-9

생성

새 파일, 5-5

정보, 5-3

초기, 5-4

추가 제어 파일, 5-5

생성 중 오류, 5-9

시작 중 사용 불가능, 3-3

요구 사항, 5-3

위치 재지정, 5-5

위치, 5-3

이동, 5-5

이름 바꾸기, 5-5

이름, 5-2

이중화, 2-10

이중화의 중요성, 5-2

지침 사항, 5-2

추가, 5-5

크기 변경, 5-4

크기, 5-3

조인 뷰, 15-4

DELETE 문, 15-7

병합 가능, 15-5

수정

규칙, 15-6

수정 가능한 경우, 15-4

키 보존 테이블, 15-5

조정

데이터베이스, 1-20

아카이브, 7-20

초기, 2-14

조합 한계, 23-19

비용, 23-20

서비스 단위, 23-19

종료

사용자 세션, 4-15

종료

작업, 8-14

종료 메뉴

I M M E D I ATE 옵션, 3-11

인스턴스 중지 옵션, 3-12

종속성

표시, 20-32

중단된 작업

실행, 8-13

정보, 8-12

표시, 8-13

중지

인스턴스 종료, 3-12

지침 사항

롤백 세그먼트 관리, 21-2

지침 사항, 10-2

질의 서버 프로세스

정보, 4-13

ㅊ참고

객체 감사 단축키, 25-9

색인-3 3

객체 권한 단축키, 24-3

명령문 감사 단축키, 25-8

참조 무결성 제약 조건

테이블 분할 영역 삭제, 13-13

테이블 분할 영역 잘라버리기, 13-16

책임

데이터베이스 관리자, 1-2

데이터베이스 사용자, 1-3

철회

권한 및 롤

SYSOPER/DBA 권한, 1-13

체크섬

데이터 블록, 10-12

리두 로그 블록, 6-16

체크포인트 프로세스(CKPT)

시작, 4-12

초기

SYS 및 SY S T E M에 대한 암호, 1-5

초기화 매개변수

L O G _ A RC H I V E _ B U F F E R S, 7-22, 7-23

L O G _ A RC H I V E _ B U F F E R _ S I Z E, 7-22,7-23

L O G _ A RC H I V E _ D E S T _ S TAT E _ n, 7-13

L O G _ A RC H I V E _ D E S T _ n, 7-11

L O G _ A RC H I V E _ M A X _ P RO C E S S E S,

7-20

L O G _ A RC H I V E _ M I N _ S U C C E E D _ D E S T, 7-17

L O G _ A RC H I V E _ S TA RT, 7-9, 7-14

L O G _ B L O C K _ C H E C K S U M, 6-16

L O G _ F I L E S, 6-10

다중 스레드 서버, 4-4

시퀀스 영향, 15-11

추적 파일

기록된 경우, 4-12

로그 기록자 프로세스, 6-6

로그 기록자, 4-11

사용, 4-10, 4-11

위치, 4-11

작업 실패, 8-10

크기, 4-11

ㅋ크기

데이터 파일, 10-4

롤백 세그먼트, 21-4

해시 클러스터, 18-4

크기 측정

테이블, 14-5

해시 클러스터, 18-4

클러스터

PCTFREE 지정, 12-4

개요, 17-2

관리, 17-1

관리에 대한 지침 사항, 17-4

구조 검증, 20-8

권한

삭제, 17-10

생성, 17-6

데이터 선택, 17-4

변경, 17-8

삭제, 17-10

삭제된 테이블, 14-13

생성, 17-6

영역 측정, 17-5, 17-6

위치, 17-5

인덱스

해시와 비교, 18-2

인덱스 생성, 17-8

인덱스, 16-2

잘라버리기, 20-9

저장 영역 매개변수, 12-10

색인-3 4

클러스터 키에 대한 열, 17-4

키, 17-2

통계 분석, 20-3

해시

인덱스와 비교, 18-2

해시 클러스터, 18-1

확장 영역 할당, 17-9

클러스터 키

열, 17-4

SIZE 매개 변수, 17-5

클러스터화된 테이블, 17-10

클러스터, 17-2

키 보존 테이블

조인 뷰, 15-5

ㅌ테스트

데이터베이스 보안, 22-9

테이블

PCTFREE 지정, 12-4

SYSTEM 테이블스페이스, 14-3

U N R E C OV E R A B L E, 14-4

관리, 14-1

관리에 대한 지침 사항, 14-1, 14-6

구조 검증, 20-8

변경 권한, 14-10

변경, 14-10, 14-11

분할 영역 추가, 13-11

삭제 권한, 14-12

삭제, 14-12

생성 권한, 14-9

생성 병렬화, 14-4

생성 전에 설계, 14-2

생성, 14-9

열 길이 증가, 14-10

위치, 14-10, 14-3

인덱스, 16-2

인덱스 제한, 16-3

인덱스와 분리, 14-6

임시 영역, 14-6

잘라버리기, 20-9

저장 영역 매개변수, 12-10

크기 측정, 14-5

클러스터화된 테이블

관리, 17-1

변경, 17-9

삭제 권한, 17-10

삭제, 17-10

생성, 17-6

클러스터화된 테이블의 스키마, 17-7

클러스터화됨, 17-2

키 보존, 15-5

테이블스페이스 지정, 14-3, 14-10

통계 분석, 20-3

트랜잭션 매개변수, 14-3

해시 클러스터화됨

관리, 18-1

생성, 18-4

확장 영역 할당, 14-11

테이블 분할 영역

교환, 13-18

글로벌 인덱스 포함, 13-12

분할, 13-17

삭제, 13-12

생성, 13-9

잘라버리기, 13-15

테이블스페이스

SYSTEM 테이블스페이스, 9-4

가용성 변경, 9-10

관리, 10-1

관리에 대한 지침 사항, 9-2

색인-3 5

기본 임시, 23-13

기본 저장 영역 매개변수 설정, 9-3

기본 저장 영역 매개변수 점검, 9-31

기본 저장 영역 매개변수, 12-10

기본 할당량, 23-13

데이터 파일 추가, 10-5

모니터, 10-13

무제한 할당량, 23-14

병합, 9-8

빈 영역 나열, 9-32

사용자 할당량 지정, 9-3

사용자로부터 철회, 23-14

사용자에 대한 할당량, 23-13

사용자에 대해 기본 할당, 23-12

삭제

정보, 9-14

필요한 권한, 9-15

생성 권한, 9-4

생성, 9-3

쓰기 가능, 9-14

여러 개 사용, 9-2

오프라인으로 설정할 권한, 9-10

온라인으로 설정, 9-10

위치, 10-4

읽기 전용, 9-12

임시 오프라인 설정, 9-11

임시, 23-13

저장 영역 설정 변경, 9-8

정상 오프라인 설정, 9-10

추가 생성, 9-4

파일 나열, 9-31

필요한 롤백 세그먼트, 9-5

할당량

지정, 9-3

할당량 보기, 23-24

테이블스페이스 집합, 9-20

테이프 드라이브

아카이브를 위한 스트림, 7-23

통계

갱신, 20-4

트랜잭션

롤백 세그먼트, 21-13

커밋

리두 로그 버퍼 기록, 6-2

특정 롤백 세그먼트에 지정, 21-13

트랜잭션 입력 항목

저장 영역에 대한 지침 사항, 12-9

트랜잭션 커밋

리두 로그 버퍼 기록, 6-2

트리거

감사, 25-20

비활성화, 20-12

삭제된 테이블, 14-12

예, 25-20

활성화 및 비활성화 권한, 20-12

활성화, 20-12

ㅍ파일

운영 체제에서 열 수 있는 한계값, 9-2

패치 릴리스 번호, 1-22

패키지

D B M S _ L O G M N R. A D D _ L O G F I L E, 7-29

D B M S _ L O G M N R. S TA RT _ L O G M N R,7-30

D B M S _ L O G M N R _ D. B U I L D, 7-28

재컴파일 권한, 20-25

재컴파일, 20-25

평가

O ra c l e 8 i용 하드웨어, 1-18

표시된 사용자 세션, 4-17

프로그램 글로벌 영역( P GA)

색인-3 6

M A X _ E NA B L E D _ RO L E S의 결과, 24-8

프로세스, 4-1

SNP 백그라운드 프로세스, 8-2

프로시저

재컴파일, 20-25

프로파일, 23-17

P U B L I C _ D E FAU LT, 23-18

관리, 23-17

기본, 23-18

나열, 23-22

변경, 23-19

변경할 권한, 23-19

보기, 23-24

사용자에게 할당, 23-18

삭제 권한, 23-21

삭제, 23-21

생성, 23-18

자원 비용을 설정할 권한, 23-20

자원 제한 비활성화, 23-21

자원 제한 활성화, 23-21

조합 한계, 23-19

한계를 널로 설정, 23-19

필요 조건

데이터베이스 생성, 2-3

ㅎ하드웨어

평가, 1-18

한계

동시 사용, 23-2

세션, 고수위, 23-3

자원 제한, 23-19

조합 한계, 23-19

할당

롤백 세그먼트에 대한 확장 영역 최소화, 21-13

임시 영역, 14-6

클러스터에 대한 확장 영역, 17-9

확장 영역, 14-11

할당량

나열, 23-22

무제한, 23-14

보기, 23-24

사용자로부터 철회, 23-14

영으로 설정, 23-14

임시 세그먼트, 23-14

테이블스페이스 할당량, 9-3

테이블스페이스, 23-13

함수

재컴파일, 20-25

함수 기준 인덱스, 16-9

해시 클러스터

관리, 18-1

변경, 18-8

사용, 18-2

삭제, 18-9

생성, 18-4

영역 사용 제어, 18-6

예, 18-7

저장 영역 측정, 18-4

클러스터, 18-1

키 선택, 18-6

무결성 제약 조건 위반, 20-15

블록 간 변경, 12-4, 20-8

확장 영역

데이터 딕셔너리 뷰, 20-30

빈 확장 영역 나열, 20-33

삭제된 테이블, 14-12

정보 나열, 20-32

할당

인덱스 생성, 16-6

색인-3 7

클러스터, 17-9

테이블, 14-11

활성 대상 상태

아카이브된 리두 로그, 7-14

활성화

감사 옵션

권한, 25-13

정보, 25-9

무결성 제약 조건

생성 시, 20-18

예, 20-19

예외 사항 보고, 20-21

위반 사항이 있는 경우, 20-15

아카이브, 7-7

자원 제한, 23-21

트리거, 20-12

색인-3 8