【问题标题】:Oracle XE data limit reached - how to reduce tablespace size?达到 Oracle XE 数据限制 - 如何减少表空间大小?
【发布时间】:2015-06-11 10:53:06
【问题描述】:

我有一个包含多个表空间的 Oracle XE 数据库。其中一个用于存储图像数据,并且这个表空间已经增长到一个巨大的大小。我们决定不再需要这些图像,因此将它们全部删除。

这释放了很多空间,但表空间仍然很大。我怎样才能将它缩小到实际包含的数据大小?

【问题讨论】:

    标签: oracle oracle11g resize tablespace data-files


    【解决方案1】:

    这有点棘手,您会发现 DATAFILE RESIZE 是最常见的答案。但是,您需要注意Jonathan Lewis 提到的一些事情,以避免在调整数据文件大小时出现ORA-03297: file contains used data beyond requested RESIZE value

    您需要先找到表空间空闲空间,以确定您可以回收多少。

    Tim Hall 编写的以下脚本很方便:

    SET PAGESIZE 140
    COLUMN used_pct FORMAT A11
    
    SELECT tablespace_name,
           size_mb,
           free_mb,
           max_size_mb,
           max_free_mb,
           TRUNC((max_free_mb/max_size_mb) * 100) AS free_pct,
           RPAD(' '|| RPAD('X',ROUND((max_size_mb-max_free_mb)/max_size_mb*10,0), 'X'),11,'-') AS used_pct
    FROM   (
            SELECT a.tablespace_name,
                   b.size_mb,
                   a.free_mb,
                   b.max_size_mb,
                   a.free_mb + (b.max_size_mb - b.size_mb) AS max_free_mb
            FROM   (SELECT tablespace_name,
                           TRUNC(SUM(bytes)/1024/1024) AS free_mb
                    FROM   dba_free_space
                    GROUP BY tablespace_name) a,
                   (SELECT tablespace_name,
                           TRUNC(SUM(bytes)/1024/1024) AS size_mb,
                           TRUNC(SUM(GREATEST(bytes,maxbytes))/1024/1024) AS max_size_mb
                    FROM   dba_data_files
                    GROUP BY tablespace_name) b
            WHERE  a.tablespace_name = b.tablespace_name
           )
    ORDER BY tablespace_name;
    

    现在剩下的就是调整数据文件的大小。

    ALTER DATABASE DATAFILE '/directory/datafile.dbf' RESIZE value;
    

    【讨论】:

    • 感谢您的回答 - 所以 Oracle 不允许您将表空间调整得太小?是否存在与调整表空间大小相关的其他风险?
    • 浏览我给出的两个链接,它解释了利弊。
    【解决方案2】:

    我会做一个完整的数据库导出,删除表空间,创建一个较小的新表空间并重新导入它

    【讨论】:

    • 感谢您的回答 - 这是我最后使用的方法。这比必须对表空间进行碎片整理和调整大小要简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2012-07-08
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多