• ベストアンサー

oracle8.1で発行されたSQLをモニタリングする方法

oracle8.1で発行されたSQLをモニタリングする方法を 教えて下さい。 標準の機能であるのでしょうか? また、市販の製品などであれば、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#65175
noname#65175
回答No.3

おっしゃっている「モニタリング」をどのような頻度、どのような目的で行うのかが分かりませんので、推測で回答させていただきます。 そのときそのときのSQLを取得するならば、No.1の方がおっしゃっているSQLトレースが一般的だと思います。取得方法は、下記URLのサイトが参考になります。 参考サイトで記述されているSQLトレースはコマンドベースでの操作になるので、もっと簡単にGUIで確認するには、Oraceデータベースの管理ツールのひとつである「Oracle Enterprise Manager」を利用するとよいと思います。 Oracle Enterprise ManagerにSYSTEMユーザなどでログインし、ツリーメニュー[インスタンス]>[セッション]から、アクティブなセッション(クエリを処理しているセッション)が確認できます。ダブルクリックで処理中のSQL文やSQLの実行計画を確認・保存できます。

参考URL:
http://www.geocities.jp/principal_focuses/tech/ora/ora_turne/ora_turne_210.html
jiji333
質問者

補足

回答ありがとうございます。 ご指摘のあった目的ですが、実はORACLEを利用しているアプリケーションが、通常2,3秒で終わる処理が 30秒近くかかることが場合があり、毎回というわけではない為、複数の処理がバッティングし、行ロック開放まちになっているのではないかと予想しています。 目的としてはこのアプリケーションの問題を解決したいということですが、問題のSQLを特定することで、アプリケーションの問題のコーディング箇所をしぼれるのではないかと思っています。もっといい方法がありますか?(この件は、別の質問で投げるつもりです。) 

その他の回答 (2)

  • trictrac
  • ベストアンサー率38% (10/26)
回答No.2

リアルタイムにトレースする事はできないので、 アーカイブログを取れば、更新履歴はわかります。 ただし、更新履歴だけなので、検索はわかりません。 ただ、セッション毎にそのセッションが最後に発行した SQL分はわかるので、それを確認すれば如何でしょう。 市販ツールでは、システムインテグレータの『ObjectBrowser』 というソフトなら、その情報をGUIで見ることが出来ます。 また、下記のSQL文でも、同じ情報がみれますが・・・。 select sess.sid , sess.serial# , sess.status , sess.username , sess.machine , sess.osuser , sess.logon_time , sess.program , dbaobj.object_name , sqla.sql_text from , v$session sess , v$sqlarea sqla , v$locked_object obj , dba_objects dbaobj where sess.sql_hash_value = sqla.hash_value(+) andsess.sql_address = sqla.address(+) and obj.session_id(+) = sess.sid and dbaobj.object_id(+) = obj.object_id and sess.username is not null order by sess.sid

  • ishi7474
  • ベストアンサー率32% (71/216)
回答No.1

リアルタイムにモニタするのでなければ、SQLトレースを取得することは標準機能だけでできると思います。

関連するQ&A