728x90
GLOBAL TEMP TABLE 을 이용한 Table row count 검증 방법
문서 유형 기술 정보
분야 마이그레이션
키워드 검증 이관
개요
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를 수행할 경우, 성능이 좋지 않을 수 있습니다.
728x90
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| [DB] Oracle TABLESPACE 란 (1) | 2025.08.18 |
|---|---|
| 한글 원문자(동그라미 숫자나 문자)에 음각 효과를 주고 색을 넣는 방법 (3) | 2025.08.14 |
| solaris 11에서 'df -h' 명령어 실행하여 size 총계만 표시 (2) | 2025.08.13 |
| 솔라리스 디스크 추가 (4) | 2025.08.13 |
| Solaris 명령어 정리 (3) | 2025.08.13 |