2015년 3월 24일 화요일

오라클의 개념_12

ㅇ ㅂㅇ

테이블 관리



사용자 데이터 저장오라클 데이터베이스에서는 여러 가지 방법으로 사용자 데이터를 저장할 수 있습니다.
 • 일반 테이블
 • 분할 테이블
 • 인덱스 구성 테이블
 • 클러스터화된 테이블

일반 테이블
대개 "테이블"이라고 하는 일반 테이블은 사용자 데이터를 저장하는 데 가장 일반적으로 사용되는 폼이며 기본 테이블이고 이 단원에서 주로 설명됩니다. 데이터베이스 관리자는 테이블의 행 분산에 대해 매우 제한된 제어를 수행합니다. 행은 테이블의 작업에 따라 임의의 순서로 저장됩니다.

분할 테이블
분할 테이블에서는 크기를 조정할 수 있는 응용 프로그램을 구축할 수 있습니다. 분할 테이블은 다음 특성을 가집니다.
 • 분할 테이블에는 하나 이상의 분할 영역이 있으며 각 분할 영역은 범위 분할, 해시 분할, 조합 분할 또는 목록 분할을 사용하여 분할된 행을 저장합니다.
 • 분할 테이블의 각 분할 영역은 세그먼트며 다른 테이블스페이스에 있을 수 있습니다.
 • 분할 영역은 여러 프로세스를 동시에 사용하여 질의하거나 조작할 수 있는 대형 테이블에 유용합니다.
 • 테이블 내의 분할 영역 관리에 특수 명령을 사용할 수 있습니다.

인덱스 구성 테이블
인덱스 구성 테이블은 하나 이상의 열에 기본 키 인덱스를 가진 힙 테이블과 유사하지만 테이블과 B 트리 인덱스에 대해 별도의 저장 영역 두 개를 유지 관리하는 대신 테이블의 기본키와 기타 열 값을 포함한 단일 B 트리만을 유지 관리합니다. PCTTHRESHOLD 값이 설정되고 오버플로우 영역이 필요한 더 긴 길이의 행 때문에 오버플로우 세그먼트가 존재할 수 있습니다.
인덱스 구성 테이블에서는 정확한 일치 및 범위 검색을 포함한 질의에 대해 빠른 키 기반의 테이블 데이터 액세스를 제공합니다.
또한 키 열이 테이블과 인덱스에서 중복되지 않으므로 필요한 저장 영역이 감소됩니다. 나머지 비 키 열은 인덱스 항목이 매우 크지 않으면 인덱스에 저장되며 매우 크면 Oracle 서버에서는 이 문제를 처리하기 위해 OVERFLOW 절을 제공합니다.

클러스터화된 테이블
클러스터화된 테이블에서는 테이블 데이터를 저장하기 위해 선택적인 방식을 제공합니다.
클러스터는 동일한 데이터 블록을 공유하는 테이블 또는 테이블 그룹으로 구성되며 이 테이블은 공통 열을 공유하고 자주 함께 사용되므로 함께 그룹화됩니다.
클러스터는 다음 특성을 가집니다.
 • 클러스터는 함께 저장되어야 하는 행을 식별하는 데 사용되는 클러스터 키를 가집니다.
 • 클러스터 키는 하나 이상의 열로 구성할 수 있습니다.
 • 클러스터의 테이블은 클러스터 키에 대응하는 열을 가집니다.
 • 클러스터화는 테이블을 사용하는 응용 프로그램에 그대로 적용되는 방식이며 클러스터화된 테이블의 데이터는 일반 테이블에 저장된 데이터처럼 조작할 수 있습니다.
 • 클러스터 키의 열 하나를 갱신하면 행이 이전될 수 있습니다.
 • 클러스터 키는 기본 키에 대해 독립적입니다. 클러스터의 테이블은 기본 키를 가질 수 있으며 이 기본 키는 클러스터 키 또는 다른 열 집합입니다.
 • 클러스터는 대개 성능 향상을 위해 생성합니다. 클러스터화된 데이터에 대한 임의의 액세스 속도는 향상되지만 클러스터화된 테이블에서의 전체 테이블 스캔은 대개 속도가 느려집니다.
 • 클러스터는 논리적 구조에 영향을 주지 않고 테이블의 물리적 저장 영역을 다시 정규화합니다.


