2014年8月19日火曜日

[Oracle] Undo表領域を縮小(再作成)する方法

OracleのUndo表領域は放っておくとどんどん大きくなってしまうようで、
私が取り扱っている環境でも30GB超になっていました。

よって縮小(というか再作成)する方法を覚書。


1) Undo表領域の情報を確認
SELECT TS.TABLESPACE_NAME, DF.FILE_NAME FROM DBA_TABLESPACES TS
INNER JOIN DBA_DATA_FILES DF
ON TS.TABLESPACE_NAME = DF.TABLESPACE_NAME
WHERE CONTENTS = 'UNDO'
ORDER BY DF.FILE_ID;

2) 一時的にUndo表領域を作成(サイズは適当に)
CREATE UNDO TABLESPACE temp_undotbs
DATAFILE 'dbfファイルのパス'
SIZE 100M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

3) 手順2で作成したUndo表領域に切り替え
ALTER SYSTEM SET UNDO_TABLESPACE = 'temp_undotbs';

4) 手順1で確認したUndo表領域を削除
DROP TABLESPACE undotbs1;

5) Undo表領域を再作成(サイズは適当に)
CREATE UNDO TABLESPACE undotbs1
DATAFILE 'dbfファイルのパス'
SIZE 1024M REUSE AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

6) 再作成したUndo表領域に切り替え
ALTER SYSTEM SET UNDO_TABLESPACE = 'undotbs1';

7) 一時的に作成したUndo表領域を削除
DROP TABLESPACE temp_undotbs;


8) 一時作成したtemp_undotbsのデータファイルはOS上に残ってしまうようなので
   手動で削除(Windowsの場合はOracleの再起動が必要?)

0 件のコメント:

コメントを投稿