[Oracle] 오라클 데이터베이스 복제(DUMP import & export)

leeng·2024년 6월 20일
0

1. 테이블에 Dump 디렉토리 생성 및 권한 부여

아래 명령어로 오라클 디렉토리를 조회하면 디렉토리 목록이 뜨고 그 중에 덤프 디렉토리인 DATA_PUMP_DIR이 있다.

SELECT * FROM DBA_DIRECTORIES ; 

그냥 저걸 사용해도 되지만 테스트할 목적으로 새로운 디렉토리를 생성하고 거기에 덤프 파일을 생성해볼 것이다.
아래 명령어를 통해 디렉토리를 생성하고(디렉토리 경로는 각자 상황에 맞게) 덤프를 뜨려는 계정에 해당 디렉토리에 대한 권한을 부여한다.

CREATE DIRECTORY my_dump_test AS ''/u01/app/oracle/my_dump_test'';
GRANT READ, WRITE ON DIRECTORY my_dump_test TO testuser;

생성된 것을 확인한다.

2. 실제 Dump 디렉토리 생성

위에서 테이블에 데이터를 넣는다고 실제로 디렉토리가 생성되는 것은 아니다. 실제로 저 경로에 디렉토리를 생성해주자.

mkdir my_dump_test

아래는 /u01/app/oracle 경로에서 ls -l로 확인한 결과이다.

3. 덤프 파일 생성 (export)

아래 명령어로 덤프 파일을 생성한다.

expdp 계정명/비밀번호@SID dumpfile=덤프파일명.dmp directory=MY_DUMP_TEST(사용할 덤프 디렉토리) schemas=스키마명 logfile=로그파일명.log

  • command not found: expdp 에러 발생할 경우에는 PATH에 오라클 환경변수 설정을 해주면 된다
  • ORA-39006: internal error ORA-39065: unexpected master process exception in DISPATCH ORA-01001: invalid cursor 에러 발생 시에는 exec dbms_metadata_util.load_stylesheets; 명령어를 실행해주면 된다.

명령어가 정상적으로 실행되면 로그가 출력되기 시작한다.

덤프 작업이 끝나면 아래처럼 로그 파일과 덤프 파일이 생성된 것을 확인할 수 있다.

4. 덤프 파일 import

먼저 덤프 파일을 import할 계정이 없으면 생성해주고 디렉토리 접근 권한과 테이블 스페이스를 할당해 준다.

CREATE USER dump_test IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO dump_test;
GRANT READ, WRITE ON DIRECTORY my_dump_test TO dump_test;
ALTER USER dump_test DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;

아래 명령어로 덤프 파일을 생성한다.

impdp 계정명/비밀번호@SID명 dumpfile=덤프파일명.dmp directory=MY_DUMP_TEST(덤프 파일이 존재하는 디렉토리) remap_schema=덤프export한 스키마명:덤프import할 스키마명

예를 들면 아래와 같은 형태가 된다.

impdp dump_test/password@ORCL dumpfile=my_dump_test0620.dmp directory=MY_DUMP_TEST  remap_schema=dump_export_test:dump_test

export할 때와 마찬가지로 명령어가 정상적으로 실행되면 로그가 주르륵 출력된다.
그리고 import가 완료되면 아래와 같이 로그가 뜬다. (이 에러는 마이그레이션 관련 데이터들을 제대로 삭제 안해서 생긴 에러들...)

끝!

profile
기술블로그보다는 기록블로그

0개의 댓글