Oracle 내장 데이터 유형
 Oracle 서버에서는 스칼라 데이터, 모음 및 관계를 저장하는 여러 내장 데이터 유형을 제공합니다.
스칼라 데이터 유형
문자 데이터: 데이터베이스에 고정 길이 문자열이나 가변 길이 문자열로 문자 데이터를 저장할 수 있습니다.
CHAR나 NCHAR와 같은 고정 길이 문자 데이터 유형은 공백 채움을 사용하여 저장됩니다.
NCHAR는 고정 너비 또는 가변 너비 문자 집합의 저장을 가능하게 하는 Globalization
Support 데이터 유형입니다. 최대 크기는 한 문자를 저장하는 데 필요한 바이트 수에 따라 결정되며 행당 최대 한계는 2,000바이트입니다. 기본값은 문자 집합에 따라 한 문자 또는 한 바이트입니다.
가변 길이 문자 데이터 유형은 실제 열 값을 저장하는 데 필요한 바이트 수만을 사용하고 각 행에 대해 크기가 다를 수 있으며 최대 4,000바이트까지 가능합니다. VARCHAR2와 NVARCHAR2는 가변 길이 문자 데이터 유형의 예입니다.
숫자 데이터 유형: 오라클 데이터베이스에서 숫자는 항상 가변 길이 데이터로 저장되며 최대 38자리까지 저장할 수 있습니다. 숫자 데이터 유형에는 다음이 필요합니다.
• 지수용으로 한 바이트
• 가수에서 두 자리마다 한 바이트
• 자릿수가 38바이트 미만인 경우 음수용으로 한 바이트
DATE 데이터 유형: Oracle 서버에서는 날짜를 일곱 바이트의 고정 길이 필드에 저장하며
Oracle DATE에는 항상 시간이 포함됩니다.
TIMESTAMP 데이터 유형: 이 데이터 유형에는 날짜와 소수점 아홉 자리까지 표시되는 초를 포함한 시간이 저장됩니다. TIMESTAMP WITH TIME ZONE 및 TIMESTAMP WITH LOCAL TIME ZONE은 일광 절약 시간과 같은 항목을 요소화하기 위해 시간 영역을 사용할 수 있습니다. TIMESTAMP 및 TIMESTAMP WITH LOCAL TIME ZONE은 기본 키에서 사용할 수 있지만 TIMESTAMP WITH TIME ZONE은 사용할 수 없습니다.
RAW 데이터 유형: 이 데이터 유형은 작은 이진 데이터를 저장할 수 있습니다. RAW 데이터가 네트워크에서 시스템 간에 전송되거나 Oracle 유틸리티를 사용하여 한 데이터베이스에  다른 데이터베이스로 이동될 경우 Oracle 서버는 문자 집합 변환을 수행하지 않습니다. 실제 열 값을 저장하는 데 필요한 바이트 수는 각 행마다 크기가 다르며 최대 2,000바이트까지 가능합니다.
LONG, LONG RAW및LOB(Large Object) 데이터 유형
Oracle에서는 LOB을 저장하기 위해 다음 여섯 가지의 데이터 유형을 제공합니다.
 • 대형 고정 너비 문자 데이터를 저장하기 위한 CLOB 및 LONG
 • 대형 고정 너비 국가별 문자 집합 데이터를 저장하기 위한 NCLOB
 • 구조화되지 않은 데이터를 저장하기 위한 BLOB 및 LONG RAW
 • 구조화되지 않은 데이터를 운영 체제 파일에 저장하기 위한 BFILE
