写真提供:マイナビニュース

写真拡大

本連載では「Oracle Database」と「AWS」という切り口で、設計のポイントや可用性、バックアップなどについて解説をしてきた。最終回である今回は、Oracle Databaseの性能対策機能である、STATSPACKとDiagnostics Packについて解説したいと思う。性能問題はあらゆるシステムで発生する可能性があり、性能対策機能を使ってデータベース管理者が性能を監視・改善することは、重要な業務の1つである。

Oracle Databaseには優れた性能対策機能「STATSPACK」と「Diagnostics Pack」が備わっている。オンプレミスサーバ上、AWS EC2上で稼働しているOracle Database、AWS上のフルマネージド型サービスであるRDS for Oracle、それぞれでこれらの機能が利用できるのかどうかを紹介する。

まずは、STATSPACKとDiagnostics Pack、それぞれの機能を説明しよう。いずれも、Oracle Databaseに性能問題が発生していないか、また、発生しているとすればどのような問題なのか、原因は何かといったことを「分析」するために用いるツールである。

○STATSPACK

STATSPACKはOracle Databaseの性能分析を行うためのレポートを出力できる標準のツールであり、Standard Edition、Enterprise Editionの両方で利用可能である。STATSPACKは、オンプレミスのサーバや、AWSクラウド上の仮想サーバであるEC2上に構築されたOracle Databaseではもちろん、RDS for Oracleでも利用可能である。

オンプレミスサーバやEC2上のOracle Databaseの場合、STATSPACKのインストールは手動で行う。具体的には、$ORACLE_HOME/rdbms/admin配下のspcreate.sqlを実行することでインストールできる。RDS for Oracle の場合は、オプショングループを作成し、作成したオプショングループにSTATSPACKのオプションを追加、そのオプショングループをRDS for Oracleのインスタンスへ適用することによりインストールが完了する。

また、STATSPACKは、インストールしただけでは性能情報を取得できない。1時間単位などで、性能情報を取得するように設定する必要がある。以下にそれぞれ、STATSPACKの情報を1時間単位で取得する一例を記載する。

この定期的に取得する性能情報のことを「スナップショット」という。スナップショットはメモリ上の性能関連の統計データをテーブルへ保存しているだけなので、スナップショットを取得していない時間は負荷がかからない。スナップショットによりテーブルへ溜め込まれた性能情報に関しても、自動でメンテナンスされることはない。メンテナンスしないとスナップショットのデータでテーブルは肥大化してしまうので、定期的にメンテナンスを実施する必要がある。

○Diagnostic Pack

Diagnostic Packは性能分析する際に便利な機能を提供するオプションライセンスである。Oracle Databaseではオプションライセンスを使用できるのはEnterprise Editionのみである。このためDiagnostic Packのオプションライセンスで利用できる機能は、Standard Editionでは利用できない。 Diagnostic Packでは主に以下のような機能を提供している。

・Automatic Workload Repository(AWR)
・Automatic Database Diagnostic Monitor(ADDM)
・Active Session History(ASH)

各機能に関して、以下の通り、簡単に説明する。

Automatic Workload Repository(AWR)
STATSPACKの機能をより強化したものが、このAWRである。STATSPACK同様に各種レポートの作成が可能なうえ、確認できる性能情報の種類も豊富である。また、Oracle Enterprise Manager(EM)でレポートの出力などの利用が可能なので、初心者でも簡単に使うことができる。

Automatic Database Diagnostic Monitor(ADDM)
STATSPACKやAWRのレポートの内容を確認し、チューニングを行うには、パフォーマンス・チューニングに関する知識が必要になる。ADDMはパフォーマンス分析をある程度自動的に実施し、その結果をレポートとして提供する機能である。また、有識者がADDMのレポートを確認することで、レポートの分析にかかる作業の効率化も期待できる。

Active Session History(ASH)
STATSPACKやAWRは瞬間的な事象をとらえて分析することには不向きな機能だが、ASHはその名の通りアクティブなセッションに関するログを取得する、いわば瞬間的な事象の分析に特化した機能である。V$SESSIONやV$SESSION_WAITの情報を1秒間隔で自動的に取得しており、V$ACTIVE_SESSION_HISTORYビューでASHの情報を確認することが可能である。

Diagnostic PackはEnterprise Editionのオプションライセンスとなるが、Oracle Databaseの性能対策機能として、非常に便利な機能がそろっている。また、これらの機能は性能対策として利用価値が高いのはもちろんだが、障害発生時などに、直前でどのような処理がなされていたのかという障害原因を究明するための重要な情報源ともなり得る。

これらの機能に関しては、オンプレミスサーバ、EC2上で構築されたOracle Databaseでは、Enterprise EditionでDiagnostic Packのオプションライセンスがあれば利用可能なことはもちろん、RDS for Oracleであっても、Enterprise Editionを使用し、CONTROL_MANAGEMENT_PACK_ACCESS パラメータを変更することで利用可能である。

○最後に

これまで、設計のポイントや可用性、バックアップ/リカバリ、データの移行方法、性能対策機能について、Oracle Database on オンプレミスサーバ、Oracle Database on EC2、RDS for Oracleの3つに分けてそれぞれの特徴を解説してきた。

オンプレミスサーバとEC2は非常に似ていること、RDS for Oracleはいくつか制約があるが、運用を非常に軽量化できるメリットがあることを理解いただけたと思う。どの環境を選ぶのかはそれぞれのメリット、デメリットを考慮していただければと考えており、本連載が読者の選定の一助になれば幸いである。

山口 正寛

1984年大阪府生まれ。データベースエンジニア、コンサルタントなどの活動経験が豊富。現在は株式会社システムサポートの東京支社 クラウドコンサルティング事業部 シニアマネージャーとして、主にDatabase(特にOracle、Redshift)領域を担当。Amazonの提供するリレーショナルデータベースのAuroraにも詳しい。クラウド工房 ブログでときどき関連情報を発信している。職場ではオフィスグリコを絶賛消費中。

(山口正寛)