因?yàn)橐馔庠颍ǖ綦?,人為殺死進(jìn)程)導(dǎo)致回滾段中的數(shù)據(jù)沒有提交,回滾段中保留大量數(shù)據(jù)無法去除,我想到的辦法就是重建表空間。當(dāng)Oracle中當(dāng)讀寫大批量數(shù)據(jù)時(shí)候,如果不及時(shí)提交任務(wù),會(huì)導(dǎo)致回滾表空間的迅速增加,回滾表空間會(huì)一直增大,而不自動(dòng)釋放它占
因?yàn)橐馔庠颍ǖ綦?,人為殺死進(jìn)程)導(dǎo)致回滾段中的數(shù)據(jù)沒有提交,回滾段中保留大量數(shù)據(jù)無法去除,我想到的辦法就是重建表空間。當(dāng)Oracle中當(dāng)讀寫大批量數(shù)據(jù)時(shí)候,如果不及時(shí)提交任務(wù),會(huì)導(dǎo)致回滾表空間的迅速增加,回滾表空間會(huì)一直增大,而不自動(dòng)釋放它占用的硬盤空間,(當(dāng)然,幾個(gè)小時(shí)后,系統(tǒng)會(huì)自動(dòng)釋放它自身的占用率,但不會(huì)釋放它所占用的硬盤空間),這時(shí),也可以通過重建表空間來解決。
1、重建回滾表空間方法,
思路:先新建回滾表空間,再重新定向到新建的回滾表空間,然后刪除掉原來的回滾表空間。如果覺得有必要,可以再重建原來的表空間,刪除新建的表空間。
-- 創(chuàng)建備用undo表空間
create undo tablespace undotbs2 datafile '/opt/app/oracle/oradata/orcl/undotbs02.dbf' size 100m
-- 切換undo表空間,使系統(tǒng)使用新建的回滾表空間
alter system set undo_tablespace=undotbs2 scope=spfile
--關(guān)閉服務(wù)
shutdown immediate
--重新啟動(dòng)服務(wù)
startup
-- 刪除掉原來的混滾表空間
drop tablespace undotbs1 including contents and datafiles;
-- 創(chuàng)建原undo表空間
create undo tablespace undotbs1 datafile '/opt/app/oracle/oradata/orcl/undotbs01.dbf' size 1000m;
-- 切換undo表空間
alter system set undo_tablespace=undotbs1 scope=spfile;
-- 關(guān)閉重起并把備用undo表空間drop
shutdown immediate
startup
drop tablespace undotbs2 including contents and datafiles;
2、回滾段無法刪除的處理
癥狀:
刪除回滾段表空間(drop tablespace undotbs1 including contents)的時(shí)候報(bào)下面的錯(cuò)
ORA-01548: 已找到活動(dòng)回退段'_SYSSMU1$',終止刪除表空間
處理過程:
1 create undo tablespace undotbs2 datafile '/opt/app/oracle/oradata/orcl/undotbs02.dbf' size 100m;
alter system set undo_tablespace=undotbs2;
drop tablespace undotbs1 including contents;(進(jìn)行這部操作的時(shí)候會(huì)報(bào)下面的錯(cuò)):
ORA-01548: 已找到活動(dòng)回退段'_SYSSMU1$',終止刪除表空間
2 修改文件/opt/app/oracle/admin/orcl/pfile/init.ora.913201117448,如下:
undo_management=manual
undo_retention=10800
undo_tablespace=undotbs2
_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
3 啟動(dòng)服務(wù)
startup pfile=/opt/app/oracle/admin/orcl/pfile/init.ora.913201117448
4 刪除表空間
drop tablespace undotbs1 including contents;
create undo tablespace undotBS1 datafile '/opt/app/oracle/oradata/orcl/undotbs01.dbf' size 1000m;
5 修改init.ora.913201117448,如下:
undo_management=auto
undo_retention=10800
undo_tablespace=undotBS1
#_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
6 關(guān)閉服務(wù)shutdown immediate,并且用下面的命令重新啟動(dòng)服務(wù)
startup pfile=/opt/app/oracle/admin/orcl/pfile/init.ora.913201117448
7 拷貝spfile文件,原先的spfile文件做好備份
create spfile='/opt/app/oracle/product/10.1.0/db_1/dbs/spfileorcl.ora' from pfile='/opt/app/oracle/admin/orcl/pfile/init.ora.913201117448'
8 關(guān)閉服務(wù)器shutdown immediate,重新啟動(dòng)服務(wù)器startup,刪除新建表空間,即可。
drop tablespace undotbs2 including contents and datafiles;
select segment_name,status,tablespace_name from dba_rollback_segs;
SEGMENT_NAME STATUS TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
SYSTEM ONLINE SYSTEM
_SYSSMU1$ ONLINE UNDOTBS1
_SYSSMU2$ ONLINE UNDOTBS1
_SYSSMU3$ ONLINE UNDOTBS1
_SYSSMU4$ ONLINE UNDOTBS1
_SYSSMU5$ ONLINE UNDOTBS1
_SYSSMU6$ ONLINE UNDOTBS1
_SYSSMU7$ ONLINE UNDOTBS1
_SYSSMU8$ ONLINE UNDOTBS1
_SYSSMU9$ ONLINE UNDOTBS1
_SYSSMU10$ ONLINE UNDOTBS1
11 rows selected.
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com