【问题标题】:Oracle truncate with / without drop storageOracle truncate with / without drop storage
【发布时间】:2009-12-28 23:39:16
【问题描述】:

试图获得更多关于这方面的信息,但我想我只是问问...... .

基本上,有问题的表有超过 3000 万条记录和超过 3Gb 分配给它,但不知何故,分配给它的空间似乎仍然被使用。有没有办法实际删除已分配的已用空间,还是我用错了方法?

===编辑====

我的错...我指的是物理磁盘空间,就数据文件大小而言...目前我们的导出/备份大约为 13GB,所以这里的目的是在此过程中缩小实际文件当我们导出到文件进行备份时截断数据。

【问题讨论】:

  • 您如何测量分配给表的空间量?还要记住,在 10g 中截断一个表总是会留下至少一个段。

标签: sql oracle truncate


【解决方案1】:

当您截断表格时,您并没有准确说出您期望发生的事情。 请记住,如果您从表/索引中取消分配存储,那么它只是作为空闲空间返回到表空间。从操作系统的角度来看,磁盘上使用的空间不会变得更小。因此,虽然可以在需要更多空间时将表空间设置为“自动扩展”,但在释放空间时它不会自动收缩。

【讨论】:

    【解决方案2】:

    你用的是什么extent management和segment_space_management?

    select tablespace_name from user_segments
      where segment_name = 'T'   ---T here would b your table name
    
    TABLESPACE_NAME
    ------------------------------
    TS_USERS_01
    
    sql > select TABLESPACE_NAME, EXTENT_MANAGEMENT, SEGMENT_SPACE_MANAGEMENT
      2     from dba_tablespaces where tablespace_name = 'TS_USERS_01';
    
    TABLESPACE_NAME                EXTENT_MAN SEGMEN
    ------------------------------ ---------- ------
    TS_USERS_01                    LOCAL      AUTO
    

    您是使用字典管理的表空间还是本地管理的表空间以及系统分配的段?

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 2019-11-06
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2022-11-29
      • 2019-10-12
      相关资源
      最近更新 更多