문제

Oracle 테이블에서 내보낸 큰 (Multi-GB) 데이터 파일이 있습니다. 이 데이터를 다른 Oracle 인스턴스로 가져오고 싶습니다. 그러나 나는 테이블 이름이 다르기를 원합니다 원래 테이블에서. 이게 가능해? 어떻게?

가져 오기 및 내보내기 시스템은 모두 Oracle 11G입니다. 테이블에는 블로브 열이 포함되어 있습니다.

감사!

업데이트:

여기서 아이디어는 테이블을 업데이트하면서 최소한으로 사용하는 시스템에서 다운 타임을 유지하는 것이 었습니다. 솔루션 (기반 Vincent Malgrat대답과 APC의 업데이트)는 다음과 같습니다.

  1. 테이블 이름이 있다고 가정합니다 A
  2. 임시 스키마를 만듭니다 TEMP_SCHEMA
  3. 데이터를 가져옵니다 TEMP_SCHEMA.A
  4. CREATE REAL_SCHEMA.B AS SELECT * FROM TEMP_SCHEMA.A
  5. DROP TABLE REAL_SCHEMA.A 이름 바꾸기 REAL_SCHEMA.A 에게 REAL_SCHEMA.A_OLD
  6. 이름 바꾸기 REAL_SCHEMA.B 에게 REAL_SCHEMA.A
  7. DROP REAL_SCHEMA.A_OLD

이런 식으로 다운 타임은 4 단계와 5 단계에서만 데이터 크기와 무관해야합니다. 이것이 작동하지 않으면 여기에 업데이트를 게시하겠습니다 :-)

도움이 되었습니까?

해결책

이름이 이미 사용중인 스키마에서 테이블을 가져오고 싶다고 생각합니다. 가져 오기 동안 테이블 이름을 변경할 수 있다고 생각하지 않습니다. 그러나 스키마를 변경할 수 있습니다 FROMUSER 그리고 TOUSER 옵션. 이렇게하면 다른 (임시) 스키마에서 테이블을 가져올 수 있습니다.

완료되면 테이블을 대상 스키마로 복사합니다. CREATE TABLE AS SELECT. 테이블을 복사하는 데 걸리는 시간은 수입에 비해 무시할 수 있으므로 시간이 너무 낭비되지 않습니다. 작업 중에 디스크 공간이 두 배가 필요합니다.

업데이트

제안한대로 게리 영리한 방법은 대상 스키마에서 새 테이블을 참조하는 임시 스키마에서보기 또는 동의어를 작성하는 것입니다. 가져 오기 후 데이터를 대상 테이블로 직접 통과하므로 데이터를 복사 할 필요가 없습니다.

다른 팁

이전 Exp와 Imp Utilities를 사용하는 경우이 작업을 수행 할 수 없습니다. 유일한 옵션은 같은 이름의 테이블로 가져 오는 것입니다 (테이블을 소유 한 스키마를 변경할 수는 있지만.

그러나 당신은 당신이 11g에 있다고 말합니다. 수입 및 내보내기를 대체하는 10G로 도입 된 DataPump 유틸리티를 사용해보십시오. 11g에서 그 유틸리티는 원하는 것을 정확하게 수행하는 remap_table 옵션을 제공하기 때문입니다.

편집하다

내가 이것을 쓰는 동안 OP가 다른 응답에 추가 된 의견을 읽은 후, 나는 remap_table 옵션이 그들의 경우에 효과가 있다고 생각하지 않습니다. 새로운 개체 만 이름을 바꿉니다. 원래 이름이있는 테이블이 대상 스키마에 존재하면 ORA-39151에서 가져 오기가 실패합니다. 죄송합니다.

BIS 편집

OP가 마지막으로 선택한 솔루션 (기존 테이블 드롭, 새 테이블로 교체) 데이터 펌프가있는 솔루션이 있습니다. TABLE_EXISTS_ACTION={TRUNCATE | REPLACE} 절. 고르는 REPLACE 테이블을 떨어 뜨립니다 TRUNCATE 그냥, 어, 그것을 잘라냅니다. 두 경우 모두 참조 무결성 제약에 대해 걱정해야하지만 선택한 솔루션의 문제이기도합니다.

나는 OP를위한 것이 아니라 앞으로이 페이지를 찾는 다른 구직자들의 이점을 위해이 부록을 게시합니다.

IMPDP에서 옵션 remap_table = exisitng_table_name : new_table_name을 사용하십시오. 이것은 11gr2에서 작동합니다.

같은 이름의 테이블로 가져온 다음 테이블의 이름을 바꾸십시오.

다음과 같이 뷰를 만듭니다 select * from ... 수출중인 테이블 이름과 일치하는 뷰와 함께 가져올 테이블. 가져 오기 오류를 무시하십시오.

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