테이블 목록 수집(/w 모수 관리)
차세대 또는 시스템 개편 프로젝트에서 대상 시스템의 모수 관리를 위하여 현행 시스템의 테이블 목록을 수집하는 방법을 기술한다.
오라클(Oracle)의 경우 시스템 카탈로그(system catalog)는 Static Data Dictionary Views와 Dynamic Performance Views로 구분하는데 테이블 목록은 Static Data Dictionary Views에서 SELECT 한다.
테이블 정보를 추출하기 위한 시스템 카탈로그는 아래와 같다.
※ 출처: https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ALL_TABLES.html
테이블의 목록을 수집하는 SQL은 아래와 같다.
-- 1) 테이블 목록 수집
SELECT A.OWNER, A.TABLE_NAME, B.COMMENTS, A.NUM_ROWS
FROM ALL_TABLES A
LEFT OUTER JOIN ALL_TAB_COMMENTS B
ON A.OWNER = B.OWNER
AND A.TABLE_NAME = B.TABLE_NAME
WHERE A.OWNER = 'SCOTT' -- 해당 OWNER로 변경
참고로, 차세대 또는 시스템 개편 프로젝트에서 모수 관리를 위한 양식의 예제는 아래와 같다.
순번 | 테이블명 | 테이블 한글명 |
ROW수 | 크기 (용량) |
최종 생성일자 |
대상여부 | 확인일자 |
해당 테이블의 최종생성일자를 파악하기 위하여 현행 테이블에서 시스템 컬럼을 파악하고 최종생성일자를 SELECT 한다.
예를 들어, 현행 테이블의 시스템 컬럼 중 생성일자(CRE_DT) 및 변경일자(CHG_DT)를 관리한다고 했을 때 아래 SQL을 반복 수행해서 현행 테이블의 최종생성일자를 수집한다.
SELECT MAX(NVL(CHG_DT, CRE_DT)) 최종생성일자
FROM TAB -- 수집된 테이블 목록에서 반복해서 수행
위의 SQL에서 테이블의 ROW 수는 시스템 카탈로그에서 SELECT 하였지만 해당 정보는 통계 정보로써 근삿값이다.
따라서, 특정 시점의 정확한 건수를 산출하기 위해서는 해당 테이블을 직접 SELECT COUNT(*)한다.
추가적으로, 테이블의 크기는 ROW 수에 비례하지만 컬럼의 수 및 크기에도 비례하므로 테이블의 크기(용량)를 SELECT 하는 SQL을 활용하여 수집한다.
-- 2) 테이블 크기(용량) 수집
SELECT A.OWNER, A.TABLE_NAME, C.BYTES
FROM ALL_TABLES A
LEFT OUTER JOIN USER_SEGMENTS C
ON A.TABLE_NAME = C.SEGMENT_NAME
AND C.SEGMENT_TYPE = 'TABLE'
WHERE A.OWNER = 'SCOTT' -- 해당 OWNER로 변경
필요 시 SQL "1) 테이블 목록 수집 "과 "2) 테이블 크기(용량) 수집"을 합쳐 작성한다.
<끝>
'SQL' 카테고리의 다른 글
컬럼 분포 수집 (0) | 2024.05.09 |
---|---|
속성의 유사도 분석 (0) | 2024.04.30 |
컬럼 목록 수집 - PK 추가 (0) | 2024.04.27 |
컬럼 목록 수집 (0) | 2024.04.26 |