web-dev-qa-db-ja.com

私のテーブルは半分存在します。落とせない

行がないにもかかわらず、かなりのスペースを占めるテーブルがあります。私も少し前に落としました。今ドロップしようとすると、テーブルが存在しないと表示されます。

User_tablesに表示されます。また、そのすべてのパーティションとインデックスがuser_objectsに表示されます。

ごみ箱にもありません。

何が起きてる?

編集:

User_tablesの結果は次のとおりです。

TABLE_NAME  TABLESPACE_NAME CLUSTER_NAME    IOT_NAME    STATUS  PCT_FREE PCT_USED   INI_TRANS   MAX_TRANS   INITIAL_EXTENT  NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE    FREELISTS   FREELIST_GROUPS LOGGING BACKED_UP   NUM_ROWS    BLOCKS  EMPTY_BLOCKS    AVG_SPACE   CHAIN_CNT   AVG_ROW_LEN AVG_SPACE_FREELIST_BLOCKS   NUM_FREELIST_BLOCKS DEGREE  INSTANCES   CACHE   TABLE_LOCK  SAMPLE_SIZE LAST_ANALYZED   PARTITIONED IOT_TYPE    TEMPORARY   SECONDARY   NESTED  BUFFER_POOL ROW_MOVEMENT    GLOBAL_STATS    USER_STATS  DURATION    SKIP_CORRUPT    MONITORING  CLUSTER_OWNER   DEPENDENCIES    COMPRESSION COMPRESS_FOR    DROPPED READ_ONLY
jeremy_ALLK             VALID                                                   N                                            8           1      N   ENABLED         YES     N   N   NO      ENABLED NO  NO      DISABLED    YES     DISABLED            NO  NO

「droptablejeremy_ALLK」を実行すると、次のようになります。

Error starting at line 7 in command:
drop table jeremy_ALLK
Error report:
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
6
Jeremy

テーブル名の大文字と小文字の区別に悩まされています。 Oracleでは、これらのコマンドはすべてまったく同じです。

drop table jeremy_ALLK
drop table Jeremy_ALLK
drop table JEREMY_ALLK
drop table "JEREMY_ALLK"

つまり、テーブル名はデフォルトで大文字に「リフト」されます。テーブル名には小文字が含まれているため、次のようにdropステートメントを指定する必要があります。

drop table "jeremy_ALLK"

小文字またはスペース(!)で名前が付けられたデータベースオブジェクトがある場合は常に、二重引用符が使用されます。

9
Adam Hawkes

OK。問題は、大文字と小文字を区別するテーブル名でテーブルを作成したことであるようです(table_name in user_tablesは大文字と小文字が混在しています)。これを行う場合(そして将来的には行わないことを強くお勧めします)、すべての場所で大文字と小文字を区別するテーブル名を使用する必要があります。だからあなたのDROP TABLEステートメントは

DROP TABLE "jeremy_ALLK";
3
Justin Cave