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
答案 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