• ベストアンサー
  • 暇なときにでも

DBサーバーのOracleからのデータ取得について

WEBサーバー(Linux)とDBサーバー(WindowsServer2003)が分かれている環境で、WEBサーバーのPHPからoci8で、DBサーバーのOracleからデータ取得をしており、データ取得量?が多いとエラーとなってしまします。 SQL自体はOracle環境で実行して正常にデータ取得することは確認しているのですが、10万行程度のレコード数でもレスポンスの時点?でエラーとなります。 (レスポンスの情報が無いので、エラー内容が分からず、データ件数を絞ると抽出が出来ます) 解決方法をご存じの方や、PHPもしくはLinuxの設定で取得データサイズの設定方法について分かる方がおりましたら、ご教授ください。 宜しくお願い致します。

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

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

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

  • ベストアンサー
  • 回答No.1
  • t_ohta
  • ベストアンサー率38% (3916/10162)

PHPのエラーログには何かエラーメッセージが出ていませんか? 考えられるのは、PHPの処理時間が長くなりすぎてタイムアウトしているか、DBの処理時間やDBとの通信時間が長くなりすぎてタイムアウトしているか、PHPの利用できるメモリ量を超えてデータが抽出されたためメモリ不足でエラーになっていると言った所かと思います。 それぞれで対処方法が異なるので、まずは原因を特定する必要があります。

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

関連するQ&A

  • 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
  • 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
  • OracleのデータをWebで閲覧する時のサーバー(Linux)の環境は?

    Linuxサーバー(RedHat or Miracle)のOracle(10g)のデータをブラウザで閲覧できるものを開発しようとしています。 今のところWebサーバーとしてApacheを使用し、スクリプト言語はPHPを使用する方向です。 Apache+PHP以外の実行環境の組み合せはありますでしょうか?

その他の回答 (1)

  • 回答No.2
  • bardfish
  • ベストアンサー率28% (4702/16562)

実行したSQLで取得できるレコード数が多すぎてWebサーバーとDBサーバーとの間の転送時間が長すぎるのが原因でしょう。 解決策としては、レコード件数が少なくなるようにWHEREの抽出条件を工夫すること。 あとは、プログラムの目的と、取得するデータの用途によってSQL分を精査することくらいですね。

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

