• 締切済み

DBトラブルの解析方法について

peugeot307の回答

回答No.1

なかなか回答が付かないようですが・・・ っていうか、質問は何ですか?

関連するQ&A

  • DBの解析方法

    誤って新規作成してしまったQNo.1340574は後ほど削除します。^^; 1、システム構成 (1)クライアント(Windows XP Professional) (1)VB6で作成した業務プログラム (2)oo4o(Oracle Object For Windows) (2)サーバ(HP-UX9000/800) (1)Oracle(DBMS) (ハードウェアが5台あり、ハードウェア毎にインスタンスが1つ作成済み。) (各インスタンスには、複数のユーザを作成済み。) (便宜上、各インスタンスをA,B,C,D,Eと呼ぶ。) 2、発生している問題 クライアントの業務プログラムからoo4oを 利用してDBアクセスを行っておりますが ある処理で、サーバからの応答がなくなり クライアントプログラムが応答なしとなります。 この状態で、v$session,v$lockの内容を確認したところ ユーザテーブルに対しての参照SQLのセションがアクティブの残っており 更に、トランザクション・エンキュに対してのロックも残っている状態まで 確認することができました。 (また、30分程度待つことで、セションが消滅します。) また、サーバがこの状態になると 別クライアントから同様の処理を実行するたびに クライアントプログラムが応答なしとなり アクティブのセションが残ってしまいます。 また、サーバに接続するクライアントが少ない場合には発生していないようです。 (開発環境では再現しません) 3、質問 もう、正直いって自分の知識だけでは、もう解析方法が残っておりません。 なにかアドバイスはありませんでしょうか? もしくは具体的に「コレをみろ!」とか「コレを使え!」とか ありましたら、教えてください。

  • C#でトランザクション開始後参照出来ない

    言語:C# DB:SQLServer2008 1.トランザクション開始 2.テーブルAをUPDATE 3.色々な処理(省略) 4.テーブルAのUPDATE前の情報を参照 5.参照したテーブルをもとにテーブルBをUPDATE 6.すべての処理が正常だったら全テーブルコミット、1つでも失敗したら全テーブルロールバック 問題となっているのは 4.テーブルAのUPDATE前の情報を参照する際に、テーブルAがロックされていて参照出来ないことです。 トランザクション開始時に分離レベルを設定してみましたが同じ結果でした。 tran = con.BeginTransaction(分離レベル); お分かりになる方ご教授お願いします。

  • トランザクションのネストについて

    トランザクションのネストについて お世話になります。 今、ストアドの中でストアドを実行するようなSQLを作成しているのですが、 このときのトランザクション処理について教えていただきたいです。 簡単な流れとしましては Aトランザクション開始(大枠のストアド) ↓ 処理a  ↓  Bトランザクション開始  ↓  (Aストアドの中のストアド実行)  ↓  Bコミット  ↓ 処理b ↓ Aコミット といった感じなのですが、BストアドでコミットするとBストアドをCALLする前の処理aが コミットされてしまいます。 ここはBはBだけでコミットされてほしいのです。 独自で調べた限りでは、「トランザクションのネストはMySQLではできない」ということらしいのですが、 こういった場合、どのようにしたらよいのでしょうか。 もし方法があれば、ご教示のほどお願い致します。 -環境- [DB MySQL 5.0] [OS Windows XP]

    • ベストアンサー
    • MySQL
  • カーソルがコミットするとクローズされてしまう。

    オラクルのDBで環境はUNIX(IBMのマシン)です。 DBについて詳しくありませんが、以下のようなことを行いたいと考えています。 1.あるDB(DB-A)のレコードを特定のキーの昇順に全レコード読み込む。(特定のキーは、例えば商品コードなど) 2.1レコードを読み込む毎に、他のDB(DB-B)を読み込んだレコードを元に、更新したい。 その際、1レコードを読み込む都度、 2-1.トランザクションの開始 2-2.DB-Bの更新 2-3.コミット又はロールバック のようにしたい。 上記のことを考えて以下のような作りにしました。 1.カーソルのオープン 2.以下のループを作成  2-1.DB-Aから1レコードのフェッチ  2-2.トランザクションの開始  2-3.DB-Bの更新  2-4.コミット(ロールバック) しかしながら、コミット(又はロールバック)を行うことにより、カーソルがクローズされてしまい、最初の位置にカーソルが戻ってしまいます。(私がコーディングして試験したわけではありません。このような報告をうけました) それで、カーソルが戻らずに、全レコードを処理するようにしたいのですが、どのようにしたら良いのでしょうか。ご存じの方おりましたらアドバイスをお願いします。

  • エクセルでの複数レコードの作成方法

    レコードにある特定の値(A~C)を追加し10個のパターンを作成したいと考えております。 対象のレコードが数千レコードあるため、手作業が困難です。 何か効率の良い作成方法はありませんでしょうか。 ■元のレコード -------------- 行| A -------------- 1|レコードA 2|レコードB 3|レコードC ■作成後(この様にしたい) ------------------ 行| A     B ------------------ 1|レコードA A 2|レコードA B 3|レコードA C 4|レコードB A 5|レコードB B 6|レコードB C 7|レコードC A 8|レコードC B 9|レコードC C よろしくお願いいたします。

  • 表を自動で作成する方法を教えてください。

    表を自動で作成する方法を教えてください。 エクセルでとあるモデルを作成しました。 それは二つの条件から複数の計算を経由して結果を出力するモデルです たとえば 数値Aと数値Bを入力すると、表に A B C(数値AとBに依存する複数の計算うを経由した結果) と出力されます。 これを表の縦軸にA横軸にBを様々なパターンの値にした表を作成して それぞれのAとBの値の組み合わせから計算された結果Cを、表に入れていきたいと考えています。 以下のようなものを想定しています。  B  B'  B'' A C C' C'' A’C'''C'''''  A'' このABの表から自動的に最初に構築した計算に反映して表を埋めていくような方法はありますでしょうか。 ご存知の方がいましたら教えていただきたいと思いまして質問させていただきました。 よろしくお願いいたします。

  • DB2の共有ロックについて。

    DB2の共有ロックについて。 DB2 Express-C 9.7を利用していますが、コマンドエディターを複数起動し、共有ロックの動きを確認したいと思っています。 コマンドエディターAでSELECT文を発行し、コマンドエディターBでSELECT文を発行した場合、想定ではコマンドエディターBのSELECT文は結果が返却されず待ち状態になると考えていました。ところが待ち状態にならずに値が返却されました。 コマンドエディターAの設定で自動コミットのチェックを外しても外さなくても同様です。また分離レベルは特に明示的に変更していないのでデフォルトのREAD_COMMITEDになっていると思います。 何か根本的におかしいことをしているでしょうか? よろしければアドバイスを頂ければと思います。

  • 排他処理について

    VBでトランザクションをかけてあるテーブルを処理しています。 具体的にはテーブルAのレコードを一時的に別テーブル(テーブルB)に コピーしてそのレコードすべてを元のテーブルから削除して、 テーブルB内で処理をさせてから、そのデータをテーブルAに戻して コミットしています。 この処理中に、別PGもしくはSQLPlusでテーブルAからテーブルBに コピー対象の1レコードを削除してコミットしました。 これってエラーになる?ならない?それともトランザクション中だから テーブルAがコミットされて開放されるまで待ちの状態になる?? 実際どうなったかというとエラーにならなくて、その処理で最後に テーブルAにテーブルBをコピーしたときにエラーになって データがきえるという現象がおきてしまいました。 上記のような処理のときにOracle条ではどのような処理になるのでしょうか? よろしくお願いします。

  • DBへの重複更新を防ぐ方法について

    いつも、お世話になっております。 現在、ASP.NetとOracle9iでWebアプリケーションを開発しています。 現在、複数のユーザがほぼ同時に同一のデータに更新をかけられないよう にする処理で悩んでいます。 今まで開発してきたシステムでは、各データに更新回数を持たして、 その数をチェックすることにより、同時に更新されることを防いできました。 具体的には、 ユーザA:データ取得(このときの更新回数X) ユーザB:データ取得(このときの更新回数X) (ユーザA,B共に画面などで、データ操作) ユーザA:トランザクション開始 このとき、取得した更新回数を再度取得、X ユーザAが先に取得したときと更新回数が同一のため、データは更新されていない。 データ更新処理を許可する データ更新を行い、更新回数を+1する コミット ユーザB:トランザクション開始 このとき、取得した更新回数を再度取得、X+1 ユーザBが先に取得したときと更新回数が同一でないため、データは更新されている データの更新は許可しない ロールバック という処理を行っています。 しかし、この方法では、ユーザAがデータ更新を行う直前でかつ、ユーザBが更新回数のチェックを行うというタイミングだと、ユーザBがデータの更新ができてしまうようです。 より安全に重複更新を避けたいのですが、良い手はございませんか?ご存知でしたら、教えていただけないでしょうか?宜しくお願いいたします。

  • Pythonでの属性による検索について

    お世話になります。pythonによるコーディングを始めたばかりでつまづいています。  クラスを使って複数のインスタンスを作成しました。各インスタンスには4つの属性、A、B、C、Dがあるとします。このときに例えば属性A=1、属性B=0、属性C=1を同時に満足するインスタンスを検索して、そのインスタンスの属性Dの値を取得したいのですが、どのようにすればよいのでしょうか。御指南いただけませんでしょうか。よろしくお願いいたします。