プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

EMでSQLチューニングセットを作成する

SQLPAをやってみようと思ったのですが、まずSQLチューニングセット(STS)を作成する必要があります。
EMの画面を見た感じ、カーソル・キャッシュから作るのが一番簡単そうだったので、
カーソル・キャッシュから作ることにします。

SQL文をカーソル・キャッシュに入れる

カーソル・キャッシュに入る条件は、
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05743-02/memory.htm#i38400
によると、

Oracleでは、ライブラリ・キャッシュをチェックして、指定の文で3回以上の解析リクエストが発行されたかどうかを識別します。発行された場合、 Oracleでは、文に関連するセッション・カーソルをキャッシュすることを想定し、カーソルをセッション・カーソル・キャッシュに移動します。同じセッションでそのSQL文の解析リクエストが続けて出されると、セッション・カーソル・キャッシュ内のカーソルが検索されます。

とのことで、よく分からないのですが、とりあえずSQL*Plusで同じSQLを連打します。
今回のSQLはこんなの。

select
  a.ename
  , b.dname
  , c.sal
  , c.comm
from
  emp a
  , dept b
  , bonus c
where
  a.deptno = b.deptno
  and a.ename = c.ename;

目的のよく分からないSQLですが、
今回はSQLチューニングセットを作成するのが目的なので、
SQLの中身は気にしないことにしましょう。

カーソル・キャッシュからSQLチューニングセットを作成する

  • EMのパフォーマンスページから、SQLの検索をクリックします。


  • カーソル・キャッシュにチェック
  • 検索条件(ここではSQL ID; あらかじめv$sqlで調べておいた)を入力
  • 検索ボタンをクリック
  • 期待する結果が得られたら、右上の「新規SQLチューニング・セットへの保存」を選択する
  • STS名を入力し、保存ボタンをクリック


ちなみに検索結果より、SQL IDやSQLテキストをクリックすると、
実行統計や、実行計画を見ることができます。
■実行統計

■実行計画

作成したSQLチューニングセットを確認する

  • EMのパフォーマンスページから、SQLチューニング・セットをクリックします。
  • 一覧に作成したSTSが表示されていればOK