[Oracle] 테이블 이관 작업

HYEOB KIM·2023년 8월 18일
0

Oracle

목록 보기
52/58

테이블 이관 작업

작업 순서
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 개수 및 데이터 확인

1) AS-IS 테이블 정보 확인(owner, tablespace_name, table_name, num_rows, 용량)

  • owner, tablespace_name, table_name, num_rows 확인
    • impdp 시 같은 tablespace, 스키마(owner)에 이관됨
    • 만약 TO-BE에 tablespace가 존재하지 않을 경우 생성해 주는 것이 필요
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';

2) AS-IS의 directory 조회 후 디스크 용량을 확인하여 적절한 directory에 expdp 수행

  • tables 옵션은 단순히 해당 테이블만 expdp하는 것이 아닌 해당 테이블과 종속된 오브젝트(인덱스, PK, 트리거, 권한 등)까지 모두 expdp함
  • 이후에 impdp시 종속된 오브젝트들이 존재한다는 에러 메시지(ORA-31684: Object type ... already exists)가 발생할 수 있는데, 이때는 이관하려는 테이블 자체는 impdp 되었는지 조회를 해봐야 함
select * from dba_directories;

$ df -h

$ expdp directory=<디렉토리명> dumpfile=<덤프파일명> logfile=<로그파일명> job_name=<잡이름> tables=<스키마명>.<테이블명>

tables=<스키마명>.<테이블명>,<스키마명>.<테이블명>
tables 옵션의 경우 여러 개의 테이블을 지정해줄 수 있지만 작업의 정확도를 위해 테이블을 하나씩 수행하도록 한다

3) AS-IS에서 TO-BE로 dump file 복사

  • TO-BE의 directory 조회 후 디스크 용량을 확인하여 적절한 directory로 dump file 이동

4) TO-BE에 AS-IS와 동일한 테이블 존재 확인

select owner, tablespace_name, table_name, num_rows
from dba_tables
where owner='<스키마명>'
and table_name='<테이블명>';

만약 동일 테이블이 있다면 담당자에게 해당 테이블을 drop할지 아니면 다른 테이블명으로 생성할지 물어보기

5) TO-BE에서 impdp 수행

$ 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를 사용할 수 없습니다.

6) AS-IS와 TO-BE의 테이블 row 개수 및 데이터 확인

select owner, tablespace_name, table_name, num_rows
from dba_tables
where owner='<스키마명>'
and table_name='<테이블명>';

select * from <스키마명>.<테이블명>
profile
Devops Engineer

0개의 댓글