LONG 및 LONG RAW 데이터 유형은 이전에는 이진 이미지, 문서 또는 지리 정보와 같은 구
조화되지 않은 데이터에 사용되었고 주로 역 호환성을 위해 제공됩니다. 이러한 데이터 유
형은 LOB 데이터 유형으로 교체되었습니다. LOB 데이터 유형은 LONG 및 LONG RAW와 구
분되고 교환할 수 없습니다. LOB은 LONG API(응용 프로그램 프로그래밍 인터페이스)를 지
원하지 않으며 그 반대의 경우도 마찬가지입니다.
이전 유형(LONG 및 LONG RAW)과 비교하면서 LOB 기능을 설명하는 것이 도움이 됩니다.
이후부터 LONG은 LONG과 LONG RAW를, LOB은 모든 LOB 데이터 유형을 가리킵니다.


크기가 VARCHAR2 데이터 유형에 대해 최대 크기(4,000바이트)보다 작지 않으면 LOB에서
는 테이블에 위치자를 테이블 외의 다른 위치에 데이터를 저장하지만 LONG에서는 모든
데이터를 순서대로 저장합니다. 또한 LOB에서는 데이터를 별도의 세그먼트 및 테이블스
페이스 또는 호스트 파일에 저장할 수 있습니다.
LOB에서는 NCLOB을 제외하고 객체 유형 속성과 복제를 지원하지만 LONG에서는 지원하
지 않습니다.
LONG은 기본적으로 다른 블록에 저장된 다음 행 조각을 가리키는 다른 블록의 행 조각과
함께 체인화된 행 조각으로 저장됩니다. 따라서 LONG은 순차적으로 액세스되어야 합니다.
반면 LOB에서는 파일 형식 인터페이스를 통해 데이터에 대한 임의의 조각 방식 액세스를
지원합니다.

ROWID 및UROWID 데이터유형
ROWID는 테이블의 다른 열과 함께 질의할 수 있는 데이터 유형이며 다음 특성을 가집니다.
 • ROWID는 데이터베이스에 있는 각 행에 대한 고유 식별자입니다.
 • ROWID는 명시적으로 열 값으로서 저장되지 않습니다.
 • ROWID는 행의 물리적 주소를 직접 부여하지는 않지만 행 위치를 지정하는 데 사용될 수 있습니다.
 • ROWID를 사용하면 가장 빨리 테이블의 행을 액세스할 수 있습니다.
 • ROWID는 주어진 키 값의 집합을 가진 행을 지정하기 위해 인덱스에 저장됩니다.
Oracle8.1에서 Oracle 서버는 범용 ROWID 또는 UROWID라고 하는 단일 데이터 유형을 제공하여 Oracle 테이블이 아닌 외래 테이블의 ROWID를 지원하고 모든 종류의 ROWID를 저장 할 수 있습니다. 예를 들어, UROWID 데이터 유형은 IOT(인덱스 구성 테이블)에 저장된 행에 대해 ROWID를 저장하는 데 필요합니다. UROWID를 사용하려면 COMPATIBLE 매개변수의 값을 Oracle8.1 이상으로 설정해야 합니다.

모음데이터유형
테이블의 주어진 행에 대해 반복적인 데이터를 저장할 수 있는 두 가지 모음 데이터 유형이 있습니다. Oracle8i 전의 Oracle 버전에서는 모음을 정의하고 사용하려면 Object 옵션이 필
요했습니다. 이러한 유형에 대한 간략한 설명은 다음과 같습니다.
VARRAY(가변 배열): 가변 배열은 고객 전화 번호와 같은 작은 수의 요소를 포함하고 있는
목록을 저장하는 데 유용합니다.
VARRAY에는 다음 특성이 있습니다.
 • 배열은 순서를 지정한 데이터 요소 집합입니다.
 • 주어진 배열의 모든 요소는 동일한 데이터 유형입니다.
 • 각 요소에는 인덱스가 있으며 이 인덱스는 배열 요소의 위치에 대응하는 번호입니다.
 • 배열 요소의 수는 배열의 크기를 결정합니다.
 • Oracle 서버에서는 배열이 가변 크기가 될 수 있으므로 VARRAY라고 하지만 최대 크기는 배열 유형 선언 시 지정되어야 합니다.
