본문 바로가기
Oracle/운영

dba_tables 과 dba_segments의 차이

by 취미툰 2021. 2. 5.
반응형

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

 

Difference between dba_tables and dba_segments

    Difference between dba_tables and dba_segments Oracle Database Tips by Donald BurlesonNovember 24, 2015 Question:  What is the difference between dba_segments and dba_tables? Answer:  The dba_tables view describes a "logical" structure while dba_se

www.dba-oracle.com

 

또 하나 정리하면서 배웠네요..

반응형

댓글