안녕하세요.
oracle 11g에서 테이블 파티셔닝 작업을 하고 있는데요.
hash partition으로 4개의 partition을 줬는데, 해당 partition별 row count를 하려고 합니다.
google 에서 검색해도 잘 찾지 못해서 문의 드립니다.
아래와 같이 테이블 생성 및 대량 insert 작업 후 해당 partition 별로 균등하게 row가 들어가 있는지 확인하고 있습니다.
create table prd_mst
( prd_no number not null,
prd_nm varchar2(100)
)
partition by hash(prd_no)
partitions 4
stored in (tbs_01, tbs_02, tbs_03, tbs_04)
-- 통계정보가 이미 생성되어 있어야 함. -- ANALYZE TABLE_OWNER.TABLE_NAME ESTIMATE STATISTICS FOR TABLE SAMPLE 1 PERCENT; -- 2019.03.19, Jun H. Lee SELECT TABLE_OWNER , TABLE_NAME , PARTITION_NAME , NUM_ROWS /*행수*/ , ROUND(RATIO_TO_REPORT(NUM_ROWS)OVER(PARTITION BY TABLE_OWNER, TABLE_NAME)*1E2, 2) AS PCNT_ROWS /*비중(%)*/ FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER = 'TABLE_OWNER' AND TABLE_NAME = 'TABLE_NAME' ; -- 통계정보 필요없음 -- 파티션별로 할당되어진 용량을 조회 -- 2019.03.19, Jun H. Lee SELECT OWNER, SEGMENT_NAME, PARTITION_NAME , ROUND(BYTES/POWER(1024, 3), 2) AS GBYTES , ROUND(RATIO_TO_REPORT(BYTES)OVER(PARTITION BY OWNER, SEGMENT_NAME)*1E2, 2) AS PCNT_BYTES /*비중(%)*/ FROM DBA_SEGMENTS WHERE OWNER = 'OWNER' AND SEGMENT_NAME = 'SEGMENT_NAME' ;
기술하신 목적이라면 일반적으로 세그먼트 용량조회를 통해 판단할 듯 하네요.