読者です 読者をやめる 読者になる 読者になる

kagamihogeの日記

kagamihogeの日記です。

SQL Developerの簡易的なデータベース監視機能

SQL Developerは、本来的には開発向けのツールである。ただ、簡易ながらDB監視の、どちらかといえば運用向けの機能も備えている。といっても、V$系のビューを多少見やすくしたGUIといったところで、さすがにEnterprise Managerなどには遠く及ばないのだけど。まぁでも、これだけでもあれば充分な環境もあるだろうしね。

環境

以下はsys as sysdbaでログインしたものとして話を進める。

セッションのモニター

ツール -> セッションのモニター 接続の選択ダイアログで使用したい接続を選ぶ(フツーはログイン中の接続を選ぶと思う。そうでないものを選ぶとログインダイアログが出る)と、こんな感じの画面になる。

v$sessionのうちのユーザセッションを表示していると思われる。すべての列を表示はしてないようだけど、良く使うのはこの辺ってことなんでしょうかね。

「リフレッシュ」の数値が更新間隔。秒数間隔で変化を追える。

各セッションを右クリックすると、上記画面キャプチャのように「セッションのトレース」「セッションの中断」が表示される。

セッションのトレースは、字面そのまんまの機能。実行時にプロンプトが出て実行するSQLが確認できるのだが、こんな感じのプロシージャを実行する。

begin dbms_monitor.session_trace_enable(10, 17, TRUE, TRUE); end;

中断も、そのまんまの機能。こんなのを実行する。

ALTER SYSTEM KILL SESSION '14, 361' IMMEDIATE

セッションのモニター(下側)

セッションのモニターの下側画面では、各セッションについてもうちょっと詳しい情報が見れる。簡単に言えば、各セッションについてのV$ビューからの情報を簡易的に表示している、といったところ。

アクティブなSQL

v$sqltextからSQL_TEXTを表示。アクティブセッションが実行しているSQLは? - Works - 逆引きSQL比較の簡易表示、といったところか。

待機

v$session_waitの情報を表示。

画面は、行ロック待ちがかかっているのが分かる。なお「競合」のところに具体的に何やってるか書いてあります。

サーバー

この辺は見たまんま。v$session, v$session_connect_info あたりからの情報。

クライアント


アプリケーション


競合

v$lockとかv$locked_objectとかその辺の情報を表示。

画面は、sqlplusを二つ立ち上げて同一テーブルの同一行に対してUPDATEをかけたので、片方のセッションがLOCK、もう片方がLOCK待ちになっているのが分かる。

Long Opsq

初めて見たので詳しいことは良くわからないけど、たぶんV$SESSION_LONGOPSのことだと思う。V$SESSION_LONGOPS

レポート

表示 -> レポートから表示できる画面について。

セッション

データ・ディクショナリ・レポート -> データベース管理 -> セッションから表示する。
良く使うであろうv$sessionの見方が事前に定義してある。下記の画像は、アクティブ・セッションを見ているところ。セッションごとのSQLテキスト・実行計画も見れるので、怪しいSQLを流してるセッションにとりあえずの目処付ける時とかに使うイメージでしょうか。

上位SQL

データ・ディクショナリ・レポート -> データベース管理 -> 上位SQLから表示する。
Enterprise Managerの「トップ・アクティビティ」ページの「上位SQL」の超絶簡易版といったところか。V$SQLの情報をあれこれ加工してくれている様子。下記の画面キャプチャは、CPU別上位SQLを表示したところ。

待機とイベント

データ・ディクショナリ・レポート -> データベース管理 -> 待機とイベントから表示する。
下記の画面キャプチャは、過去1時間の待機を表示したところ。セッションのモニターの項で、ロックをかけっぱなしで放置していたことが現れている。

他はOracle Diagnostic Packライセンスが必要とのことで、自分の環境では表示できない。本来的にはグラフィカルにロック関連の情報を表示してくれるのだと思われる。

メモリとか表領域

データ・ディクショナリ・レポート -> データベース管理 -> 記憶域から表示する。
下記の画面キャプチャは、表領域を表示したところ。

下記の画面キャプチャはレポートではないが、接続右クリック -> データベースの管理を押すと、このようにサマリがグラフィカルに表示される。

その他メモ

データ・ディクショナリ・レポートで実際に使われているクエリが見てみたい場合、そのレポートを右クリック -> 別名保存して作成されたxmlファイルの中にクエリの中身が含まれている。SQL Developer上から確認する方法は分からない。

Instance Viewer

4.1からインスタンスの状態をグラフィカルに表示する機能が追加された。

kagamihoge.hatenablog.com