アプリケーションからのSQLトレース出力について

このQ&Aのポイント
  • java(servlet)で作成したアプリケーションのSQLトレースを取得する方法について解説します。
  • SQLPLUSを使用してALTER SESSION SET sql_trace = true; と設定し、アプリケーションを実行することでSQLトレースの情報を取得することができます。
  • しかし、上記の設定ではトレースファイルに情報が出力されない場合があります。問題があるかどうか確認しましょう。
回答を見る
  • ベストアンサー

アプリケーションからのSQLトレース出力について

java(servlet)で作成したアプリケーションのSQLトレースを取得したいのですが、トレースファイルに出力されません。 ご教授お願いします。 【環境】 ・oracle 9i(10gでも確認しましたが同様の結果でした) ・java(servlet)の実行環境はwindows server 2003 【設定、操作方法】 ●SQLPLUSより 1.ALTER SESSION SET sql_trace = true; 2.timed_statistics は true になっている事を確認 ●ブラウザより 3.アプリケーションを動かす(内部でSQLが発行される操作を行う) ●コマンドプロンプトより 4.tkprof より出力内容を確認 出力結果にアプリケーションで発行しているSQLの解析情報が全く入っていません。 上記の操作に問題があるのでしょうか?それとも何か他に設定が必要なのでしょうか? よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

ALTER SESSIONでは現行セッションにしか(そのSQLPLUSにしか)影響しないはずです。 ALTER SYSTEMで一時的にDB全体にSQL_TRACEを設定するか、 JavaのDBセッションをV$SESSIONから拾って DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION を使ったSQLトレースをしてみてはいかがでしょう?

tosshi_1978
質問者

お礼

遅くなって申し訳ありません。 ALTER SYSTEM で取得する事ができました。 ありがとうございました。

