expdp/impdp 명령이 일일 스키마 동기화에 적합합니까?
-
29-09-2020 - |
문제
나는 다음 명령을 수행했습니다.
expdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=expdpSCH_%date%.log
오류 없이 훌륭하게 실행됩니다.하지만 명령을 사용할 때:
impdp system/password@localdb ^
schemas=SCH directory=dumps_dir dumpfile=SCH_%date%.dmp logfile=impdpSCH_%date%.log
테이블, 시퀀스 및 기타 항목이 이미 존재한다는 오류가 많이 발생했습니다.그래서 질문이 있습니다. 이러한 접근 방식을 사용할 수 있습니까? 아니면 잘못된 것이므로 다른 방법을 사용해야 합니까?
해결책
자세한 내용이나 유형은 설명서를 확인하세요. impdp help=y
.매개변수가 있습니다(TABLE_EXISTS_ACTION)은 기존 객체를 덮어쓸지 또는 추가할지를 정의합니다.
TABLE_EXISTS_ACTION
가져온 개체가 이미 있는 경우 수행할 작업입니다.
유효한 키워드는 다음과 같습니다.추가, 교체, [건너뛰기] 및 자르기.
다른 팁
아니오, 가능한 방법이 아닙니다 :
- 대부분의 테이블이 아닌 객체는 스키마에 이미 존재합니다.이미 그러한 오류 메시지가 나타납니다.가져 오기는 덮어 쓰지 않습니다.
- 테이블이 이미 존재하는 경우 내보내기가 작동하는 방식을 구성 할 수 있지만 다른 테이블에서 참조하는 테이블이있는 경우 잘 작동하고 대체 할 테이블이 작동하지 않습니다.
- 테이블 색인에 대한 외래 키 참조가없는 경우에도 가져 오기가 크게 를 늦추게됩니다.
- 트리거, 파티션, 다른 테이블에 대한 참조, 다른 테이블 및 어쩌면 다른 테이블에 관한 많은 문제가 발생할 수 있습니다.
expdp / impdp를 사용하여 스키마를 동기화하는 유일한 합리적인 방법은 가져 오기 전에 스키마를 삭제하는 것입니다.
어떤 이유로 스키마를 삭제하지 않으려면 테이블의 데이터를 많이 대체 할 필요가없는 경우 많은 추가 작업이 필요합니다.
제휴하지 않습니다 dba.stackexchange