この質問は昨日投稿したものに関連していますが、さらに意味があります。
状況は次のとおりです。テーブルを削除できません。次に例を示します。
SQL> CREATE TABLE FOO (BAR NUMBER) TABLESPACE SYSTEM
/
Table created.
SQL> SELECT COUNT(1) FROM FOO;
COUNT(1)
----------
0
SQL> DROP TABLE FOO;
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
ORA-06512: at line 19
したがって、テーブルは存在するようですが、削除できません。
エラーORA-00604: error occurred at recursive SQL level 1 に注意してください。存在しないテーブルを削除しようとしても、次のエラーは表示されません。
SQL> DROP TABLE NON_EXISTING_TABLE
ERROR at line 1:
ORA-00942: table or view does not exist
どういうわけか、システムはドロップ時にテーブルを見つけることができません。
Oracle のインストールと DB 自体は新しいものです (1 日経過)。
編集 - 別のテーブルスペースとユーザー (作成したばかり) を使用してこのテストを再試行しましたが、少し異なる動作がSYS
得られました。ただし、この新しいユーザーを使用すると、エラーが発生した後、テーブルから選択できなくなりました。DROP
DROP
解決
問題が見つかりました: MDSYS.SDO_GEOR_SYSDATA_TABLE が見つからないため、削除操作ができませんでした。解決策は、そのテーブルを復元することです。これがGaurav Soniによる完全な解決策です(ちなみに、どうもありがとうございました)。
スクリプト catmd.sql ($ORACLE_HOME/md/admin dir にあります) を実行します。
catmd.sql スクリプトは、Oracle Spatial が必要とするすべてのオブジェクトをデータベースにロードするスクリプトです。次に、ユーザーをドロップします。
オラクルのメタリンクも参照できます