매번 설치형 DB에서 import/export 만 사용하다가 AWS RDS 로 이관할 일이 생겨 dbms_datapump 유틸리티를 사용하게 되었다. RDS로 이관은 Amazon DMS 로도 수행할 수 있겠지만 비용과 리소스가 적게 들고(최대 장점) 더 편하고 가벼워(주관적) 한 번 사용한 이후로 손이 잘 간다.
dbms_datapump 유틸리티를 처음 구성하다 보면 막히는 부분이 많이 생긴다. 패키지이다보니 ORA-39001, ORA-06512 에러메세지만 발생하고 에러 메세지는 그다지 많은 정보를 담고있지 않아서 완료하는데 많이 헤매었다.
ORA-39001:부적합한 인수 값
ORA-06512: "SYS.DBMS_SYS_ERROR", 79행
ORA-06512: "SYS.DBMS_DATAPUMP", 3507행
ORA-06512: "SYS.DBMS_DATAPUMP", 3756행
ORA-06512: 9행
dbms_datapump 유틸리티 사용 시 헤메기 쉬운 부분을 정리해본다!
1. Tablespace 확인
대상 객체가 사용하던 Tablespace가 타겟에 존재하는지 확인한다. 존재하지 않는다면 새로 생성하거나 remap 옵션을 통해 매핑시켜준다.
특히 temp tablespace가 다른 이름으로 생성되어있는 경우도 있으니 확인하자.
-- 대상DB USER1의 객체가 사용중인 Tablespace 확인
SELECT TABLESPACE_NAME
FROM DBA_SEGMENTS
WHERE OWNER = 'USER1'
GROUP BY TABLESPACE_NAME;
-- 대상DB USER1의 TEMP TABLESPACE 확인
SELECT TEMPORARY_TABLESPACE
FROM DBA_USERS
WHERE USERNAME = 'USER1'
-- 타겟DB 테이블스페이스 현황 조회
SELECT *
FROM DBA_TABLESPACES;
2. Filename 확인
dmp파일이나 log 파일이 기존 파일과 이름이 겹치면 에러 발생한다. 또는 파일 이름이 틀렸을 때도 동일하게 에러가 발생한다. 어디서 에러가 발생하는지 모른 채 프로시저를 반복해서 수행하다보면 놓칠 수 있는 부분이니 확인.
3. job 진행상황 확인
프로시서가 성공적으로 수행이 되어 'Statement Processed.' 메세지를 보고 Datapump 수행이 완료된 주 알았는데 아니었다. job 진행상황을 반드시 확인해야 한다. Datapump job 진행상황은 DBA_DATAPUMP_JOBS 뷰에서 확인할 수 있다. STATE가 'COMPLETING' 되면 완료이다.
--Datapump 진행상황 확인
SELECT * FROM DBA_DATAPUMP_JOBS;
4. Log File 확인
가장 확실한 방법이다. 설치형에서는 서버에서 쉽게 확인할 수 있다.
-- directories 확인
SELECT * FROM DBA_DIRECTORIES;
Amazon RDS oracle에서는 전용 도구인 rdsadmin 패키지로 아래와 같이 확인할 수 있다. 파일 내용을 테이블 형식으로 출력해준다.
-- RDS에서 파일 내용 확인
SELECT * FROM TABLE(
RDSADMIN.RDS_FILE_UTIL.READ_TEXT_FILE(
p_directory => 'directories_name',
p_filename => 'filename.log'
));
dbms_datapump 를 처음 시작할 때 이정도만 알고 시작하여도 성공적으로 이관을 완료하기까지 시간을 많이 단축할 수 있을 것 같다. 화이팅!
도움된 링크
1. AWS docs
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.DataPump.html
2. Oracle Docs
https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html#GUID-AEA7ED80-DB4A-4A70-B199-592287206348
3. DB Cafe
http://dbcafe.co.kr/wiki/index.php/Oracle_%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8E%8C%ED%94%84_API%ED%99%9C%EC%9A%A9
'ORACLE > Admin' 카테고리의 다른 글
ORACLE Temp file 관리 명령어 정리 (0) | 2023.09.20 |
---|---|
ORALCE Redo Log 관리 명령어 정리 (0) | 2023.09.20 |
no archive mode 변경 (0) | 2023.09.18 |
Oracle Dataguard 재기동 절차 및 연동 확인 (0) | 2023.08.22 |
Oracle 실제 수행된 쿼리의 실행 계획 확인(dbms_xplan.display_cursor) (0) | 2023.07.31 |