Oracle Databaseの自動メンテナンスタスクとは、データベースのメンテナンスを自動的に実施してくれる機能です。
自動メンテナンスタスクには、統計情報の取得、SQLチューニング分析、セグメントアドバイザがあります。
今回はこれらの自動メンテナンスタスクの確認方法を紹介します。
Oracle自動メンテナンスタスクの状態確認
Oracle Database上でどのメンテナンスタスクが有効になっているか、DBA_AUTOTASK_CLIENT ビューを参照すると確認できます。
SQL> select client_name,window_group,status from dba_autotask_client;
CLIENT_NAME WINDOW_GROUP STATUS
----------------------------------- -------------------- --------
sql tuning advisor ORA$AT_WGRP_SQ ENABLED
auto optimizer stats collection ORA$AT_WGRP_OS ENABLED
auto space advisor ORA$AT_WGRP_SA ENABLED
デフォルトでは全てのメンテナンスタスクが有効になっていますが、私は基本的に自身でSQLチューニングや監視を行うので“sql tuning advisor”と“auto space advisor”はいつも無効化しています。
自動メンテナンスタスクの無効化方法は以下となります。
SQL> BEGIN
2 DBMS_AUTO_TASK_ADMIN.DISABLE(
3 client_name => 'sql tuning advisor',
4 operation => NULL,
5 window_name => NULL);
6 DBMS_AUTO_TASK_ADMIN.DISABLE(
7 client_name => 'auto space advisor',
8 operation => NULL,
9 window_name => NULL);
10 END;
11 /
PL/SQL procedure successfully completed.
SQL> select client_name,window_group,status from dba_autotask_client;
CLIENT_NAME WINDOW_GROUP STATUS
----------------------------------- -------------------- --------
sql tuning advisor ORA$AT_WGRP_SQ DISABLED
auto optimizer stats collection ORA$AT_WGRP_OS ENABLED
auto space advisor ORA$AT_WGRP_SA DISABLED
自動メンテナンスタスクがどのウィンドウに所属しているかを確認
DBA_SCHEDULER_WINGROUP_MEMBERS を参照することで、[auto optimizer stats collection]タスクがどのWINDOWに属しているかが確認できます。
SQL> select window_name, window_group_name from dba_scheduler_wingroup_members
2 where window_group_name = 'ORA$AT_WGRP_OS';
WINDOW_NAME WINDOW_GROUP_NAME
-------------------- --------------------
MONDAY_WINDOW ORA$AT_WGRP_OS
TUESDAY_WINDOW ORA$AT_WGRP_OS
WEDNESDAY_WINDOW ORA$AT_WGRP_OS
THURSDAY_WINDOW ORA$AT_WGRP_OS
FRIDAY_WINDOW ORA$AT_WGRP_OS
SATURDAY_WINDOW ORA$AT_WGRP_OS
SUNDAY_WINDOW ORA$AT_WGRP_OS
メンテナンスウィンドウの確認
DBA_SCHEDULER_WINDOWS を確認することで、それぞれのメンテナンスウィンドウの設定(ウィンドウの起動スケジュール)を確認することが出来ます。
SQL> select window_name,repeat_interval,duration,enabled from dba_scheduler_windows;
WINDOW_NAME REPEAT_INTERVAL DURATION ENABL
-------------------- ---------------------------------------------------------------------- -------------------- -----
MONDAY_WINDOW freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0 +000 04:00:00 TRUE
TUESDAY_WINDOW freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0 +000 04:00:00 TRUE
WEDNESDAY_WINDOW freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0 +000 04:00:00 TRUE
THURSDAY_WINDOW freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0 +000 04:00:00 TRUE
FRIDAY_WINDOW freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0 +000 04:00:00 TRUE
SATURDAY_WINDOW freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0 +000 20:00:00 TRUE
SUNDAY_WINDOW freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0 +000 20:00:00 TRUE
WEEKNIGHT_WINDOW freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0 +000 08:00:00 FALSE
WEEKEND_WINDOW freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0 +002 00:00:00 FALSE
9 rows selected.