5

私は昨日からこの奇妙な問題を抱えています。私はいくつかのオプションを試しましたが、実際にORACLEとDB自体を再インストールしました。

ここに問題があります:私はゾンビのようなものであるこのテーブルを持っています。症状は次のとおりです。

SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='MYTABLE'

テーブルが存在することを意味するレコードを返します。

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'MYTABLE'

MYTABLEのすべての列を返します。これまでのところ、テーブルは存在します。

SELECT * FROM MYTABLE

戻り値ORA-00942:表またはビューが存在しません。この時点で私はかなり混乱しています。テーブルはUSERTABLESに存在しているように見えますが、それを選択することはできませんか?

CREATE TABLE MYTABLE (Foo NUMBER) TABLESPACE MYTABLESPACE

戻り値: ORA-00604:再帰SQLレベル1でエラーが発生しましたORA-00001:一意制約(SYS.I_OBJ2)に違反しました

私はこのエラーを理解していません。しかし、最高のものはまだ来ていません。

SELECT * FROM MYTABLE

驚いたことに、上記のクエリ(3番目のクエリの正確なコピー)は現在、いくつかのレコードを返します!さらに、列Fooが存在しないことに気付きました。現在表示されているテーブルは、他の列を含む最初のテーブルです。

DROP TABLE MYTABLE

テーブルを削除しようとすると、次のエラーが発生します。

ORA-00604:再帰SQLレベル1でエラーが発生しましたORA-00942:表またはビューが存在しませんORA-06512:19行目

SELECT * FROM MYTABLE

これまで以上に混乱して、私は上記のクエリを試しましたが、驚いたことに、テーブルはもう存在しません。

私はこれを理解していません:テーブルはUSERTABLESにありますが、それを選択することはできませんが、同じ名前で新しいテーブルを作成するとエラーが発生しますが、以前のバージョンのテーブルをいくつか使用して選択できるようになりました記録。

何かご意見は ?私は本当にあなたの助けが必要です:(

編集-私は今チェックしました:私はどのテーブルも落とすことができません。これは新しい症状かもしれません。

解決

問題は、MDSYS.SDO_GEOR_SYSDATA_TABLEテーブルが欠落していて、ドロップイベントトリガーがそれにアクセスしようとしてエラーを生成したことでした。解決策は、そのテーブルを復元することでした。

4

2 に答える 2

1

権限がある場合は、次のクエリを試してください。

SELECT *
  FROM dba_objects
 WHERE object_name = 'MYTABLE';

そして、その名前で存在するオブジェクトを確認します。それはあなたを正しい方向に向けるかもしれません。

于 2012-03-22T19:57:16.133 に答える
1

選択して削除しようとしたときに、スキーマ名を修飾しませんでした。セッションの CURRENT_SCHEMA は、ログオン ユーザーとは異なる場合があります。試しにチェック

select SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual;

出力が何であったかを説明する代わりに、完全な出力をコピーして貼り付けていただけますか?

最後に、誰かが辞書をめちゃくちゃにしたことを除外できますか? ご存知のように、SYSDBA は何でもできます....

于 2012-03-23T12:51:59.510 に答える