• 締切済み

どのセッションが重いのかを知りたいです。

環境:Oracle9i 9.2.0 複数のユーザがSQLを発行しており、DBサーバが重くなっているのですが、どのSQLがどれだけ重いのかがよくわかりません。 セッション情報を参照し、数値が大きいのだけを取り出しました。 ユーザA session connect time 1128422389 process last non-idle time 1128422389 session pga memory 7126460 consistent gets 16110210 db block gets 2024236 redo size 310089028 ユーザB session connect time 1128424040 process last non-idle time 1128424040 session pga memory 409020 consistent gets 736700 db block gets 176834 redo size 0 上記の情報などでわかるのでしょうか? 完全に知りたいのではなく、ざっくりとどのSQLに負荷がかかっているかを知りたいです。 宜しくお願い致します。

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

みんなの回答

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

SQLトレースを採取しましょう。 init.oraにSQL_TRACE=trueを設定して(もちろんpfileでも良いですが。)TKPROFでトレースを採取すれば、どのSQLのパフォーマンスが悪いのか解析できます。 詳しくは「Oracleパフォーマンスチューニングガイド」を参照して下さい。

関連するQ&A

  • 統計情報について

    以下の統計情報ですが、各項目が具体的にわかる資料は何を見たらわかりますか? ちなみに「consistent gets」が多いと重いのかなぁと考えてる程度の知識です。 宜しくお願いします。 ---------------統計情報------------------------ 統計 ---------------------------------------------------------- 187 recursive calls 0 db block gets 176479 consistent gets 63028 physical reads 0 redo size 391 bytes sent via SQL*Net to client 503 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 1 rows processed ---------------統計情報------------------------

  • セッション

    phplibを使わないでユーザ認証を用いたwebサイトを作ろうと思います。 shinki.php => login.php => contents1.php=> contents2.php .... のような流れの構造で、直接contents1.phpなどに入られないようにセッションを使用したいと思います。 ユーザが持っているセッション名と、サーバー側のセッション名が一致するという条件だけでログインしたユーザと考えていいのでしょうか? 現在はこのような感じになっています。 まずshinki.phpでユーザー登録します。この時ユーザ情報と暗号化されたパスワードをDBに保存。 login.phpでユーザIDとパスワードを入力し、DBのデータと一致するとcontents1.phpに進む。この時セッションを発行し、idと暗号化されたパスワードをセッションに記憶させる。 contents(1 | 2).phpのコード <? session_start(); // PostgreSQL 接続 if (!($cn = pg_connect("dbname=****"))){die;} // SQL文 $sql = "select * from ***** where id='$_SESSION[id]'"; if (!($rs = pg_exec($sql))) {die;} $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $array = pg_fetch_array($rs, $i); } // セッションのパスワードとデータベースのパスワードが一致 if($_SESSION[pass] == $array['pass']){ login_html(); }else{ print "ログインしてください。"; } // PostgreSQL 切断 pg_close($cn); function login_html(){ print "<html><head><title><title></head><body>"; .... .... } ?> このような構造には、セキュリティー的な問題はあるのでしょうか? おそらくいろいろ問題があると思いますので、ご指導お願いします。 一般的なパスワード制のページではどのような処理をしているのでしょうか? よろしくお願いします。 os:linux httpd:apache1.3.27 postgreSQL php4.x.x

    • ベストアンサー
    • PHP
  • SESSIONを使ったログイン画面

    今、ログイン画面を作っているのですが、 $sql="select name from users where email='$email' and passwd='$passwd'"; $_SESSION["name"]=$name; 上記のように行い、 こんにちは<?= $_SESSION["name"]?>さん と表示したいのですが、どうしても name が表示されません DBから読み取ったメールアドレスとパスワードに合った名前を読み取るものにしたいのですが、どのようにしたらいいでしょうか。

    • 締切済み
    • PHP
  • INDEX作成による更新系の影響範囲

    環境:Oracle9i 9.2.0.1 言語:VB6 システム:受注管理システム ある業務アプリの性能改善の為、顧客マスタにインデックスを作成したいのですが、更新系の処理が遅くなることを嫌ってなかなか承認が下りないです。 そんなに負荷はかからないと思うのですが、実際インデックスを1つ作成するとどの程度影響があるのか客観的に証明できないから困っています。 上記の業務アプリは毎日使用しています。 データ件数は100万件程度です。 参考までにインデックス作成前のINSERT文実行した実行計画とインデックス作成後のINSERT文実行した実行計画を記述します。 作成前 統計 ---------------------------------------------------------- 86 recursive calls 26 db block gets 14 consistent gets 29 physical reads 2956 redo size 628 bytes sent via SQL*Net to client 825 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 4 sorts (memory) 0 sorts (disk) 1 rows processed 実行後 統計 ---------------------------------------------------------- 281 recursive calls 27 db block gets 73 consistent gets 20 physical reads 3044 redo size 633 bytes sent via SQL*Net to client 825 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 7 sorts (memory) 0 sorts (disk) 1 rows processed そんなに影響がないということを証明したいのですが、上記統計で大したことないと証明できますでしょうか?

  • セッションID(?)の調べ方

    初めてこちらで質問させていただきます。 PostgreSQLを使い始めました。(Ver. 8.3.5 を使用しています。) 今やろうとしている事は、MS SQL2000 のストアド・プロシージャを PostgreSQL用に書き換える事です。 MS SQL2000 用のストアド・プロシージャに、 select @lockid=rtrim(ltrim(loginname))+'@'+rtrim(ltrim(hostname)) from master dbo.sysprocesses where spid=@@spid というSQL文があり、 どのようにこれ(現在アクセスしているユーザIDを調べる) をPostgreSQL上で実現するかで頭を悩ませています。 問題は、現在のユーザーのプロセスのセッション ID(SQL2000 では @@SPID) をPostgreSQLでどのように調べるかなのですが、マニュアルのシステムカタログ の辺りを目を通してるのですが、なかなか見つけられず困っています。 ここを読め。や、こういうのを使うんだ。など解決への糸口、光を指さして、 情報を教えていただける方はいないでしょうか?どうか宜しくお願いします。

  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • セッションに関する認証について

    こんにちは。お世話になっております。 これまで多くの有識者よりご指導頂き、セッションを用い、ログイン認証を取り入れたサイトを作成しておりますが、その中で、会員登録してもらった際、登録したアドレス宛てにメールを送信し、メールに記載したURLをクリック(&DB問い合わせ)してもらう事で、実在するアドレスかどうか、を認証する機能を作っています。 メールに記載するURL http://localhost/confirm/index.php?time=$time&mail=$mail 現在テスト段階と言う事もあり、複数のブラウザを開き、各々違うユーザでログインしているときなどがあるのですが、送られてきたURLをクリックすると、ログアウトせずブラウザを閉じたユーザ名でログインしてしまう、といった現象が起こっております。 そこで、その対処法として、そのURLのファイル上に、 session_start(); session_destroy(); session_start(); などと、一旦セッションを削除し、セッションを再スタートさせる事で対処しておりますが、以上のような現象は、「そもそも何処か間違ったコーディングをしているのでは?」といった不安から、今回投函させていただきました。 まとまりの無い文章、かつ抽象的な質問では御座いますが、考えられる要素およびその適切な対処法など、アドバイス頂けたら幸いに思っております。 知識不足からくる不安ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • セッションタイムアウトの設定時間通りにならない

    C#によるWebアプリケーションを開発しています。 セッションタイムアウトの設定を240分としていますが、 240分前にタイムアウトになってしまいます。 設定時間通りにタイムアウトにならない事象が発生しており、 原因を究明しています。 【状況】 Web.configとIISにて、セッションタイムアウトの時間を 設定しております。 (1)Web.configの設定 Web.config内にて、 <sessionState timeout = "240" /> のタグを設けて、セッションタイムアウトの時間を240分としています。 (2)IISの設定 IISにて、アプリケーションの構成の【オプション】タブにて、 「セッションのタイムアウト」を240分としています。 【環境】 OS:Windows Server 2003 Webサーバ:IIS6.0 DBサーバ:SQL Server 2005、 セッションタイムアウトが指定時間に行われない原因について、 ご教授の程お願い致します。

  • 待機イベント

    db file scattered readが発生したときsql ordered by gets(statspack)にあがったsqlをチューグする必要があると見たのですがいまいちつながりがわかりません。バッファを多く使うsqlはマルチブロック読み込みを起こす原因のひとつだという考えでよろしいでしょうか?

  • セッションをログインについて

    はじめまして。 今、セッションを使ったログインのページを作っています。 流れは、 1.ログインページでIDとパスワードを入力。 2.入力したID・パスワードがあらかじめMysqlに保存してあったのと一致していたら会員ページに移動。 3.セッションにID・パスワードを保存してブラウザを閉じない限り、次回はログイン無しで会員ページに直接いけるようにする。セッションに保存されてないときはログインページにもどす。 以上の流れにそってプログラムを作りました しかし1・2は上手くいったのですが3の部分がうまくいきません。セッションにIDとパスワードを保存することができてるようなのですが、ブラウザを閉じずに、いったん別にページに行き、もう一度会員ページにもどろうとすると、ログインページ戻されてしまい、もう一度ログインしなければいけません。 以下に今回のプログラムを書きました。このプログラムのどこを直せば、いいのかお分かりになる方いらっしゃいましたらアドバイスのほうよろしくお願いします。 使用環境は PHP 5.2.5(xampp使用) MySQL 5.0.51a register_globals = Onになっています。 /*ログインページは省略しました。パスワードとユーザーIDを入力してこのページに飛びます。*/ <?php function redirect($url) { header("Location: ".$url); exit; } session_start(); /*保存していたセッションが存在するか確認なければログインのページにもどす。$_SESSION['username']) の部分を$_POST…にしたのですがそれでも結果は同じでした。*/ if(empty($_SESSION['username']) || empty($_SESSION['password'])) redirect("loginpage.php"); $user = $_POST['username']; $pass = md5($_POST['password']); /*Mysqlへ接続。セッションの問題が解決したらMysql用のクラスを作る予定です。*/ $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "******"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); /*ID・パスワードが間違ってたら、ログインページに戻す。*/ if(empty($rowCheck)) redirect("loginpage.php"); $row = mysql_fetch_array($result); /*IDとパスワードをセッションに保存*/ $_SESSION['username'] = $user; $_SESSION['password'] = $pass; if($rowCheck > 0) { while($row = mysql_fetch_array($result)) { } /*ログイン成功したら会員ページを表示。*/ echo "Login Succeeded!".$_SESSION['username'];/*←セッションに保存されてるかのテスト。ちゃんと表示されました*/ include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link1.php"); include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link3.php"); } else { /*ID・パスワードを間違えてたらログインページに戻す。*/ echo 'Incorrect login name or password. Please try again.'; redirect("loginPage.php" ); } ?>

    • ベストアンサー
    • PHP