tabimoba.net

とあるエンジニアの雑記帳

AWS RDS for Oracleでメンテナンスウインドウの開始時刻を変更する

※ここでの「メンテナンスウインドウ」とは、RDSの機能としてのメンテナンスウインドウではなく、Oracle Databaseとしてのメンテナンスウインドウを指しています。

RDS for OracleのスケジューラーはEST5EDT(米国東部標準時)であるため、設定された時刻の13時間遅れでメンテナンスタスク(統計情報収集等)が動作します。

このため、スケジューラーのタイムゾーンの変更手順について、以下に記載します。あわせて、メンテナンスタスク(メンテナンスウインドウ)のスケジュール変更手順も記載します。

1.スケジューラーのタイムゾーンを変更する

デフォルトタイムゾーンの変更

exec DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('default_timezone','Asia/Tokyo');

変更後の結果確認

SELECT * FROM dba_autotask_window_clients;

なお、EST5EDTのメンテナンスウインドウが残っている場合は、次のSQLを実行します。

exec DBMS_SCHEDULER.DISABLE(name=>'SYS.<メンテナンスウインドウ名>');
exec DBMS_SCHEDULER.ENABLE(name=>'SYS.<メンテナンスウインドウ名>');

2.メンテナンウインドウのスケジュールを変更する

現在の設定値を確認

SELECT * FROM dba_scheduler_windows;

スケジュールを変更

exec DBMS_SCHEDULER.DISABLE(name => 'SYS.<メンテナンスウインドウ名>');
exec DBMS_SCHEDULER.SET_ATTRIBUTE(name => 'SYS.<メンテナンスウインドウ名>', attribute => 'REPEAT_INTERVAL', value => 'freq=<実行間隔(daily等)>; byday=<曜日(WED等)>; byhour=<時(24h表記)>; byminute=<分>; bysecond=<秒>');
exec DBMS_SCHEDULER.ENABLE(name => 'SYS.<メンテナンスウインドウ名>');

変更後の設定値を確認

SELECT * FROM dba_scheduler_windows;

参考