본문 바로가기

Oracle

오라클 DB dump 백업 방법(expdp, impdp / oracle 11g)

728x90

<작업 환경>

OS : 로컬 Windows 11

오라클 버전 :  Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

수행 목적 : oracle 11g ex 버전에서 일반 oracle 11g로 데이터베이스를 옮기기 위한 dump 백업 작업


 

 

1. 오라클 DB export(expdp)

 

1.1. 기존 오라클 디렉토리 조회

SELECT * FROM dba_directories

 

 

 

기존 덤프 디렉토리(DATA_PUMP_DIR)에 덤프 파일을 만들어도 되지만 dump 폴더를 새로 만들어 구성할 수 있다.

 

 

 

 

1.2. 오라클 덤프 디렉토리 오브젝트 생성 후 권한 부여

 

mkdir 등을 이용하여 물리적 디렉토리가 사전에 만들어져 있어야 하고 CREATE DIRECTORY 구문을 이용해서 데릭토리 오브젝트를 생성한다.

-- 데이터백업용 유저 생성 후 권한 부여
CREATE USER dmp_mng IDENTIFIED BY oracle;
GRANT CONNECT, resource TO dmp_mng;

-- 백업 디렉토리 오브젝트 생성
CREATE DIRECTORY DATA_DUMP AS 'C:\app\새로만든오라클백업폴더'
GRANT READ, WRITE ON DIRECTORY DATA_DUMP TO dmp_mng;
GRANT CREATE ANY DIRECTORY TO dmp_mng;

 

 

 

 

신규로 생성된 DATA_DUMP 디렉토리

 

 

 

1.3. DB 풀백업(expdp)

> expdp dmp_mng/oracle DIRECTORY=DATA_DUMP DUMPFILE=TEST240502.dmp LOGFILE=TEST240502.log full=y

 

실행 했는데 아래와 같은 권한 에러가 떴다.

 

 

⚠️발생 가능 오류1)

ORA-31631: privileges are required
ORA-39161: Full database jobs require privileges

 

해결방법 => 새로 만든 dmp_mng 계정에 export 권한이 없으므로 DBA 권한을 부여한다.

GRANT DBA TO dmp_mng;

 

 

 

⚠️ 발생 가능 오류2)

ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation

 

해결방법 => 백업하는 물리적 디렉토리가 생성되어 있는지 확인하고 모든 권한을 부여한다.

 


 

디렉토리가 만들어지고, DBA 계정으로 DB 풀백업 진행

 

 

DBA_DATAPUMP_JOBS 테이블에서 백업 진행 상황을 확인할 수 있다.

 

백업 진행 중

 

 

백업이 완료되면 지정한 디렉토리 아래에 dump, log 파일이 생성된다.

 

 

1.4. DB schema(스키마) 백업

> expdp dmp_mng/oracle schema=user1 DIRECTORY=DATA_DUMP DUMPFILE=TEST240502.dmp LOGFILE=TEST240502.log

 

 

스키마를 지정해서 따로 백업할 수 있다.

 

 


2. 오라클 DB import(impdp)

 

2.1. DB 임포트(impdp)

 

나의 경우는 11gXE 버전에서 oracle 11g로 데이터베이스를 옮길 거라 재설치한 11g에 똑같은 data_dump 물리 디렉토리를 만들고 디렉토리 오브젝트를 생성해 주었다. 계정 만들고 권한주기도 똑같이 진행

=> (수정) 권한이 없다고 떠서 SYSTEM 유저 계정으로 진행함

 

 

SYSTEM 계정으로 진행 > 익스포트한 덤프 파일을 새DB에 임포트 한다. 

> impdp system/oracle DIRECTORY=DATA_DUMP DUMPFILE=TEST240502.dmp LOGFILE=TEST240502.log full=y