expdp 나 impdp 툴을 이용해 pump 작업을 할 때 다음과 같은 오류가 발생할 경우

ORA-39002: invalid operation

ORA-39070: Unable to open the log file.

ORA-39087: directory name DATA_PUMP_DIR is invalid

 

오라클 디렉토리는 생성되었으나, 실제 물리적인 경로가 생성되지 않아서 그렇다.

즉, sqlplus 에서 

create directory oradir as 'd:\oradir'

라고  했다면, d:\oradir 디렉토리를 물리적으로 별도로 만들어줘야한다.

초기 설치시에 디렉토리 만드는걸 깜빡하곤 한다.  잘 해주자.

10g 부터는 pump 기능이 제공된다.
기존까지 사용하던 exp, imp 는 클라이언트에서 실행하지만 pump 는 서버에서만 실행가능하다.

백업하기(expdp)
순서는 다음과 같다.
  1. expdp 실행을 위한 ORACLE_HOME 환경변수 설정(필요하다면)
  2. sysdba 권한으로 펌프할 디렉토리 생성하기
  3. 사용자에게 디렉토리에 대한 접근/작성 권한 할당하기
  4. pump export 하기
다음은 예제다. 진한 글씨를 임의의 설정에 맞추면 된다.

1. ORACLE_HOME 환경변수 설정

ORACLE_HOME 환경변수가 맞추어져있다면 다음 과정은 생략 가능하다. 다음은 AIX 의 경우 샘플이다.
$>export ORACLE_HOME=/app/oracle/product/102/db


관리자 계정으로 접속
SQL> conn /as sysdba
또는
$>sqlplus sys/11234@ORCL as sysdba

Connected.


2. pump 를 위한 directory 생성

SQL> create  directory pump_dir as '/tmp/backup/oracle';
Directory created.


3. pump 를 위한 권한 설정

SQL> grant read,write on directory pump_dir to slothink;

Grant succeeded.

SQL> exit

$ mkdir /tmp/backup/oracle

4. 펌프 export

$ expdp slothink/1234@ORCL directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job 


만약 하위버젼이나 특정버젼으로 import 를 시킬 계획이라면 버젼을 명시해줘야한다.
다음은 11g 에서 10g 버젼으로 export 하는 샘플이다.
$ expdp slothink/1234@ORCL directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job version=10.2.0.4

만약, 특정한 테이블을 export 시킬 계획이라면 테이블을 입력한다.
$ expdp slothink/1234@ORCL tables=MY_LOVE_SLOTHINK directory=pump_dir dumpfile=exp.`date "+%Y-%m-%d"`.pump.dmp job_name=backup_job version=10.2.0.4


5. 복구하기(impdp)

복구 과정 또한 1,2,3 과정을 거치는 것은 동일하다. 동일 머신에서 복구한다면 바로 impdp 를 사용해도 되겠지만, 다른 머신이라면 해당 머신에 맞는 디렉토리 생성이 필요하다.

$ impdp slothink/1234 directory=pump_dir dumpfile=exp.2009-11-04.dmp job_name=backup_job

+ Recent posts