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 |
댓글