[백업][가리사니] 오라클 데이터를 파일로 내보내기와 가져오기
oracle

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

오라클을 설치하면 파일로 내보내기(export) 가져오기(import) 할 수 있는 bin도 같이 설치됩니다. 커맨드에서 exp(내보내기:export) / imp(가져오기:import) 을 써볼 수 있습니다. 먼저 설명을 보도록하겠습니다. (커맨드 실행)

exp 설명서

exp -help
  • 형식 :
    EXP KEYWORD= 또는 KEYWORD=(1,2,...,N)
    
  • 예제 :
    EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
    또는 T1 분할된 테이블인 경우 TABLES=(T1:P1,T1:P2)
    

    USERID 명령어 줄에 첫번째 매개변수에 있어야 합니다.

키워드 설명(기본값)
USERID 사용자 이름/비밀번호
FULL 전체 파일 익스포트(N)
BUFFER 데이터 버퍼 크기
OWNER 소유자 사용자 이름 목록
FILE 출력 파일(EXPDAT.DMP)
TABLES 테이블 이름 목록
COMPRESS 하나의 확장 영역으로 임포트(Y)
RECORDLENGTH IO 레코드 길이
GRANTS 권한 부여 익스포트(Y)
INCTYPE 증분 익스포트 유형
INDEXES 인덱스 익스포트(Y)
RECORD 증분 익스포트 추적(Y)
DIRECT 직접 경로(N)
TRIGGERS 트리거 익스포트(Y)
LOG 화면 출력의 로그 파일
STATISTICS 객체 분석(ESTIMATE)
ROWS 데이터 행 익스포트(Y)
PARFILE 매개변수 파일 이름
CONSISTENT 테이블간 일관성(N)
CONSTRAINTS 제약 조건 익스포트(Y)
OBJECT_CONSISTENT 객체 익스포트 동안 읽기 전용으로 설정된 트랜잭션(N)
FEEDBACK 매 x행마다 진행 상황 표시(0)
FILESIZE 각 덤프 파일의 최대 크기
FLASHBACK_SCN 세션 스냅샷을 되돌리는 설정에 사용된 SCN
FLASHBACK_TIME 지정된 시간에 가장 가까운 SCN을 가져오는 데 사용된 시간
QUERY 테이블의 부분 집합을 엑스포트하는 데 사용하는 select 절
RESUMABLE 공간 관련 오류가 발생하면 일시 중지됨(N)
RESUMABLE_NAME 재개 가능한 명령문을 식별하는 데 사용된 텍스트 문자열
RESUMABLE_TIMEOUT RESUMABLE 대기 시간
TTS_FULL_CHECK TTS에 대한 전체 또는 부분 종속성 검사 수행
TABLESPACES 익스포트할 테이블스페이스 목록
TRANSPORT_TABLESPACE 이동 가능한 테이블스페이스 메타 데이터 익스포트(N)
TEMPLATE iAS 모드 익스포트를 호출하는 템플리트 이름

imp 설명서

imp -help
  • 형식 :
    IMP KEYWORD= 또는 KEYWORD=(1,2,...,N)
    
  • 예 :
    IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
                 또는 T1 분할된 테이블인 경우 TABLES=(T1:P1,T1:P2)
    

    USERID 명령어 줄에 첫번째 매개변수에 있어야 합니다.

키워드 설명(기본값)
USERID 사용자명/비밀번호
FULL 파일 전체 임포트 (N)
BUFFER 데이터 버퍼의 크기
FROMUSER 소유 사용자명 목록
FILE 입력 파일들 (EXPDAT.DMP)
TOUSER 사용자명의 목록
SHOW 파일 목차만 목록 (N)
TABLES 테이블명 목록
IGNORE 생성 오류 무시 (N)
RECORDLENGTH IO 레코드의 길이
GRANTS 권한부여 임포트 (Y)
INCTYPE 증분 임포트 유형
INDEXES 인덱스 임포트 (Y)
COMMIT 배열 삽입 커밋 (N)
ROWS 데이터 행 임포트 (Y)
PARFILE 매개변수 파일명
LOG 화면 출력의 로그 파일
CONSTRAINTS 제약조건을 임포트 (Y)
DESTROY 테이블스페이스 데이터 파일 겹쳐쓰기(N)
INDEXFILE 지정된 파일에 테이블/인덱스 정보 쓰기
SKIP_UNUSABLE_INDEXES 사용되지 않은 인덱스들의 유지를 건너뜁니다 (N)
FEEDBACK 매 x행마다 진행 상황 표시(0)
TOID_NOVALIDATE 지정된 유형 ID 검증 건너뛰기
FILESIZE 각 덤프 파일의 최대 크기
STATISTICS 미리 계산된 통계 임포트(항상)
RESUMABLE 공간 관련 오류가 발생하면 일시 중지됨(N)
RESUMABLE_NAME 재개 가능한 명령문을 식별하는 데 사용되는 텍스트 문자열
RESUMABLE_TIMEOUT RESUMABLE 대기 시간
COMPILE 프로시저, 패키지 및 함수 컴파일(Y)
STREAMS_CONFIGURATION 일반 스트림 메타 데이터 임포트(Y)
STREAMS_INSTANTIATION 스트림 인스턴스화 메타 데이터 임포트(N)
DATA_ONLY 데이터만 임포트(N)

실험

예제 데이터 만들기

DROP TABLE TEST_TABLE;

-- 테이블 생성
CREATE TABLE TEST_TABLE
(
  TXT VARCHAR2(20 BYTE)
);

-- 더미 삽입
INSERT INTO TEST_TABLE VALUES('가');
INSERT INTO TEST_TABLE VALUES('리');
INSERT INTO TEST_TABLE VALUES('사');
INSERT INTO TEST_TABLE VALUES('니');

-- 확인
SELECT * FROM TEST_TABLE;

내보내기 명령 (커맨드)

exp userid=계정/암호@SID file=경로 TABLES=(테이블)

(생략…) 익스포트가 경고 없이 정상적으로 종료되었습니다. 기존데이터 삭제 (쿼리)

-- 확인
SELECT * FROM TEST_TABLE;

-- 기존데이터 삭제
DELETE FROM TEST_TABLE;

-- 확인
SELECT * FROM TEST_TABLE;

가져오기 (커맨드)

imp userid=계정/암호@SID file=경로 TABLES=(테이블)

실패!! 이미 TEST_TABLE 은 존재한다!! 위 설명서의 “IGNORE 생성 오류 무시 (N) RECORDLENGTH IO 레코드의 길이”를 써보겠습니다.

imp userid=계정/암호@SID IGNORE=Y file=경로 TABLES=(테이블)

(생략…) “TEST_TABLE”(를)을 임포트 중 4 행이 임포트되었습니다

-- 확인
SELECT * FROM TEST_TABLE;

추신

  • 단순하니 설명서 보시고 직접 옵션 넣어서 해보시는게 더 빠릅니다.!!
  • 오라클 정말 오랜만에 해보는데.. 이제 SQL Developer 라는 시각화된 SQL 브라우저도 있고 플랜이 MSSQL 이나 PostgreSQL 만큼 예쁘게 나오진 않지만 그나마 시각화 되서 보이는군요!!
  • SQL 튜닝 권고자는 쿼리가 복잡하면 복잡할 수록 유용해 보입니다.!!