小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【Oracle】11gでUNDO表領域を縮小するため削除して作り直す

f:id:replication:20150214095559p:plain

はじめに

Oracle 11gでUNDO表領域が肥大化していたので、縮小するために再作成を実施しました。

石丸製麺 半生讃岐うどん包丁きり 3人前(300g)×6袋入り
石丸製麺 (2010-12-13)
売り上げランキング: 3,571

環境
  • Windows Server 2008 R2
  • Oracle Database 11g EE 11.2.0.1.0
UNDO表領域を縮小する

UNDO表領域(UNDOTBS1)を削除してみる。

DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
>ORA-30013: UNDO表領域'UNDOTBS1'は使用中です

すると、ORA-30013のエラーが出て怒られる。

代わりとなるUNDO表領域(UNDOTBS2)をあたらしく作成する。

CREATE UNDO TABLESPACE UNDOTBS2
DATAFILE 'C:\oradata\orcl\UNDOTBS02.DBF' SIZE 4M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 1000M;
>表領域が作成されました。

Oracleを一度停止します。

shutdown immediate

再起動し、マウントします。

startup mount

データベースをオープンします。

alter database open;

UNDO表領域をUNDOTBS1→UNDOTBS2へ切り替える。

alter system set undo_tablespace = UNDOTBS2;

ようやく、元の表領域を削除することができます。

DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
>表領域が削除されました。

以下のクエリを実行すると、表領域が切り替わったことが確認できます。

col tablespace_name for a10
col file_name for a60
col mb for 999999
select tablespace_name,file_name,bytes/1024/1024 mb from dba_data_files order by tablespace_name;

肥大した UNDO 表領域を縮小する - ablog肥大した UNDO 表領域を縮小する - ablog