昨晚因為做了一個大批量的刪除,用的 delete 。大約用了 6 個小時,導致了回滾段自動擴展到將近 30 個 G 。(以后記著,做大批量刪除的時候,一定要用腳本實現,分批量提交事務。那樣就不會占用太多的 UNDO 表空間了?。?從網上搜了一個普遍的方法,更換新的
昨晚因為做了一個大批量的刪除,用的delete。大約用了6個小時,導致了回滾段自動擴展到將近30個G。(以后記著,做大批量刪除的時候,一定要用腳本實現,分批量提交事務。那樣就不會占用太多的UNDO表空間了?。?
從網上搜了一個普遍的方法,更換新的UNDO表空間,然后刪除原來的UNDO表空間,釋放出磁盤容量。
具體方法如下:(參考網上的資料)
SQL>select segment_name, owner, tablespace_name, status from dba_rollback_segs;
SEGMENT_NAME OWNER TABLESPACE_NAME STATUS
------------------------------ ------ ------------------------------ ----------------
SYSTEM SYS SYSTEM ONLINE
_SYSSMU1$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU2$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU3$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU4$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU5$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU6$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU7$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU8$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU9$ PUBLIC UNDOTBS1 ONLINE
_SYSSMU10$ PUBLIC UNDOTBS1 ONLINE
11 rows selected.
SQL>CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'd:/oracle/oradata/oradev/UNDOTBS2.dbf' SIZE 50M
注:UNDOTBS2為新建回滾段名稱,可自擬。'd:/oracle/oradata/oradev/UNDOTBS2.dbf' 是表空間數據文件地址,可根據情況設定。
SQL> alter system set undo_tablespace=undotbs2 scope=both;
這樣系統默認UNDO表空間就是新建的undotbs2了。
SQL>drop rollback segment undotbs1;
SQL>drop tablespace undotbs1 including contents and datafiles;
下面是網友提供的一個小技巧:
調小了回滾段后,在imp導入數據時,提示回滾段無法擴展的錯誤。
解決方法:在imp時,加入參數 commit=y,直接提交,避免占用大回滾段。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com