Oracle/운영
통계정보 복사하기 (partition table)
취미툰
2021. 11. 19. 16:37
반응형
운영중에 테이블의 통계정보를 동일하게 맞춰달라는 요청을 받고 수행한 내역을 정리한 글입니다.
요청해준 테이블은 파티션테이블이었습니다.
버전 Oracle 12.2.0.1
1.테이블의 통계정보 확인
LAST_ANALYZED컬럼을 확인해보면 날짜가 다른것을 확인할 수 있습니다. 즉, 통계정보가 다르다는 것이고, 202110의 통계정보를 복사하여 동일하게 맞춰줄 것입니다.
SQL> select owner,table_name,partition_name,NUM_ROWS,blocks,last_analyzed from dba_tab_statistics
where table_name='DM_FIM030M'
and partition_name in ('PT_FIM030M_202111','PT_FIM030M_202110')
order by partition_position desc;
OWNER TABLE_NAME PARTITION_NAME NUM_ROWS BLOCKS LAST_ANALYZED
-------- ------------- -------------------- ---------------- ------------ --------------------------
EDWOWN DM_FIM030M PT_FIM030M_202111 13328050 207872 2021/11/08 12:45:52
EDWOWN DM_FIM030M PT_FIM030M_202110 13328050 207872 2021/11/09 11:28:25
2.기존 통계정보 백업 (백업이 필요하지 않는 경우에는 하지않아도 됩니다)
dbms_stats의 명령어를 이용하여 기존 통계정보를 백업받습니다.
--통계테이블 생성
SQL> exec dbms_stats.create_stat_table('AAA','STATS_PT_FIM030M_202111','USERS');
PL/SQL procedure successfully completed.
--export 수행
SQL> exec DBMS_STATS.EXPORT_TABLE_STATS(ownname => 'EDWOWN',tabname => 'DM_FIM030M',STATTAB=>'STATS_PT_FIM030M_202111',statown=> 'AAA',CASCADE=>TRUE);
PL/SQL procedure successfully completed.
3.통계정보 COPY
SQL> exec DBMS_STATS.COPY_TABLE_STATS('EDWOWN','DM_FIM030M', srcpartname=> 'PT_FIM030M_202110', dstpartname=> 'PT_FIM030M_202111');
PL/SQL procedure successfully completed.
4.정보확인
last_analyzed 컬럼의 날짜가 동일하게 맞춰진 것을 확인 할 수 있습니다.
SQL> select owner,table_name,partition_name,NUM_ROWS,blocks,last_analyzed from dba_tab_statistics
where table_name='DM_FIM030M'
and partition_name in ('PT_FIM030M_202111','PT_FIM030M_202110')
order by partition_position desc;
OWNER TABLE_NAME PARTITION_NAME NUM_ROWS BLOCKS LAST_ANALYZED
-------- ------------- -------------------- ---------------- ------------ --------------------------
EDWOWN DM_FIM030M PT_FIM030M_202111 13328050 207872 2021/11/09 11:28:25
EDWOWN DM_FIM030M PT_FIM030M_202110 13328050 207872 2021/11/09 11:28:25
반응형