1. 실습 목표
- 소스DB의 HR유저 데이터베이스 전체를 타겟DB의 HR유저로 마이그레이션 해주세요.
2. Oracle DB가 설치된 두대의 VM준비
- 두대의 VM에 호스트 전용 어댑터 붙여서 서로 통신이 가능하도록 해줌
1. Source DB
- HR 유저가 있는 DB
- IP: 192.168.56.101
2. Target DB
- 인스턴스 생성만 되어있는 DB
- IP: 192.168.56.102
3. Source DB에서 추출
1. Dumpfile을 내려받을 Directory 생성
<Source> $ mkdir -p /home/oracle/pump_dir
<Source> $ sqlplus "/as sysdba"
<Source> SQL> create or replace directory pump_dir as '/home/oracle/pump_dir';
<Source> SQL> grant read, write on directory pump_dir to system;
<Source> SQL> select * from dba_directories; <=== 생성된 디렉토리 확인
- pump_dir 디렉토리가 잘 연결된 것을 확인
2. EXPDP 수행, 모니터링
1. expdp 수행
$ expdp \'/as sysdba \' directory=pump_dir dumpfile=exp_hr.dmp logfile=exp_hr.log parallel=2 full=y job_name=exp_hr
expdp 옵션
- directory : 디렉토리 오브젝트를 지정 하여 덤프 파일의 위치로 로그파일의 위치 지정가능
- dumpfile : 파일시스템에 저장될 덤프 파일의 이름을 지정 해주는 파라미터로 파일이 여러개로 나누어 질때 %U로 파일 이름을 고유하게 구분해 줄수 있다.
- logfile : 작업내용을 저장 할 로그 파일명을 지정.
- parallel : 작업 수행시 프로세스를 몇 개를 사용 할 것인가를 지정 하는 파라미터입니다. 주의할 점은 지정된 개수만큼의 데이터 파일을 만들어 주어야 하는데 앞에서 배운 %U 옵션을 주면 자동으로 생성.
- job_name : 작업 수행시 job에 이름을 설정 할 수 있음. 설정을 하지 않으면 오라클이 자동으로 설정.(잘못된 작업으로 Job_name 충돌시 exp_full1 와 같이 수정해서 수행.)
2. 다른 터미널에서 모니터링 수행
$ expdp \'/as sysdba\' attach=exp_hr
attach 모드 옵션
- exit : job 의 작업에서 빠져나감
- kill_job : 해당 작업을 삭제.
- parallel : 현재 작업 중인 프로세스의 개수를 조절.
- start_job :중단된 작업을 다시 시작.
- status : 현재 작업을 모니터링하는 시간 조절.
- stop_job : 현재 작업을 중단.
3. Dumpfile TargetDB로 전송
scp /home/oracle/pump_dir/exp_hr.dmp oracle@192.168.56.102:/home/oracle/
4. Target DB 에서 적용
1. 적용할 덤프파일이 존재할 디렉토리 생성
<Target> $ mkdir -p /home/oracle/pump_dir
<Target> $ sqlplus "/as sysdba"
<Target> SQL> create or replace directory pump_dir as '/home/oracle/pump_dir';
<Target> SQL> grant read, write on directory pump_dir to system;
<Target> SQL> select * from dba_directories; <=== 생성된 디렉토리 확인
2. Taget DB에 테이블스페이스를 생성하고 HR유저 생성하고 권한 설정
1. 테이블스페이스 생성
create tablespace test datafile '/data01/ORCL/test01.dbf' size 300m reuse autoextend on next 1024k maxsize unlimited;
테이블스페이스 생성 확인
select * from dba_data_files;
2. HR유저 생성