문제

나는 다음 명령을 수행했습니다.

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를 사용하여 스키마를 동기화하는 유일한 합리적인 방법은 가져 오기 전에 스키마를 삭제하는 것입니다.

어떤 이유로 스키마를 삭제하지 않으려면 테이블의 데이터를 많이 대체 할 필요가없는 경우 많은 추가 작업이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top