いよいよSI Object Browser for Oracle 19(以下OB)が11/21にリリースされます。Oracle最新版である Oracle Database 19c(以下Oracle19c) や、Autonomous Database Cloudに対応するなど、様々な対応をしておりますが、今回はその中から一つ、Oracle 19cの新機能である「開発者用リアルタイムSQLモニタリング」をご紹介します。
開発者用リアルタイムSQLモニタリングとは
リアルタイムSQLモニタとは、データベース内でどのようなSQL文が実行されているのかを監視する機能です。熱心なOBユーザーの中には既存機能である「SQLキャッチ」を思い浮かべた方もいるかと思います。実行されたSQLを取得し、インデックスの追加やボトルネックとなっているSQL文の構文見直しの作業を支援するという点で類似した機能となりますが、使用するための権限が低いことやトレースファイルが必要ない点などの違いがあり、よりお手軽感があります。その他の違いは下記の表をご覧ください。
SQLキャッチ | リアルタイムSQLモニタ | |
---|---|---|
実行最小権限 | SYSDBA | CONNECT,RESOURCE |
監視単位 | セッション | ユーザー/SQL |
ファイル出力 | トレースファイル利用 | なし |
監視対象SQL | すべて | 監視対象とならない場合がある (低コストのSQL等) |
表示データの揮発性 | トレースファイルが存在する限り揮発しない | 揮発性あり |
SQLキャッチとの違い
開発者用リアルタイムSQLモニタリング をOBでためそう
では早速OBで実行してみましょう。下記の単純なSQLを実行してみます。ただし、簡単なSQLは上記SQLキャッチとの違いで示したように監視対象とならない場合があります。今回はお試しということで、必ず収集されるようにSQLに一部手を加えます。「/*+ monitor */」をヒント句として記述することで、強制的に収集されるようになるのでこれを利用しましょう。
select /*+ monitor */ 1 from dual / select /*+ monitor */ 2 from dual / select /*+ monitor */ 3 from dual / select /*+ monitor */ 4 from dual / select /*+ monitor */ 5 from dual / |
ツールバーからアイコンをクリックすると、SQLキャッチとよく似た画面が展開されます。
リアルタイムSQLモニタ画面
上段に先ほど実行された5つのSQLが表示されているのがわかります。さらに下段には上段で選択したSQLの実行計画を表示することができます。また、右クリックメニューからインデックスアドバイザを呼び出せます。実行計画を閲覧後、インデックスアドバイザ画面で適切なインデックスをつけてSQLの速度を改善する、などの運用が想定されます。その他の右クリックメニューの詳細は以下のとおりです。
SQL文のコピー | 選択した SQL 文をクリップボードにコピーします。 |
---|---|
インデックスアドバイザを開く | インデックスアドバイザ画面を開きます。 |
レポート出力(HTML) | Oracle Database提供のレポート出力機能を使用して、選択した SQL 文のレポートをHTML形式で出力します。 |
右クリックメニュー
また、フィルタボタンで下記画面を呼び出せます。こちらでは、指定したユーザーで絞り込んだり、高コストのSQLトップ10だけ表示したりと、いろいろなフィルタをかけることが可能です。SQLを直接検索することも可能です。
フィルタ画面
開発者用リアルタイムSQLモニタリング をOBでためそう まとめ
いかがでしたか。
開発者用リアルタイムSQLモニタリングは、SQLキャッチのように事前準備や高権限のユーザーを用意する必要がないため、だれでも簡単に実行SQLを取得することができます。その反面、「開発者用」という名前が示すように低コストのSQLが通常はスルーされたり、取得データに揮発性があったりと、長期の運用には向かない点もあります。それでもそのお手軽さは大きなメリットであり、開発中の利用であればその効果を十二分に発揮することでしょう。
様々な場面を想定し、SQLキャッチと上手に使い分けをしていきましょう。
- カテゴリ:
- キーワード: