2014-07-15 3 views
0

9 백만 개 이상의 레코드가있는 테이블에 새 열을 추가하려고합니다.많은 양의 데이터로 Oracle 데이터베이스에 기본값 추가

이 문제는 열이 기본값 인 'N'이어야합니다. 테이블을 업데이트 할 때 임시 데이터가 채워지는 데이터베이스에 문제가 발생합니다. 또한 엄청난 시간이 걸립니다.

필자는 임시 데이터가 채워지는 문제를 피하기 위해이 작업을 더 빠르고 더 빠르게 수행 할 수있는 사람이 있는지 궁금합니다.

데이터베이스는 Oracle10g입니다.

답변

0

11g으로 이동할 수 있고 열이 NOT NULL 인 경우 오라클은 열을 매우 빠르게 추가 할 수 있도록 각 행에 기본값을 저장할 필요가없는 최적화 기능을 제공합니다. 불행히도 오라클을 사용할 수없는 depricated 버전이 붙어있는 것 같습니다.

대부분의 경우 대기 이외의 옵션은 많지 않습니다. 가동 중지 시간 동안이 작업을 수행 중이라고 가정하면 새 열을 사용하여 새 테이블을 만들고 이전 테이블의 모든 데이터를 새 테이블로 직접 경로 삽입하고 테이블 이름을 바꿉니다 새 테이블에서 모든 제약 조건을 다시 가리켜 야합니다. 이것이 실제로 업데이트를 기다리는 것보다 더 효율적인지 여부는 하드웨어와 테이블에 따라 다르지만 INSERTUPDATE보다 더 효율적입니다. 다른 한편으로 마이그레이션 된 행을 많이 만들지 않는 새로운 단일 문자 열의 경우이 수준으로 이동하지 말고 UPDATE을 기다리는 것이 좋습니다. 잠재적으로 잘못되어 테스트하고 유효성을 검사해야합니다 (예 : 모든 제약 조건을 올바르게 업데이트했는지 확인).