• ベストアンサー
  • 困ってます

Oracle11gのレスポンス障害について

社内WEBアプリのレスポンス障害が発生しました。 現在障害は解消されてい(特に何もしていない)ます。 障害の経緯ですが 突然社内WEBアプリからのレスポンスが返って(非常に遅い)こなくなる。 タスクマネージャーでサーバーのcpu負荷とメモリ負荷を確認するが問題無し。 Apacheのレスポンスは問題無し。 サーバーからSQL/PLUSを使用しconnectする。connectに問題無し。 10カラム1レコードのデータをsqlplusから索引するも20秒程度かかる。 一旦サーバーを再起動するが10分程度使用した所で同様の現象が発生しoracleが遅くなる。 取りあえず業務を停止し2~3時間放置。 なぜか問題無く使用出来る様になり今にいたる。 結果、サーバーの再起動を一回行った程度で何も行っていないのですが現在レスポンスに問題は無く社内WEBアプリも快適に使用出来ています。 alert_rocl.logも見てみたのですが特に問題は無いような気がしますが 正直あまりよく解りません。 3年程このシステムは問題無く稼働していたのですが、この様な現象は初めてです。 原因不明となると問題なので何か手がかりの様なものは無いでしょうか? 以下環境となります。 Windows2008 Server R2 Enterprise Oracle Database 11g Release 11.2.0.1.0 - 64bit Production httpd 2.2.20 PHP 5.2.14 OracleにはOci8を使用して接続しています。 よろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2182
  • ありがとう数3

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

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

ORACLE の統計情報が適切に更新されていないのでは?

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 統計情報の最終更新日ですがトランザクションテーブル等更新頻度が高いテーブルに関しては障害発生日の3日前に行われていました。 統計情報の取得タイミングですがデフォルトで行っていますので平日の夜間となっていました。 又、障害発生時に10カラム1レコードのテーブルを単純にselectするのに20秒程度かかっていましたし、2~3時間程度放置後、障害が解消されましたので統計情報の可能性は低いかもしれません。

関連するQ&A

  • Oracleに接続できません

    http://oshiete1.goo.ne.jp/qa4731410.htmlでの質問を踏まえた上で、悩んでおります。 PHPにてサーバにあるOracle9iサーバに、 クライアント(Oracle10gクライアントインストール済み)からPHPで接続しに行きたいのですが、 oci_connect関数が上手く機能していないようで、接続できません。 oci_connectの引数には、oci_connect("ユーザ名", "パスワード", "tnsname.oraにある名称") を設定して、接続をしようとしています。 接続エラーを見るため、oci_errorにてエラーをキャッチしているのですが、 そのエラー内容が空っぽ(Falseで返ってくる)のため、何がおかしいのかわからない状況です。 構築環境は以下の通りです。 OS:WindowsXP(SP3) Webサーバ:IIS 使用DB:Oracle9i(クライアントは10g) 珍しい組み合わせのため、あまり情報がない状態です。 PHP、Webサーバの設定は色々なサイトを確認して設定できたつもりなのですが、 どこかしらに不備があるのでしょうか? Apacheであれば、エラーがログに残るようですが、IISにそういった機能はないでしょうか? 何かアドバイス等ありましたらお願いします。

    • 締切済み
    • PHP
  • サーバのレスポンスが極端に悪化しました

    皆さん、こんにちは。 WindowsNT4.0サーバをファイルサーバーにして、約10台のWindowsクライアントで社内LANを組み、主に販売管理業務に使用しています。 HUBは2台でカスケード接続していまして10BASE-Tで繋げています。 ところが3日程まえから、販売管理システムを使用している際に、一時的にサーバのレスポンスが極端に悪化するような現象が発生しています。 特に重たい処理をしているわけではないのですが、5~10分程度そのような現象が発生し、その後何も無かったように現象がおさまります。そのようなことが3日間で10回程度発生しています。それまではこのような現象は一度もありませんでした。 現象が発生している最中は、HUBの中でサーバを繋げているポートのみがチカチカ激しく点滅しています。 サーバも6年間程度使っているので、ハード障害が発生しているのかなと思いますが、その裏づけをとる方法もわからず、どのあたりを調査すれば良いのか見当がつきません。 予想される原因あるいは調査の手立てにつきまして、何卒ご教授賜ります様宜しく御願いいたします。

  • Oracle Call Interfaceについて

    現在、Oracle Call Interfaceを使用したWEBアプリを構築中です。 そこで、この「Oracle Call Interface」の利点を知りたく ネットで検索をしているのですが、Oracleの公式HPを見ても 何が利点なのか分かりません。 どなたか、「thin」接続と比べて「OCI」は何が利点になるのか ご教授下さい。

その他の回答 (1)

  • 回答No.2
noname#212058
noname#212058

