Export & Import

BUMSOO·2024년 12월 16일

Backup & Recovery

목록 보기
8/18

Export & Import

  • Export 유틸리티는 오라클 데이터베이스가 서로 다른 하드웨어 및 소프트웨어 구성을 사용하는 플랫폼에 상주하더라도 이러한 데이터베이스간에 데이터 객체를 이동할 수 있는 방법을 제공한다.

  • Export를 실행하면 테이블 등의 객체가 추출된 다음 인덱스, 주석, 권한 부여 등의 관련 객체가 추출됩니다. 추출된 데이터는 일반적으로 oracle binary 형식 덤프 파일로 생성된다.

  • Import 유틸리티는 Export 덤프 파일에서 객체 정의와 테이블 데이터를 읽어서 데이터 객체를 오라클 데이터베이스에 입력한다.

Export 모드

1. Table 모드

  • 테이블 정의
  • 테이블 데이터
  • 소유자의 테이블 권한 부여
  • 소유자의 테이블 인덱스
  • 테이블 제약조건

table export

exp userid=system/oracle file=hr_emp.dmp tables=employees direct=y

2. User 모드

  • 유저 정의
  • 유저가 소유한 객체
  • 유저 권한

user export

exp useridsystem/oracle file=hr.dmp owner=hr

3. Tablespace 모드

  • 테이블 정의
  • 권한 부여
  • 인덱스
  • 테이블 제약 조건
  • 트리거

tablespace export

exp useridsystem/oracle file=users_tbs.dmp tablespaces=users

4. Full database 모드

  • sys 스키마에 있는 객체를 제외한 모든 데이터베이스 객체를 Export 한다.
  • 테이블 정의
  • 테이블 데이터
  • 권한 부여
  • 인덱스
  • 테이블 제약조건

database full export

exp useridsystem/oracle full=y file=ora19c_full.dmp direct=y

import 예시

데이터베이스 모드로 export 받은 dmp 파일에서 hr 유저의 테이블만 import
imp userid=system/oracle file=ora19c_full.dmp fromuser=hr tables=employees

실제 데이터는 import 하지 않고 DDL문장만 추출
imp useurid=system/oracle file=hr.emp.dmp full=y show=y log=test.log

테이블스페이스 레벨로 import
imp userid=system/oracle file=insa_tbs.dmp tablespaces=insa_tbs full=y

- 신규 테이블 생성

- system 계정 비밀번호 변경

- 생성한 테이블의 제약조건 확인

select constraint_name, constraint_type, search_condition, status, index_name
from dba_constraints
where owner = 'HR'
and table_name = 'EMP';

- 테이블 모드로 export
exp userid=system/oracle tables=hr.emp file=hr_emp.dmp direct=y
direct=y를 사용하지 않을 경우 기본값으로는 conventional 방식으로 데이터를 추출하는데 습관적으로 direct=y를 해서 직접적 데이터를 추출할 수 있게 하자.

- export 한 테이블 삭제

- dmp파일로 데이터 import 작업

- 제약조건도 import 되었는지 확인

- 테이블 truncate

- 테이블에 데이터만 import
imp userid=system/oracle file=hr_emp.dmp fromuser=hr tables=emp data_only=y

- 실제 import는 하지 않고 DDL문장을 log 파일로만 받기
imp userid=system/oracle file=hr_emp.dmp full=y show=y log=test.log

유저 메타데이터 추출

  • 유저 생성 구조를 확인
    SET long 1000000 -- meta 데이터의 타입은 long 타입이다.
    SELECT dbms_metadata.get_ddl('USER','HR') from dual;

  • 유저에게 부여된 시스템 권한 확인
    select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','HR') from dual;

  • 유저에게 부여된 객체 권한 확인
    select dbms_metadata.get_granted_ddl('OBJECT_GRANT','HR') from dual;

  • 유저에게 부여된 쿼터값 확인
    select dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA','HR') from dual;

  • 유저에게 부여된 ROLE 확인
    select dbms_metadata.get_granted_ddl('ROLE_GRANT','HR') from dual;

0개의 댓글