関連するQ&A

  • SQLトレースファイルについて( Oracle )

    SQL文の実行時間を計測するため以下のような作業をしております。 (1)現在のセッションのみSQLトレースを適用  alter session set sql_trace=true; (2)現在のセッションのみCPU時間や経過時間を取得  alter session set timed_statistics=true; (3)計測したいSQL文を実行する。 (4)SQLトレースを止める。  alter session set sql_trace=false; 上記、手順にて、UNIXサーバのudumpディレクトリ配下に以前までは、ora_xxx.trcというファイルが生成されていたのですが、その.trcファイルを削除し、新たにトレースをしようとしたところ、ファイルが生成されなくなってしまいました。この状況の回避策をご教示頂きたくお願いします

  • SQLトレース指示の自動発行

     SQL Server 2005を主に使っております。  プログラムが発行するSQLを確認するためにプロファイラを 利用してトレースをとる作業を行ったりしますが、開始するまでの 設定画面の操作が面倒です。  ある程度デフォルト設定のままでもトレースを開始できますが、 ClientProcessIDでフィルタしたりすることが多いので、スクリプト等で 書くことができるとうれしいです。  またトレースの出力先がデータベースのテーブルであることが 多いのでそのあたりも指定したいと考えています。  このようなことは可能でしょうか?

  • Oracleのエラースタックトレース設定について

    お世話になっております。 件名のエラースタック設定について質問があります。 OSはwindows。 oracleのバージョンは11gです。 現在、複数のeventを設定しようと考えておりまして、以下のようなSQLを実行しました。 (仮として1111と2222のエラースタックを設定すると想定します。) ・alter system set event = "1111 trace name errorstack level 3:2222 trace name errorstack level 3" scope=spfile; 上記のSQLを実行後、下記のSQLにて設定を確認しました。 ・select name,value,display_value,isspecified,ordinal from v$spparameter where name='event'; 出力結果のvalueおよびdisplay_valueに「1111 trace name errorstack level 3:2222 trace name errorstack level 3」と表示されているのですが、これは正しく1111と2222のエラースタックが設定されたということで宜しいのでしょうか? 宜しくお願いします。

  • TRACEのスレッドセーフにつきまして

    .NETでWebアプリケーションを開発しています。 ログファイルを出力する際に、TRACEを使用しようとしてサンプルを作成し、ログファイルが出力されることも確認しました。 そのTRACEを使うため、.NETのヘルプを見ながら サンプルを作成したのですが、ここに「TRACEはスレッドセーフである」との 説明がありました。 ここで言う「スレッドセーフ」とは、同時にログファイルへ 書き込みにいっても、ログファイルが壊れないという意味に 受け取ってもよろしいのでしょうか。 以上よろしくお願いします。

  • javaについて

    JavaのOracle11gに接続してLOG出力処理を作ったのですが、 これが正しく動作するかSQLPlusでテーブルをセレクトしてテーブルにログの内容と2つのフラグが表示されるか確認したいのですが、javaのServletにどのようなコードを書けば良いのかいまいち分かりません。 class extendsの箇所にそれぞれ処理を書いてみたのですが、エラーばかり出てきます。 どなたか教えてください。 よろしくお願いします。

  • SQL*PLUSで 定期的にSQLを発行させるには?

    SQL*PLUS を使って、10秒間隔などのように定期的にSQLを発行し、その結果をSPOOLでファイルに出力して、後で確認したいと考えています。 (今回は特にV$SESSIONの情報から、ACTIVE/INACTIVE のセッションのステータス情報をログとして保存したいと考えています) どなたかそのようなことは可能かご存知ですか?可能であれば、ぜひやり方を教えてください。 [環境] Windows 2000 Oracle 9iR2 よろしくお願いします。

  • 実行SQL文のサーバー側での監視方法について

    Java+OracleでWebアプリケーション開発を行っています。 JavaでPreparedStatementを使って発行されたSQL文をOracleサーバー側で確認したいのですが方法が検討つきません。 ご存知の方いらっしゃったらご教示お願いいたします!

  • Access 2003アプリケーションからSQL Server ver 8への処理要求レスポンスが遅くい

    質問:以下の処理が大量のトランザクション(アプリケーション(クライアント)とサーバー間で発生している。その原因を教えて下さい。 現象: アプリケーションは Access 2003のVBAで記述し、クライアント側で使用。 サーバーはSQL Server ver 8を使用。 フォームに対してAテーブルとBテーブルを用いたクエリーを使用している。  このフォームの一つのフィールドに対して値を代入する処理があるが、なぜかサーバーにアクセスし、しかも大量のデータのやり取りが確認されている。 問題の処理だが、 Myfrm!field1 = Const_num field1:フォーム上のフィールド Const_num: Globalに宣言された固定値 実施したこと: 回線使用率を確認して回線の帯域をほとんど使用していることを確認。 ODBCトレースを取得してみてみたり、等々していましたが、見方がよくわからないのもあり、原因が解明できていません。 マニアックな環境(状況)ですが、宜しくお願いします。

  • データベースの内容をCSVへ出力。

    VB2005環境、DBはOracle10gです。 データベースから取得したテーブルの内容を、CSVとして 出力する機能をサービスアプリに付け足したいと考えています。 データベースから値を取得する方法についていろいろと調べては みたのですが、VB2005環境では、Windowsアプリケーションとして 作成する方法しか見つからず(コントロールを配置する際に デザイナを使う方法)、クラスライブラリに機能としてSQL発行から CSVとしてデータを出力するまでの処理をどうしたらいいのか わからず困っています。 基本的なところから勉強できるサイトがありましたらご教授 願えないでしょうか? よろしくお願いします。

  • [SQL Server] コマンドプロンプトからのCSV形式出力

    SQL ServerのテーブルデータをSELECTしてダブルコーテ区切りのCSVに出力したいと考えております。 ・batファイルからの起動を希望。 ・出力CSVファイル名はbatファイルより引数で指定したい。 ・出力後、DELETEも行いたい。 OracleだとSQL*Plus環境で下記のようにテキストレベルで簡単にできます。 SQL Serverでも同様のことができないでしょうか? 要は下記をSQL Server版でやりたいということです。 参考:Oracleだと・・・ 同一dirに、abc.batとabc.sqlを用意しabc.batを実行すると20070601.csvが生成される。 1.abc.bat rem ----abc.bat-ここから---- sqlplus usr/pwd@host @abc.sql 20070601.csv rem ----abc.bat-ここまで---- 2.abc.sql ----ファイル名=abc.sql-ここから--- set echo off set heading off SET VERIFY OFF set FEEDBACK OFF set TRIMSPOOL on set termout off set pagesize 0 set linesize 32767 spool &1 select '"'|| カラム1 ||'",'|| '"'|| カラム2 ||'",'|| '"'|| カラム3 ||'"' from テーブル1; spool off delete from テーブル1; exit ----ファイル名=abc.sql-ここまで--- 20070601.csv結果 -ファイル名=20070601.csv-ここから--- "20060726","scott","356160" "20060727","tiger","463391" "20060728","manager","1930" -ファイル名=20070601.csv-ここまで--- DBサーバ環境 OS:Win2003SvrR2 SQL Serverバージョン:わかりません。(2003にのってるので最近のだと思われます) Oracle経験者でSQLServer初心者です。マニュアルもなく、Web検索しても「SQL」「Server」ってなかなかうまくひっかからない!! ので質問あげさせていただきます。