ORA-30036 表空间溢出

ORA-30036删除大数据量报错
a:分析是undo表空间不足造成
t1 300w行记录




SQL> delete from t1;
delete from t1
            *1 行出现错误:
ORA-30036: 无法按 8 扩展段
 (在还原表空间 'UNDOTBS5' 中)




select (tablespace_name) "表空间名",     
       sum(total_size) "总空间/M",     
       sum(total_free) "剩余空间/M",     
       sum(max_continue) "最大连续空间/M",     
       round(sum(total_free) / sum(total_size) * 100) "剩余百分比/ratio"    
  from ((select tablespace_name,     
                (0) total_size,     
                round(sum(bytes) / 1024 / 1024, 2) total_free,     
                round(max(bytes) / 1024 / 1024, 2) max_continue     
           from dba_free_space     
          group by tablespace_name) union all    
        (select tablespace_name, round(sum(bytes) / 1024 / 1024, 2), 0, 0     
           from dba_data_files     
          group by tablespace_name))     
 group by tablespace_name     
 order by 5 asc;  



表空间名                         总空间/M 剩余空间/M 最大连续空间/M 剩余百分比/ratio
------------------------------ ---------- ---------- -------------- ----------------
UNDOTBS5                               50          0              0                0
UNDOTBS3                               10          0              0                0
UNDOTBS2                               10        .13            .06                1
UNDOTBS4                               10        .31            .06                3
USERS                               317.5     127.13          126.5               40
SYSAUX                                600     353.38            352               59
SYSTEM                                700     428.38            428               61
JERRY                                 550     411.94         362.94               75
TEST                                    5       3.81           3.75               76
TBS2                                    5       3.94           3.88               79
TOM                                     5       3.94           3.94               79

表空间名                         总空间/M 剩余空间/M 最大连续空间/M 剩余百分比/ratio
------------------------------ ---------- ---------- -------------- ----------------
UNDOTBS1                              200     178.44            174               89
TOM2                                   20         19             19               95
SOCTT_TBS                             200     198.63         198.63               99



解决方案
1:调整表空间的大小
 //300w
 alter database datafile 'D:\DEV\ORACLEDATA\TEST\UNDOTBS05.DBF' resize 1000M;//解决方案ok


2:重新创undo表空间并切换为当前undo表空间
select tablespace_name from dba_tablespaces;
select file_name from dba_data_files; 
create undo tablespace undotbs6 datafile 'D:\DEV\ORACLEDATA\TEST\UNDOTBS06.DBF' size 2000m;
alter system set undo_tablespace=UNDOTBS6

原本想创建一个大的表空间替换现有的表空间,,报错
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS5' 中)

 

posted @ 2014-03-11 21:40  kaka100  阅读(8670)  评论(0编辑  收藏  举报