回答No.1 です。 おそらく Disk busy (Table scan とか)が発生したのではないかと思って、最も原因となりやすい統計情報を挙げたのですけどね。「駄目クエリ」が Disk アクセスを占有して、その影響で他のアクセスが遅延したのかと。この場合、数時間放置して「駄目クエリ」の実行が終われば復活しますので、実際の現象と一致しますね。 質問者さんの情報では「Disk アクセス状況」と「問題発生時のクエリ実行状況(長時間実行されっぱなしのクエリがないか)」が無いので、直接的に確認するるべはありません。ORACLE でスロークエリを記録する機能を ON にしていれば、ログなどから確認できるかもしれませんが。 駄目クエリの発生原因には『そもそも駄目なクエリがシステムに実装されている。でも「稀にしか動かない」or「指定条件によってダメになる」特徴があるため気づきにくい』『統計情報が古くて、本来は正常に動くはずのクエリが駄目クエリになる』などが考えられます。どちらにせよ、駄目クエリが特定できないと究明は厳しいでしょうね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 確かにoracleを疑うのであれば実行中のクエリ等調査するべきでした。 引き続き原因調査したところクラウドサーバーのトラブルでレスポンス障害が発生していたものと判明いたしました。サーバーの振る舞いから見てoracleのみレスポンス障害が出ていたのでoracleと決め打ちしていたのが原因究明が遅れた原因となりました。shitaba様には色々と助言頂きありがとうございました。

