reorg시 dba_tables 과 dba_segments에 둘다 blocks라는 컬럼이 존재하고 그것을 토대로 reorg 전 후 block수를 비교하게되는데요. 사이트에 따라 dba_tables를 조회할 때도 있고, dba_segments를 조회할 때도 있어서 둘의 차이가 어떤것이 있을까 궁금증이 생겼습니다.
reorg 시 물리적인 object block의 변화를 체크하기 위해서는 dba_tables가 아니라 dba_segments 내의 blocks를 조회하여 비교해야 한다는 사실을 파악했습니다.
검색해본 결과 외국 사이트에 정리를 잘해놓은 사이트가 있어서 한글로 번역하면서 정리해보도록 하겠습니다.
dba_tables는 논리적인 구조를 보여주고, dba_segments는 물리적인 구조(데이터파일과 같은)를 보여줍니다.
dba_tables 내의 blocks 컬럼은 dbms_stats를 실행할 때 계산되는 반면,
dba_segments의 blocks 컬럼은 디스크에서 object가 사용하는 실제 블록 수입니다.
dba_segments는 sys_dba_segs로 부터 소스를 참고해서 만들어진 뷰입니다.
dba_tables는 sys.user$ u, sys.ts$ ts, sys.seg$ s, sys.obj$ co, sys.tab$ t, sys.obj$ o, sys.obj$ cx, sys.user$ cu, x$ksppcv ksppcv, x$ksppi,ksppi 로 부터 만들어졌습니다.
또하나의 차이점은 dba_tables는 오직 테이블만 설명하고 있고,
dba_segments는 아래에서 보이는 많은 오브젝트 타입들의 segment를 보여줍니다.
SQL> select distinct segment_type from dba_segments;
SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE SUBPARTITION
NESTED TABLE
TABLE PARTITION
ROLLBACK
LOB PARTITION
LOBSEGMENT
TABLE
INDEX
CLUSTER
TYPE2 UNDO
12 rows selected.
출처 : www.dba-oracle.com/t_difference_dba_tables_dba_segments.htm
또 하나 정리하면서 배웠네요..
'Oracle > 운영' 카테고리의 다른 글
Index rebuild (0) | 2021.02.16 |
---|---|
[RAC] 12.2 CRS Process 강제로 kill 하고 복구방법 (0) | 2021.02.08 |
[Reorg] 대상 테이블 추출하기 (DBMS_ROWID,DBMS_SPACE) (0) | 2021.02.04 |
권한으로 다른유저의 Package body 확인하기 (2) | 2021.02.03 |
DBA_SCHEDULER_JOB_LOG (0) | 2021.01.29 |
댓글