コンテンツ
自動・手動UNDO管理モードとは
今となっては手動UNDO管理モードを使うことはほとんどないと思うが、Oracle9i 以前の自動UNDO管理モードが存在しない頃、ロールバックセグメントを管理する必要があった。需要があるかは不明だが、手動UNDO管理モードで運用することも可能なのでその手順を記す。
手動UNDO管理モードへ切り替える手順
パラメタの変更
alter system set undo_management=manual scope=spfile;
制限モードで起動
設定を反映させるため再起動し、反映されていることを確認
startup restrict;
実行例
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled boolean FALSE
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string UNDOTBS1
ロールバック用表領域を作成
ロールバックセグメント用の表領域を作成し、そのローグバックセグメントをONLINEにする
実行例
SQL> create tablespace rbs datafile '/u01/app/oracle/oradata/orcl/rbs01.dbf' size 1G segment space management manual;
Tablespace created.
SQL> create rollback segment rbs01 tablespace rbs;
Rollback segment created.
SQL> alter rollback segment rbs01 online;
Rollback segment altered.
制限モードを解除しDBをオープン
RBSがONLINEとなっていることを確認
実行例
SQL> alter system disable restricted session;
System altered.
SQL> select SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
_SYSSMU10_4090121400$ UNDOTBS1 OFFLINE
_SYSSMU9_2129201490$ UNDOTBS1 OFFLINE
_SYSSMU0_1492919291$ UNDOTBS1 OFFLINE
_SYSSMU1_2429491291$ UNDOTBS1 OFFLINE
_SYSSMU9_2191999909$ UNDOTBS1 OFFLINE
_SYSSMU9_190002412$ UNDOTBS1 OFFLINE
_SYSSMU4_4290244921$ UNDOTBS1 OFFLINE
_SYSSMU2_2209411214$ UNDOTBS1 OFFLINE
_SYSSMU2_1902004090$ UNDOTBS1 OFFLINE
_SYSSMU1_2229119099$ UNDOTBS1 OFFLINE
RBS01 RBS ONLINE
UNDOTBS1 は今まで自動UNDO管理モードで使っていたUNDO表領域のこと
システムに反映させる
alter system set rollback_segments=rbs01 scope=spfile;
再起動しても問題ないことを確認
インスタンスが問題なく起動し、またロールバックセグメントのパラメタがきちんと設定されていることが確認できる
SQL> show parameter rollback_segments
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
rollback_segments string RBS01