-1

私は SQL Server の経験を持つ開発者です。SQR と Oracle を使用して毎週の重複レコード検索を実行する 1 つのレガシー アプリケーションがあります。14 年後にこの検索を実行中にエラーが発生しました。「ORA-01438: 指定された精度よりも大きな値がこの列に許可されています」と表示されます。そのエラーをグーグルで調べたところ、数値フィールドに関連しており、渡された値が保持できるよりも大きいことがわかりました。サイズを大きくすることはできますが、どれがどれなのかわかりません。ここでは誰も Oracle をサポートしていないため、このエラーのトラブルシューティングを試みているところ、使用している人々が見つかりました。

alter system set events='1438 trace name Errorstack forever,level 10';  

これが失敗しているSQLを見つける正しい方法であるかどうか知りたいですか? また、それは何を変更し、レベル10とは何ですか? このクエリを本番環境で実行する前に考慮すべきことはありますか? このクエリを実行した後にロールバックする必要があるものはありますか? SQL> insert into test values (100000000000000000,'test','test'); を実行すると、10000000000000000 が無効な場合、一般的な Oracle メッセージ ORA-01438 がスローされます。しかし、トレース ファイルでは、ORA-01438: 値がこの列に許可されている指定された精度よりも大きくなっています。では、トレース ファイルはどこに生成されるのでしょうか。

Current SQL statement for this session:
insert into test values (100000000000000000,'test','test').

私が正しい道を進んでいない場合はお知らせください。

4

1 に答える 1

0

DBMS_MONITOR を使用して、影響を受けるセッションのトレースを有効にします。有効にすると、これにはすべての SQL とエラー、およびバインド変数が含まれます。

于 2015-09-23T12:07:58.927 に答える