동일한 데이터베이스의 두 테이블에서 마이그레이션을 수행하는 방법을 찾으려고합니다. 이 마이그레이션은 가동 중지 시간을 최소화하기 위해 최대한 빨리 이루어져야합니다. 이드로> (ID, 이름, 주소)동일한 데이터베이스에서 빠른 데이터 마이그레이션
그래서 사람 -
person_table : 예에 넣어
내가 사람 테이블과 같이이 있다고 할 수 있습니다 , 이름과 주소. 내 시스템에는 수백만 개의 개인 레지스트리가 포함될 것이며 개인 테이블을 분할해야한다고 결정되었습니다. > (ID, 이름, 주소, partition_time)
지금이 테이블 partition_time라는 여분의 열을 포함 -
partitioned_person_table 이렇게하려면, 나는 새 테이블을 만들었습니다. 이 테이블은 범위 파티션 (매시간 하나의 파티션)이기 때문에이 테이블의 파티션 키입니다.
마지막으로, 나는 최고의 성능과 partitioned_person_table에 person_table에서 모든 정보를 이동하는 방법을 찾을 필요가있다. 내가 시도 할 수
첫 번째 것은 단순히 같은 문 작성하는 것입니다 : person_table FROM
partitioned_person_table (ID, 이름, 주소, partition_time) SELECT ID, 이름, 주소 INTO INSERT, CURRENT_TIMESTAMP를;
문제는 내 두 번째 방법을 사용하는 것이 었습니다
- (또한 임시 테이블이 모든 정보를 처리하지 못할 수도 있습니다)는 레지스트리의 수백만에 관해서이 매우 느려질 수 있다는 것입니다 교환 구역 방법. 유감스럽게도 테이블에 다른 열 번호가 포함되어 있기 때문에이 작업을 수행 할 수 없습니다.
최상의 성능 (작동 중지 시간 감소)으로 성능을 향상시킬 수있는 다른 방법이 있습니까?
감사합니다.
[online table redefinition] (https://docs.oracle.com/cd/E11882_01/server.112/e25494/tables.htm#ADMIN11667)을 고려 했습니까? –
@AlexPoole 답장을 보내 주셔서 감사합니다. 아직 Online Table Redefinition에 대해 들어 보지 못했지만 이것을 사용하여 테이블에 여분의 열을 추가하여 파티션 교환을 수행 할 수 있습니까? –
지금은 얼마나 큰가요? 당신은 오늘날 얼마나 큰지를 말하지 않는 "수백만 명을 포함 할 것"이라고 말합니다. – tbone