■ Export & Import
1. Export : 오라클 데이터베이스가 서로 다른 하드웨어 및 소프웨어 구성을 사용하는 플랫폼에서 데이터베이스 간 데이터 객체를 이동할 수 있는 방법을 제공한다.
2. Import : export dmp 파일에서 데이터베이스에 로드 하는 기능을 제공한다.
# 테이블 생성, 확인
CREATE TABLE hr.emp AS SELECT * FROM hr.employees;
SELECT count(*) FROM hr.emp;
# 제약 조건 확인
SELECT constraint_name, constraint_type, search_condition, status, index_name
FROM dba_constraints
WHERE table_name = 'EMP'
AND owner = 'HR';
# 제약 조건 추가
=> primary key 설정
ALTER TABLE hr.emp ADD CONSTRAINT empid_pk PRIMARY KEY(employee_id);
# 추가된 제약조건 확인
SELECT constraint_name, constraint_type, search_condition, status, index_name
FROM dba_constraints
WHERE table_name = 'EMP'
AND owner = 'HR';
# export 하기
=> OS 로 나오기, statistics=none(통계정보 불포함)
SQL> !
[oracle1@oracle ~]$ exp userid=system/1234 tables=hr.emp file=hr_emp.dmp statistics=none
# hr_emp.dmp 생성 되었는지 확인.
[oracle1@oracle ~]$ ls
[oracle1@oracle ~]$ ls -lh hr_emp.dmp
(상황)
예비DBA / 예비 DB엔지니어 : "잘못 삭제했다! 사용중인 TABLE이다!"
# 테이블 삭제
DROP TABLE hr.emp CASCADE CONSTRAINT PURGE;
# 해결) 해당 TABLE을 EXPORT한 FILE이 있다면, IMPORT 하기!
#1) OS로 나오기
SQL> !
[oracle1@oracle ~]$ imp userid=system/1234 file=hr_emp.dmp
=> 오류 발생, 어떤 유저에게 IMPORT 할지 정해주지 않았기 때문이다.
#2) imp (userid=)system/비밀번호 file=table이 있는 파일명.파일형식 fromuser=유저명
[oracle1@oracle ~]$ imp userid=system/1234 file=hr_emp.dmp fromuser=hr
#3) drop table 복구 확인
[oracle1@oracle ~]$ exit
SELECT count(*) FROM hr.emp;
#4) 해당 TABLE의 제약조건도 import 된다
SELECT constraint_name, constraint_type, search_condition, status, index_name
FROM dba_constraints
WHERE table_name = 'EMP'
AND owner = 'HR';
(상황)
예비DBA / 예비 DB엔지니어 : "잘못했다! 사용중인 TABLE이다!"
# TRUNCATE TABLE
TRUNCATE TABLE hr.emp;
SELECT count(*) FROM hr.emp;
#해결) dmp 파일로 import 하기
#1) OS 나와기.
SQL> !
[oracle1@oracle ~]$ ls -lh hr_emp.dmp
-rw-r--r--. 1 oracle1 oinstall 24K Jan 22 16:00 hr_emp.dmp
#2) TRUNCATE TABLE = DATA만 없는 상황
=> data만 로드해줘(옵션): data_only=y
=> imp system/비밀번호 file=파일명. 파일형식 fromuser=유저명 tables=테이블명 data_only=yes
[oracle1@oracle ~]$ imp system/1234 file=hr_emp.dmp fromuser=hr tables=emp data_only=y
#3) TRUNCATE TABLE의 data 복구되었는지 확인
SELECT count(*) FROM hr.emp;
# 특정한 유저에게 파일 import 하기
#1) user 생성 + 권한 생성
CREATE USER michael IDENTIFIED BY oracle
DEFAULT TABLESPACE users
QUOTA 10m ON users;
GRANT
CREATE SESSION
TO michael;
#2) import michael에게 하기
=> imp system/비밀번호 file=(import할 파일). 파일형식 fromuser=(import할 파일 주인인 유저명) touser=(생성한 유저명)
[oracle1@oracle ~]$ imp system/1234 file=hr_emp.dmp fromuser=hr touser=michael
#3) 생성한 user로 접속해서 확인
CONN michael / oracle
SELECT * FROM TAB;
SELECT COUNT(*) FROM michael.emp;
#4) 제약 조건 확인
=> hr 계정에 있는 제약조건을 그래도 import했기 때문이다.
SELECT constraint_name, constraint_type, search_condition, status, index_name
FROM user_constraints
WHERE table_name = 'EMP';
# 유저 레벨로 export 하기
=> exp system/비밀번호 owner=(내보낼 데이터의 소유자) file=(내보낸 파일의 이름).파일형
[oracle1@oracle ~]$ exp system/1234 owner=michael file=michael_owner.dmp
(상황)
예비DBA / 예비 DB엔지니어 : "잘못했다! 사용중인 user 를 지웠다! "
DROP USER michael CASCADE;
#) 해결 user는 직접 생성/ data는 import
#1) user 직접 생성
CREATE USER michael IDENTIFIED BY oracle
DEFAULT TABLESPACE users
QUOTA 10m ON users;
GRANT
CREATE SESSION
TO michael;
#2) user의 DATA들을 import 하기
SQL> !
[oracle1@oracle ~]$ imp system/1234 fromuser=michael file=michael_owner.dmp
#3) 생성한 USER인 michael 접속
CONN michael / oracle
SELECT * FROM tab;
SELECT count(*) FROM michael.emp;
※ Export & Import 문법 ※
Export |
exp user/pwd@connect_string file=export_file.dmp |
exp scott/tiger@orcl file=scott_export.dmp | |
Import |
imp user/pwd@connect_string file=import_file.dmp fromuser=source_user touser=target_user |
imp hr/hr@orcl file=hr_export.dmp fromuser=scott touser=hr |
'Backup > Data exp & imp' 카테고리의 다른 글
명령 프롬프트 SQL에서의 데이터 작업 (0) | 2024.01.24 |
---|---|
Data Pump (1) | 2024.01.24 |
Tablespace export, import (1) | 2024.01.23 |