ORA-00942。但该表存在于DBA_TABLES和DBA_OBJECTS中

时间:2015-04-15 15:47:22

标签: oracle oracle11g

Oracle版本:11.2.0.1.0。我从数据库转储导入了一个模式。我作为HR连接。 我可以通过' desc table_name'查看表格。当我查询DBA_ *对象时,输出正常。

但是在插入时,我得到ORA-00942

SQL> desc EMPLOYEE
 Name                                    Null?    Type
 --------------------------------------- -------- ----------------------------
 EMPLOYEE_ID                             NOT NULL NUMBER(16)
 EMPLOYEE_NAME                           NOT NULL VARCHAR2(200 CHAR)

SQL> select count(*) from dba_tables where owner = 'HR'
  2  and table_name = 'EMPLOYEE'
  3  /

  COUNT(*)
----------
         1

SQL> select object_type, object_name, created from dba_objects where owner = 'HR' and object_name = 'EMPLOYEE'

OBJECT_TYPE     OBJECT_NAME              CREATED
TABLE           EMPLOYEE                 03-APR-15

SQL> insert into EMPLOYEE ( EMPLOYEE_ID, EMPLOYEE_NAME ) values ( 11,'x')
  2  /
insert into EMPLOYEE ( EMPLOYEE_ID, EMPLOYEE_NAME ) values ( 11,'x')
            *
ERROR at line 1:
ORA-00942: table or view does not exist

3 个答案:

答案 0 :(得分:3)

这看起来像bug 9577583,影响了11.2.0.1,以及一些早期版本。如果您有权访问My Oracle Support,请查看document ID 9577583.8

非常高级的概要,因为我不能重现任何细节所说的内容,当相同的对象出现在多个模式中时会发生这种情况 - 你在employee表中有相同的hr表例如,{1}}和scott模式 - 而甲骨文对它应该关注的对象感到困惑。

有可能刷新共享池和/或强制进行硬解析可能会解决问题,至少是暂时的,但我没有基础版本来测试它;如果你能够,你最好不要修补。您可能希望首先使用Oracle提出服务请求,以验证这是您所看到的。

答案 1 :(得分:2)

你在运行插件的用户是什么?除非你作为" hr"用户你的代码需要看起来像这样......

insert into HR.EMPLOYEE ( EMPLOYEE_ID, EMPLOYEE_NAME ) values ( 11,'x')

您需要在插入

中包含架构名称

答案 2 :(得分:1)

该表是MV(物化视图)的基表。如果使用除了删除mv log'以外的任何方法删除MV LOG,则会出现错误。命令,任何后续的DML都会引发此错误。解决方案是使用' drop mv log'在这样的桌子上。见Doc ID 1912363.1