ORACLE 일반 테이블 을 파 티 션 테이블 로 변환 하 는 동작

5414 단어 oracle 독서 노트
ORACLE 일반 테이블 을 파 티 션 테이블 로 변환 하 는 동작
머리말
Oacle 공식 적 으로 표 의 크기 가 2GB 이상 일 때 파 티 션 표를 사용 하여 관리 하 는 것 을 권장 합 니 다. 파 티 션 표 는 작은 표 관리 와 성능 에 비해 큰 장점 을 가지 고 있 습 니 다. 본 문 서 는 구체 적 인 장점 을 소개 하지 않 고 주로 몇 가지 일반 표를 파 티 션 표 로 전환 하 는 방법 을 소개 합 니 다.
방법 개술
Oacle 은 공식 적 으로 다음 과 같은 네 가지 조작 방법 을 주 었 다.
  • 내 보 내기 / 내 보 내기 메 서 드 (내 보 내기 가 져 오기)
  • Insert with a subquery method (하위 조회 삽입 방법)
  • Partition exchange method (교환 분 구법)
  • DBMS_REDEFINITION (온라인 재 정의)
  • 이러한 방법의 사고방식 은 모두 새로운 구역 표를 만 든 다음 에 낡은 표 의 데 이 터 를 새 표 위로 옮 기 고 그 다음 에 상응하는 의존 관 계 를 옮 기 며 마지막 으로 표 의 이름 을 바 꾸 고 새 표 와 낡은 표 의 이름 을 바 꾸 는 것 이다.그 중에서 A, B, C 라 는 세 가지 방법 은 모두 시스템 의 정상 적 인 사용 에 영향 을 줄 수 있다. 본 문 서 는 상세 한 소 개 를 하지 않 고 본 문 서 는 주로 D 방법 을 소개 한다. 이런 방법 은 현재 일반 표를 구역 표 로 전환 하 는 방법 이다.
    온라인 재 정의 파 티 션 시트 작업
    전체 조작의 사고방식 은 다음 과 같다. SCOTT 에서 EMP 표를 예 로 들 면
    1. 다음 표 에서 구역 을 나 눌 수 있 는 지 확인 하기
    홈 키 기반 확인
    BEGIN
    DBMS_REDEFINITION.CAN_REDEF_TABLE('SOCTT','EMP',DBMS_REDEFINITION.CONS_USE_PK);
    END;
    /
    PL/SQL procedure successfully completed.

    문제 없어 요.
    2. 임시 테이블 을 만 들 고 DEPTNO 를 파 티 션 으로 하 는 옵션
    CREATE TABLE SCOTT.EMP_1
    (
      EMPNONUMBER(4),
      ENAMEVARCHAR2(10 BYTE),
      JOBVARCHAR2(9 BYTE),
      MGRNUMBER(4),
      HIREDATEDATE,
      SALNUMBER(7,2),
      COMMNUMBER(7,2),
      DEPTNONUMBER(2)
    )
    PARTITION BY RANGE (DEPTNO)
    (
      PARTITION EMP_A1 VALUES LESS THAN (20),
      PARTITION EMP_A2 VALUES LESS THAN (30),
      PARTITION EMP_A3 VALUES LESS THAN (40),
      PARTITION EMP_A4 VALUES LESS THAN (50),
      PARTITION EMP_A5 VALUES LESS THAN (60)
          )

    3. 데이터 이전 시작
    EXEC DBMS_REDEFINITION.START_REDEF_TABLE('SCOTT', 'EMP', 'EMP_1');

    4. 표 의 데이터 가 많 으 면 3 단계 가 길 어 질 수 있 습 니 다. 이 기간 에 시스템 은 표 EMP 에 데 이 터 를 계속 기록 하거나 업데이트 할 수 있 습 니 다. 그러면 다음 문 구 를 실행 할 수 있 습 니 다. 마지막 단 계 를 실행 할 때 장시간 의 잠 금 을 피 할 수 있 습 니 다 (이 과정 은 선택 할 수 있 습 니 다)
    BEGIN 
      DBMS_REDEFINITION.SYNC_INTERIM_TABLE('SCOTT', 'EMP', 'EMP_1');
    END;
    /

    5. 권한 대상 의 이전 진행
    DECLARE
    num_errors PLS_INTEGER;
    BEGIN
    DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('SCOTT', 'EMP','EMP_1',
    DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUE, TRUE, TRUE, TRUE, num_errors);
    END;
    /

    6. 관련 오 류 를 조회 하고 조작 하기 전에 먼저 검사 하고 DBA 를 조회 합 니 다.REDEFINITION_ERRORS 오류 조회 시도:
    select object_name, base_table_name, ddl_txt from   DBA_REDEFINITION_ERRORS;

    7. 전체 재 정의 종료
    BEGIN
    DBMS_REDEFINITION.FINISH_REDEF_TABLE('scott', 'emp', 'emp_1');
    END;
    /

    총결산
    크기 2.3GB, 총 줄 수 360 만 줄 의 시 계 를 만 들 었 는데 전체 과정 은 56 초 정도 걸 렸 고 전체 과정 은 상당히 빠르다.구체 적 인 생산 환경의 집행 은 엄격 한 테스트 를 거 쳐 집행 해 야 하 며 테스트 과정 에서 전체 과정의 집행 시간 을 대충 알 수 있다.
    또한 재 실행 과정 에서 오류 가 발생 하면 다음 문 구 를 통 해 전체 과정 을 끝 낼 수 있 습 니 다.
    BEGIN
    DBMS_REDEFINITION.ABORT_REDEF_TABLE(uname => 'SCOTT',
    orig_table => 'EMP',
    int_table => 'EMP_1'
    );
    END; 

    회전: ORACLE 일반 표 에서 파 티 션 표 로 변환 하 는 동작

    좋은 웹페이지 즐겨찾기