Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8350911
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: Oracle

2010-01-06 14:19:40

oracle的表空间提示空间不足
 
报错
SQLException:ORA-01654: unable to extend index ATOM.IDX_UNDERWRITING_CHECK_T2 b
y 1024 in tablespace TBSIDS
查找网上解决方案

方法1:

   当出现类似错误时,首先检查tablespace的空间是否足够大,如果不够大,说明tablespace的空间不够扩展了,这时候需要将tablespace的datafile的size变大,方法很简单我就不讲了,或增加新的datafile到此tablespace中,使用alter tablespace mytablespace add datafile 'XXX' size xxxx就OK啦.

先了解表空间

1、查看表空间的名称及大小

    select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
    from dba_tablespaces t, dba_data_files d
    where t.tablespace_name = d.tablespace_name
    group by t.tablespace_name;

2、查看表空间物理文件的名称及大小

    select tablespace_name, file_id, file_name,
    round(bytes/(1024*1024),0) total_space
    from dba_data_files
    order by tablespace_name;
3、查看表空间的使用情况

    select sum(bytes)/(1024*1024) as free_space,tablespace_name
    from dba_free_space
    group by tablespace_name;
发现确实空间满了

同时发现2个文件不能自己扩展。

于是手动进行扩展

alter tablespace users add datafile '/home/oracle/oradata/xxx/users02.dbf' size 10000M autoextend on  ;

实际有2中方法,一个是增大原有数据文件,一个是新添加数据文件

添加后,问题解决

如果添加过程中出错,oracle10g以后可以直接删除,以前的版本比较麻烦:
确认表空间未被存储占用:


  sql> select segment_name,file_id,blocks from dba_extents where file_id=5;
  no rows selected

  删除表空间中的空数据文件:


  sql> alter tablespace users drop datafile '/opt/oracle/oradata/eygle/users02.dbf';
  tablespace altered.

如果操作过程中空间不能释放可能因为其他操作导致,例如被归到undotbs空间里

这时候可以如此操作:

首先,要查清楚数据文件的真实使用空间。可以通过查询dba_extents达到这个目的。users表空间使用的数据文件为D:\ORACLE\ORADATA\EPCIT\DATA_FILE\EPCITUSERS01.DBF

  1. SQL> select file_name, sum(e.bytes)/1024/1024 as MB   
  2.   2  from dba_extents e join dba_data_files f on e.file_id=f.file_id   
  3.   3  group by file_name;   

可以看出EPCITUSERS01.DBF实际使用空间只有143MB。resize datafile的时候不可以小过这个大小。

Sql代码 复制代码
  1. SQL> alter database datafile 6 resize 100M;   
  2. alter database datafile 6 resize 100M   
  3. *   
  4. ERROR at line 1:   
  5. ORA-03297: file contains used data beyond requested RESIZE value   
  6.   
  7. SQL> alter database datafile 6 resize 500M;   
  8.   
  9. Database altered.  
 
阅读(5766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~