Oracle 10g 부터는 데이터의 백업과 복원을 위해서 기존에 사용되는 exp/imp툴을 대신할 Oracle Data Pump(expdp/impdp) 유틸리티가 제공되어 집니다. exp/imp 툴이 없어진것은 아닙니다. Oracle 11g 부터는 기존의 Original exp/imp툴에 대한 일반적인 사용지원이 되지 않는다고 합니다.
Oracle Data Pump 유틸리티는 더욱 유연하고, 빠른 속도의 기존의 exp/imp를 대체할 유틸리티 라고 합니다. 기존의 exp/imp와의 차이점을 간단히 알아보겠습니다.
1. exp/imp는 덤프 파일을 유틸리티를 실행하는 컴퓨터에 생성합니다. expdp/impdp 는 덤프 파일이 데이터베이스 서버의 지정된 폴더에 생성됩니다. 즉, 덤프 파일을 받고 올리기 위해서 서버에 로그인해야만 합니다.
2. exp/imp는 덤프파일이 생성된 서버의 버전이 다를 경우 호환이 되지 않습니다. 메이저 버전 뿐만 아니라, 마이너 버전 사이에도 호환이 거의 안되는것 같습니다. expdp/impdp 는 실행시 버전을 지정하여 그에 맞는 덤프 파일을 생성할 수 있습니다.
Oracle Data Pump 유틸리티의 사용법을 알아보겠습니다.
Oracle Data Pump 유틸리티를 사용하기 위해서는 덤프 파일이 생성될 폴더를 지정하고, 그 폴더에 읽기, 쓰기 권한이 있어야 합니다.(데이터 import 를 위해 읽기, export를 위해 쓰기 권한이 필요합니다.)
이 예제에서는 Oracle Express Editon 11g r2를 사용해서 테스트 했습니다.
※ 디렉토리 생성 및 권한 주기
1. SYSTEM으로 로그인합니다.(일반 계정으로는 디렉토리를 추가할 권한이 없으므로 SYSTEM 계정으로 추가하고, 권한을 줍니다.)
2. 덤프 파일이 생성될 디렉토리를 생성합니다. 여기서는 'E:\export' 를 만들었습니다.(이 폴더는 데이터베이스 서버에 만드는 것입니다.)
3. 'E:\export' 디렉토리를 TEST_DUMP 다른 이름으로 데이터베이스에 등록합니다.
CREATE OR REPLACE DIRECTORY TEST_DUMP AS 'E:\export';
4. 일반유저인 xeuser에게 이 디렉토리에 읽기, 쓰기 권한을 줍니다.
GRANT READ, WRITE ON DIRECTORY TEST_DUMP TO xeuser;
5. xeuser 계정으로 로그인하여 권한을 확인합니다.
- 디렉토리는 all_directories 뷰에서 확인할 수 있습니다.
SELECT * FROM all_directories;
결과)
OWNER DIRECTORY_NAME DIRECTORY_PATH
SYS TEST_DUMP E:\export
- 권한의 확인은 다음과 같이 할 수 있습니다.
SELECT * FROM all_tab_privs WHERE TABLE_NAME IN (
SELECT DIRECTORY_NAME FROM all_directories
);
결과)
GRANTOR GRANTEE TABLE_SCHEMA TABLE_NAME PRIVILEGE GRANTABLE HIERARCHY
SYSTEM XEUSER SYS TEST_DUMP READ NO NO
SYSTEM XEUSER SYS TEST_DUMP WRITE NO NO
- Oracle 11g r2 이상이라면 다음 쿼리도 사용할 수 있습니다.
SELECT * FROM datapump_dir_objs;
결과)
NAME PATH READ WRITE
TEST_DUMP E:\export TRUE TRUE
※ 데이터 export/import 하기
Oracle Data Pump는 명령행 유틸리티 expdp/impdp를 사용해서 작업합니다.
1. 테이블 export/import(특정 테이블을 export/import 합니다.)
E:\>expdp xeuser/xeuser@xe tables=EMP,DEPT directory=TEST_DUMP dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log
E:\>impdp xeuser/xeuser@xe tables=EMP,DEPT directory=TEST_DUMP dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log
* xeuser/xeuser@xe - 로그인아이디/비밀번호@SID 입니다.
* tables=EMP, DEPT - 테이블을 콤마(,)로 분리해서 나열합니다.
* directory=TEST_DUMP - 덤프 파일이 생성될 디렉토리입니다. 위해서 만들것 입니다.
* dumpfile=EMP_DEPT.dmp - 생성될 덤프 파일의 이름 입니다.
* logfile=expdpEMP_DEPT.log - 로그 파일의 이름입니다. 덤프파일과 같은 위치에 만들어 집니다.
2. 스키마(Schema) export/import 하기
E:\>expdp xeuser/xeuser@xe schemas=XEUSER directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=expdpXEUSER.log
E:\>impdp xeuser/xeuser@xe schemas=XEUSER directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=impdpXEUSER.log
* schemas=XEUSER : 주어진 사용자(schema)가 가진 전체 객체를 export/import합니다.(이전 exp의 OWNER와 같은 기능의 옵션 입니다.)
3. 데이터베이스 전체 export/import 하기
E:\>expdp system/password@xe full=Y directory=TEST_DUMP dumpfile=XE.dmp logfile=expdpXE.log
E:\>impdp system/password@xe full=Y directory=TEST_DUMP dumpfile=XE.dmp logfile=impdpXE.log
* 전체 작업은 권한이 있는 system 계정으로 작업합니다.
* full=Y - 전체 데이터베이스를 대상으로 합니다.
4. 데이터베이스 Link를 export/import 하기
데이터베이스 Link를 통해서 export/import 하기 위해서는 로컬과 리모트 사용자 모두에게 EXP_FULL_DATABASE / IMP_FULL_DATABASE 롤이 부여되어 있어야 합니다.
다음 예는 로컬계정 은 xeuser이고, 리모트 서버가 REMOTE_SCOTT라는 이름으로 링크 되어 있다고 가정합니다. 리모트 계정은 scott 입니다.
E:\>expdp xeuser/xeuser@xe tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DUMP dumpfile=EMP.dmp logfile=expdpEMP.log
E:\>impdp xeuser/xeuser@xe tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DUMP logfile=impdpSCOTT.log remap_schema=SCOTT:XEUSER
* remap_schema=SCOTT:XEUSER - SCOTT계정의 객체들을 XEUSER계정으로 로드 합니다.
5. 버전을 지정하여 export 합니다.(버전은 9.2 이상만 지정할 수 있습니다.)
E:\>expdp xeuser/xeuser@xe schemas=XEUSER version=10.2 directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=expdpXEUSER.log
이것으로 Oracle Data Pump 사용법에 대해 알아보았습니다.
자세한 옵션들에 대해서는 다음 URL을 참고 하세요.
출처 : https://oracle-base.com/articles/10g/oracle-data-pump-10g
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
Windows 10에 MariaDB 설치하기 (14) | 2018.04.19 |
---|---|
sqldeveloper를 사용하여 export/import 하기 (1) | 2018.04.17 |
Oracle XE 컴퓨터 이름(Hostname) 변경후 접속 안될 때 (2) | 2018.04.12 |
오라클 테이블 스페이스 생성하기 및 다른 사용자 권한 부여 (0) | 2018.04.12 |
오라클 ALTER 명령을 사용해서 테이블 변경하기 (0) | 2018.04.09 |