← 中文资源

简体中文版本

Oracle ORA-00942: 表或视图不存在

修复 Oracle 的 ORA-00942:表虽存在却因模式限定、同义词或缺少授权而不可见。

阅读英文原文

症状

查询报 ORA-00942: table or view does not exist,即便 DBA 确认该表存在。当应用以不同于模式属主的用户连接时尤为常见。

诊断

检查当前连接用户实际能看到什么:

SELECT owner, table_name FROM all_tables WHERE table_name = 'USERS';
SELECT * FROM all_tab_privs WHERE table_name = 'USERS';

在应用用户下无任何行,说明问题在可见性而非存在性。

修复

做限定或创建同义词,并授予权限:

CREATE SYNONYM app.users FOR core.users;
GRANT SELECT, INSERT, UPDATE, DELETE ON core.users TO app;

验证

以 app 用户执行原查询并返回行;all_tables 与 all_tab_privs 都确认该对象及其授权对该用户可见。