Oacle 표 공간 표 파 티 션 상세 설명 및 Oacle 표 파 티 션 조회 사용 방법
12349 단어 oracle 테이블 공간표 분할Oacle 표 파 티 션 조회
1.범위 구분:
범위 파 티 션 은 데 이 터 를 범위 에 따라 모든 파 티 션 에 표시 합 니 다.이 범 위 는 파 티 션 을 만 들 때 지정 한 파 티 션 키 로 결 정 됩 니 다.이런 파 티 션 방식 은 가장 자주 사용 되 고 파 티 션 키 는 항상 날 짜 를 사용한다.예 를 들 어 판매 데 이 터 를 월 별로 구분 할 수 있 습 니 다.범위 구역 을 사용 할 때 다음 과 같은 몇 가지 규칙 을 고려 하 십시오.1.각 구역 마다 VALUES LESS THEN 자구 가 있어 야 합 니 다.이 구역 에 포함 되 지 않 는 상한 값 을 지정 합 니 다.파 티 션 키 의 모든 값 이 이 상한 치 보다 크 거나 같은 기록 은 다음 높 은 파 티 션 에 추 가 됩 니 다.2.모든 파 티 션 은 첫 번 째 를 제외 하고 암시 적 인 하한 값 이 있 습 니 다.이 값 은 바로 이 파 티 션 의 이전 파 티 션 의 상한 값 입 니 다.3.가장 높 은 구역 에서 MAXVALUE 가 정의 된다.MAXVALUE 는 불확실 한 값 을 대표 합 니 다.이 값 은 다른 파 티 션 의 모든 파 티 션 키 보다 높 고 모든 파 티 션 에서 지정 한 VALUE LESS THEN 보다 높 은 값 으로 이해 할 수 있 으 며 빈 값 도 포함 합 니 다.
예 1:만약 에 CUSTOMER 표 가 있다 고 가정 하면 표 에 데이터 20000 줄 이 있 습 니 다.우 리 는 이 표를 CUSTOMER 을 통 해ID 는 구역 을 나 누고 각 구역 은 100000 줄 을 저장 합 니 다.우 리 는 각 구역 을 하나의 표 공간 에 저장 합 니 다.그러면 데이터 파일 은 여러 개의 물리 디스크 를 뛰 어 넘 을 수 있 습 니 다.다음은 표 와 파 티 션 을 만 드 는 코드 입 니 다.다음 과 같 습 니 다.
CREATE TABLE CUSTOMER
(
CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
FIRST_NAME VARCHAR2(30) NOT NULL,
LAST_NAME VARCHAR2(30) NOT NULL,
PHONEVARCHAR2(15) NOT NULL,
EMAILVARCHAR2(80),
STATUS CHAR(1)
)
PARTITION BY RANGE (CUSTOMER_ID)
(
PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02
)
예 2:시간 에 따라 구분
CREATE TABLE ORDER_ACTIVITIES
(
ORDER_ID NUMBER(7) NOT NULL,
ORDER_DATE DATE,
TOTAL_AMOUNT NUMBER,
CUSTOTMER_ID NUMBER(7),
PAID CHAR(1)
)
PARTITION BY RANGE (ORDER_DATE)
(
PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
)
MAXVALUE
CREATE TABLE RangeTable
(
idd INT PRIMARY KEY ,
iNAME VARCHAR(10),
grade INT
)
PARTITION BY RANGE (grade)
(
PARTITION part1 VALUES LESS THEN (1000) TABLESPACE Part1_tb,
PARTITION part2 VALUES LESS THEN (MAXVALUE) TABLESPACE Part2_tb
);
2.목록 파 티 션:이 구역 의 특징 은 특정한 열의 값 이 몇 개 밖 에 없다 는 것 이다.이러한 특징 을 바탕 으로 우 리 는 목록 구역 을 사용 할 수 있다.
예 1
CREATE TABLE PROBLEM_TICKETS
(
PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY,
DESCRIPTION VARCHAR2(2000),
CUSTOMER_ID NUMBER(7) NOT NULL,
DATE_ENTERED DATE NOT NULL,
STATUS VARCHAR2(20)
)
PARTITION BY LIST (STATUS)
(
PARTITION PROB_ACTIVE VALUES ('ACTIVE') TABLESPACE PROB_TS01,
PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
)
예 2
CREATE TABLE ListTable
(
id INT PRIMARY KEY ,
name VARCHAR (20),
area VARCHAR (10)
)
PARTITION BY LIST (area)
(
PARTITION part1 VALUES ('guangdong','beijing') TABLESPACE Part1_tb,
PARTITION part2 VALUES ('shanghai','nanjing') TABLESPACE Part2_tb
);
)
3.해시 구역:이러한 파 티 션 은 열 값 에 해시 알고리즘 을 사용 하여 줄 을 어느 파 티 션 에 넣 는 지 확인 합 니 다.열의 값 이 적당 한 조건 이 없 을 때,산열 구역 을 사용 하 는 것 을 권장 합 니 다.해시 파 티 션 은 지정 한 파 티 션 번 호 를 통 해 데 이 터 를 골 고루 분포 하 는 파 티 션 형식 입 니 다.I/O 장치 에서 해시 파 티 션 을 통 해 이 파 티 션 의 크기 를 일치 시 키 기 때 문 입 니 다.
예 1:
CREATE TABLE HASH_TABLE
(
COL NUMBER(8),
INF VARCHAR2(100)
)
PARTITION BY HASH (COL)
(
PARTITION PART01 TABLESPACE HASH_TS01,
PARTITION PART02 TABLESPACE HASH_TS02,
PARTITION PART03 TABLESPACE HASH_TS03
)
약자:
CREATE TABLE emp
(
empno NUMBER (4),
ename VARCHAR2 (30),
sal NUMBER
)
PARTITION BY HASH (empno) PARTITIONS 8
STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
hash 파 티 션 의 가장 중요 한 체 제 는 hash 알고리즘 에 따라 구체 적 인 기록 을 어느 파 티 션 에 삽입 해 야 하 는 지 계산 하 는 것 입 니 다.hash 알고리즘 에서 가장 중요 한 것 은 hash 함수 입 니 다.Oracle 에서 hash 파 티 션 을 사용 하려 면 파 티 션 의 수량 만 지정 하면 됩 니 다.구역 의 수량 은 2 의 n 제곱 을 사용 하 는 것 을 권장 합 니 다.그러면 각 구역 간 의 데이터 분 포 를 더욱 고 르 게 할 수 있 습 니 다.4.조합 범위 산열 구역이 파 티 션 은 범위 파 티 션 과 목록 파 티 션 을 바탕 으로 표 는 먼저 특정한 열 에 따라 범위 파 티 션 을 한 다음 에 특정한 열 에 따라 목록 파 티 션 을 하고 파 티 션 중의 파 티 션 을 하위 파 티 션 이 라 고 합 니 다.
CREATE TABLE SALES
(
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE,
SALES_COST NUMBER(10),
STATUS VARCHAR2(20)
)
PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)
(
PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009
(
SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
),
PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009
(
SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
)
)
5.복합 범위 산열 구역:이런 구역 은 범위 구역 과 해시 구역 을 바탕 으로 표 는 먼저 특정한 열 에 따라 범위 구역 을 나 눈 다음 에 특정한 열 에 따라 해시 구역 을 나눈다.
create table dinya_test
(
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300),
transaction_date date
)
partition by range(transaction_date)subpartition by hash(transaction_id) subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)
(
partition part_01 values less than(to_date(‘2006-01-01','yyyy-mm-dd')),
partition part_02 values less than(to_date(‘2010-01-01','yyyy-mm-dd')),
partition part_03 values less than(maxvalue)
);
(5).표 파 티 션 에 대한 유지 보수 작업:1.파 티 션 추가
다음 코드 는 SALES 표 에 P3 파 티 션 을 추가 하 였 습 니 다.
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));
메모:위 에 추 가 된 파 티 션 경 계 는 마지막 파 티 션 경계 보다 높 아야 합 니 다.다음 코드 는 SALES 표 의 P3 파 티 션 에 P3SUB 1 서브 파 티 션
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
을 추가 하 였 습 니 다.2.파 티 션 아래 코드 를 삭제 하고 P3 표 파 티 션 을 삭 제 했 습 니 다.
ALTER TABLE SALES DROP PARTITION P3;
다음 코드 에서 P4SUB 1 하위 파 티 션 을 삭 제 했 습 니 다.
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
메모:삭 제 된 파 티 션 이 표 의 유일한 파 티 션 이 라면 이 파 티 션 은 삭제 할 수 없습니다.이 파 티 션 을 삭제 하려 면 표를 삭제 해 야 합 니 다.3.분 구 를 절단 합 니 다.어떤 파 티 션 을 차단 하 는 것 은 특정한 파 티 션 의 데 이 터 를 삭제 하고 파 티 션 을 삭제 하지 않 으 며 다른 파 티 션 의 데 이 터 를 삭제 하지 않 는 다 는 것 을 말한다.표 에 한 개의 파 티 션 만 있 을 때 도 이 파 티 션 을 차단 할 수 있 습 니 다.다음 코드 를 통 해 파 티 션 을 차단 합 니 다:
ALTER TABLE SALES TRUNCATE PARTITION P2;
다음 코드 를 통 해 하위 파 티 션 을 차단 합 니 다:
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
4.합병 구역합병 구역 은 인접 한 구역 을 하나의 구역 으로 합 친 것 으로 그 결과 구역 은 비교적 높 은 구역 의 경 계 를 사용 할 것 이다.주의해 야 할 것 은 구역 을 경계 가 비교적 낮은 구역 으로 합 칠 수 없다 는 것 이다.다음 코드 는 P1 P2 구역 의 합병 을 실현 했다.
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
5.분할 구역파 티 션 을 나 누 어 하나의 파 티 션 을 두 개의 새 파 티 션 으로 나 누고 나 누 면 원래 파 티 션 이 존재 하지 않 습 니 다.HASH 유형의 파 티 션 을 분리 할 수 없 도록 주의 하 세 요.
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);
6.연결 구역(coalesca)의 결합 구역 은 해시 구역 의 데 이 터 를 다른 구역 에 연결 하 는 것 입 니 다.해시 구역 의 데이터 가 비교적 클 때 해시 구역 을 추가 한 다음 에 연결 할 수 있 습 니 다.주의해 야 할 것 은 연결 구역 은 해시 구역 에 만 사용 할 수 있 습 니 다.다음 코드 를 통 해 연결 구역:
ALTER TABLE SALES COALESCA PARTITION;
7.표 파 티 션 이름 바 꾸 기다음 코드 는 P21 을 P2
ALTER TABLE SALES RENAME PARTITION P21 TO P2;
로 변경 합 니 다.8.관련 조회
크로스 파 티 션 조회
select sum( *) from
(select count(*) cn from t_table_SS PARTITION (P200709_1)
union all
select count(*) cn from t_table_SS PARTITION (P200709_2)
);
조회 표 에 몇 개의 구역 이 있 는 지
SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
색인 정보 조회
select object_name,object_type,tablespace_name,sum(value)
from v$segment_statistics
where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX'
group by object_name,object_type,tablespace_name
order by 4 desc
-- :
select * from DBA_PART_TABLES
-- :
select * from ALL_PART_TABLES
-- :
select * from USER_PART_TABLES
-- :
select * from DBA_TAB_PARTITIONS
-- :
select * from ALL_TAB_PARTITIONS
-- :
select * from USER_TAB_PARTITIONS
-- :
select * from DBA_TAB_SUBPARTITIONS
-- :
select * from ALL_TAB_SUBPARTITIONS
-- :
select * from USER_TAB_SUBPARTITIONS
-- :
select * from DBA_PART_KEY_COLUMNS
-- :
select * from ALL_PART_KEY_COLUMNS
-- :
select * from USER_PART_KEY_COLUMNS
-- :
select * from DBA_SUBPART_KEY_COLUMNS
-- :
select * from ALL_SUBPART_KEY_COLUMNS
-- :
select * from USER_SUBPART_KEY_COLUMNS
-- oracle
select * from user_tables a where a.partitioned='YES'
--
truncate table table_name;
--
alter table table_name truncate partition p5;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Oacle 표 공간 표 파 티 션 상세 설명 및 Oacle 표 파 티 션 조회 사용 방법텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.