web-dev-qa-db-ja.com

解決方法:SQLエラー:ORA-00604:再帰SQLレベル1でエラーが発生しました

テーブルをドロップしようとすると、エラーが発生します

SQL Error: ORA-00604: error occurred at recursive SQL level 2
ORA-01422: exact fetch returns more than requested number of rows
00604. 00000 -  "error occurred at recursive SQL level %s"
*Cause:    An error occurred while processing a recursive SQL statement
           (a statement applying to internal dictionary tables).
*Action:   If the situation described in the next error on the stack
           can be corrected, do so; otherwise contact Oracle Support.
4
Ravi

エラーから次の行に気付きました。

exact fetch returns more than requested number of rows

その後、私は考えていました。Oracleは1行を期待していましたが、複数行を取得していました。また、デュアルテーブルのみがその特性を持ち、1つの行のみを返します。

そして、私が覚えているのは、デュアルテーブルの変更はほとんど行っておらず、デュアルテーブルを実行したときです。その後、複数の行が見つかりました。

ここで、dualテーブルを切り捨て、X値を持つ行のみを挿入しました。そして、すべてが正常に動作しています。

0
Ravi

考えられる説明の1つは、DROP TABLEステートメントごとに起動するデータベーストリガーです。トリガーを見つけるには、_TRIGGERS辞書ビューをクエリします。

select * from all_triggers
where trigger_type in ('AFTER EVENT', 'BEFORE EVENT')

疑わしいトリガーを無効にします

   alter trigger <trigger_name> disable;

DROP TABLEステートメントを再実行してみてください

1
Frank Schmitt