【Oracle Database】パフォーマンスダウンに備えて取得する「4つ」の重要情報:データベースサポート最前線の現場から(9)(3/3 ページ)
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle Databaseのパフォーマンスダウンに備える「定常的に取得しておくべき4つの情報」を紹介します。
統計情報の履歴
統計情報は、DBMS_STATSかANALYZEのどちらかで取得できます。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
## 統計情報の履歴を確認 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つでも多く減らせるよう、サポートセンターに蓄積されている調査のノウハウを社内外に伝える活動を行っている。
関連記事
- 「新機能」「廃止機能」「サポート状況」から見たユーザーにとってのOracle Database 12c
Oracle Database導入を実施ならびに支援するサービスプロバイダという筆者の立場から、ユーザーにとっての新バージョンの意義を考えながら、新機能や廃止された機能などを紹介します。 - オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
米オラクルのラリー・エリソンCTOが、同社の年次イベントで今後のクラウド事業の行方を確約する「Oracle Cloud、6つの設計目標」を掲げました。同時に発表された基幹製品「Oracle Database 12c」の次期バージョンのポイントと共に、そこにどんな狙いがあるかを振り返ります。 - オラクルのエリソン会長、「Oracle Database」最新版や多数のクラウドイノベーションを発表
米オラクルのラリー・エリソン氏は「Oracle OpenWorld 2016」の開幕基調講演を行い、同社のクラウドコンピューティングプラットフォーム全般にわたる多くのイノベーションを披露した。 - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】 - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。 - カーソル・エラーとオブジェクトの問題切り分け
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - IF文のネスト地獄から抜け出せるMERGE文
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.