Oracle に接続する。
$ sqlplus / as sysdba
新しいUNDO表領域を一時的に作成する。
SQL> CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/u02/oradata/orcl/undotbs02_01.dbf' SIZE 4G;
新しく作ったUNDO領域に切り替える。
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS2';
元のUNDO表領域を削除する。
SQL> ALTER TABLESPACE UNDOTBS1 OFFLINE NORMAL; SQL> shutdown immediate; SQL> startup SQL> DROP TABLESPACE UNDOTBS1; DROP TABLESPACE UNDOTBS1 * ERROR at line 1: ORA-01548: active rollback segment '_SYSSMU2$' found, terminate dropping tablespace
ありゃ、怒られた。
ぐぐって、
http://arjudba.blogspot.com/2008/08/ora-01548-active-rollback-segment.html
を参考に以下の手順を実行してみた。
PFILE を作成する。
$ sqlplus / as sysdba SQL> create pfile='/home/oracle/pfile.tmp' from spfile; SQL> exit
PFILE を編集する。
$ cd /home/oracle $ vi pfile.tmp *.undo_management='manual' _offline_rollback_segments=(_SYSSMU2$) # ORA-01548 で怒られたロールバックセグメントを指定する
編集したPFILEでデータベースをオープンする。
$ sqlplus / as sysdba SQL> shutdown immediate SQL> startup mount pfile='/home/oracle/pfile.tmp'; SQL> alter database open;
ロールバックセグメントを削除する。
SQL> drop rollback segment "_SYSSMU2$"; * ERROR at line 1: ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [kddummy_blkchk], [2], [25], [38508], [], [], [], []
お、なんかエラーが。。。そのまま進む。
UNDO表領域を削除する。
SQL> drop tablespace UNDOTBS1 including contents;
Tablespace dropped.
ふ〜、やっと削除できた。
UNDO領域を作成する。
SQL> CREATE SMALLFILE UNDO TABLESPACE UNDOTBS1 DATAFILE '/u02/oradata/orcl/undotbs01.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs02.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs03.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs04.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs05.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs06.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs07.dbf' SIZE 4096M REUSE AUTOEXTEND OFF; SQL> ALTER TABLESPACE UNDOTBS1 ADD DATAFILE '/u02/oradata/orcl/undotbs08.dbf' SIZE 4096M REUSE AUTOEXTEND OFF;
インスタンスを再起動する。
SQL> shutdown immediate
SQL> startup
UNDO領域を作成したほうに切り替える。
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS1';
一時的に作成したUNDO表領域を削除する。
SQL> drop tablespace UNDOTBS2 including contents;