중첩 테이블: 중첩 데이블을 사용하면 테이블을 테이블 내의 한 열로 정의할 수 있습니다.
중첩 테이블은 주문의 여러 항목처럼 많은 레코드를 가진 집합을 저장하는 데 사용될 수 있
습니다.
중첩 테이블에는 대개 다음 특성이 있습니다.
• 중첩 테이블은 순서를 지정하지 않은 레코드나 행의 집합입니다.
• 중첩 테이블의 행은 동일한 구조를 갖습니다.
• 중첩 테이블의 행은 상위 테이블에 있는 해당 행의 포인터와 함께 상위 테이블과는
별도로 저장됩니다.
• 중첩 테이블의 저장 영역 특성은 데이터베이스 관리자가 정의할 수 있습니다.
• 중첩 테이블에 대해 미리 정의된 최대 크기는 없습니다.
REF(관계데이터유형)
 관계 유형은 데이터베이스 내에서 포인터로 사용되며 이러한 유형을 사용하려면 Object 옵션이 필요합니다. 예를 들어, 주문된 각 항목은 제품 코드를 저장하지 않고도 PRODUCTS 테이블의 행을 가리키거나 참조할 수 있습니다.
Oracle 사용자정의데이터유형:
Oracle 서버에서는 사용자가 추상 데이터 유형을 정의하여 응용 프로그램 내에서 사용할
수 있습니다.


ROWID 형식
확장된 ROWID는 디스크에 10 바이트의 저장 영역이 필요하며 18문자를 사용하여 표시됩
니다. ROWID는 다음 요소로 구성됩니다.
 • 데이터 객체 번호: 테이블이나 인덱스와 같은 각 데이터 객체가 생성될 때 지정되고 데이터베이스 내에서 고유합니다.
 • 상대 파일 번호: 테이블스페이스 내의 각 파일에서 고유합니다.
 • 블록 번호: 파일 내의 행을 포함하는 블록의 위치를 나타냅니다.
 • 행 번호: 블록 헤더에 있는 행 디렉토리 슬롯의 위치를 식별합니다.
내부적으로 데이터 객체 번호에는 32비트, 상대 파일 번호에는 10비트, 블록 번호에는 22비
트, 행 번호에는 16비트가 필요하며 모두 합하여 총 80비트 또는 10바이트입니다.
확장된 ROWID는 데이터 객체 번호에 여섯 자리, 상대 파일 번호에 세 자리, 블록 번호에 여
섯 자리, 행 번호에 세 자리를 사용하는 기본 64 암호화 체계를 사용하여 표시됩니다. 기본
64 암호화 체계는 아래의 예에서처럼 A-Z, a-z, 0-9, / 등 총 64문자를 사용합니다.

SQL> SELECT department_id, rowid FROM hr.departments;
DEPARTMENT_ID ROWID
------------- ------------------
10 AAABQMAAFAAAAA6AAA
20 AAABQMAAFAAAAA6AAB
30 AAABQMAAFAAAAA6AAC
40 AAABQMAAFAAAAA6AAD
50 AAABQMAAFAAAAA6AAE
60 AAABQMAAFAAAAA6AAF
                 …
이 예에 대한 설명은 다음과 같습니다.
 • AAABQM는 데이터 객체 번호입니다.
 • AAF는 상대 파일 번호입니다.
 • AAAAA6는 블록 번호입니다.
 • AAA는 ID=10인 부서에 대한 행 번호입니다.
