행위

"CTAS"의 두 판 사이의 차이

DB CAFE

(새 문서: === CTAS NOLOGGING 및 UNRECOVERABLE 사용방법 === * Create Table As Select 의 약어 * 테이블을 SELECT 한후 테이블을 생성 하는 방법 ==== CTAS 사용 ==== * 테...)
 
(CTAS Syntax)
 
(같은 사용자의 중간 판 7개는 보이지 않습니다)
2번째 줄: 2번째 줄:
 
* Create Table As Select 의 약어  
 
* Create Table As Select 의 약어  
 
* 테이블을 SELECT 한후 테이블을 생성 하는 방법  
 
* 테이블을 SELECT 한후 테이블을 생성 하는 방법  
 +
{{틀:고지상자2
 +
|제목= 오직 NOT NULL 제약사항 만 생성됨.
 +
|내용=* 생성되지 않는 것들
 +
*:# 일반/UNIQUE 인덱스
 +
*:# PRIMARY KEY
 +
*:# FOREIGN KEY
 +
*:# CHECK
 +
*:# REF
 +
* 제약조건을 추가하기 위해서는 CTAS 이후 ALTER TABLE ~ 구문으로 추가
 +
}}
 +
* 인덱스는 생성되지 않음. 테이블 관련된 모든 인덱스(PK / UK / FK ) 생성되지 않음.
 +
 +
==== CTAS Syntax ====
 +
  
==== CTAS 사용 ====
 
* 테이블 생성 및 입력 , 인덱스는 생성되지 않음. 제약사항 (PK / FK ) 생성되지 않음.
 
 
<source lang=sql>
 
<source lang=sql>
 
CREATE TABLE emp_backup  
 
CREATE TABLE emp_backup  
[tablespace T/S명] -- 생략가능
+
            [ TABLESPACE T/S명 ] -- 테이블 스페이스 지정시 
[ NOLOGGING ]    -- 리두 로그 정보가 만들어지지 않도록  
+
            [ LOGGING    | NOLOGGING ]    -- 리두 로그 정보가 만들어지지 않도록 함. 아래 UN/RECOVERABLE 옵션과 동시에 사용할수 없음.
[UNRECOVERABLE ]  -- 복구하지 않음을 명시함.  
+
            [ RECOVERABLE | UNRECOVERABLE ]  -- 복구하지 않음을 명시함.  
     AS SELECT * FROM emp NOLOGGING;
+
            [ COMPRESS ]
 +
            [ PARALLEL 갯수 ]
 +
     AS SELECT * FROM emp;
 
</source>
 
</source>
  
16번째 줄: 30번째 줄:
 
<source lang=sql>
 
<source lang=sql>
 
CREATE TABLE emp_backup  
 
CREATE TABLE emp_backup  
     AS SELECT * FROM emp NOLOGGING
+
      NOLOGGING
 +
     AS SELECT * FROM emp
 
  WHERE 1=2  --  
 
  WHERE 1=2  --  
 
;
 
;
 
</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 추천메뉴 바로가기


1 CTAS NOLOGGING 및 UNRECOVERABLE 사용방법[편집]

  • Create Table As Select 의 약어
  • 테이블을 SELECT 한후 테이블을 생성 하는 방법
notifications_active 오직 NOT NULL 제약사항 만 생성됨.
  • 생성되지 않는 것들
    1. 일반/UNIQUE 인덱스
    2. PRIMARY KEY
    3. FOREIGN KEY
    4. CHECK
    5. 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값이 변경되기 때문에 인덱스를 반드시 재생성 하거나 리빌드 해야한다.