Amazon Relational Database Service (Amazon RDS) Oracle DB インスタンスをセットアップしましたが、想定よりも大きくなり続けています。これはなぜですか。対応方法を教えてください。

一時テーブルスペースは、データベース機能に必要な操作に対応するために大幅に拡張されることがあります。RDS Oracle データベースはその作成時、すべてのテーブルスペースに対して自動拡張が有効になっています。つまり、各テーブルスペースは、データ追加が不要になるか、割り当てられたストレージを使い切るまで、増え続けるデータに対応して拡張を続けます。

この問題を解決するには、以下の手順に従います。

テーブルスペースのデータに割り当てられている領域のサイズを調べる

1.    データに割り当てられている領域のサイズと一時ファイルに割り当てられている領域のサイズを調べて比較します。

SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME;
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM dba_temp_files GROUP BY TABLESPACE_NAME; 

2.    データベースに割り当てられている空き領域のサイズを調べます。

SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;

3.    オンライン REDO ログに割り当てられている領域のサイズを調べます。

SELECT SUM(bytes*members) bytes FROM v$log;

4.    コントロールファイルに割り当てられている領域のサイズを調べます。

SELECT SUM(block_size * file_size_blks) bytes FROM v$controlfile;

5.    監査 ADUMP とトレース/ログファイル BDUMP ディレクトリに割り当てられているサイズを調べます。

SELECT * FROM DBA_DIRECTORIES;

SELECT * FROM table(rdsadmin.rds_file_util.listdir('ADUMP'));

SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP'));

SELECT SUM(FILESIZE)/1024/1024 as total_mb FROM table(rdsadmin.rds_file_util.listdir('ADUMP'));

SELECT SUM(FILESIZE)/1024/1024 as total_mb FROM table(rdsadmin.rds_file_util.listdir('BDUMP'));

必要以上のストレージを消費しているテーブルスペースを縮小する

1.    想定よりも多くのストレージを使用している場合は、ファイルのサイズをより適切な値に変更します。たとえば、一時テーブルスペースが 100 GB のストレージを消費している場合は、以下のコマンドを実行して、一時テーブルスペースを 10 GB に縮小します。

ALTER TABLESPACE temp RESIZE 10g;

注意: このコマンドは、テーブルスペースがすでに 10 GB のしきい値を超えている場合は失敗します。コマンドの resize パラメーターの値を少しずつ増やして再試行します。または、以下のコマンドの実行を試行します。

ALTER TABLESPACE temp SHRINK SPACE KEEP 10g;

2.    値を少しずつ増やしてサイズ変更することを選択しない場合は、一時セグメントが現在割り当てられているセッションを強制終了します。一時セグメントが割り当てられているセッションを特定するには、以下のクエリを実行します。

SELECT * FROM v$sort_usage;

3.    セッションを強制終了することを選択しない場合は、他の手順を検討します。たとえば、別のデフォルトの temp2 テーブルスペースの作成、元の一時テーブルスペースのドロップ、必要なパラメーターを使用した新しいデフォルトの一時テーブルスペースの再作成、temp2 テーブルスペースのドロップなどが考えられます。

4.    一時テーブルスペース以外の場合は、セグメントを他に移動してデータファイルの末尾の領域を解放することで、データファイルを縮小できます。オンライン REDO ログに割り当てられたテーブルスペースを操作する場合、このプロセスは面倒になることがあります。また、スペースが自動的にクリアされてデータファイルの縮小プロセスを完了できるようになるまで少し時間がかかることがあります。

5.    現在のアーカイブログおよびトレースファイル保持の設定を表示するには、以下のコマンドを実行します。

SET SERVEROUTPUT ON;
EXEC rdsadmin.rdsadmin_util.show_configuration; 

6.    インスタンスのアーカイブログファイルのサイズを取得するには、以下のコマンドを実行します。

select nvl(sum(BLOCKS * BLOCK_SIZE),0) bytes from V$ARCHIVED_LOG
  where FIRST_TIME >= SYSDATE-(replace_archivelog_retention_hours/24) and DEST_ID=1; 

7.    領域を解放するために削除できる不要な .dmp ファイルがあるかどうか確認します。data_pump_dir 内でインポート後にクリーンアップされていない .dmp ファイルがあるかどうか確認するには、以下のクエリを実行します。

SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER by mtime;

このクエリで .dmp ファイルが見つかった場合は、以下のクエリにファイル名を指定して、ファイルを削除できます。

EXEC utl_file.fremove('DATA_PUMP_DIR','[file name]');

このページは役に立ちましたか? はい | いいえ

AWS サポートナレッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2015 年 10 月 30 日

更新: 2018 年 5 月 4 日