본문 바로가기
Oracle/운영

TABLE_REDEFINITION

by 취미툰 2020. 2. 19.
반응형

TTS 후 테이블이 이상이 있거나, 특이사항이 있을 때 새로 테이블을 생성하여(안의 데이터는 같음) 오브젝트 및 구성을 새로 만들어주는 편리한 프로시져입니다.

 

1. 작업 전 검증
exec dbms_redefinition.can_redef_table('<스키마명>','<테이블명>');

2. 새로운 테이블 생성
CREATE TABLE INT_<테이블명>
...

3. Redefinition 시작
BEGIN
dbms_redefinition.start_redef_table(
     '<스키마명>',
     '<테이블명>',
     'INT_<테이블명>',
     '<원본컬럼1> <타겟컬럼1>,
  <원본컬럼2> <타겟컬럼2>,
  ...
  <원본컬럼n> <타겟컬럼n>',
     dbms_redefinition.cons_use_pk);
END;
/

4. 종속 객체 복사
SET SERVEROUTPUT ON
DECLARE
  l_num_errors PLS_INTEGER;
BEGIN
  dbms_redefinition.copy_table_dependents(
    uname             => '<스키마명>',
    orig_table        => '<테이블명>',
    int_table         => 'INT_<테이블명>',
    copy_indexes      => dbms_redefinition.cons_orig_params, -- Non-Default
    copy_triggers     => true,  -- Default
    copy_constraints  => true,  -- Default
    copy_privileges   => true,  -- Default
    ignore_errors     => true, -- Default
    num_errors        => l_num_errors);
  dbms_output.put_line('l_num_errors=' || l_num_errors);
END;
/

5. 데이터 동기화
exec dbms_redefinition.sync_interim_table('<스키마명>','<테이블명>','INT_<테이블명>');

6. Redefinition 완료
exec dbms_redefinition.finish_redef_table('<스키마명>','<테이블명>','INT_<테이블명>');

7. 원복
exec dbms_redefinition.abort_redef_table('<스키마명>','<테이블명>','INT_<테이블명>');

 

 

반응형

'Oracle > 운영' 카테고리의 다른 글

Session 이란? (session kill 명령어 포함)  (0) 2020.04.17
권한 부여 삭제(Grant)와 with admin option, with grant option  (0) 2020.02.21
메모리 자동 관리 방법(PGA,SGA)  (0) 2020.02.13
sga_target_advice  (0) 2020.02.13
NID Utility  (0) 2020.02.05

댓글