3

我正在尝试创建这样的视图:

CREATE MATERIALIZED ReasonableSizedView
TABLESPACE MyMediumTS
AS 
select COUNT(something) AS allsomethings,
    thetype AS thing,
    status
from SomeMassiveTable
where
    thetype = 'x'
    AND status IN (0,1,2,3)
GROUP BY
    thetype,
    status;

我得到的只是一个错误::ORA-01658无法为表空间MySmallTS中的段创建初始范围

好的,现在,MySmallTS这是我尝试创建视图的用户的默认ts - 它已满。一个完整的表空间是一个单独的问题,并且正在处理中,但是为什么 Oracle 试图将它用于这个视图,即使我明确地告诉我想要它在哪里?

此外,如果我更改查询 a 并删除group by's,它将起作用,并且它将在正确的表空间中创建视图

我想知道,分组和求和之类的整个操作,不应该使用TEMP为该用户分配的表空间吗?这似乎是合理的,顺便说一句,我的临时有足够的空间......

为什么呢?

谢谢

4

1 回答 1

0

基于删除 GROUP BY 时它可以工作的事实,我的猜测是 MySmallTS 也被指定为该用户的默认临时表空间。

构建中间结果将在临时表空间中完成,当使用 GROUP BY 时,这对于 MySmallTS 来说太大了

于 2011-09-13T10:34:47.590 回答