작업 순서
1) AS-IS 테이블 정보 확인(owner, tablespace_name, table_name, num_rows, 용량)
2) AS-IS의 directory 조회 후 디스크 용량을 확인하여 적절한 directory에 expdp 수행
3) AS-IS에서 TO-BE로 dump file 복사
(TO-BE의 directory 조회 후 디스크 용량을 확인하여 적절한 directory로 dump file 이동)
4) TO-BE에 AS-IS와 동일한 테이블 존재 확인
5) TO-BE에서 impdp 수행
6) AS-IS와 TO-BE의 테이블 row 개수 및 데이터 확인
select owner, tablespace_name, table_name, num_rows
from dba_tables
where owner='<스키마명>'
and table_name='<테이블명>';
select owner, segment_name, bytes/1024/1024 MB
from dba_segments
where segment_type='TABLE';
tables
옵션은 단순히 해당 테이블만 expdp하는 것이 아닌 해당 테이블과 종속된 오브젝트(인덱스, PK, 트리거, 권한 등)까지 모두 expdp함ORA-31684: Object type ... already exists
)가 발생할 수 있는데, 이때는 이관하려는 테이블 자체는 impdp 되었는지 조회를 해봐야 함select * from dba_directories;
$ df -h
$ expdp directory=<디렉토리명> dumpfile=<덤프파일명> logfile=<로그파일명> job_name=<잡이름> tables=<스키마명>.<테이블명>
tables=<스키마명>.<테이블명>,<스키마명>.<테이블명>
tables
옵션의 경우 여러 개의 테이블을 지정해줄 수 있지만 작업의 정확도를 위해 테이블을 하나씩 수행하도록 한다
select owner, tablespace_name, table_name, num_rows
from dba_tables
where owner='<스키마명>'
and table_name='<테이블명>';
만약 동일 테이블이 있다면 담당자에게 해당 테이블을 drop할지 아니면 다른 테이블명으로 생성할지 물어보기
$ impdp directory=<디렉토리명> dumpfile=<expdp덤프파일명> logfile=<로그파일명> job_name=<잡이름> tables=<스키마명>.<테이블명>
remap_table=<기존스키마>.<기존테이블명>:<새로운테이블명>
: 테이블 이름을 변경하여 이관 가능
TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE]
SKIP
: default로써 impdp시 해당 Table 존재시, 다음 Object로 이동합니다. 만약 CONTENT옵션이 DATA_ONLY옵션으로 설정되어 있으면 SKIP을 사용할 수 없습니다.APPEND
: IMPDP시 해당 Table 존재시 이미 존재하는 row값은 놔두고 변경된 값만 impdp를 수행합니다.TRUNCATE
: 존재하는 row를 모두 삭제(delete)한 후 impdp를 수행합니다.REPLACE
: 존재하는 Table을 삭제(Drop)한 후 새로 생성하여 impdp를 수행합니다. 만약 CONTENT옵션이 DATA_ONLY옵션으로 설정되어 있으면 REPLACE를 사용할 수 없습니다.
select owner, tablespace_name, table_name, num_rows
from dba_tables
where owner='<스키마명>'
and table_name='<테이블명>';
select * from <스키마명>.<테이블명>