【Oracle Database】パフォーマンスダウンに備えて取得する「4つ」の重要情報データベースサポート最前線の現場から(9)(3/3 ページ)

» 2017年03月03日 05時00分 公開
[大野高志株式会社アシスト]
前のページへ 1|2|3       

統計情報の履歴

 統計情報は、DBMS_STATSANALYZEのどちらかで取得できます。DBMS_STATSコマンドでは、(デフォルトの設定では)31日前までリストアが可能なように、SYSAUX表領域に以前の統計情報の履歴が保持されます。もしANALYZEで取得するならば、「DBMS_STATS」パッケージで取得するよう変更します(2017年現在、ANALYZEは下位互換のために残されている機能です。そのため、これから使うならば「DBMS_STATS」が推奨されます)。

 意図しないSQLのパフォーマンスダウンが発生し、実行計画の変化による影響が疑われる場合には、例えば、「過去の統計情報にリストアする」と改善されるか、などを調べるわけです。

 統計情報のリストア手順は以下の通りです。

## LAST_ANALYZED を確認
 
SQL> SELECT TO_CHAR(LAST_ANALYZED,’YYYY-MM-DD HH24:MI:SS') FROM DBA_TABLES
  2  WHERE OWNER='SCOTT' AND TABLE_NAME='EMP'; 
 
LAST_ANALYZED
-------------------
2015-11-25 15:53:13
 
LAST_ANALYZED を確認
## 統計情報の履歴を確認
 
SQL> SELECT OWNER, TABLE_NAME, STATS_UPDATE_TIME
  2  FROM DBA_TAB_STATS_HISTORY WHERE TABLE_NAME='EMP'; 
 
OWNER      TABLE_NAME STATS_UPDATE_TIME
---------- ---------- ---------------------------------------------
SCOTT      EMP        15-11-17 16:50:00.228573 +09:00
SCOTT      EMP        15-11-17 17:17:03.531041 +09:00
SCOTT      EMP        15-11-25 15:53:13.373593 +09:00 
 
統計情報の履歴を確認
## パフォーマンスダウン発生前の統計に戻す(戻したい統計が使われていた時間を指定)
 
SQL> exec DBMS_STATS.RESTORE_TABLE_STATS(-
     ownname=>'SCOTT',tabname=>'EMP',as_of_timestamp=>'15-11-17 17:20:00.000000'); 
 
PL/SQLプロシージャが正常に完了しました。 
 
パフォーマンスダウン発生前の統計に戻す(戻したい統計が使われていた時間を指定)
## 過去の統計に戻っていることを確認
 
SQL> SELECT TO_CHAR(LAST_ANALYZED,’YYYY-MM-DD HH24:MI:SS') FROM DBA_TABLES 
  2  WHERE OWNER='SCOTT' AND TABLE_NAME='EMP';  
LAST_ANALYZED
-------------------
2015-11-17 17:17:03
 
過去の統計に戻っていることを確認

 なお、表の作成や更新処理が多く、「自動オプティマイザ統計収集」によって多くの表で統計情報が収集される環境では、意図せずSYSAUXが肥大化してしまうケースがあります。この場合は、手動で統計情報の履歴を削除したり、保持期間を31日から変更したりする対応が必要となります。

まとめ:再発防止のためには普段からの備えが大事

 今回紹介した情報をきちんと取得しておくことで、トラブルシューティングのための原因特定に至る確率が高まります。トラブルは起きないことが一番ですが、起きてしまったときに正しく迅速に対処するための準備をしておくことが、再発防止の観点でとても重要です。

筆者紹介

大野高志

株式会社アシスト サービス事業部 サポートセンター所属。2007年にアシスト入社後、Oracle Databaseのサポート業務に従事。現在はサポート業務の傍ら、未解決のトラブルを1つでも多く減らせるよう、サポートセンターに蓄積されている調査のノウハウを社内外に伝える活動を行っている。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。