问题不够详细,做其他简单的select语句有没有出错,用户的缺省临时表空间是系统的吗?

解决方案 »

  1.   

    对,简单的SELECT 没问题,但好象一用聚合类函数,如COUNT(*) 就出这个错误,临时表空间是自己建立的,该用户有权限访问
      

  2.   

    如果表只有一行,使用count(*)也出错吗,临时表空间有多大,是不是被其他会话占用了,用alter tablespace name coalesce;回收一下。
      

  3.   

    我又试了一下,看来不是临时表空间不够的问题,test 表才30M左右,临时表空间有300M,
    用户在临时表空间有无限的表空间系统权限,
     1。 select count(*) from test ;   正确
     2。 select a,count(*) from test group by a ;  无法在本地管理的表空间创建临时段
    奇怪了
      

  4.   

    是问表TEST的表空间吗,表空间没满,用了10%错误号:ORA-03212: 无法在本地管理的表空间创建临时段
      

  5.   

    我查了一下这个错误号,是因为要在local-managed表空间上创建临时段,而造成的失败.你用的是ORACLE9吧,创建一个临时表空间,将此用户的temporary tablespace指定到此表空间上,应该就能解决了。
      

  6.   

    你的临时表空间不能local-managed,修改方法用楼上的
      

  7.   

    ALTER TABLESPACE "表空间名" PERMANENT
      

  8.   

    回复人: menglj() ( ) 信誉:100 
       我查了一下这个错误号,是因为要在local-managed表空间上创建临时段, =================
     请问如何查错误号
      

  9.   

    ORA-03212 Temporary Segment cannot be created in locally-managed tablespaceCause: An attempt was made to create a temporary segment for SORT/HASH/LOBS in a locally-
    managed permanent tablespace.Action: Alter temporary tablespace of user to a temporary tablespace or a dictionary-
    managed permanent tablespace.
      

  10.   

    还是不行:
      我用 这个命令:ALTER TABLESPACE "表空间名" PERMANENT 1. ORA-01660: 表空间'MYSPACE'已是永久性2. ORA-01660: 表空间'TEMPSPACE'已是永久性另外,我发现一个问题:
     表test的字段定义为: a 为varchar2(300)     , b为varchar2(10)    1. select b,count(*) from test group by b ;   正确2。select a,count(*) from test group by a :   无法在本地管理的表空间创建临时段请问是不是因为A的内容太长引起的错误(A最长的记录有23个字符)
      

  11.   

    在操作系统下执行命令:
    oerr ora 错误代码
    就可以看到对错误的解释。
    用这个命令试试,将表空间改为临时性的:
    alter tablespace name temporary;
    有可能是A字段的记录长度较大造成的,而你的表空间是永久的,系统不能使用它排序,只能用内存排序。
      

  12.   

    alter tablespace myspace temporary ORA-01662: 表空间'MYSPACE'非空且无法设置为暂时性难道我要先把表空间请空吗?还有,如果我用manager 管理员 登陆,就可以1。 connect system/manager 
    2.  select a,count(*) from test.test group by a ;    正确 为什么呢