Oracle Data pump를 이용한 expdp, impdp

|

<<expdp>>
1. full export mode 

expdp [사용자이름]/[사용자비밀번호] directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log full=y

DB 전체 백업, 테이블 스페이스, ROLE 등 다 저장 
마지막에 반드시 full=y를 적어줘야 한다. 


2. schema mode

expdp [사용자이름]/[사용자비밀번호][@서비스이름] schemas=[스키마명] directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

스키마만 저장한다. 테이블 스페이스, ROLE 등은 따로 저장 안함
@servicename에 sid이름 적어도 됨
스키마를 export할 땐 @서비스이름은 없어도 괜찮음

3. table mode 

expdp [사용자이름]/[사용자비밀번호][@서비스이름] tables=[테이블명] directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

테이블만 저장하고 테이블 스페이스, ROLE 등은 따로 저장 안 함
테이블을 export할 땐 @서비스이름은 없어도 됨

오류가 나면 폴더가 실제로 있는지? 폴더 권한이 있는지? 확인할 것..
폴더가 자동으로 생기지 않는다. 


<<impdp>>
1. full import mode

impdp [사용자이름]/[사용자비밀번호] directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

지정 디렉토리에 dmp파일과 log파일 필요


2. shcema mode

// 기본
impdp [사용자이름]/[사용자비밀번호][@서비스명] schemas=[스키마명] directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

// 스키마명 변경
impdp [사용자이름]/[사용자비밀번호][@서비스명] remap_schema=기존스키마명:변경된스키마명 directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

// 테이블스페이스 변경
impdp [사용자이름]/[사용자비밀번호][@서비스명] remap_schema=기존스키마명:변경된스키마명 remap_tablespace=기존테이블스페이스명:변경테이블스페이스명 directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

테이블스페이스나 스키마 이름을 변경하여 불러올 수 있다.
계정 정보 잘 입력되었는지 확인


3. table mode

impdp [사용자이름]/[사용자비밀번호][@서비스명] tables=테이블명 directory=[디렉토리명] dumpfile=[파일이름].dmp logfile=[로그파일이름].log

 

<< 디렉토리 생성 ~ expdp, impdp >>

1. 디렉토리 생성하기
create or replace directory 디렉토리명 as 'c:\DUMP';

2. 디렉토리 권한 부여
grant read, write on directory 디렉토리명 to 계정명;

3. expdp 사용 (생성)
expdp [사용자이름]/[사용자비밀번호] dumpfile=[파일이름].dmp schemas=[스키마이름]

// 터미널 실행이므로 한줄로 타이핑하여실행해야함
expdp %USER_ID%/\"%USER_PWD%\"@xe // 유저아이디/유저패스워드@SID
schemas=펌프대상스키마
directory=디렉토리 이름 (Alias 이름)
dumpfile={원하는 파일이름}.dmp
logfile={원하는 파일이름}.log
reuse_dumpfiles=y
include=TABLE:"NOT LIKE '%검색어%'"
include=TABLE:"!='테이블이름'"
job_name=잡이름설정가능
filesize=원하는최대파일사이즈EX)5G

4. impdp 사용 (백업)
impdp [사용자이름]/[사용자비밀번호] dumpfile=[파일이름].dmp table_exists_action=replace

// 터미널 실행이므로 한줄로 타이핑하여실행해야함
impdp %USER_ID%/\"%USER_PWD%\"@xe // 유저아이디/유저패스워드
schemas=%SCHEMA_NAME% 
directory=DATA_DUMP_ORGN
dumpfile={파일이름}.dmp
logfile={원하는 파일이름}.log
table_exists_action=replace

REMAP_SCHEMA=exp유저:imp유저 // export한 계정과 import할 계정이 다를때 지정함.
REMAP_TABLESPACE=exp테이블스페이스명:imp테이블스페이스명 // export한 계정의 테이블스페이명과 import할 테이블스페이스명이 다를때 지정함.



* export 할 dba계정 접속 후 기본디렉토리 검색
sqlplus "/as sysdba";
sql> select * from dba_directories;

* 계정 생성
create user 계정명
identified by 비번
default tablespace 테이블스페이스명
temporary tablespace 임시테이블스페이스명
profile default
account unlock;

* 권한 추가
grant connect, resource to 계정명;
grant create view, create synonym to 계정명;

* 유저
select * from all_users; // 유저확인
select * from dba_sys_privs where grantee='사용자명'; // 유저 권한 확인

 

- 스키마를 사용하는 사용자가 존재
- 사용자는 스키마에 아이디, 비밀번호, 포트, 서비스이름 or SID로 접근
- dump 파일을 저장할 위치를 오라클에 등록(이 저장 위치가 디렉토리)
- 디렉토리를 만들고 사용자가 디렉토리를 만질 수 있게 권한을 부여

 

사용자는 저장하려는 스키마의 사용자이다.
cmd 창을 띄우고 접근하려는 스키마 이름, 
스키마에 들어가기 위한 사용자 아이디/비밀번호, 
파일을 저장할 위치인 디렉토리
정보를 포함한 명령어를 실행한다. 
불러오기도 같은 원리이다. 

 

디렉토리를 만들고 디렉토리 권한을 사용자에게 부여한 다음
cmd창에서 만든 디렉토리 이름으로 사용자 정보와 스키마 정보를 넣어서 실행

'DATABASE(SQL)' 카테고리의 다른 글

Oracle Tablespace  (0) 2022.12.20
Oracle Synonym  (0) 2022.12.20
Oracle  (0) 2022.12.19
Oracle (+)의 의미  (0) 2022.12.07
이중화 (Replication)  (0) 2022.10.06
And