我今天在我的 oracle 数据库上看到了一件奇怪的事情。
SQL> select tablespace_name, table_name from user_tables;
TABLESPACE_NAME |TABLE_NAME
------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SYSTEM |lavoratori2
1 riga selezionata.
Passati: 00:00:00.07
SQL> drop table lavoratori2 purge;
drop table lavoratori2 purge
*
ERROR at line 1:
ORA-00942: table or view does not exist
Passati: 00:00:00.03
我以非 sys 用户的身份尝试过这个,现在我以 SYS 身份尝试......同样的事情。
SQL> select tablespace_name, table_name from all_tables where table_name ='lavoratori2';
TABLESPACE_NAME
------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
SYSTEM
lavoratori2
SQL> drop table lavoratori2;
drop table lavoratori2
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL>
怎么解决?
我试图清空垃圾桶,但不朽的桌子仍然存在
SQL> purge recyclebin;
Recyclebin purged.
SQL> select tablespace_name, table_name from all_tables where table_name ='lavoratori2';
TABLESPACE_NAME
------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
SYSTEM
lavoratori2
另一个奇怪的事情..
SQL> select * from lavoratori2;
select * from lavoratori2
*
ERROR at line 1:
ORA-00942: table or view does not exist
如果我这样做了
select * from "lavoratori2";
返回
ORA-00942: table or view does not exist
如果我这样做了
SQL> select owner from all_tables where table_name ='lavoratori2';
返回作为表所有者的非 sys 用户的正确名称。
首先,如果您没有以表的所有者身份连接,则应始终在表名前加上所有者。如果您实际上以所有者的身份连接,这并没有什么坏处。以 THE_USER 身份连接(可以是 SYS 或任何其他用户),
所以只有当 THE_USER 是表的所有者时它才有效。
其次,我怀疑名字的大小写也很重要。Oracle 对对象名的默认是大写的,所以如果你使用小写你需要显式地转义它,否则它被认为是大写的:
您的查询显示您的表名是小写的,所以应该是
"lavoratori2"
.回顾一下,试试这个(用表的实际所有者替换 THE_USER):