我的桌子半存半存。不能放下它

我的桌子半存半存。不能放下它

我有一张表,虽然它没有行,但却占用了相当多的空间。不久前我也删除了它。现在当我尝试删除它时,它说表不存在。

它显示在 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

当我执行“drop table jeremy_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:

答案1

您被表名的大小写问题困扰了。在 Oracle 中,所有这些命令都完全相同:

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

也就是说,表名默认“转为”大写。由于表名中有小写字母,因此您必须指定 drop 语句,如下所示:

drop table "jeremy_ALLK"

每当数据库对象以小写字母或空格 (!) 命名时,就会使用双引号。

答案2

好的。问题似乎是您创建表时使用了区分大小写的表名(请注意,intable_nameuser_tables大小写混合的)。如果您这样做(我强烈建议您以后不要这样做),则需要在任何地方使用区分大小写的表名。因此您的DROP TABLE语句需要

DROP TABLE "jeremy_ALLK";

相关内容