Oracle7과 그 이전 버전의 제한된ROWID
Oracle8 이전의 오라클 데이터베이스 버전에서는 제한된 ROWID 형식을 사용했습니다. 제
한된 ROWID는 내부적으로 여섯 바이트만을 사용했고 데이터 객체 번호를 포함하지 않았
습니다. 이러한 형식은 파일 번호가 데이터베이스 내에서 고유하므로 Oracle7 이전 버전에
서 승인되었습니다. 따라서 이전 버전에서는 1,022개를 넘는 데이터 파일을 허용하지 않았
지만 이번 버전에서는 테이블스페이스에 대한 제한입니다.
Oracle8에서는 테이블스페이스 상대 파일 번호를 사용하여 이러한 제한을 제거했지만 제
한된 ROWID는 모든 인덱스 항목이 동일한 세그먼트 내의 행을 참조하는 분할되지 않은 테
이블의 분할되지 않은 인덱스와 같은 객체에서 여전히 사용됩니다.
ROWID를사용한행위치지정
세그먼트는 데이터 객체 번호를 사용하여 테이블스페이스 하나에만 상주할 수 있으므로
Oracle 서버에서는 행을 포함한 테이블스페이스를 결정할 수 있습니다.
테이블스페이스 내의 상대 파일 번호는 파일의 위치, 블록 번호는 행을 포함한 블록의 위치,
행 번호는 행에 대한 행 디렉토리 항목의 위치를 지정하는 데 사용됩니다.
행 디렉토리 항목은 행의 시작 위치를 지정하는 데 사용될 수 있습니다.
따라서 ROWID는 데이터베이스 내의 행 위치를 지정하는 데 사용될 수 있습니다.


행의 구조
행 데이터는 가변 길이 레코드로 데이터베이스 블록에 저장됩니다. 행에 대한 열은 대개 정
의된 순서대로 저장되며 후행 NULL 열은 저장되지 않습니다.• 행 헤더: 행의 열 개수, 체인 정보, 행 잠금 상태를 저장하는 데 사용됩니다.
• 행 데이터: Oracle 서버에서는 각 열에 대해 열 길이와 값을 저장합니다. 열에 250바이
트를 초과하는 저장 영역이 필요한 경우 열 길이를 저장하는 데에는 한 바이트가 필
요합니다. 이 때 세 바이트가 열 길이를 위해 사용됩니다. 열 값은 열 길이 바이트 바
로 다음에 저장됩니다.
인접한 행 간에는 공백이 필요하지 않습니다. 블록의 각 행에는 행 디렉토리에 슬롯이 있으
며 디렉토리 슬롯은 행의 처음을 가리킵니다.


테이블 생성
 CREATE TABLE 명령은 관계형 테이블 또는 객체 테이블을 생성하는 데 사용됩니다.
관계형 테이블: 이 테이블은 사용자 데이터를 유지하는 기본 구조입니다.
객체 테이블: 열 정의에 객체 유형을 사용하는 테이블입니다. 객체 테이블은 특정 유형의
객체 인스턴스를 저장하기 위해 명시적으로 정의되는 테이블입니다.
테이블생성지침
 • 테이블을 별도의 테이블스페이스에 둡니다.
 • 단편화를 방지하려면 지역적으로 관리되는 테이블스페이스를 사용합니다.
다음 예제는 데이터 딕셔너리 관리 테이블스페이스에서 DEPARTMENTS 테이블을 생성합
니다.
SQL> CREATE TABLE hr.departments(
2 department_id NUMBER(4),
3 department_name VARCHAR2(30),
4 manager_id NUMBER(6),
5 location_id NUMBER(4))
6 STORAGE(INITIAL 200K NEXT 200K
7 PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 5)
8 TABLESPACE data;
위 구문은 CREATE TABLE 절의 일부입니다.

