1

昨夜の自動テスト実行の途中で、私の 20 のワーカー スレッドのうちの 1 つが吹き飛ばされました。アプリケーションが INSERT を試みていました。Springframework レポート ORA-00942: テーブルまたはビューが存在しません。

エンタープライズ マネージャーを介してデータベース (11.1.0.6.0) に接続し、SQL ワークシートを取得してテーブルにクエリを実行し、(a) テーブルが現在存在していること、(b) 挿入されるべき行が欠落していること (c) を発見しました。 ) このスレッドによって以前に挿入された行が存在する (d) テーブルに時間内のエラーの前後に行があること。

オラクルの経験がほとんどないユーザーの場合、エラーがこのデータベースサーバーで発生したことを確認するにはどうすればよいですか?また、そこからエラーを根本原因に戻すにはどうすればよいですか?

4

2 に答える 2

1

Dave Kが言ったように、テーブルは存在していたかもしれませんが、プロセスからは「見えなくなりました」。

「昨夜」というフレーズがあるため、私の考えでは、テーブルがオフラインになる原因となったバックアップやクリーンアップ プロセスなどの夜間のプロセスが存在する可能性があります。

于 2009-10-23T03:52:32.033 に答える
1

データベース自体でどのSQLが実行、コミット、ロールバックされているかなどを確認するために、できるだけデータベースに近いところから始めます。TKPROF をセットアップし (ドキュメントを確認するか、詳細についてはTom Kyte のサイトにアクセスしてください)、アプリから実際に何が実行されるかを確認します。これは、少なくとも、実行されると予想されるものが実際に「到着」しているかどうかを確認するのに役立ちます。

ORA-00942 は、テーブルが呼び出し側プログラムから「見えない」場合、つまりパーミッションが不十分な場合に発生します。

于 2009-10-22T20:19:59.437 に答える