다른 원격 데이터베이스의 데이터를 자체 데이터베이스에로드해야합니다. WITH 문을 사용하여 하나의 "복잡한"쿼리를 작성합니다. 약 1 천 8 백만 행의 데이터입니다.Oracle : 테이블에 큰 데이터 세트 삽입
삽입을 수행하는 가장 효율적인 방법은 무엇입니까?
또는 어떤 다른 방법이 INTO INSERT를 사용하여 하나
다른 원격 데이터베이스의 데이터를 자체 데이터베이스에로드해야합니다. WITH 문을 사용하여 하나의 "복잡한"쿼리를 작성합니다. 약 1 천 8 백만 행의 데이터입니다.Oracle : 테이블에 큰 데이터 세트 삽입
삽입을 수행하는 가장 효율적인 방법은 무엇입니까?
또는 어떤 다른 방법이 INTO INSERT를 사용하여 하나
가장 빠른 방법은 단일 SQL 문을 사용하는 것입니다. 다음으로 가장 효율적인 방법은 BULK COLLECT
작업을 수행하는 커서를 사용하여 SQL과 PL/SQL 엔진 간의 컨텍스트 이동을 최소화하는 것입니다. 가장 효율적인 방법은 커서를 사용하여 행 단위로 데이터를 처리하는 것입니다.
감사합니다. BULK COLLECT가 정말 도움이됩니다.^_^ – Ianthe
1800 만 개의 행은 단일 삽입 시나리오에 상당히 많은 롤백이 필요합니다. 루프에 대한 커서는 훨씬 느리지 만 모든 x 행을 커밋 할 수 있습니다.
개인적으로 오래된 학교에 가서 파일을 덤프하고 sqlldr 또는 데이터 펌프를 통해로드합니다.
저스틴 (Justin)이 쓴 것처럼 가장 효율적인 방법은 단일 SQL 문 (insert into ... select ...)을 사용하는 것입니다. 또한 당신이 direct-path insert
을 이용할 수 있습니다 당신은 Data Synchronisation Studio를 사용하여 한 번에 1 백만을 위해 SELECT 문을 변경할 수
몇 가지 질문 (I는 한 번에 18m 아마 컴퓨터에 과부하 것이라고 생각). 이것은 일회성 운동인가 정기적인가? 로드를 실행하기위한 시간 창은 무엇입니까? 원본 및 대상 데이터베이스의 대기 시간은 얼마나됩니까? 데이터베이스 간의 연결은 얼마나 신뢰할 수 있습니까? 원본 데이터베이스의 데이터가 정적 (아카이브) 또는 동적 (운영 체제)입니까? 프로세스가 중간에 실패하면 (예를 들어, 네트워크 연결이 끊어지는 경우) 대상 데이터베이스로 무엇을 보내고 싶습니까? – APC