2014-04-27 2 views
0

이것이 stackoverflow의 첫 번째 게시물이며, 나는 그 웹 사이트를 정말 좋아한다고 말했습니다!오라클 DB에서 Oracle DB로 거대한 데이터를 내보내는 가장 좋은 방법

프로젝트의 경우 한 DB에서 다른 DB로 거대한 Oracle 테이블을 다시 가져와야합니다 (약 1 억 라인 및 30 행).

제 생각은 테이블을 플랫 파일로 내 보낸 다음 스키마가 이미 존재한다고 간주하여 다른 빈 테이블로 다시 가져 오는 것입니다.

나는 PL/SQL Developer 및/또는 SQL * Plus를 사용하여 작업을 수행하고 있습니다.

좋은 일을하는 것처럼 보이는 SQL * Loader를 테스트했지만, 실제로 생각하면 느립니다. 약 30 초 동안 1 백만 줄/30 줄의 CSV 파일을 가져올 수 있습니다.

어느 솔루션을 가져올 수 있습니까? SQL * Loader가 최고의 도구입니까? 더 나은 도구가 이미 있습니까? CSV는 크기와 처리 시간에 대해 더 나은 형식입니까?

미리 감사드립니다.

+0

한번 또는 정기적으로해야합니까? – zmbq

+0

좋은 도구를 찾은 후에는 필요에 따라 작업을 수행 할 수있는 Java 프로그램을 만들어야합니다. 따라서 실제로는 일상적이지 않습니다 (일년에 4 번 같은 ...) – Cyyrils

+1

왜 직접 작성하고 있습니까? 도구 대신 데이터 펌프를 사용합니까? –

답변

4

사용 오라클 데이터 펌프는 일명 expdp가와 Overview of Oracle Data Pump 정말 자신에이 프로그램 할 필요가 없습니다 Examples of Using Data Pump ExportExamples of Using Data Pump Import

를 참조 impdp, 당신은/impdp를 expdp를 능가 할 수있는 방법이 없습니다. network_link를 사용하는 impdp 옵션도 있음을 잊지 마십시오. 이 경우 dmp 파일을 건너 뛰고 대상 데이터베이스로 직접 가져옵니다. 이 작업은 명령 줄에서 impdp를 사용하여 수행 할 수 있지만 pl/sql을 사용하여 dbms_datapump를 사용하여 수행 할 수도 있습니다. 문서는 PL/SQL Packages and Types Reference을 참조하십시오.

+0

좋은 해결책 인 것처럼 보이지만 제 DBA는 디렉토리를 만들 권리가 있습니다. – Cyyrils

+0

그 경우에는 그 디렉토리를 만들어달라고 요청하거나, 그 절차를 해달라고 부탁하십시오 너를 위해서. 그렇게하면 dba가 제어됩니다. –

+0

우리는 실제로 개발 서버에 있습니다. 우리가 지금 당장 가지고 있더라도 우리는 제품을 생산하지 않을 것입니다 ... – Cyyrils

2

다음 옵션 중 하나를 사용할 수 있습니다 (이미 시도 할 수 있음)

  1. SQL 로더.
  2. 전통적인 데이터 내보내기 및 가져 오기 (exp/imp 명령).
  3. Oracle 데이터 펌프 (expdp/impdp).

또한 정기적으로 수행해야하는 경우 oracle scheduler 또는 shell 스크립트를 사용하여이를 예약 할 수 있습니다.

관련 문제