ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:アプリケーションからのSQLトレース出力について) アプリケーションからのSQLトレース出力について 2007/10/11 04:32 この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の解析情報が全く入っていません。 上記の操作に問題があるのでしょうか?それとも何か他に設定が必要なのでしょうか? よろしくお願いします。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー ossan_hiro ベストアンサー率66% (88/132) 2007/10/13 23:42 回答No.1 ALTER SESSIONでは現行セッションにしか(そのSQLPLUSにしか)影響しないはずです。 ALTER SYSTEMで一時的にDB全体にSQL_TRACEを設定するか、 JavaのDBセッションをV$SESSIONから拾って DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION を使ったSQLトレースをしてみてはいかがでしょう? 質問者 お礼 2007/10/15 18:08 遅くなって申し訳ありません。 ALTER SYSTEM で取得する事ができました。 ありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピューターデータベースOracle 関連する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のエラースタックが設定されたということで宜しいのでしょうか? 宜しくお願いします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 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」ってなかなかうまくひっかからない!! ので質問あげさせていただきます。 Javaでのcoreファイル出力について Linux環境でJavaの常駐プログラムを動作させているのですが、C/C++でいうような、setrlimit()のような、アプリケーション側からシステムリソースを操作するようなことは、Javaでできるのでしょうか。 もう一点、そもそもJavaで、環境に依存するcoreファイルでデバッグするべきなのでしょうか。 Javaでcoreファイルに頼るべきではないなど、ポリシーについてもお詳しい方がいらっしゃいましたら、アドバイスお願いいたします。 サーブレットのログ出力先 javaを勉強し始めて1ヶ月にも満たない初心者ですが助言を頂けないでしょうか? また、見当違いの事を質問しているかもしれませんが、その場合は指摘下さい。 現在、下記環境にて簡単なサーブレットを作成しています。 ・OS:WindowsXP ・JDK:1.6.0_24 ・Tomcat:7.0.8 ・HelloWorldServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class helloWorldServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("Hello World!!"); out.println("</body></html>"); log("HelloWorldServlet"); } } サーブレットが正常動作する事をログ上でも確認できればと思い、 logメソッドを使用してログの出力をしました。 ログはTomcatのルート配下にある[logs]というフォルダ内に、 [localhost.yyyy-mm-dd.log] というファイルが作成され、その中に記述されているところまでは確認できました。 できればアプリケーション毎に作成されるファイル名や作成されるファイルの保存場所を 明示的に指定したいと思うのですが、そうするにはどうしたら宜しいでしょうか? AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム JAVA ServletでSQL Serverに接続できないんですが。 マイクロソフトのサイト(SQL SERVER2000 Driver for JDBC)から ドライバーを取ってきて、JAVAからDB接続テストを行っています。 最初に簡単なJAVAアプリを作って実行したところ、うまく動作しました。その後、Servletで同様のtestをしたところ、Tomcatのコンソール画面に、ClassNotFoundExceptionが出て、実行できません。 下記の命令が、処理できないようです。 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); CLASSPATHの設定もコマンドプロンプトで、setコマンド実行結果で確認済みです。 他のデータベース(MySQL)では、Servlet,JSP,JAVAアプリすべて、うまく実行できました。 ご存知の方、よろしくお願いいたします。 環境:(1台のマシン内での仮想ネットワーク) windows XP Pro (SP1) j2SDK 1.4.1_03 Tomcat4.1 SQL Server2000 エクセル表として出力したい SQLで操作しているデータベース(テーブル)をエクセル表として出力したい(CSV機能)です。 ネット上のソースをいくつか見てみましたがエラーがなくならないのと、あとそのソース(エクセル表にデータを書き込むJavaクラスファイル)をどのように組み込めばいいか分かりません。 エクセル表としてデータを得るにはどうすればいいか教えていただけますか?(database名はdb1、table名はtable1としています。) Eclipse jspにて スタックトレースの変換後ファイル(foo_jsp.java)へのリンクの設定方法 Servlet変換後のJSPの場所をEclipseに設定する方法を探しています。 pleiades-all-in-one-java-jre_20090426 を使用して JSP を作っています。JSP実行時にエラーが発生すると、コンソールにスタックトレースが表示(※1)され、その中にServlet変換後のJSPへのリンクが表示されます。そのリンクをクリックすると、「org.apache.jsp.Foo_jspのソースが見つかりませんでした」というダイアログメッセージがでます。ソースの場所(※2)はわかっています。スタックトレース中のクリックでソースを開ける方法を教えてください。 ※1 java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList at org.apache.jsp.Foo_jsp._jspService(Foo_jsp.java:106) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) <省略> ※2 <ワークスペース>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\<WEBアプリケーション>\org\apache\jsp\Foo_jsp.java SQL*Plusの実行結果にSQL文も残したいです SQL*Plusをスクリプトファイルを使って実行した際、実行SQLの出力はできないものでしょうか? 以下のようにスクリプトファイルを使ってSQL*Plusを実行し、その結果をログファイルへ 残しています。この時ログファイルには、実行結果は出力されるのですが、実行SQLは 出力されないようです。なんとかして実行SQLと、実行結果を作業ログとして残したいと 考えているのですが、何かよい方法はないものでしょうか? [ama@rh01 test]$ sqlplus scott/tiger@orcl @test01.sql > test01.log ■環境 Red Hat Linux 4 Oracle10g ■以下test01.sqlの中身です。 ---ここから-------------- create table ex01 ( c1 number, c2 varchar2(10), c3 varchar2(40) ); insert into ex01(c1,c2,c3) values(1,'AA1','BBB1'); select * from ex01; update ex01 set c2='aa1' where c1 =1; select * from ex01; exit; ---ここまで-------------- ■以下ログファイルの中身です。 ---ここから------------------ [ama@rh01 test]$ cat test01.log 省略 With the Partitioning, OLAP and Data Mining options に接続されました。 ←ここにcreate文を出力したいです。 表が作成されました。 ←ここにinsert文を出力したいです。 1行が作成されました。 ←ここにselect文を出力したいです。 C1 C2 C3 ---------- ---------- ---------------------------------------- 1 AA1 BBB1 ←ここにupdate文を出力したいです。 1行が更新されました。 ←ここにselect文を出力したいです。 C1 C2 C3 ---------- ---------- ---------------------------------------- 1 aa1 BBB1 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining optionsとの接続が切断されました。 [ama@rh01 test]$ -------------------ここまで--------------- どなたか良いアドバイスいただけたらと思います。 どうぞよろしくお願いします。 仮想環境の標準出力をコンソールに表示する Javaを使って仮想環境(UserModeLinux)を操作しようとしています。 そこでまずUserModeLinux(UML)の標準出力を Javaのコンソールに表示したいと考えているのですが、 それにはどのようなプログラムが必要でしょうか。 全体としては以下の図のようなプログラムを作成したいと考えています。 その中でまずClient側でUMLの標準出力を表示したいと考えています。 どんな些細なことでもかまいません。よろしくお願いします。 SQLplusの設定について Oracle 8i 1.SQLplusにて、下記方法にて 常時ラインサイズを変更しているのですが SQLplus起動時に自動設定することは 可能でしょうか? SQLplus -[オプション]-[環境] -[オプション設定]-[linesize] -[値]:1000 2.SQLplusにて、下記コマンドを発行し、 ノートパッド(エディタ)を使用し SQL文の編集を行っています ノートパッド(エディタ)を他のエディタに 設定変更したいのですが、 どのようにすればいいのでしょうか? listener.logが肥大化 Oracle11gでlistener.logが肥大化し、4GBまでいってしまい、 停止しました。 ログをスイッチし、Oracleは動作したのですが、 アプリケーションサーバからアプリケーションが動作しません。 例えば、SQLPLUSでSQLを発行すると正常ですが、 dllからは動作しません。 なんとなくですが、with句を用いたものが失敗しているようです。 やっぱりアプリケーションサーバを再起動でしょうか? 日曜日まで再起動ができないため、何か方法があればご教示ください。 XAMPPのMYSQLでスロークエリの出力 WindowsXP上のXAMPPでMySQL+PHPを使用したサイト開発を行っていますが、 PHP内で実行されるSQLコマンドが正しくMYSQLへ投入されていることを確認したいと考えています。 スロークエリの機能を用いることで、MYSQLに発行されたSQLコマンドを表示できると思いますが、 XAMPPのMYSQLに対して、どのような設定を行えばよいのかわかりません。 いろいろ調べたところだと、単純にLinux上のスロークエリ設定をでは動作しないようです。 どのような設定を行えば、XAMPP上でスロークエリをファイル出力できるのでしょうか。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター データベース SQL ServerOraclePostgreSQLMySQLNoSQLその他(データベース) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
遅くなって申し訳ありません。 ALTER SYSTEM で取得する事ができました。 ありがとうございました。