関連するQ&A

  • Oracleが突然接続不可に!

    環境:Oracle9i 9.2.0.1.0 言語:VB6 ネットワーク:VPN DBサーバは本社に1つしかなくクライアントは全国数社から動作している受注システムですが突然DBサーバが接続できなくなってしまいました。 そのとき行ったイベントとしては1つの支社にVPNを接続しようとしていたらしくルータの変更等をしていた模様です。限りなくネットワークの設定で障害が発生したんじゃないかと思われるのですが障害中のとき、社内でDBサーバのIPは接続できており、クライアントからSQLPLUSで接続しようとしても接続できない状態でした。ということでORACLEの問題じゃないのかと疑われています。 しかし、そのときORACLEでは何もしていないため、誤解を説明したいのですがORACLEではないと証明するためにはどうすればよいでしょうか? SQLNET等の設定を変更していないからORACLEの問題ではないと言えばいいのかどう説明したら理解してもらえるか悩んでいます。 情報不足で申し訳ありませんがアドバイスお願い致します。

  • PHP5+Oracle10gのconfigureについて

    Linuxで、configureをして、PHP5+Oracle10gをインストールしようと思っていますが、Webなどで検索して、 # export ORACLE_HOME=/home/oracle/product/10.2.0/db_1 # configure --with-oci8=$ORACLE_HOME ・・・・ というように、記述があったのですが、WebサーバとDBサーバを 分ける場合は、--with-oci8の記述は、どうすればよいのでしょうか?

    • 締切済み
    • PHP
  • .NetのWebAppliでOracleに接続したい

    VB.NetのWebApplicationでOracleに接続しようとしたところ、「oci.dllが見つからない」というエラーが発生しました。 そこでそのDLLを参照設定しようとしたのですが、これまたエラーになります。 同じソースをWindowsApplicationで走らせると正常につながります。 何故でしょうか? VB.NetのWebApplicationでOracleに接続するシンプルな方法があれば教えて下さい。

  • OracleからSQLServer参照時の不具合

    DBLINKを使用して、Oracle 10gからSQLServer2005に接続してSQLServer2005のテーブルを参照しています。テーブルデータを参照することはできるのですが、データベースとのセッションを切断してもサーバ上にhsodbcプロセスが解放されずに残る現象が発生しています。 当初は、ストアドプロシージャの不具合と考えていましたが、SQLPLUSでデータを参照した後、SQLPLUSを終了させても プロセスマネージャ上でhsodbcが解放されずに残っていたため、 APの問題ではないと考えています。 DBLINK、Oracleの設定で不備があるような気がするのですが対応策はあるのでしょうか。 お手数ですが回答をお願いします。

  • Oracle10g から 11g へ接続しようとしていますが、

    Oracle10g から 11g へ接続しようとしていますが、 「ORA-12541: TNS: リスナーがありません。」 と表示されます。 例)以下の環境で、「SQL/PLUS」を使用して、 ユーザ名/パスワード@NEWDB でログオンすると発生。 原因が分かる方がいらっしゃれば御教授願います。 (サーバ側は新規で11gをインストールしました。) 現在の tnsnames は以下のようになっていますが、 「localhost」などの記述に問題ありでしょうか? ■サーバ側:11g(O/S:XP) ※IP 192.168.0.1 WENDY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = WENDY.com) ) ) LISTENER_WENDY = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ■クライアント側:10g(O/S:XP) NEWDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = WENDY.com) ) )

  • PEARでOracleへ接続時にエラー

    Linuxサーバ環境でpearを用いてPHPからOracleに接続したいのですがうまくいきません。 <?php require_once("DB.php"); $dsn = "oci8://SCOTT:tiger@DBサーバIP/DB名"; $db = DB::connect($dsn); if (DB::isError($db)) { echo "接続エラー"; } else { echo "接続成功"; } ?> というPHPにアクセスすると、接続エラーとしか表示されません。 接続先のDBに該当のユーザは存在しており、このWebサーバからSQLplusで sqlplus scott/tiger@//DBサーバIP:1521/DB名 で接続はできております。 OS:CentOS 5.2 (VMWare上で稼働) カーネル:2.6.18-92.el5 Apache:2.2.9 PHP:5.2.6 PHP-PEAR:1.4.9 接続先Oracle:9.2.0.1.0 (イントラ同セグメント内で稼働) 尚、同様の方法でWebサーバ内で稼働しているMysqlへは問題なく接続できております。 以上、心当たりのある方がいらっしゃいましたらお願い致します。

    • 締切済み
    • PHP
  • クラサバアプリでのネットワーク障害?

    会社にて、クラサバのシステムを入れていますが、 ある更新処理を行うと、マウスカーソルがウェイト状態になり、固まります。 システム会社に連絡しても、ネットワークが悪いといいますが、 社内のファイルサーバーや、WEBアプリでは接続できないなどの障害は発生していません。 そもそも、ネットワークに障害があった場合はクライアントアプリにてエラーメッセージを出すべきだと思いますが、それは置いていて。。。 もし、ネットワークに障害があるとしたらどのように調べればいいでしょうか? 社内のネットワークの構成はPCが15台ほど、サーバーが4台です。 社内には、インフラの専門家がいないので何かご教授いただけたらと思います。

  • PHPでのOracleサポートのオプション

    宜しくお願いします。 ものの本では PHP4.2.1でOCI8関数を使う場合に 以下のオプションを付ける、、、とありました。 ======================================================== $ ./configure --with-apxs=/usr/local/apache/bin/apxs \ --with-oci8=[ORACLE_HOMEのパス] \ (*1) --enable-sigchild \ (*2) --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex \ : : (その他) ======================================================== (*1)と(*2)の部分がOracleに関する部分と あったのですが、(*2)を付け忘れてインストールして いました。付け忘れに気づいたのは しばらく後の事で、それまでOCI8関数を使った PHPアプリも普通に動いています。 --enable-sigchild をつけなかった場合に Oracleにどういった影響があるのでしょうか? お客様サーバでの痛恨のミスで PHPを入れ直すか、影響が無ければそのままに しておくか悩んでおります。 ご存知の方がおりましたらアドバスお願いいたします。 OS:RedHat7.1 Oracle 9i 9.0.1.3.1 PHP4.2.1 宜しくお願いします。

  • VB.NET Oracle接続 32、64bit

    VB.NET 2010でOracle11gに接続するプログラムを作っていますが、 接続方法がいまいちわからずに困っています。 プログラムを動かすサーバーはWindows Server 2008 R2の64bitだったので、 Oracle Clientも合わせた方がいいのかなと思い、64bit版をインストールしました。 ASP.NETのWEBアプリでは以下の接続文字列を用いてADO接続できました。 パラメータ値は例です。 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> 次に、コンソールプログラムを作成し、同じサーバーで上記と同様の接続文字列で 接続しようとしましたが、エラーとなり接続できませんでした。 いろいろ記述を変えても接続できませんでしたが、最終的にOracle Clientの 32bit版を64bit版と違うフォルダにインストールし、以下の接続文字列で接続 できました。(INIファイルに記載) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 この状態でWEBアプリの方は何を使っているのかと思い、64bit版のインストールフォルダを リネームしたところ、WEBアプリの方は接続できなくなりました。 現状では32bitと64bitのOracle Clientが両方必要な状況ですが、本来ならどちらかだけで すむと思います。 32bitと64bitで接続文字列が変わるという情報は得られませんでした。 何がまずいのでしょうか? 最初から32bit版をインストールすれば良かったのでしょうか。

  • Tomcat上Webアプリで徐々にレスポンス低下

    現在、Tomcat上のWebアプリケーションの負荷試験を実施しておりますが、 レスポンスが徐々に遅くなる事象が発生しています。 遅くなる事象が発生すると単独のリクエストに対するレスポンスも遅くなりますが、 Tomcatの再起動およびJConsoleのGCにてフルGCを実施するとレスポンスは復活します。 (数時間の間隔をあけても、自動復活の確認はできていません。) JVMの基本的なメモリチューニングをいくつか試みましたが、徐々に遅くなる事象の解消には至ることができていません。 原因調査のポイントがありましたら、ご教授お願いいたします。

    • ベストアンサー
    • Java