오라클에서 익스포트 임포트는 사용자의 의도에 따라 많이 사용하기도 합니다.
(물론 그냥 DB링크를 연결하는게 제일 간단..)
하지만 할때마다 조금씩 헷갈리는 부분이 있어 스텝별로 정리해봅니다.
테스트는 A(test0509) 라는 테이블을 export 후 A라는 테이블로 import 했을때 변화를 알아보겠습니다.
먼저 임의의 테이블을 만들었습니다.
1. 먼저 임의의 테이블을 만든다.
create table test0509 as select * from dba_objects;
select count(*) from test0509 --33742개를 확인
2. 어디에 ~~.dmp를 떨굴지 확인한다.
SELECT * FROM dba_directories;
3. 새로 생성하려면 아래와같이 생성한다.
CREATE DIRECTORY TEST_DIRECTORY as '/경로';
4. 해당 DB 디렉토리에 권한을 준다.
GRANT READ, WRITE ON DIRECTORY TEST_DIRECTORY to system;
5. 위에서 만든 테이블을 익스포트한다. 에러없는지 확인후 test.dmp파일이 떨구어 졌는지 확인한다.
expdp system/manager DIRECTORY= TEST_DIRECTORY tables=스키마.test0509 DUMPFILE=test.dmp
6. 다시 임포트 해준다.
impdp apps/apps DIRECTORY= TEST_DIRECTORY tables=스키마.test0509 DUMPFILE=test.dmp
7. 이미 존재하므로 에러가 아래와 같이 발생할것이다.
ORA-39151: Table "APPS"."TEST0509" exists. All dependent metadata and data will be skipped due to table_exists_action of skip
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
8. 아래 content=data_only 옵션을 붙여주고 다시 임포트 한다.
impdp apps/apps DIRECTORY= TEST_DIRECTORY tables=스키마.test0509 DUMPFILE=test.dmp content=data_only
※CONTENT옵션에는 여러가지가 있다고 한다.
CONTENTS = [ALL | DATA_ONLY | METADATA_ONLY}
9. 에러가 없는지 확인
select count(*) from test0509 ;
조회해 보면 674846건임을 확인할수 있다.
즉 동일 데이터를 추가한것이다.
10. *번외 테이블 빈껍데기(metadata_only)를 만들때 테이블명은 기존 테이블 명이어야 한다.
impdp apps/apps DIRECTORY= TEST_DIRECTORY tables=스키마.test0509 DUMPFILE=test.dmp content=metadata_only
만일 다른 테이블 명을 넣는다면
ORA-39002: invalid operation
ORA-39166: Object xxx.테이블 was not found.
에러를 만날것이다.
그럼 다른 테이블명에다 import 하고 싶다면?? 아래를 참고하도록 한다.
클라이언트 설치후 plsql developer에서 특정 테이블의 결과값이 0건 (0) | 2019.04.10 |
---|---|
oracle datafile 삭제 방법 (0) | 2019.04.09 |
x_$kglob 테이블이 없을땐 XM$KGLOB 사용 (0) | 2017.11.21 |
r12 클로닝 작업시 ouicli.pl INSTE8_APPLY 255 오류 (0) | 2017.06.16 |
수행결과 PDF형식 output 결과값이 ? 로만 나오는경우 (0) | 2017.02.17 |