Oracle Database 실습 5
Oracle Database 실습 5입니다. Data Pump directory object, expdp export, impdp remap_schema 복구, row count 검증과 백업 보관 기준을 정리했습니다.
Oracle Database 실습 5: Data Pump Export/Import 백업 검증
Oracle Database 실습 계정의 데이터를 Data Pump로 export하고, 다른 schema로 import해서 백업 파일이 실제 복구 가능한지 확인하는 절차다. 단순히 dump 파일을 생성하는 것만으로는 백업이 끝났다고 볼 수 없다. dump 파일, log 파일, directory object, 권한, import 검증까지 확인해야 한다.
Oracle Data Pump는 expdp와 impdp 명령을 사용한다. 파일은 DB 서버의 OS 디렉터리에 생성되며, Oracle 내부에서는 그 경로를 DIRECTORY object로 참조한다.
전제 조건
- Oracle XE가 설치되어 있고
XEPDB1이 open 상태다. APPUSER계정과 실습 테이블이 존재한다.- DB 서버의 OS에서
oracle사용자가 dump 디렉터리에 쓸 수 있다. - 실제 계정 비밀번호는 문서나 shell history에 남기지 않는다.
1. OS dump 디렉터리 생성
sudo mkdir -p /u02/dpump
sudo chown oracle:oinstall /u02/dpump
sudo chmod 750 /u02/dpump
ls -ld /u02/dpump2. Oracle DIRECTORY object 생성
SYSDBA로 접속한 뒤 XEPDB1 컨테이너에서 directory object를 만든다.
su - oracle
source /etc/profile.d/oracle-xe.sh
sqlplus / as sysdbaalter session set container = XEPDB1;
create or replace directory DUMP_DIR as '/u02/dpump';
grant read, write on directory DUMP_DIR to appuser;
select directory_name, directory_path
from dba_directories
where directory_name = 'DUMP_DIR';3. export 전 데이터 확인
sqlplus appuser@localhost:1521/XEPDB1select count(*) as server_count
from server_inventory;
select object_name, object_type
from user_objects
order by object_type, object_name;
exit;4. expdp 실행
아래 명령은 APPUSER schema 전체를 dump 파일로 내보낸다. 명령 실행 후 비밀번호는 프롬프트에서 입력한다.
source /etc/profile.d/oracle-xe.sh
STAMP="$(date +%Y%m%d_%H%M%S)"
expdp appuser@localhost:1521/XEPDB1 \
schemas=APPUSER \
directory=DUMP_DIR \
dumpfile=appuser_${STAMP}.dmp \
logfile=appuser_${STAMP}_export.logexport 결과 파일을 확인한다.
ls -lh /u02/dpump
tail -n 80 /u02/dpump/appuser_*_export.log5. 복구 검증용 사용자 생성
기존 schema에 바로 import하면 검증과 기존 데이터 보호가 섞인다. 실습에서는 APPUSER_RESTORE schema를 따로 만들고 REMAP_SCHEMA로 복구한다.
sqlplus / as sysdbaalter session set container = XEPDB1;
drop user appuser_restore cascade;
create user appuser_restore identified by "Change_This_In_Your_Lab";
alter user appuser_restore quota 100M on users;
grant create session,
create table,
create sequence,
create view
to appuser_restore;
grant read, write on directory DUMP_DIR to appuser_restore;drop user는 기존 검증 계정을 제거하는 명령이므로 운영 환경에서는 실행 전 반드시 영향 범위를 확인해야 한다. 위 실습은 랩 전용 schema를 대상으로 한다.
6. impdp로 다른 schema에 복구
DUMP_FILE="$(ls -1t /u02/dpump/appuser_*.dmp | head -1 | xargs -n1 basename)"
STAMP="$(date +%Y%m%d_%H%M%S)"
impdp system@localhost:1521/XEPDB1 \
schemas=APPUSER \
remap_schema=APPUSER:APPUSER_RESTORE \
directory=DUMP_DIR \
dumpfile="${DUMP_FILE}" \
logfile=appuser_${STAMP}_import.logimport log를 확인한다.
tail -n 120 /u02/dpump/appuser_*_import.log7. 복구 데이터 검증
sqlplus appuser_restore@localhost:1521/XEPDB1select count(*) as restored_server_count
from server_inventory;
select server_id, server_name, server_role, ip_address
from server_inventory
order by server_id;
select object_name, object_type, status
from user_objects
order by object_type, object_name;8. 백업 파일 보관 기준
Data Pump dump는 DB 내부 백업 전략의 일부로 볼 수 있지만, archive log 기반 point-in-time recovery를 대체하지 않는다. 학습 환경에서는 schema export/import 복구 흐름을 익히는 데 집중하고, 운영 환경에서는 RMAN, archive log, storage snapshot, 복구 리허설을 별도로 설계해야 한다.
- dump 파일과 log 파일을 함께 보관한다.
- dump 파일을 DB 서버 내부에만 두지 말고 별도 백업 저장소로 복사한다.
- 정기적으로 import 테스트를 수행한다.
- 개인정보나 중요 데이터가 포함되면 dump 파일 암호화와 접근 통제가 필요하다.
- 성공 로그만 보지 말고 row count와 객체 상태를 비교한다.
정리
Data Pump 실습의 목표는 expdp 명령을 한 번 실행하는 것이 아니라, export 파일이 실제로 import 가능한지 검증하는 것이다. DUMP_DIR directory object를 만들고, 기존 schema를 export하고, 별도 restore schema로 import한 뒤 row count와 객체 상태를 비교해야 백업 절차로 의미가 있다.