DDL - 오라클 Create table as select(CTAS)
1. CTAS시 가져오지 않는 항목들
---------------------
- DEFAULT
- CONSTRAINT(PK, FK, CHECK)
- INDEX
- Grant
- Synonym
- TRIGGER
*. column name, type, length, not null은 가져옴.
2. 8.1.6 미만 버전
---------------------
- 대량의 테이블을 SORT해서 넣을 경우 (group by를 이용)
SQL> CREATE TABLE 복사테이블
UNRECOVERABLE
PARALLEL
TABLESPACE 테이블스페이스
AS
SELECT 컬럼1, 컬럼2, MIN(컬럼3), ...MIN(컬럼n)
FROM 테이블
GROUP BY 컬럼1, 컬럼2; <= 컬럼1, 컬럼2는 PK임.
3. 8.1.6 이상 버전
---------------------
- 대량의 테이블을 SORT해서 넣을 경우 (order by를 지원)
SQL> ALTER SESSION ENABLE PARALLEL DDL;
SQL> ALTER SESSION ENABLE PARALLEL DML;
SQL> ALTER SESSION SET HASH_AREA_SIZE=838860800; -- SORT_AREA_SIZE * 2
SQL> ALTER SESSION SET SORT_AREA_SIZE=419430400;
SQL> ALTER SESSION SET SORT_AREA_RETAINED_SIZE=419430400;
SQL> ALTER SESSION SET DB_FILE_MULTIBLOCK_READ_COUNT=256;
SQL> CREATE TABLE 복사테이블
[ UNRECOVERABLE ]
PARALLEL NOLOGGING
TABLESPACE 테이블스페이스
AS
SELECT /*+ PARALLEL(A,16) */ *
FROM 테이블 A
ORDER BY ... ;
4. [UN]RECOVERABLE 제한사항
- 파티션이나 LOB 테이블은 사용 불가
- UNRECOVERABLE은 subquery 함께 사용할 때만 가능