重建復原資料表空間,重建滾資料表空間

來源:互聯網
上載者:User

重建復原資料表空間,重建滾資料表空間

 作者:iamlaosong

因為意外原因(掉電,人為殺死進程)導致復原段中的資料沒有提交,復原段中保留大量資料無法去除,我想到的辦法就是重建資料表空間。當Oracle中當讀寫大批量資料時候,如果不及時提交任務,會導致復原資料表空間的迅速增加,復原資料表空間會一直增大,而不自動釋放它佔用的硬碟空間,(當然,幾個小時後,系統會自動釋放它自身的佔用率,但不會釋放它所佔用的硬碟空間),這時,也可以通過重建資料表空間來解決。

1、重建復原資料表空間方法,

思路:先建立復原資料表空間,再重新定向到建立的復原資料表空間,然後刪除掉原來的復原資料表空間。如果覺得有必要,可以再重建原來的資料表空間,刪除建立的資料表空間。

    -- 建立備用undo資料表空間

    create undo tablespace undotbs2 datafile '/opt/app/oracle/oradata/orcl/undotbs02.dbf' size 100m

   --  切換undo資料表空間,使系統使用建立的復原資料表空間

    alter system set undo_tablespace=undotbs2 scope=spfile

   --關閉服務

    shutdown immediate

    --重新啟動服務

    startup

    -- 刪除掉原來的混滾資料表空間

    drop tablespace undotbs1 including contents and datafiles;

     -- 建立原undo資料表空間

    create undo tablespace undotbs1 datafile '/opt/app/oracle/oradata/orcl/undotbs01.dbf' size 1000m;

     -- 切換undo資料表空間

    alter system set undo_tablespace=undotbs1 scope=spfile;

    -- 關閉重起並把備用undo資料表空間drop

    shutdown immediate

    startup

    drop tablespace undotbs2 including contents and datafiles;

 

2、復原段無法刪除的處理

 

癥狀:

刪除復原段資料表空間(drop tablespace undotbs1 including contents)的時候報下面的錯

ORA-01548: 已找到活動回退段'_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;(進行這部操作的時候會報下面的錯):

        ORA-01548: 已找到活動回退段'_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 啟動服務

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 關閉服務shutdown immediate,並且用下面的命令重新啟動服務

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 關閉伺服器shutdown immediate,重新啟動伺服器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.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.