기술 정보
home
채널 소개
home

GLOBAL TEMP TABLE 을 이용한 Table row count 검증 방법

문서 유형
기술 정보
분야
마이그레이션
키워드
검증
이관
적용 제품 버전
6FS07PS
7FS02PS

개요

Oracle To Tibero 이관 또는 Tibero 6에서 Tibero 7으로 업그레이드 한 후, 대상 테이블의 row 수가 이관 전후로 정확히 일치하는지 검증해야 할 경우가 많습니다.
Row count 검증 방법중 GLOBAL TEMPORARY TABLE(GTT)을 활용하여 테이블 별 row count를 수집 및 비교하는 방법에 대해 안내합니다.
참고
UNION ALL 방식의 Count 조회 시에는 메모리를 과사용하는 사용 부담을 개별로 수행하는 PL/SQL 문법으로 수행합니다.

방법

1. GLOBAL TEMP TABLE 생성

CREATE GLOBAL TEMPORARY TABLE MIG_TAB_COUNT ( owner VARCHAR(40), table_name VARCHAR(128), row_count NUMBER ) ON COMMIT PRESERVE ROWS; -- 세션 단위 보존. 세션 종료 시 자동 초기화 ( On commit preserve rows )
SQL
복사

2. Row Count 수집 (로컬 테이블 대상)

DECLARE v_sql VARCHAR2(1000); BEGIN FOR i IN (SELECT owner, table_name FROM DBA_TABLES WHERE 1=1 -- AND owner IN ('TIBERO1','TIBERO2') ) LOOP v_sql := 'INSERT INTO MIG_TAB_COUNT (owner, table_name, row_count) ' || 'SELECT ''' || i.owner || ''', ''' || i.table_name || ''', COUNT(*) FROM ' || i.owner || '.' || i.table_name; EXECUTE IMMEDIATE v_sql; END LOOP; END; /
SQL
복사

3. 결과 확인

결과는 엑셀로 복사하여 이관 전 데이터와 비교합니다. ( As-is 와 To-be 에서 각각 수행 )
SELECT * FROM MIG_TAB_COUNT;
SQL
복사

4. DBLINK를 이용한 row count 수집방법 (선택사항)

DECLARE v_sql VARCHAR2(1000); BEGIN FOR i IN (SELECT owner, table_name FROM ALL_TABLES WHERE 1=1 -- AND owner IN ('TIBERO1','TIBERO2') ) LOOP v_sql := 'INSERT INTO MIG_TAB_COUNT (owner, table_name, row_count) ' || 'SELECT ''' || i.owner || ''', ''' || i.table_name || ''', COUNT(*) FROM ' || i.owner || '.' || i.table_name || '@olink'; EXECUTE IMMEDIATE v_sql; END LOOP; END;
SQL
복사
검증에 사용한 MIG_TAB_COUNT 은 drop 합니다.
DROP TABLE MIG_TAB_COUNT PURGE;
SQL
복사
참고
이관대상 스키마를 owner In 에 추가하며, DBLINK명은 사용 환경에 맞게 수정해 사용합니다.
COUNT를 조회하는 구문에 PARALLEL 을 추가하면 더욱 빠른 성능을 기대할 수 있습니다.
DBLINK를 통해 remote side에서 count를 수행할 경우, 성능이 좋지 않을 수 있습니다.