STORAGE 절
 STORAGE 절은 테이블에 대해 저장 영역 특성을 지정합니다. 첫번째 확장 영역에 할당된 저장 영역은 200KB입니다. 두번째 확장 영역이 필요한 경우 NEXT 값으로 정의된 200KB의
저장 영역이 생성됩니다. 세번째 확장 영역이 필요한 경우에는 PCTINCREASE가 0으로 설
정되었으므로 200KB의 저장 영역이 생성됩니다. 사용 가능한 확장 영역 수의 최대값은 5이
고 최소값은 1로 설정됩니다.
• MINEXTENTS: 할당되는 확장 영역의 최소 개수입니다.
• MAXEXTENTS: 할당되는 확장 영역의 최대 개수입니다. MINEXTENTS가 1보다 큰 값
으로 지정되고 테이블스페이스에 데이터 파일이 두 개 이상 포함되면 확장 영역이 다
른 데이터 파일로 분산됩니다.
• PCTINCREASE: NEXT 확장 영역 이후 확장 영역 크기의 증가율입니다.
 테이블에 대해 physical_attributes_clause에서 블록 활용 매개변수를 지정할 수 도 있습니다.
 • PCTFREE: 테이블의 각 데이터 블록에 있는 공간의 비율을 지정합니다. PCTFREE의 값은 0에서 99까지 설정할 수 있습니다. 0으로 설정하면 전체 블록이 새 행을 삽입하여 채워질 수 있다는 것을 의미합니다. 기본값인 10으로 설정하면 기존 행을 갱신하기 위해 각 블록의 10%를 예약하고 새 행을 삽입하여 각 블록을 최대 90%까지 채울 수 있습니다.
 • PCTUSED: 테이블의 각 데이터 블록을 유지 관리하기 위해 사용되는 공간의 최소 비율을 지정합니다. 사용된 공간이 PCTUSED보다 작아지면 행 삽입을 위해 블록이 사용됩니다. PCTUSED는 0에서 99까지 정수로 지정되며 기본값은 40입니다.
PCTFREE와 PCTUSED를 함께 사용하여 새 행이 기존 데이터 블록에 삽입될지 새 블록에 삽입될지 여부를 결정합니다. 이 두 값의 합은 100이하가 되어야 합니다. 이러한 매개변수는 테이블의 공간을 보다 효과적으로 활용하는 데 사용됩니다.
 • INITRANS: 테이블에 할당된 각 데이터 블록 내의 초기 할당 트랜잭션 항목 수를 지정합니다. 이 값은 1에서 255까지이며 기본값은 1입니다. 최소 개수의 동시 트랜잭션으로 블록을 갱신할 수 있어야 합니다. 일반적으로 기본값을 변경하지 말아야 합니다.
 • MAXTRANS: 테이블에 할당된 데이터 블록을 갱신할 수 있는 동시 트랜잭션의 최대 개수를 지정합니다. 이 제한은 질의에는 적용되지 않습니다. 이 값은 1에서 255까지이며 기본값은 데이터 블록 크기에 따라 달라집니다.
TABLESPACE 절
TABLESPACE 절은 테이블이 생성되는 테이블스페이스를 지정합니다. 예제에 있는 테이블
은 데이터 테이블스페이스 내에 상주합니다. TABLESPACE를 생략한 경우 Oracle은 테이블
을 포함하는 스키마 소유자의 기본 테이블스페이스에 객체를 생성합니다.


테이블 생성 : 지침
 실행 취소 세그먼트, 임시 세그먼트 및 인덱스를 포함하는 테이블스페이스가 아닌 별도의 테이블스페이스에 테이블을 둡니다.
 단편화를 방지하려면 지역적으로 관리되는 테이블스페이스에 테이블을 넣으십시오.


임시 테이블 생성
 임시 테이블을 생성하여 트랜잭션 또는 세션 동안에만 존재하는 세션 전용 데이터를 보유
