1. 程式人生 > >oracle undo表空間不足的解決方法

oracle undo表空間不足的解決方法


資料庫大批量插入提交注意事項-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;