Backup/Data exp & imp

Data Export, Import

잇꼬 2024. 1. 22. 18:18
728x90
반응형
SMALL

■ 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

 

728x90
반응형
LIST

'Backup > Data exp & imp' 카테고리의 다른 글

명령 프롬프트 SQL에서의 데이터 작업  (0) 2024.01.24
Data Pump  (1) 2024.01.24
Tablespace export, import  (1) 2024.01.23