第3回 サポートツールを活用しよう(2)


前回に続き、サポートツールの紹介です。今回はOracleデータベース版のtopとも言えるoratopを紹介します。

oratopを使ってみよう

oratopは、Oracleデータベース版のtopコマンドです。LinuxのtopコマンドはOSの動作状況を表示するのに対し、oratopはOracleデータベースの動作状況をリアルタイムに表示できます。そのため、データベースの状態把握やボトルネックの特定など、パフォーマンスチューニングやトラブルシューティングに役立ちます。使い方も簡単で、動作が軽いのも特徴です。

oratopが対応しているのは、12cを含む11gR2(11.2.0.3)以降のデータベースです。シングルインスタンスだけでなく、RACやASM、Data Guard、マルチテナントなどの構成にも対応しています。

インストール方法は簡単です。ダウンロードしたファイルを解凍して配置するだけです。oratopコマンドはデータベースのバージョンやOSごとに用意されているので、環境に合わせてリネームします。次の例はLinux x86_64版の11gR2の場合です。

$ cd /u01/tools
$ unzip oratop.zip
$ cd /u01/tools/oratop
$ cp -p oratop.RDBMS_11.2_LINUX_X64 oratop
$ chmod 775 oratop

使い方も簡単です。次のようにORACLE_HOMEやORACLE_SID、LD_LIBRARY_PATHなど必要な環境変数を設定します。.bash_profileなどで、既に設定してある場合には不要です。

$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_SID=orcl

接続方法はSQL*Plusと似ていて、次のように実行します。これはローカル接続の例ですが、Oracle Net経由でリモート接続することもできます。また-iオプションで更新間隔を指定できます(デフォルト:5秒)。

$ ./top -i 5 / as sysdba

画面1. oratopの実行画面

oratopの実行画面

表示内容は、上から「データベース基本情報(1行目)」「データベースの稼働情報(2,3行目)」「Top 5 Timed Event」「プロセス/SQL情報」が表示されます。AWRやSTATSPACKを使い慣れている方であれば、表示されている内容はだいたいわかるでしょう。各項目の説明はヘルプ(hキー)から参照できます。

この標準画面だけでも便利なのですが、もっと活用したいのはインタラクティブモードという、動的に表示内容を変える機能です。画面2をご覧ください。hキーを押して表示されたヘルプ画面です。Interactive Keysのところに書いてあるのが有効なキーの説明です。Acronym Help Menuは画面の表示項目の説明で、さらに数値を入力すると、それぞれの項目の意味が表示されます。

画面2. oratopのヘルプ画面

oratopのヘルプ画面

代表的な画面をいくつか紹介します。デフォルトのプロセスモードでは、一番下の部分に待機イベントがプロセス単位で表示されます(画面1)。時間のかかっている処理をリアルタイムに判別できるので、このプロセスモードをよく使います。負荷が高いSQLを実行しているプロセスや、ロック待ちなどのプロセスなど、待機時間が1秒を超えるプロセスは赤文字で表示されます。

次にSQLモードです。sキーを押すとSQLモードになり、現在接続しているユーザーが実行したSQLの中でElapsed Time(経過時間)の長いものが表示されます(画面3)。ここに表示されても問題の無いSQLも多いのですが、1秒以上かかったSQLや、キャッシュヒット率が低いSQLは赤文字で表示されます。

画面3. oratopのSQLモード表示画面

oratopのSQLモード表示画面

さらに、ここでSQL文の実行計画を調べたいときにはxキーを押します。するとSQL_IDの入力が求められます。SQL_IDを入力すると、該当のSQL文の実行計画が表示されます(画面4)。

画面4. SQL文の実行計画表示画面

SQL文の実行計画表示画面

続いてI/Oボトルネックを調べるためのFILE#:BLOCK#表示です。プロセスモードの状態からkキーを押すと、今までイベント名が表示されていた部分にファイル番号とブロック番号が表示されます(画面5)。この数値により、現在I/O負荷がかかっているデータファイルの個所を特定できます。

画面5. SQL文の実行計画表示画面

SQL文の実行計画表示画面

この画面5の例では、SQL_IDが2pnu5bs77dhu5のINSERT文が実行されていて、状態としてはCPUウェイト。ファイル番号1、ブロック番号94419に書き込みが発生していることを表します。

ここまで読んでみて、いかがでしたか?データベース全体を通した本格的なチューニングをするならばOracle Enterprise ManagerのDiagnostics Pack/Tuning Packが適しています。しかしながらoratopの導入しやすさや使いやすさ、動作の軽さは魅力的です。ちょっとしたチューニングやトラブルシュートに備えて、事前に導入しておきたいところです。

サーバーへの負荷が心配になる方もいると思いますが、oratopは軽いプログラムなので、負荷は最小限に抑えられています。とはいえ本番サーバーで実行するときは、事前に動作を検証してください。表示内容がおかしいときは、初期化パラメータstatistics_levelがTYPICAL(デフォルト)かALLになっていることを確認してください。

次回もサポートツール編を継続します。

にわかワイン通養成講座

第3回 年末年始に飲みたいワイン

年末年始に飲むべきワインと言えばシャンパン(スパークリングワイン)です。一般に「シャンパン=めでたい酒」という図式があります。たとえば披露宴の乾杯や自動車レースの表彰式、船の進水式などではスパークリングワインが使われます。また国際線の飛行機―――とくにエール・フランス―――に乗ったときにも、シャンパンサービスとして一杯目に提供されることがあります。

そして切り離せないのが恋との関係です。シャンパンは、いろいろな映画で登場しますが、なんといっても007です。007のジェームス・ボンドはお酒にこだわりがあることで知られ、カクテルのマティーニを注文するときの

「ステアせずにシェイクで」

というセリフは有名です(正統的なレシピでは、ミキシンググラスでステアする)。

そのボンドが女性を口説くときに登場するのが、ドン・ペリニョン(Dom Perignon)やボランジェ(Bollinger)などの高級シャンパンです。シャンパンと恋に関する格言はたくさんあります。あまり直接的なものは、ここでは紹介しませんが...。


  • 「お肉には赤を、魚には白を、そして恋には、シャンパーニュを」(オードリー・ヘップバーン)
  • 「女性に飲めて、しかも美しさを衰えさせないのはシャンパンのみ」(ポンパドール夫人)

そしてシャンパンだけで特別な扱いを受けているのがロゼワインです。赤でも白でもないロゼワインは、甘いと勘違いされている不幸もあり、あまり人気がなく値段も安めです(世界的に見れば本当は甘くないものが多い)。ロゼが似合うのは、南仏プロバンスの海岸やリゾートのランチ、お花見くらいでしょうか。

ところがシャンパンのロゼだけは違います。シャンパン自体の「恋のイメージ」と「ピンク色」と言う相乗効果もあってなのか、人気があり値段も高めです。勝負したい人は押さえておきたいところです。

豆知識としては、同じロゼでもシャンパンとスパークリングワインでは色が違います。シャンパンのロゼが薄いピンクであるのに対し、安いスパークリングワインのロゼは透明な赤に近い色合いです。男性の本気度合いを見るために、女性は知っておいてもよいかもしれません。銘柄もあるので一概には言えませんが、以下のヒエラルキーが成り立っています。

シャンパンロゼ > シャンパン白 >> スパークリングワイン

西暦2000年のときにはミレニアムフィーバーで入手困難なシャンパンもありましたが、今年はそんなことはないでしょう。わたしも年末年始には何本かシャンパンを飲む予定です。
何の色かって?それを聞くのは野暮ってものですよ。



第3回 サポートツールを活用しよう(2)