【问题标题】:Temporary tablespace always full临时表空间总是满的
【发布时间】:2014-11-18 19:40:52
【问题描述】:

我一直遇到这个问题,只需要以下有关错误的更多信息

-1652-ORA-01652:无法在表空间“temp_tablespace name”中将临时段扩展 128 我现在几乎每个月都需要增加临时表空间。

目前每天午夜,系统运行存储过程将从 2-3 个表中收集的数据插入到 1 个表中。在查询中,我使用“distinct”语句进行查询。我需要使用 distinct,因为在此之前,即使表有主键,也会插入重复值。

我的问题是:

1) “distinct”语法是否导致临时表空间已满?

2) 如果是,那么我需要做什么而不是增加表空间?如果不是,那是什么原因导致临时表空间总是满的?

【问题讨论】:

  • 在查询中使用 distinct 意味着 - 首先选择临时位置中的所有数据并过滤 distinct,这将使用您的临时数据库空间。 - 通过选择这些数据,您的流程在做什么?
  • 过程?你的意思是选择数据后会发生什么?如果是这样,数据将被插入到另一个表中,以便系统将其提取到批处理文件中。
  • 太棒了!如果你想在另一个表中插入记录,你可以从记录总数中处理一批数据。首先选择计数,然后逐批插入活动。这将减少临时空间。

标签: sql oracle9i


【解决方案1】:

在正常运行的数据库中,临时表空间应在一段时间后显示为“已满”。
范围被分配一次,然后由系统管理。而不是这样做 “空间管理”(数据字典更新)的昂贵操作,系统将 在 TEMP 中分配一个范围,然后保留它并自行管理它。这是正常的和 符合预期,并不表示您没有任何临时空间。

查看动态性能视图 V$SORT_USAGE 和 V$SORT_SEGMENT 了解更多信息 关于这些临时段内空间的使用。 V$SORT_USAGE 会告诉你 谁在用什么。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2015-11-07
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多