Oracle快速替換UNDO表空間方法

UNDO表空間不夠用,有兩種處理方法

1、擴大表空間大小;

2、創建新的UNDO表空間,刪除原來的

一、 初步操作

確認UNDO表空間名稱

select name from v$tablespace; 

檢查數據庫UNDO表空間佔用空間情況以及數據文件存放位置;

select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1'; 

二、 擴大UNDO表空間

alter   database  UNDOTBS1 datafile   '/opt/oracle/oradata/inms/undotbs02.dbf'   resize   4000M; 

三、 創建新的UNDO表空間,刪除原來的

1、創建新的UNDO表空間,並設置自動擴展參數;

create undo tablespace undotbs2 datafile '/oradata/oradata/ddptest/UNDOTBS1.dbf' size    2 1000m reuse autoextend on next 800m maxsize unlimited; 

2、動態更改spfile配置文件;

alter system set undo_tablespace=undotbs2 scope=both; 

3、刪除原有的UNDO表空間;

drop tablespace undotbs1 including contents; 

4、確認刪除是否成功;

select name from v$tablespace; 

5、確定$ORACLE_HOME/dbs/spfileoinms.ora內容是否發生變更: 

$more spfileoinms.ora 

*.undo_management='AUTO'

*.undo_retention=10800

*.undo_tablespace='UNDOTBS2' 

如果沒有發生變更請執行如下語句: 

SQL> create pfile from spfile; 

File created. 

6、刪除原UNDO表空間的數據文件,其文件名爲步驟中執行的結果。 

#rm $ORACLE_BASE/oradata/$ORACLE_SID/undotbs01.dbf

四、 結論

根據實際情況,採用擴大undo表空間的方式只能支撐一段時間。運行一段時間之後,undo表空間數據文件終會達到上限。因此,採用第二中方案進行處理。可以使用一下腳本,交替替換undotbs1undotbs2表空間的方式,可以快速解決問題。

(一) 腳本1:用undotbs1替換undotbs2表空間

create undo tablespace undotbs1 datafile '/u01/oracle/oradata/orcl/UNDOTBS1.dbf' size 512m reuse autoextend on next 512m maxsize unlimited;

 

alter system set undo_tablespace=undotbs1 scope=both;

 

drop tablespace undotbs2 including contents;

 

rm '/u01/oracle/oradata/orcl/UNDOTBS2.dbf'

(二) 腳本2:用undotbs2替換undotbs1表空間

create undo tablespace undotbs2 datafile '/u01/oracle/oradata/orcl/UNDOTBS2.dbf' size 512m reuse autoextend on next 512m maxsize unlimited;

 

alter system set undo_tablespace=undotbs2 scope=both;

 

drop tablespace undotbs1 including contents;

 

rm '/u01/oracle/oradata/orcl/UNDOTBS1.dbf'

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章