AWS
oracle
RDS

AWS RDS Oracle Data Pump関連dmp , logファイル一括削除

概要

AWSのRDS利用している場合、OSにログインできないです。oracle のData Pump とDBMS_FILE_TRANSFER 使えばデータの移動できますが、不要になったDMPファイル、LOGファイルを削除したいです。あるdirectoryの下のファイルを一括削除のprocedureを作成してみました。

Procedure

例: DATA_PUMP_DIRの下のファイル一括削除

DEClARE
  directory_object  VARCHAR2(100);
BEGIN  
  directory_object:='DATA_PUMP_DIR';
  FOR vRec IN (
    SELECT FILENAME 
      FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR(directory_object))
     WHERE TYPE='file' 
     ORDER BY mtime
  ) LOOP
        utl_file.fremove(directory_object,vRec.FILENAME);
  END LOOP;
END;

動作確認

削除前

SELECT FILENAME
     , TYPE
     , FILESIZE
     , MTIME
  FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) 
 ORDER BY mtime;

image.png

実行

SQL> DEClARE
  2    directory_object  VARCHAR2(100);
  3  BEGIN
  4    directory_object:='DATA_PUMP_DIR';
  5    FOR vRec IN (
  6      SELECT FILENAME
  7        FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR(directory_object))
  8       WHERE TYPE='file'
  9       ORDER BY mtime
 10    ) LOOP
 11             utl_file.fremove(directory_object,vRec.FILENAME);
 12    END LOOP;
 13  END;
 14  /

PL/SQLプロシージャが正常に完了しました。

実行後

SELECT FILENAME
     , TYPE
     , FILESIZE
     , MTIME
  FROM table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) 
 ORDER BY mtime;

image.png

↑対象ファイル削除されていること確認できました。
※フォルダー内全ファイル削除なので、使う場合ご注意ください。