2012-03-22 15 views
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上に置いていますが、選択できませんが、同じ名前の新しいテーブルを作成するとエラーになりますが、以前のバージョンのそのテーブルにはいくつかのレコードがあります。

どのような考えですか?私は本当にあなたの助けが必要:(

EDIT - 私は今確認:。。私は、任意のテーブルをドロップすることができないんだ。これはちょうど新しい症状かもしれませんが

ソリューション

問題でしたMDSYS.SDO_GEOR_SYSDATA_TABLEテーブルが見つからず、ドロップイベントトリガーがそのテーブルにアクセスしようとしていたため、エラーが発生しました。解決策はそのテーブルを復元していました。

+0

それは本当の表を見てみる必要があるように思われる - おそらく同義語の問題などを避けるようにそうテーブルが存在するかどうかを見るためにクエリを実行するとき、あなたは誰として接続していますか?それは普通のユーザーですか、システムですか、それとも何ですか?最初のクエリでOWNER、TABLE_NAMEを選択します。 OWNER.TABLE_NAMEのようにフルネームを指定して、あなたが思っていることが実際に起こっているかどうかを確認してみてください。 – MJB

+0

あなたは100%確信していますか?確かに '' MYTABLE''であり、 ''MyTable''などではありません。 – Ben

+0

@MJB良い点ですが、私はすでにそれを試みました。 USER_TABLESにはOWNER列はありませんが、ALL_TABLEにはその列があります。私はALL_TABLE上のOWNERをチェックし、そのユーザーを使用して接続しています。私もフルネームを指定しようとしましたが、運はありませんでした。 – jpaires

答えて

1

権限を持っている場合は、このクエリを試してみてください。

SELECT * 
    FROM dba_objects 
WHERE object_name = 'MYTABLE'; 

そして、その名前で存在するどのようなオブジェクトを参照してください。正しい方向に向けるかもしれません。

+0

そのクエリの結果は2つのレコードを返します。2つの異なる所有者(そのうちの1つは私は他のテーブルをドロップすることはできません)。私はそれを期待していた(別の所有者に同じ名前の2つのテーブル)、ここでは驚きはありません。これ以上のアイデア – jpaires

1

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

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

出力の内容を説明する代わりに、完全な出力をコピーして貼り付けてください。

最後に、誰かが辞書を台無しにしたことを除外できますか?あなたは知っている、SYSDBAは何でもすることができます....

+2

助けてくれてありがとう、私は問題を発見した。 MDSYS.SDO_GEOR_SYSDATA_TABLEテーブルがありませんでした。ドロップイベントトリガーがテーブルにアクセスしようとしていました。 – jpaires