코드 저장소

공부에는 끝이 없다!

DB/Oracle

SQL Developer를 이용한 Oracle DB Export

VarcharC2K 2023. 11. 17. 16:27

이전에 마이그레이션 해두었던 DB를 다른 서버로 옮길 일이 생겼다.

어떻게 할까 하다가 그냥 DB를 통째로 Export해서 다른 서버로 옮기는게 제일 편할것 같아서 Export를 하는 방법을 찾게 되었다.

MSSQL은 여러번 작업을 해보았지만 Oracle에서는 처음 해보는터라 정리도 할겸 기록을 남긴다.


DB Export와 Import

일반적으로 DB를 주기적으로 백업하거나 다른 서버로 이관할 경우 백업 및 복구 명령어로 사용되는것이 Oracle Export, Import이다.

오라클에서는 2가지 레밸의 방법이 존재하는데, 오라클 DB 전체를 백업하고 복구하는 Full Level과 사용자 단위의 DB를 백업하고 복구하는 User Level이 있다.

 

1. 전체 백업(Full Level)

오라클의 DB 전체를 백업하는 방법이다. 모든 테이블 스페이스, 사용자, 객체, 데이터가 포함된다.

  • Export 사용법

  • -Import 사용법

  • 주의 사항

Export한 DB와 동일한 SID를 가지는 DB가 Import 하는 DB에 존재하여야 한다.

 

2. 사용자 단위 백업 (User Level)

사용자가 소유하고 있는 객체, 데이터만 백업하는 방법이다.

오라클에서는 사용자가 스키마의 개념과 같으므로 스키마 백업이라고 생각해도 되겠다.

  • Export 사용법

  • Import 사용법

  • 주의사항

Import하는 DB에 동일한 사용자 계정이 생성되어 있어야 하며, TableSpace가 있어야 한다.

SID는 달라도 상관없다.


SQL Developer를 이용한 Export / Import

그렇다면 본격적으로 SQL Developer를 이용하여 보자.

(위의 방법을 사용해도 되지만 DBMS에도 익숙해 질겸 겸사겸사 사용하여 본다)

1. 도구 > 데이터베이스 익스포트로 들어간다.

2.익스포트 마법사가 열리면 다음과 같은 화면이 나타난다.

접속에서 Export할 계정을 선택한다.

