zoukankan      html  css  js  c++  java
  • Oracle收缩表空间

    可以使用 alter database datafile 'file path...' resize xM 的命令来缩小数据文件。

    SELECT 'alter database datafile ''' || A.FILE_NAME || ''' resize ' ||
            ROUND(A.FILESIZE - (A.FILESIZE - C.HWMSIZE - 100) * 0.8) || 'M;',
           A.FILESIZE || 'M' AS "数据文件的总大小", C.HWMSIZE || 'M' AS "数据文件的实用大小"
    FROM   (SELECT FILE_ID, FILE_NAME, ROUND(BYTES / 1024 / 1024) AS FILESIZE
             FROM   DBA_DATA_FILES) A,
           (SELECT FILE_ID, ROUND(MAX(BLOCK_ID) * 8 / 1024) AS HWMSIZE
             FROM   DBA_EXTENTS
             GROUP  BY FILE_ID) C
    WHERE  A.FILE_ID = C.FILE_ID AND
           A.FILESIZE - C.HWMSIZE > 100;
    

    or

    SELECT 'alter database ' || A.NAME || ' datafile ''' || B.FILE_NAME || '''' ||
            ' resize ' ||
            GREATEST(TRUNC(BYTES_FULL / .7), (BYTES_TOTAL - BYTES_FREE)) ||
            CHR(10) || '--tablespace was ' ||
            TRUNC(BYTES_FULL * 100 / BYTES_TOTAL) || '% full now ' ||
            TRUNC(BYTES_FULL * 100 /
                  GREATEST(TRUNC(BYTES_FULL / .7), (BYTES_TOTAL - BYTES_FREE))) || '%'
    FROM   V$DATABASE A, DBA_DATA_FILES B,
           (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_FULL
             FROM   DBA_EXTENTS
             GROUP  BY TABLESPACE_NAME) C,
           (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES_TOTAL
             FROM   DBA_DATA_FILES
             GROUP  BY TABLESPACE_NAME) D,
           (SELECT A.TABLESPACE_NAME, A.FILE_ID, B.BYTES BYTES_FREE
             FROM   (SELECT TABLESPACE_NAME, FILE_ID,
                             MAX(BLOCK_ID) MAX_DATA_BLOCK_ID
                      FROM   DBA_EXTENTS
                      GROUP  BY TABLESPACE_NAME, FILE_ID) A, DBA_FREE_SPACE B
             WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME AND
                    A.FILE_ID = B.FILE_ID AND
                    B.BLOCK_ID > A.MAX_DATA_BLOCK_ID) E
    WHERE  B.TABLESPACE_NAME = C.TABLESPACE_NAME AND
           B.TABLESPACE_NAME = D.TABLESPACE_NAME AND
           BYTES_FULL / BYTES_TOTAL < .7 AND
           B.TABLESPACE_NAME = E.TABLESPACE_NAME AND
           B.FILE_ID = E.FILE_ID;
    

      

    alter tablespace TABLESPACENAME coalesce

    此语句是整合表空间的碎片增加表空间的连续性,但是他不会收缩一个文件的大小的

    选择某个表空间中超过Nblockssegments,通过此语句可以看出那个表占用的空间大  

    SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, BLOCKS
    FROM   DBA_SEGMENTS
    WHERE  TABLESPACE_NAME = 'RISK' AND
           BLOCKS > 1000
    ORDER  BY BLOCKS DESC;
    

      分析表,得知表的一些信息

    analyze table TABLENAME estimate statistics;
    SELECT INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, BLOCKS, EMPTY_BLOCKS
    FROM   DBA_TABLES
    WHERE  TABLE_NAME = 'xx' AND
           OWNER = 'xx';
    

      alter table ... deallocate unused 命令回收表的空间

    alter table user.tablename deallocate unused keep 1k;
    

      

  • 相关阅读:
    第六十篇、音视频采集硬编码(H264+ACC)
    第十三篇、Swift_Nav自定义返回按钮后或者隐藏导航栏,Pop返回手势失效的解决方法 Pop全局返回添加的方法
    第五十九篇、OC录制小视频
    第五十八篇、iOS 微信聊天发送小视频的秘密
    第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
    第五十六篇、OC打开本地和网络上的word、ppt、excel、text等文件
    Objective-C 编码建议
    在block中使用self
    纯代码TableView自适应高度(很老的使用方法)
    iOS应用架构谈 网络层设计方案
  • 原文地址:https://www.cnblogs.com/jmax/p/3754331.html
Copyright © 2011-2022 走看看