"CTAS"의 두 판 사이의 차이
DB CAFE
(→CTAS NOLOGGING 및 UNRECOVERABLE 사용방법) |
(→CTAS Syntax) |
||
(같은 사용자의 중간 판 5개는 보이지 않습니다) | |||
12번째 줄: | 12번째 줄: | ||
* 제약조건을 추가하기 위해서는 CTAS 이후 ALTER TABLE ~ 구문으로 추가 | * 제약조건을 추가하기 위해서는 CTAS 이후 ALTER TABLE ~ 구문으로 추가 | ||
}} | }} | ||
+ | * 인덱스는 생성되지 않음. 테이블 관련된 모든 인덱스(PK / UK / FK ) 생성되지 않음. | ||
+ | |||
+ | ==== CTAS Syntax ==== | ||
+ | |||
− | |||
− | |||
<source lang=sql> | <source lang=sql> | ||
CREATE TABLE emp_backup | CREATE TABLE emp_backup | ||
− | [ | + | [ TABLESPACE T/S명 ] -- 테이블 스페이스 지정시 |
[ LOGGING | NOLOGGING ] -- 리두 로그 정보가 만들어지지 않도록 함. 아래 UN/RECOVERABLE 옵션과 동시에 사용할수 없음. | [ LOGGING | NOLOGGING ] -- 리두 로그 정보가 만들어지지 않도록 함. 아래 UN/RECOVERABLE 옵션과 동시에 사용할수 없음. | ||
[ RECOVERABLE | UNRECOVERABLE ] -- 복구하지 않음을 명시함. | [ RECOVERABLE | UNRECOVERABLE ] -- 복구하지 않음을 명시함. | ||
− | AS SELECT * FROM emp | + | [ COMPRESS ] |
+ | [ PARALLEL 갯수 ] | ||
+ | AS SELECT * FROM emp; | ||
</source> | </source> | ||
31번째 줄: | 35번째 줄: | ||
; | ; | ||
</source> | </source> | ||
+ | |||
+ | === CTAS를 이용한 REORG 방법 === | ||
+ | 1. Create a copy of the original table using CTAS. | ||
+ | <source lang=sql> | ||
+ | SQL> create table new_table | ||
+ | as select * from old_table; | ||
+ | </source> | ||
+ | |||
+ | 2.Drop the original table and all indexes/constraints | ||
+ | <source lang=sql> | ||
+ | SQL> drop table emp cascade constraints; | ||
+ | </source> | ||
+ | |||
+ | 3.Rename new table | ||
+ | <source lang=sql> | ||
+ | SQL> alter table new_emp rename to old table name; | ||
+ | </source> | ||
+ | |||
+ | * 주의 사항) 테이블 Move시에 모든 rowid값이 변경되기 때문에 인덱스를 반드시 재생성 하거나 리빌드 해야한다. | ||
+ | [[category:oracle]] |
2024년 6월 20일 (목) 00:49 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 CTAS NOLOGGING 및 UNRECOVERABLE 사용방법[편집]
- Create Table As Select 의 약어
- 테이블을 SELECT 한후 테이블을 생성 하는 방법
notifications_active 오직 NOT NULL 제약사항 만 생성됨.
- 생성되지 않는 것들
- 일반/UNIQUE 인덱스
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- REF
- 제약조건을 추가하기 위해서는 CTAS 이후 ALTER TABLE ~ 구문으로 추가
- 인덱스는 생성되지 않음. 테이블 관련된 모든 인덱스(PK / UK / FK ) 생성되지 않음.
1.1 CTAS Syntax[편집]
CREATE TABLE emp_backup
[ TABLESPACE T/S명 ] -- 테이블 스페이스 지정시
[ LOGGING | NOLOGGING ] -- 리두 로그 정보가 만들어지지 않도록 함. 아래 UN/RECOVERABLE 옵션과 동시에 사용할수 없음.
[ RECOVERABLE | UNRECOVERABLE ] -- 복구하지 않음을 명시함.
[ COMPRESS ]
[ PARALLEL 갯수 ]
AS SELECT * FROM emp;
- 데이터는 입력 하지 않고 테이블만 생성할경우
CREATE TABLE emp_backup
NOLOGGING
AS SELECT * FROM emp
WHERE 1=2 --
;
2 CTAS를 이용한 REORG 방법[편집]
1. Create a copy of the original table using CTAS.
SQL> create table new_table
as select * from old_table;
2.Drop the original table and all indexes/constraints
SQL> drop table emp cascade constraints;
3.Rename new table
SQL> alter table new_emp rename to old table name;
- 주의 사항) 테이블 Move시에 모든 rowid값이 변경되기 때문에 인덱스를 반드시 재생성 하거나 리빌드 해야한다.