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$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ライセンスが必要とのことで、自分の環境では表示できない。本来的にはグラフィカルにロック関連の情報を表示してくれるのだと思われる。
その他URL
- Oracle Database Express Edition 2日でデータベース管理者 8 データベースの監視
- OracleのSQL Developerが便利 - kagamihogeの日記 - SQL Developerの基本的な使い方についてはコチラ