由于 temp space 已满,作业失败

Job is failing because of temp space getting full

我们的 customer 正在将过去 3 年的数据加载到一个新的报告产品中。它有数百万条记录。我们的中间 query 正在生成 964M 记录,在此阶段 job 由于 insufficient temp storage 而失败。他们将温度 space 提高了三次。我们的query planjoins是正确的

我的问题是。

  1. 我们能否给他们一些估计,对于 10 亿条记录,您需要 temp tablespace.
  2. 中的这个 data file 数量
  3. 是否可以计算出以上统计数据?当我与一些专家交谈时,他们说容量规划是不可能的。

我知道记录很大,他们可能也需要更换硬件。但是有什么我们可以建议他们在内存级别和可能的硬件级别进行更改。

如果你想要,我可以附上 explain plantrace here

正如 pmdba 指出的那样,EXPLAIN PLAN 将有助于估计所需的温度 space,但这只是一个严格的估计。请注意,您的执行计划有许多嵌套的散列连接,因此您可以轻松地获得 temp space 需求的复合,因为多个散列连接可以是“活动的”,(即,一个已经开始但需要输出一个内部的)。

但假设这是一次性负载,我会为您的 DBA 推荐一种不同的方法。只需创建一个新的临时文件 tablespace,其中包含一个大文件或许多具有大量自动扩展余量的数据文件。如有必要,将其放在 scratch/throwaway 磁盘上。只给它分配这个用户帐户,然后 运行 你的负载,让临时 space 增长到它需要的任何大小。

加载完成后,删除 tablespace 并恢复正常操作。大量临时文件不会对您的数据库产生任何影响 - 它不会得到备份,其内容不需要日志记录。