반응형
<목차>
1. LIST방식 파티션 구현
1) 명령어
2) 실습과정
2. 서브쿼리를 이용한 DML, DDL
1) 테이블 생성
2) 데이터 삽입
1. LIST방식 파티션 구현
1) 명령어
SELECT owner, table_name, partitioned FROM dba_tables
WHERE OWNER = '<스키마명>';
// 해당 스키마의 테이블들의 파티션 여부를 출력한다.
SELECT owner, name, column_name
FROM dba_part_key_columns
WHERE owner = '<스키마명>' and name = '<스키마명>';
// 해당 스키마 파티션의 키가 되는 열을 출력한다.
SELECT table_owner, table_name, partition_name, high_value, tablespace_name
FROM dba_tab_partitions
WHERE table_owner = '<스키마명>' and table_name = '<테이블명>';
// 해당 스키마 파티션의 키 값을 출력한다.
SELECT owner, segment_name, partition_name, tablespace_name, extent_id, bytes, blocks
FROM dba_extents
WHERE OWNER = '<스키마명>' and segment_name = '<세그먼트명>';
// 해당 스키마 파티션이 저장된 세그먼트의 정보를 출력한다.
CREATE TABLE <스키마.테이블명>(
...
constraint 제약조건명 primary key(컬럼명) // primary key 제약조건을 설정한다.
using index tablespace <인덱스테이블명> // 인덱스로 사용할 테이블 스페이스를 설정한다.
)
partition by list (컬럼명)
(
partition <파티션명> VALUES ('<데이터값>') tablespace <테이블스페이스명>
...
); // LIST방식의 파티션을 생성한다.
INSERT INTO <스키마.테이블1명>
SELECT * FROM <스미카.테이블2명>;
// 테이블1에 테이블2의 데이터를 복사한다. 데이터 타입이 일치해야하며 복사할 열을 선택할 수 있다.
ALTER TABLE <스키마.테이블명>
ADD PARTITION <파티션명> VALUE ('<데이터값>') TABLESPACE <테이블스페이스명>;
// LIST방식의 파티션을 추가한다.
ALTER TABLE <스키마.테이블명>
DROP PARTITION <파티션명>; // 파티션을 삭제한다.
ALTER INDEX <스키마.제약조건명> REBUILD; // 인덱스 정보를 갱신한다.
2) 실습과정
실습 : LIST방식의 파티션을 구성하라.
ma_ch | ma_ph | ma_all | ma_so | |
키값 | 화학 | 물리 | 생물, 식영, 유공 | 사회 |
테이블 | st.st | |||
테이블 스페이스 | t1 | t2 | t3 | t1 |
2. 서브쿼리를 이용한 DML, DDL
1) 테이블 생성
CREATE TABLE <테이블명> [(컬럼, 컬럼, ...)]
AS ( SELECT 문장 : 서브쿼리);
// 서브쿼리문의 결과를 테이블로 생성한다. 데이터 타입과 길이는 서브쿼리에 따라 결정된다. 컬럼리스트와 서브쿼리 컬럼은 반드시 1:1대응된다. 컬럼명이 없으면 서브쿼리에서 출력되는 헤더를 컬럼명으로 사용한다. 서브쿼리에 계산식이나 함수를 사용하는 경우에는 반드시 생성할 테이블에서 컬럼명을 정의 하거나 별병을 사용해야한다.
2) 데이터 삽입
INSERT INTO <테이블명> [(컬럼, 컬럼, ...)]
SELECT 문장;
// 서브쿼리에 검색된 행을 입력값으로 사용한다. 한번에 많은 행을 입력할 수 있다. 하지만 commit해야 하기 때문에 많은 트랜잭션이 발생해서 많이 사용하지는 않는다. 컬럼리스트와 selec문의 컬럼이 1:1대응이 되어야한다.
반응형
'교육 > Oracle' 카테고리의 다른 글
Day 51 (오라클 기초구성 3 & 4) (0) | 2020.01.31 |
---|---|
Day 50 (DB 파티션) (0) | 2020.01.30 |
Day 48 (오라클 기초구성2) (0) | 2020.01.28 |
Day 48 (DB) (0) | 2020.01.28 |
Day 46 (DB_인덱스) (0) | 2020.01.22 |