您的位置:首页 > 数据库 > Oracle

oracle undo表空间不足的解决方法

2016-11-08 13:29 267 查看
数据库大批量插入提交注意事项-undo:

undo定义:

UNDO 表空间用于存放UNDO数据,当执行DML操作(INSERT,UPDATE和DELETE)时,oracle会将这些操作的旧数据写入到UNDO段滚段,还可以使用UNDO表空间.因为规划和管理回滚段比较复杂,所有oracle database 10g已经完全丢弃用回滚段.oracle 9i使用Rollback Segment,oracle 10g之后丢弃使用回滚段,使用UNDO表空间来管理UNDO数据

undo表空间不足处理:

1、undo表空间剩余空间查看:

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,999999.99) as Used,

       to_char(a.free/1024/1024,999999.99) as Free,

       to_char(round((total-free)/total,4)*100,999.99) 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

  AND a.tablespace_name='UNDOTBS3'

ORDER BY a.tablespace_name;

2、处理方法一:扩展undo表空间大小,alter database datafile ' file/undo/undotbs03.dbf' resize 32567M

3、处理方法二:咱现有undo表空间大小32G,无法扩容,只能创建大数据文件,方法如下:

CREATE BIGFILE UNDO TABLESPACE undotbs3 DATAFILE ' file/undo/undotbs03.dbf'

SIZE 131072M reuse autoextend on next 10240m maxsize unlimited;

切换到新创建的undo表空间:ALTER SYSTEM SET undo_tablespace=undotbs3;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息