数据库表空间增长较快,想找出数据量增长较大的表,然后新建一个表空间来存放这张表。请教具体的方案。

解决方案 »

  1.   

    select * from dba_tables
    试一下看看行不行
      

  2.   

    1 先找到
     查看表所占空间SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999')   CNT_MB   
      FROM   DBA_EXTENTS   
      WHERE   OWNER='&OWNER'   AND   SEGMENT_NAME='&TABLE_NAME'   AND   SEGMENT_TYPE   LIKE   'TABLE%'   
      GROUP   BY   TABLESPACE_NAME;  
    2 在建表空间
      /** 创建数据表空间***/
    create tablespace xx_dat
    logging
    datafile '/home/oracle/oradata/orcl/xx_dat01.dbf'
    size 32m
    autoextend on
    next 32m maxsize 2048m
    extent management local
      

  3.   


    查看各表大小:
    SELECT   SEGMENT_NAME,SUM(BYTES)/1024/1024|| 'M ' 大小  FROM   DBA_SEGMENTS 
    WHERE   1=1
    AND OWNER= 'XXXXX'  ----XXXXX改成你的owner
    AND   SEGMENT_TYPE= 'TABLE'  
    GROUP   BY   SEGMENT_NAME;
      

  4.   

    如果单表很大,建议用分区表来处理,分区表可以放在不同的tablespace下