전체 테이블 복사
CREATE TABLE NewTable
AS
SELECT *
FROM OldTable;
- PK, FK, INDEX, TRIGGER는 복사되지 않음
- DEFAULT 값 일부 누락 가능
조건부 데이터만 복사
CREATE TABLE NewUsers
AS
SELECT *
FROM Users
WHERE Age >= 20;
- 조건에 따라 데이터 누락 가능
- 통계/인덱스 정보는 복사되지 않음
구조만 복사 (데이터 제외)
CREATE TABLE EmptyTable
AS
SELECT *
FROM Users
WHERE 1 = 0;
- 제약조건, 인덱스 모두 생성되지 않음
- 컬럼 구조만 동일
기존 테이블에 데이터 추가
INSERT INTO NewTable
SELECT *
FROM OldTable;
- 컬럼 순서 및 타입 반드시 일치해야 함
- PK/UK 존재 시 중복 데이터 오류 발생 가능
특정 컬럼만 복사
CREATE TABLE UserNames
AS
SELECT UserID, UserName
FROM Users;
- 선택하지 않은 컬럼은 완전히 제외됨
- NOT NULL 제약이 유지되지 않을 수 있음
다른 스키마로 복사
CREATE TABLE 다른스키마.NewTable
AS
SELECT *
FROM 원본스키마.Users;
- 대상 스키마에 CREATE TABLE 권한 필요
- 원본 테이블에 대한 SELECT 권한 필요
- TABLESPACE 권한이 없으면 생성 실패 가능
- PK, FK, INDEX, TRIGGER, SEQUENCE 연결 정보는 복사되지 않음
- 다른 스키마의 시퀀스/트리거 참조 시 오류 발생 가능
- SYNONYM, VIEW, DB LINK 사용 시 동일하게 복사되지 않을 수 있음
DDL 추출 (완전 복제용)
SELECT DBMS_METADATA.GET_DDL('TABLE', 'OLDTABLE')
FROM DUAL;
- 추출된 DDL 실행 시 스키마명 수정 필요
- INDEX, CONSTRAINT는 별도 확인 필요
- 권한 부족 시 일부 정보 조회 안 될 수 있음
반응형
'DB > ORACLE' 카테고리의 다른 글
| ORACLE ORA-00257: archiver error 해결 방법 (0) | 2026.03.26 |
|---|---|
| ORACLE SUBSTR vs REGEXP_SUBSTR 차이점 (0) | 2026.03.25 |
| ORACLE 문자열 자르기 (0) | 2026.03.25 |
| ORACLE WITH 절(서브쿼리 팩토링) 사용법 (0) | 2026.03.24 |
| ORACLE 프로시저 특정 문자열 검색 조회 (0) | 2025.03.27 |