DDL 익스포트를 체크하면 DB 객체를 생성하는 스키립트를 만들어 주는데 이때 고려해야 할 몇가지 사항이 있다.

  1. 스키마 표시(S) : 스크립트에 현재 스키마가 포함되어 생성된다. 옮기려고 하는 데이터베이스에 스키마가 다르다면 체크를 해제해야 한다.(즉, Import 하는 DB에 해당 유저가 없다면 체크를 해제하여야 한다.
  2. 저장 영역(G) : 스크립트에 테이블 스페이스와 Storage 관련 구문들이 포함된다. Import 하려는 DB의 테이블 스페이스가 다르다면 생성 후 수정하거나 체크를 해제하고 생성하여 테이블 스페이스 부분만 수동으로 추가하여 사용해야 한다. 또한, Import와 Export하는 DB의 버전이 다르면 Storage 지정 구문이 달라 Import시 오류가 발생할 수 있다. 따라서 그런 경우 스크립트 생성 후 직접 수정하여 사용해야 한다.

3. DDL을 설정한 후 데이터 익스포트 형태를 정해야 한다.

여러가지 형식이 있지만 주로 사용하는 것은 다음과 같다.

  • Insert : 데이터를 Insert Sql문으로 만들어 준다. 다만, 테이블의 CLOB 타입의 필드는 제외된다.
  • csv : 데이터가 콤마로 분리된 텍스트 파일로 만들어 준다.
  • excel 2003+ : 데이터를 엑셀 .xlsx 파일로 변환한다.
  • execl 95-2003(xls) : 데이터를 .xls 파일로 변환한다.
  • loader : SQL Loader 용 컨트롤 파일과 데이터 파일로 만들어 준다.
  • Json : 데이터를 Json 형태로 변환한다.

Insert 스크립트로 만드는 것이 나중에 Import 할 때 간편하지만, CLOB 형태의 데이터가 포함되어 있다면 다른 방법을 선택해야 한다. 혹은, Insert 스크립트로 옮긴 후, CLOB 필드를 가지는 테이블 데이터만 따로 다른 형식으로 옮겨도 무방하다.

엑셀 형식으로 CLOB 데이터를 옮길 경우, 엑셀의 한 셀(cell)에 포함될 수 있는 최대 글자수가 32,767자이므로 이것을 넘으면 문제가 될 수 있다고 하니 유의하도록 한다.

  • 다음마다 커밋 포함 : 데이터가 많을 경우 한번에 커밋하는 것 보다 일정 행을 나누어 중간 중간 커밋을 하도록 하는것이 속도면에서 유리하다.

나는 csv 파일 형태로 떨어뜨려 보기로 하였다.

형태는 다음과 같다.

 

 

4. 다른 이름으로 저장(V)를 선택한다.

이 부분은 특별할 것은 없는데 주요 내용은 다음과 같다.

  • 단일 파일 : Export 데이터를 하나의 파일로 만들어 준다. 형식이 Insert일 경우에만 사용 가능하다.
  • 별도의 파일 : 테이블, 제약사항 등 모든 DB 객체를 별도의 파일로 만든다. 데이터는 테이블 별로 별도의 파일에 생성된다.
  • 유형 파일 : 테이블, 인덱스, 제약사항 등 유형별 파일로 생성 스크립트를 만들어 준다. 데이터는 테이블 별로 별도의 파일에 생성된다.

5. 인코딩 유형을 선택한다.

인코딩 형식은 Import할 DB의 캐릭터 셋에 맞추면 된다. 나는 UTF-8 형태를 선택하였다.

 

6. 파일(F) 항목에서 생성 될 파일 이름을 지정한다.

Insert 형식에서 단일 파일로 저장 할 경우 파일명을 지정하고, 별도의 파일이나 유형 파일을 사용할 경우에는 파일을 떨어뜨릴 폴더를 지정한다. 이후 다음을 눌러 2단계로 넘어간다.

 

7. Export할 유형을 설정한다.

Export를 원하는 객체 유형을 선택하고 다음으로 넘어가면 된다.

 

8. Export할 객체를 지정한다.

 

빈 화면으로 나오는 경우 상단의 조회(K) 버튼을 누르면 해당 DB 스키마에 있는 객체가 나타나게 된다.

여기서 나오는 객체는 앞서 선택한 유형에 해당하는 객체유형만 나타나며 여기서 Export를 원하는 객체를 선택하여 중간의 화살표 버튼으로 우측으로 옮기면 해당 객체만 Export 할 수 있다.

 

9. Export 할 데이터를 지정한다.

 

마찮가지로 상단의 조회(K)를 누르면 Export할 객체를 볼 수 있다.

중앙의 화살표로 Export할 객체를 올긴 후 필요시 열 항목에서 옮기고 싶은 열만 지정할 수도 있고 Where을 통하여 필터처리도 가능하다.

기본적으로는 전체 익스포트가 설정되어 있다.

 

10. 마지막으로 요약정보를 통해 Export 데이터를 확인한다.

특별한 이상이 없다면 완료를 눌러 Export를 완료한다.

 

11. 완료를 누르면 Export가 실행된다.

Export가 완료 된다면 SQL Developer의 워크시트에 결과물이 열린다.

Insert 형식으로 단일 파일로 했다면 스크립트 파일이 열리고, 별도의 파일이나 유형파일로 Export 했다면 유형 타일이 열리게 된다.

내 경우엔 파일로 떨어뜨리게 해두었으므로 아까 지정한 위치로 가보면 .sql 파일과 .csv 형태로 파일이 있는 것을 확인 할 수 있었다.

다음에는 Export 된 파일을 실제 운영 DB에 Import 하는 것을 테스트 해보고자 한다.


참고 자료

https://jbdad.tistory.com/21

 

 

 

 

 

 

'DB > Oracle' 카테고리의 다른 글

(ORACLE) Global Temporary Table과 계층 구조 만들기  (1) 2023.10.30
오라클 ORA-01002 오류와 해결방법  (0) 2023.10.27