関連するQ&A

  • 別のサーバーにあるDBに対してSELECTした結果が帰ってこない。

    別のサーバーにあるDBに対してSELECTした結果が帰ってこない。 質問はタイトル通り、別のサーバーにあるDBに対してSELECTした結果が帰ってきません。 あるwebサイトを新しいサーバーに移行する事になりました。 データベースはwebサイトと同じサーバーに準備していたのですが 新しいサーバーに移行する際に別のサーバーに準備する事になりました。 そして新しい環境で動作検証をしていて特に問題なく進んでいたのですが・・・・ 旧環境では特に問題なくSELECTした結果が帰ってきていましたが 新しい環境ではデータ取得の際に件数が多くなるとSELECTした結果が帰ってきませんでした。 SELECTした結果は約7000件~30000件のデータを取得するようになっております。 (新しい環境で1000件近くのデータを取得しようとしたら約5分かかりました。) これはSQL文が悪いのでしょうか、それともphpの設定が悪いのか、postgresqlの設定が 悪いのか特定出来ずに困り果てております。。。 何でも構いませんのでご助言を頂けたら幸いです。 ■環境について □以前の環境 同じサーバー内にphpとpostgresqlがある Postgresqlのバージョンは8.0.3で、phpのバージョンは5.0.5です。 □現在の環境 別のサーバーにphpとpostgresqlがある Postgresqlのバージョンは8.1.18で、phpのバージョンは5.1.6です。 ■データ取得テーブル □テーブル名 テストテーブル □フィールド数 100 (登録時刻フィールドはタイムスタンプ型です) □SQL文例 Select * From テストテーブル Where 登録時刻フィールド >= 'yyyy-mm-dd' AND 登録時刻フィールド <= 'yyyy-mm-dd'

  • 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
  • PostgreSQLからOracleへの移行で

    はじめまして。 PostgreSQL+PHP4で動作していたスクリプトを Oracle+PHP4に移行する作業をしています。 SELECTで取得された行の件数を得る為に、 pg_num_rows(result) を使っている箇所があるのですが、それと 同様の動作をするOCI関数はあるでしょうか? ※都合により、DBアクセス関数は全てOCI関数での 実装を予定しています。 ora_numrows()が使えれば良かったんですけれど。。

    • 締切済み
    • PHP
  • テスト環境と本番環境で、DBからのデータ取得にかかる時間に違いがある。

    お世話になります。 WebサーバとDBサーバを使用して構築したシステムが あります。 テスト環境と本番環境があり、それぞれ、以下の様になってます。 テスト環境 Webサーバ   Windows2000 Server+IIS5.0+ .NET Framework DBサーバ   Windows2000 Server+Oracle8.0.6 本番環境は Webサーバ   Windows2000 Server+IIS5.0+ .NET Framework、 DBサーバ   Solaris(バージョン分からず)+Oracle8.0.6 となっています。 テスト環境と本番環境の違いについてですが、 Webサーバの方は、スペックは違いますが、 その他の環境は同じです。 DBサーバの方は、OSの違いとOracleのデータベースの定義に少し違いがあるかもしれませんが、 データの件数とテーブルの定義は同じです。 そこで肝心の質問の件なのですが、 テスト環境と本番環境で、同システムを実行した際に、 DBからのデータ取得にかなりの時間の差があるのです。 テスト環境で、2~3分で終わる処理が 本番環境だと、30分くらいかかってしまいます。 何が原因でこのような状態になっているか分からず、 すごく悩んでいます。 ネットワークの速度にはそれほど違いはないのですが・・・。 また、マシンスペックは本番環境の方が高いです。 どんな細かい情報でもかまいませんので、 ここが怪しいのではないか?とかありましたら、 ご教授お願いします。 また、他に必要な情報とかありましたら、 できる限り調べますので、どうぞよろしくお願いします。

  • CentOS7から外部サーバーのOracle接続

    CentOS7からJqueryなどを使って、WEBページ上でボタンなどを押したら、別サーバー上のOracleデータベースのデータを取得したいと考えています。 ただ、サーバーIPアドレスや、サーバー名、DB名などを指定して接続では接続できなくて、素人の質問かと思いますが、どのような設定?をすればCentOS7からOracleサーバーへのDB接続ができて、データを取得することができるのでしょうか。 教えていただけましたら幸いです。 足りない情報などございましたらお聞きください。 どうぞ宜しくお願いします。

  • WebサーバーのDBサーバー

    どなたか、教えて下さい。 今回Webサーバーの構築を行なうのですが、それにあたって質問があります。 ものすごい単純なことなのかもしれませんが。教えて下さい。 Webサーバーを1台、DBサーバーを1台構築しようと考えています。 Webサーバーには、IISを導入しようとかんがえていますが、 DBサーバーって、何か、特別な、Webの物の設定て必要なのですか? 普通のDBサーバー(ファイル)で構わないのでしょうか? すいません。お教えください。 今回Webサーバーと、ファイルサーバー(DB)が違うマシンなのは、 はじめてなもので・・・・・

  • DBサーバーへのoracleインストールについて

    oracleをDBとして使用する 2つシステムをサーバーへインストールし利用する予定なのですが OS、Oracleのインストール後、インスタンスを2つ(環境ごとに)作成する予定です。 インスタンスを作成する際、リスナーの設定など。 何か注意すべき点等ございますでしょうか? 初歩的な質問で申し訳ございませんが ご教示頂けると大変有難いです。 OS / Windows2008server oracle / 11g よろしくお願い申し上げます。

  • ORACLE と PHP

    以下のローカル環境で、Webサイトの練習を行っております。 PHPからORACLEへアクセスするためには、どのような設定を行う必要があるでしょうか? よろしくお願いいたします。 <環境>  OS :Windows2000  DB :OracleWorkgroupServer 8.1.6  サーバ:apache  WEB :PHP <状況>  以下の文の個所で、PHPエラーになってしまうんです。  ちなみに、apacheとPHPの設定をした後、普通にOracle8.1.6をインストールしただけで、  それ以上の環境設定はしてません。  やっぱり、ODBCか何かの設定が必要なのでしょうか?   $conn = Ora_Logon("system", "manager");

  • MySQL/DBサーバって、MySQL/DBクライアントみたいなものりますか?

    Linux+Apache+MySQLでサイト構築を検討しています。 MySQL/DBって、ORACLE8で言うところの、 いわゆる「Net8クライアント」のようなものってあります? 実は、今まで、NT+MS-SQLServer7でサイト構築してたのですが、 Linuxで再構築することとなっちゃいました。 で、MS-SQLServer7だったら、クライアントPCから、 GUIを使って、データベースのデータを簡単に変更することができます。 しかし、LinuxではMS-SQLServerは使えないので、じゃぁ、ORACLEって手もありますね。 そこで、ORACLEだったら、Net8があるので、多分、 上記のような使い方もできると思うのですが、 ORACLEは、導入コストが高すぎるので、却下されてしまいました。 で、Linux+MySQLにしようかと・・・。 しかし、サーバ機にLinux+MySQL/DBを構築するのはいいのですが、 Windowsなどのクライアントから、ORACLEでいうNet8でODBCのような接続で、 Microsoft-Accessなどを使って、データベースのデータを編集させたいんです。 よろしくお願いします!

  • oracle DBの複製方法について

    色々サイトとかをみたのですが、発見できなかったので記載します。 【環境】 Oracle Database 11g linux 6.2 【実現したい事】 あるDBがあって、同じサーバ内に別名でDBを構築したいです。(スキーマとかも一緒) ※期間的な所もあって、一番早く複製できる方法を希望 <DB>A⇒<DB>B 大変お手数ですが、手順を詳細に記載して頂けると助かります。。。。 何か情報として他に必要であればご指摘願います。