V$tablespace和dba_tablespaces,都是表示表空间信息的。他们之间字段不同。
那么,这两个表中的字段的确定,有什么原则吗?或者说,BLOCK_SIZE 、INITIAL_EXTENT 这些列,为什么放在dba_tablespaces中?而不放在 V$tablespace中呢?V$视图,和dba_ 数据字典,有什么区别呢?非常谢谢大家啊。

解决方案 »

  1.   

    表结构不完全一样:
    SQL> desc v$tablespace
     名称                                   
     ------------------------------------
     TS#                                    
     NAME                                   
     INCLUDED_IN_DATABASE_BACKUP            SQL> desc dba_tablespaces
     名称                                   
     ------------------------------------
     TABLESPACE_NAME                        
     BLOCK_SIZE                             
     INITIAL_EXTENT                         
     NEXT_EXTENT                            
     MIN_EXTENTS                            
     MAX_EXTENTS                            
     PCT_INCREASE                           
     MIN_EXTLEN                             
     STATUS                                 
     CONTENTS                               
     LOGGING                                
     EXTENT_MANAGEMENT                      
     ALLOCATION_TYPE                        
     PLUGGED_IN                             
     SEGMENT_SPACE_MANAGEMENT               SQL> dba_tablespaces应该是实际存储数据的,表里面的信息更加详细一些;目的是便于让DBA明白自己必须要撑握信息
      

  2.   

    V$视图,和dba_xxx都是视图,并不是表,没有存储数据SQL> ed
    Wrote file afiedt.buf  1  select * from dict
      2    where table_name like upper('dba_tablespaces') || '%'
      3*    or table_name like upper('v$tablespace') || '%'
    SQL> /TABLE_NAME
    ------------------------------
    COMMENTS
    --------------------------------------------------------------------------------
    DBA_TABLESPACES
    Description of all tablespacesV$TABLESPACE
    Synonym for V_$TABLESPACE查询这两个视图的目的不同
      

  3.   

    V$是动态性能视图,存在于controlfile中,数据库在mount状态下可以查询,
    dba是静态视图,存在于数据库中,只能在open时查询.