空间是bigfile,自动扩展的
在插入数据时报错:
ORA-01658: unable to create INITIAL extent for segment in tablespace xxxxx 这个是什么原因?搜索了一下,这个错误一般是建表或导数据时有create动作时才会发生吧? INITIAL ?
而且硬盘上空余空间还很多,足够

解决方案 »

  1.   

    硬盘空间不等于数据库空间
    tablespace满了,再挂多几个数据文件吧
      

  2.   

    --  ...表空间地址
    alter database datafile '/.../xxx.dbf' autoextend on next 10m  
      

  3.   

    我也查过那个表空间大小的问题。Oracle里面的单个数据文件好像最大32G,我那个表空间是设为的 BIGFile,最大好像是32T。 自动扩展也开了的, 设的是autoextend next 1G. 
      

  4.   

    硬盘上的空间多,不代表你数据库占用的空间多,先把Oracle的逻辑结构及物理结构搞清楚!
    -- 再说:硬盘上的空间再多,也是有上限的;同理:数据库中占用的空间再多,也是有上限的,这个上限值受
    -- 你的表空间涉及的文件的创建语句、操作系统允许的最大文件大小 等方面的因素制约!
      

  5.   

    -- 在sys用户下用下面的语句查看一下你的表空间的占用情况吧:
    -- *01). 查看普通表空间的使用情况:
    SELECT a.tablespace_name as tablespace_name,
    to_char(b.total/1024/1024,999999.99) as Total,
    to_char((b.total-a.free)/1024/1024,'9999990D99') as Used,
    to_char(a.free/1024/1024,'9999990D99') as Free,
    to_char(round((total-free)/total,4)*100,'9999990D99')||'%' as Used_Rate
       FROM (SELECT tablespace_name, sum(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a,
    (SELECT tablespace_name, sum(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name ) b
      WHERE a.tablespace_name=b.tablespace_name
      ORDER BY round((total-free)/total,4) desc;
      

  6.   

    select * from dba_data_files 
     可知 MAXBYTES 为 35184372064256
    这个应该是32T吧有遇过到这种错误提示的吗? 会不会是索引出错。重建索引?
      

  7.   

    14:10:53 SYS@tdwora > SELECT a.tablespace_name as tablespace_name,
    14:12:43   2    to_char(b.total/1024/1024,999999.99) as "Total(MB)",
    14:12:43   3    to_char((b.total-a.free)/1024/1024,'9999990D99') as "Used(MB)",
    14:12:43   4    to_char(a.free/1024/1024,'9999990D99') as Free,
    14:12:43   5    to_char(round((total-free)/total,4)*100,'9999990D99')||'%' as Used_Rate
    14:12:43   6     FROM (SELECT tablespace_name, sum(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a,
    14:12:43   7    (SELECT tablespace_name, sum(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name ) b
    14:12:43   8    WHERE a.tablespace_name=b.tablespace_name
    14:12:43   9    ORDER BY round((total-free)/total,4) desc;TABLESPACE_NAME                Total(MB)  Used(MB)    FREE        USED_RATE
    ------------------------------ ---------- ----------- ----------- ------------
    SYSAUX                             660.00      616.19       43.81       93.36%
    SYSTEM                             710.00      703.00        7.00       99.01%
    USERS                              106.25       94.56       11.69       89.00%
    UNDOTBS1                           100.00       24.25       75.75       24.25%-- 上面的语句可以看到,我的sysaux表空间只剩43M多了,如果表空间相关数据文件没有设置为自动扩展的话,总有一天会把空间用尽的! 就好比:你想把5斤苹果装进只能装3斤苹果的袋子一样,怎么装的下呢?
      

  8.   

    虽然数据库表空间的数据文件设置了自动扩展,但是在操作系统级别,文件大小是有上限的,
    例如 Fat32格式的磁盘,最大单个文件大小只能是4G,
    所以不要以为你的表空间设置了自动扩展就不忧了,
    千万别忘记:你的数据库是在一定的操作系统平台上运行,同时受操作系统的制约!
      

  9.   

    @luoyoumou现在是ext3系统,应该很大的,至少16T吧。
    现在其实是硬盘一个月前出过点小故障,不知道现在的是不是和硬件有关。你那个空间情况 ,我在其他好几个服务器上都都能执行,但在出问题那个机器上却诡异的执行不了。select * FROM DBA_FREE_SPACE 结果是 DBA_FREE_SPACE 这个表都找不到。这个是系统表吧?难道是系统表紊乱了?
      

  10.   

    我是说那个很占空间的表空间,它在 dba_data_files 中找得到,但在 DBA_FREE_SPACE  中没有。
    是不是DBA_FREE_SPACE  中没有对应条目的话,就是说该空间没有 free space了?
      

  11.   

    表空间在dba_free_space里查询不到?而在 dba_tablespaces存在?
    搜索了下 ,据说 “这个情况是因为剩余空间已不足一个EXTENT了,也就是已经没有空闲空间了。”究竟是什么原因呢