할 수 있습니다.
CREATE GLOBAL TEMPORARY TABLE 명령은 트랜잭션별 또는 세션별로 임시 테이블을 생성합니다. 세션별 임시 테이블의 경우에는 데이터가 해당 세션 동안에 존재하지만 트랜잭션별 임시 테이블의 경우에는 데이터가 트랜잭션 동안에 존재합니다. 세션의 데이터는 세션 전용이며 각 세션은 자체 데이터만을 보고 수정할 수 있습니다. DML 잠금은 임시 테이블의 데이터에는 적용되지 않습니다. 행의 기간을 제어하는 절은 다음과 같습니다.
 • ON COMMIT DELETE ROWS: 트랜잭션 내에서만 행을 볼 수 있도록 지정합니다.
 • ON COMMIT PRESERVE ROWS: 전체 세션에서 행을 볼 수 있도록 지정합니다.
 임시 테이블에 인덱스, 뷰 및 트리거를 생성하고 또한 Export 유틸리티와 Import 유틸리티를 사용하여 임시 테이블 정의를 엑스포트하고 임포트할 수 있습니다. 그러나 ROWS 옵션을 사용하더라도 데이터는 엑스포트되지 않습니다. 임시 테이블의 정의는 모든 세션에서 볼 수 있습니다.


PCTFREE 및 PCTUSED 설정
PCTFREE 설정
 PCTFREE가 높을수록 데이터베이스 블록 내에 갱신할 수 있는 여유 공간이 많아집니다. 테
이블에 다음이 포함되어 있을 경우 높은 값을 설정합니다.
 • 처음에는 NULL이고 이후에 값을 가진 열로 갱신되는 열
 • 갱신 결과 크기가 증가할 가능성이 있는 열
PCTFREE가 높을수록 블록 밀도가 낮아져서 각 블록은 적은 행을 수용할 수 있습니다.
 위에서 지정한 공식은 행 성장에 대비하여 블록에 사용 가능 영역이 충분한지 확인합니다.
PCTUSED 설정
 PCTUSED를 설정하여 평균 행을 수용할 만큼 충분한 공간이 있을 때만 사용 가능 영역 목
록에 블록을 반환함을 확인합니다. 사용 가능 영역 목록의 블록에 행을 삽입하기 위한 충분
한 공간이 없을 경우 Oracle 서버에서는 사용 가능 영역 목록의 다음 블록을 조회합니다. 이
러한 선형 스캔은 공간이 충분한 블록을 찾을 때까지 또는 목록의 끝에 도달할 때까지 계속
됩니다. 주어진 공식을 사용하면 필수의 사용 가능 영역이 있는 블록을 찾을 가능성이 높아
져 스캔 시간이 줄어듭니다.







-----------------------------------------------------------------------------------------------------------------

실습

List partition table 생성과 관리

>명령어

SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE, TABLESPACE_NAME
FROM DBA_TAB_PARTITIONS;
 - 테이블의 파티션을 조회함
 - HIGH_VALUE : 리스트 파티션에서는 일치하는 값, 범위 파티션에서는 상한 값을 나타냄

SELECT OWNER, NAME, COLUMN_NAME
FROM DBA_PART_KEY_COLUMNS;
 - 파티션의 기준이 되는 column을 조회

CREATE TABLE
(

 ..................
)
PARTITION BY LIST ()
(
 PARTITION VALUES () [ TABLESPACE ].
 PARTITION VALUES () [ TABLESPACE ].
 ............
);
 - Partition으로 구현된 table을 생성
 - LIST 절에 collumn명은 여러 개 지정 할 수 없음.

ALTER TABLE

ADD PARTITION VALUES () [ TABLESPACE ];
 - table에 partition을 추가

ALTER TABLE

DROP PARTITION ;
 - Partition을 삭제

SELECT tablespace_name, bytes, file_name FROM dba_data_files;


댓글 없음:

댓글 쓰기