web-dev-qa-db-ja.com

OracleUNDO表領域のリバランス/移動または縮小

Oradata01とoradata02のスペースが不足しています。 oradata03で移動またはリバランスする方法はありますか?

/opt/Oracle/oradata01/x/undotbs01.dbf   4   100 %   
/opt/Oracle/oradata02/x/undotbs02.dbf   17  100 %   
/opt/Oracle/oradata03/x/undotbs03.dbf   25  1 % 
1
r0tt

12cを使用している場合は、簡単です。データファイルをオンラインで移動するだけです。

SQL> ALTER DATABASE MOVE DATAFILE '/opt/Oracle/oradata02/x/undotbs02.dbf' TO '/opt/Oracle/oradata03/x/undotbs02.dbf';

下位バージョンを使用していて、インスタンスを停止する余裕がある場合は、

1)データベースのシャットダウン

2)osコマンドでデータファイルをoradata03に移動します

3)データベースをマウントする

4)データファイルの名前を変更します

SQL> ALTER DATABASE rename file '/opt/Oracle/oradata02/x/undotbs02.dbf' TO '/opt/Oracle/oradata03/x/undotbs02.dbf';

インスタンスを停止できない場合は、別のUNDO表領域を作成して、オンラインで切り替えることができます。 https://docs.Oracle.com/cd/B28359_01/server.111/b28310/undo005.htm#ADMIN1147

データファイルのサイズを変更することもできます。データファイルの最後にアクティブ/保持の元に戻すセグメントがない場合は機能します。

1
Eduard Okhvat

新しい元に戻すTを作成し、古いものを削除するだけです。

show parameter undo

名前タイプ値


undo_management string AUTO

undo_retention integer 900

undo_tablespace string UNDOTBS1

SQL> CREATE UNDO TABLESPACE undotbs2 DATAFILE '+DATA_NEWPATH' SIZE 100M AUTOEXTEND ON;

http://www.Oracle-base.com/articles/9i/AutomaticUndoManagement.php

SQL> alter system set undo_tablespace=undotbs2;

その後、UNDOTBS1を削除できます。 詳細についてはこちらをご覧ください。

よろしく

1
Felix