ORA-01652: 无法在表空间 TEMP 中将临时段扩展 128,但有 500GB 可用
Posted
技术标签:
【中文标题】ORA-01652: 无法在表空间 TEMP 中将临时段扩展 128,但有 500GB 可用【英文标题】:ORA-01652: unable to extend temp segment by 128 in tablespace TEMP but there is 500GB available 【发布时间】:2020-08-04 12:12:02 【问题描述】:我不断收到此错误“ORA-01652:无法在表空间 TEMP 中将临时段扩展 128”,但 DBA 告诉我有超过 500GB 可用。
虽然我尝试运行的内容将返回几百万行,但我有创建 100M 行的查询成功运行。
如果有这么多可用空间,可能导致此失败的原因是什么? DBA 似乎不知道该怎么做。
更新。这在 cmets 中得到了解决,结果我的架构只有 60GB。似乎现在可以工作了。但我现在很困惑,为什么 60GB 不足以运行会产生几百万行的查询。 我的架构中的所有表加起来为 1GB。
另外,当他们说我有 60GB 可用时,是在运行时吗?
【问题讨论】:
可能 DBA 正在查看 CDB 而不是 PDB(反之亦然),即你们都看到不同的 TEMP 表空间。 可能 TEMP 表空间未设置为自动扩展并且已达到其最大大小。 然后,在 CDB 和 PDB 上发布select file_name, AUTOEXTENSIBLE, BYTES, MAXBYTES, INCREMENT_BY from dba_data_files where tablespace_name='TEMP'
的结果,然后在文件系统上执行df -h
(如果使用它,则在 ASM 上执行等效操作)。
当您检查它时(在失败的进程之后)有 500GB 可用的 TS 并不意味着在进程失败时它有 500GB。当进程终止(失败或正常)时,它们会释放它们正在使用的空间。而且,您有成功返回更多行的查询这一事实并不意味着什么。也许您失败的查询处理的行数比最终返回的行数多,进行了更多的排序和/或连接。
行数毫无意义。与包含单个 CLOB 的单行相比,我可以让一百万行两个整数占用更少的空间。行的平均宽度与行数一样重要。
【参考方案1】:
该错误也可能表明查询需要优化并在低效运行时占用空间。我们使用 Quest (Toad) 的优化器并检查索引,分析问题区域的解释计划以进行返工等。寻找可以通过索引、笛卡尔积等消除的全表扫描。
【讨论】:
以上是关于ORA-01652: 无法在表空间 TEMP 中将临时段扩展 128,但有 500GB 可用的主要内容,如果未能解决你的问题,请参考以下文章
Pentaho Spoon 转换抛出:ORA-01652:无法在表空间 TEMP 中将临时段扩展 128
ORA-01652: 使用 DBMS_RANDOM.VALUE 时无法在表空间 TEMP 错误中将临时段扩展 128
ORA-01652 - 无法在表空间中将临时段扩展 4096 (oracle 10)
ora-01652无法通过128(在表空间temp中)扩展temp段