ORA-00942: Table or View Does Not Exist – Complete Oracle DBA Troubleshooting Guide
ORA-00942: Table or View Does Not Exist – Complete Oracle DBA Troubleshooting Guide
The ORA-00942: table or view does not exist error is one of the most frequently encountered Oracle Database errors by Database Administrators (DBAs), developers, Oracle Forms developers, Oracle APEX developers, Oracle E-Business Suite administrators, reporting teams, and application support engineers. The error occurs when Oracle cannot locate or access the specified table or view during SQL statement execution.
Although the error message appears straightforward, ORA-00942 does not always indicate that the object is missing. In many production environments, the table or view actually exists, but Oracle cannot access it because of insufficient privileges, an incorrect schema reference, an invalid synonym, an unavailable database link, or execution under a different user context.
Oracle resolves every referenced object through a well-defined object name resolution process. During SQL execution, Oracle searches the current schema, private synonyms, public synonyms, and, when applicable, remote database objects through database links. If Oracle cannot successfully resolve the referenced object or verify the required privileges, it raises ORA-00942.
In enterprise environments, this error commonly appears after database migrations, application deployments, schema changes, Oracle upgrades, privilege modifications, Data Pump imports, Oracle E-Business Suite patching, Oracle APEX deployments, and object recompilation.
This complete Oracle DBA guide explains Oracle object resolution architecture, schema resolution, privilege management, synonyms, database links, Oracle Multitenant (CDB/PDB), Oracle RAC, Oracle Data Guard, Oracle APEX, Oracle Forms, Oracle E-Business Suite, Oracle Cloud Infrastructure (OCI), production troubleshooting techniques, security best practices, and preventive measures for Oracle Database 11g, 12c, 18c, 19c, 21c, and Oracle Database 23ai.
Verify that the referenced table or view exists, confirm the correct schema is being used, check object ownership, validate synonyms and database links, ensure the required privileges have been granted directly or appropriately through roles, and verify that the application is connecting with the expected database user.
Error Message
SQL*Plus Example
SQL> SELECT *
FROM employees;
SELECT *
*
ERROR at line 1:
ORA-00942: table or view does not exist
Application Example
ORA-00942: table or view does not exist ORA-06512: at line 1
The error may appear in SQL*Plus, SQL Developer, Oracle Forms, Oracle APEX, Oracle Enterprise Manager, JDBC applications, PL/SQL programs, scheduled jobs, Data Pump operations, RMAN catalog scripts, and third-party applications that execute SQL statements against Oracle Database.
What Does ORA-00942 Mean?
ORA-00942 indicates that Oracle Database cannot resolve or access the referenced table or view during SQL statement execution.
The object may actually exist, but Oracle still raises ORA-00942 if:
- The object exists in another schema.
- The connected user lacks the required privileges.
- A synonym points to an invalid or nonexistent object.
- A database link is unavailable.
- The application is connected to the wrong database or PDB.
- The object has been dropped, renamed, or moved.
Because multiple root causes can produce the same error, DBAs should investigate object resolution and security rather than assuming the object is missing.
Oracle Object Resolution Architecture
When Oracle executes a SQL statement, it resolves object names in a specific order. Understanding this process is essential for diagnosing ORA-00942.
SQL Statement
│
▼
Current Schema
│
Object Found?
│
┌────┴────┐
│ │
Yes No
│ │
▼ ▼
Privilege Private Synonym
Check │
▼
Public Synonym
│
▼
Database Link
│
▼
Object Found?
│
┌────┴─────┐
│ │
Yes No
│ │
▼ ▼
Privilege ORA-00942
Check
│
▼
SQL Executes
If Oracle cannot resolve the object through this process or cannot verify the necessary privileges, ORA-00942 is returned.
Schema Resolution
Oracle first searches the current schema for the referenced object. If the object belongs to another schema, you must either reference it with the schema name or create an appropriate synonym.
Example:
SELECT * FROM hr.employees;
If the current user lacks privileges on HR.EMPLOYEES, Oracle still returns ORA-00942 even though the table exists.
Private and Public Synonyms
Synonyms simplify object access by allowing users to reference objects without specifying the schema name.
Oracle searches:
- Current schema
- Private synonyms
- Public synonyms
An invalid synonym, a dropped target object, or a broken database link referenced by a synonym can all produce ORA-00942.
Common Causes of ORA-00942
1. Table or View Does Not Exist
The object has been dropped, renamed, or was never created.
2. Wrong Schema
The SQL statement references the object without specifying the correct schema.
3. Missing Object Privileges
The connected user lacks SELECT, INSERT, UPDATE, DELETE, or EXECUTE privileges required to access the object.
4. Invalid Synonym
The synonym references an object that no longer exists or points to an inaccessible object.
5. Database Link Problems
Remote objects cannot be resolved because the database link is invalid or unavailable.
6. Incorrect PDB or Database
Applications connect to the wrong Pluggable Database (PDB) or the wrong Oracle environment after migrations or deployments.
7. Definer Rights vs Invoker Rights
PL/SQL procedures executing with different privilege models may fail to resolve objects correctly.
8. Roles vs Direct Privileges
Privileges granted through roles are not available inside definer-rights PL/SQL objects, resulting in ORA-00942 during execution.
Common Symptoms
- SELECT statements fail.
- INSERT, UPDATE, or DELETE statements return ORA-00942.
- PL/SQL packages fail during execution.
- Oracle Forms screens cannot retrieve data.
- Oracle APEX applications display object errors.
- Reports fail after database migration.
- Scheduled jobs stop processing.
- Application deployment succeeds but runtime SQL fails.
ORA-00942 vs Related Oracle Errors
| Error | Description | Primary Cause |
|---|---|---|
| ORA-00942 | Table or view does not exist. | Object cannot be resolved or accessed. |
| ORA-01031 | Insufficient privileges. | User lacks required privileges. |
| ORA-04043 | Object does not exist. | Referenced object is missing. |
| ORA-06512 | PL/SQL stack information. | Reports the location of the exception. |
Never assume ORA-00942 means the table has been dropped. In production environments, the most common causes are incorrect schemas, missing object privileges, invalid synonyms, application connections to the wrong PDB, or definer-rights PL/SQL privilege issues. Always verify object resolution and security before recreating database objects.
Step-by-Step Oracle DBA Troubleshooting
When ORA-00942 occurs, avoid immediately recreating the object. In production environments, the object often exists, but Oracle cannot resolve it because of schema, privilege, synonym, or environment issues.
Step 1 – Verify That the Object Exists
First, determine whether the table or view actually exists.
SELECT
OWNER,
OBJECT_NAME,
OBJECT_TYPE,
STATUS
FROM DBA_OBJECTS
WHERE OBJECT_NAME = UPPER('EMPLOYEES');
If no rows are returned, the object may have been dropped, renamed, or created in another schema.
Step 2 – Verify the Current Schema
Many ORA-00942 errors occur because the application is connected as an unexpected user.
SHOW USER;or
SELECT USER FROM DUAL;Also verify:
SELECT
SYS_CONTEXT('USERENV','CURRENT_SCHEMA')
FROM DUAL;
Step 3 – Check Object Ownership
Determine which schema owns the object.
SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME='EMPLOYEES';If the table belongs to another schema, reference it explicitly.
SELECT * FROM HR.EMPLOYEES;
Step 4 – Verify Object Privileges
Even if the object exists, the connected user must have the appropriate privileges.
SELECT OWNER, TABLE_NAME, GRANTEE, PRIVILEGE FROM DBA_TAB_PRIVS WHERE TABLE_NAME='EMPLOYEES';Grant access if required.
GRANT SELECT ON HR.EMPLOYEES TO APPUSER;
Step 5 – Verify Roles Versus Direct Grants
Inside definer-rights PL/SQL procedures, privileges granted through roles are ignored.
Always verify whether the required privilege has been granted directly.
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE='APPUSER';
Step 6 – Check Synonyms
Applications frequently access objects through private or public synonyms.
SELECT OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME, DB_LINK FROM DBA_SYNONYMS WHERE SYNONYM_NAME='EMPLOYEES';Verify that the synonym still references a valid object.
Step 7 – Validate Database Links
If the synonym points to a remote database, verify that the database link is valid.
SELECT OWNER, DB_LINK, HOST, USERNAME FROM DBA_DB_LINKS;Test the remote object.
SELECT * FROM HR.EMPLOYEES@PRODDB;
Step 8 – Verify Views
If the object is a view, ensure that its base tables still exist and remain accessible.
SELECT OWNER, VIEW_NAME FROM DBA_VIEWS WHERE VIEW_NAME='EMPLOYEE_VIEW';
Step 9 – Check Invalid Objects
Database upgrades, imports, or deployments can invalidate dependent objects.
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE STATUS='INVALID';Recompile if necessary.
ALTER VIEW HR.EMPLOYEE_VIEW COMPILE;
Step 10 – Oracle Multitenant (CDB/PDB)
Ensure that the application is connected to the correct Pluggable Database.
SHOW CON_NAME;or
SELECT NAME, OPEN_MODE FROM V$PDBS;Many ORA-00942 incidents occur because applications connect to the wrong PDB after upgrades or cloning.
Step 11 – Oracle RAC Considerations
- Verify all RAC instances access the same database objects.
- Confirm services connect to the correct database.
- Check recent deployment or patching activities.
- Validate object synchronization after Data Pump imports.
Step 12 – Oracle Data Guard Considerations
Ensure applications are connected to the correct database role.
SELECT DATABASE_ROLE FROM V$DATABASE;Read-only standby databases may not contain recently created objects until redo has been applied.
Step 13 – Oracle APEX Considerations
- Verify the parsing schema.
- Check workspace configuration.
- Review supporting object installation.
- Confirm object privileges.
Step 14 – Oracle Forms & Reports
- Verify runtime database user.
- Check synonym validity.
- Confirm object ownership.
- Review privilege grants.
Step 15 – Oracle E-Business Suite Considerations
- Verify APPS schema objects.
- Check editioned objects.
- Review custom schemas.
- Validate grants after patching.
Step 16 – Oracle Cloud Infrastructure (OCI)
- Confirm the application connects to the intended Autonomous Database or VM Database.
- Verify wallet configuration if required.
- Review database service names.
- Validate deployment configuration after cloning.
Real Production Case Study
After migrating an HR application from Oracle 12c to Oracle 19c, users began receiving ORA-00942 while opening employee records.
The investigation confirmed that the EMPLOYEES table still existed in the HR schema. However, the application was connecting as APPUSER, and the required SELECT privilege had previously been granted through a role rather than directly.
Because the query executed inside a definer-rights PL/SQL package, role-based privileges were ignored. After granting the privilege directly to the application schema and recompiling the package, the application resumed normal operation.
Oracle DBA Troubleshooting Checklist
| Verification | Status |
|---|---|
| Object Exists | ☐ |
| Correct Schema Verified | ☐ |
| Correct Database/PDB Verified | ☐ |
| Object Ownership Confirmed | ☐ |
| Required Privileges Verified | ☐ |
| Direct Grants Verified | ☐ |
| Synonyms Validated | ☐ |
| Database Links Tested | ☐ |
| Invalid Objects Reviewed | ☐ |
| Application User Verified | ☐ |
| Problem Successfully Resolved | ☐ |
Oracle Version Considerations
Although ORA-00942 exists in every Oracle Database release, the underlying causes vary depending on the Oracle version and architecture. Newer releases introduce Multitenant databases, edition-based redefinition, and enhanced security features that can affect object resolution.
| Oracle Version | ORA-00942 Considerations |
|---|---|
| Oracle 10g | Traditional schema-based object resolution with private and public synonyms. |
| Oracle 11g | Improved dependency management and edition support preparation. |
| Oracle 12c | Multitenant architecture (CDB/PDB) introduces container-specific object visibility. |
| Oracle 18c / 19c | Enhanced security defaults and improved privilege management. |
| Oracle 21c / 23ai | Cloud-native deployments, stronger security, and expanded application development features. |
Oracle Security Best Practices
- Always reference production objects using fully qualified schema names where appropriate.
- Grant object privileges directly to application schemas when PL/SQL packages require them.
- Use private synonyms only when they simplify application maintenance.
- Review public synonyms periodically and remove unused entries.
- Avoid granting unnecessary privileges through powerful roles.
- Regularly audit object ownership and privilege assignments.
- Document all application schemas and their required privileges.
- Use least-privilege access for all users and applications.
- Validate privileges after database migrations and upgrades.
- Monitor invalid objects after deployments.
Common Administrator Mistakes
- Assuming the table has been dropped without verifying object ownership.
- Connecting to the wrong schema or Pluggable Database.
- Relying on role-based privileges inside PL/SQL packages.
- Ignoring invalid synonyms after migrations.
- Forgetting to grant privileges after importing application objects.
- Using public synonyms excessively.
- Failing to validate database links after migrations.
- Not recompiling invalid objects after upgrades.
- Assuming Oracle Forms or APEX uses the same schema as SQL Developer.
- Ignoring security implications when granting object privileges.
Useful SQL Queries
Find the Object
SELECT
OWNER,
OBJECT_NAME,
OBJECT_TYPE,
STATUS
FROM DBA_OBJECTS
WHERE OBJECT_NAME = UPPER('EMPLOYEES');
Display Object Privileges
SELECT OWNER, TABLE_NAME, GRANTEE, PRIVILEGE FROM DBA_TAB_PRIVS WHERE TABLE_NAME='EMPLOYEES';
Check Synonyms
SELECT OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME, DB_LINK FROM DBA_SYNONYMS;
Show Invalid Objects
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS='INVALID';
Current Container
SHOW CON_NAME;
Useful Linux Commands
| Command | Purpose |
|---|---|
echo $ORACLE_HOME |
Verify Oracle Home. |
echo $ORACLE_SID |
Verify Oracle SID. |
env | grep ORACLE |
Display Oracle environment variables. |
sqlplus / as sysdba |
Connect as SYSDBA. |
lsnrctl status |
Verify listener services. |
tnsping service_name |
Test Oracle Net connectivity. |
find $ORACLE_HOME -name "*.sql" |
Locate SQL scripts if required. |
tail -100 alert.log |
Review recent database activity. |
ORA-00942 Troubleshooting Flowchart
SQL Statement
│
▼
ORA-00942
│
▼
Object Exists?
│
┌────┴─────┐
│ │
No Yes
│ │
▼ ▼
Create Correct Schema?
Object │
▼
Correct User?
│
▼
Required Privileges?
│
▼
Synonyms Valid?
│
▼
Database Link Needed?
│
▼
Invalid Objects?
│
▼
SQL Executes Successfully
Frequently Asked Questions (FAQ)
Does ORA-00942 always mean the table has been dropped?
No. In production environments, the table frequently exists but Oracle cannot resolve or access it because of schema, privilege, synonym, or database link issues.
Can missing privileges generate ORA-00942?
Yes. If the current user cannot access the object, Oracle may return ORA-00942 instead of exposing object information.
Why does my PL/SQL package return ORA-00942 while SQL Developer works?
PL/SQL definer-rights objects ignore privileges granted through roles. The required privilege usually needs to be granted directly to the schema that owns the PL/SQL object.
Can synonyms cause ORA-00942?
Yes. Invalid private synonyms, public synonyms, or synonyms pointing to unavailable database links commonly generate ORA-00942.
Does Oracle RAC cause ORA-00942?
Not directly. However, deployments, object synchronization issues, or incorrect service configurations in RAC environments can expose object resolution problems.
Related Oracle DBA Articles
- ORA-01031: Insufficient Privileges
- ORA-01017: Invalid Username/Password
- ORA-28000: The Account Is Locked
- ORA-12154: TNS Could Not Resolve Connect Identifier
- Oracle Error Codes Guide
About the Author
Rana Abdul Wahid is an Oracle Database Consultant with more than 15 years of experience in Oracle Database Administration, Oracle RAC, Oracle Data Guard, RMAN Backup & Recovery, Oracle E-Business Suite, Oracle Cloud Infrastructure (OCI), Oracle Performance Tuning, Linux/Unix Administration, MySQL, Microsoft SQL Server, PostgreSQL, and enterprise database management.
He publishes production-tested Oracle troubleshooting guides, security best practices, backup and recovery solutions, performance tuning techniques, and practical DBA knowledge gained from managing mission-critical Oracle environments.
Conclusion
ORA-00942: Table or View Does Not Exist is often a symptom of an object resolution or privilege issue rather than a missing database object. Successful troubleshooting requires verifying object ownership, schema resolution, privileges, synonyms, database links, and application connection context before making changes.
By following a structured troubleshooting methodology and implementing sound security, privilege management, and deployment practices, Oracle DBAs can resolve ORA-00942 efficiently while reducing the likelihood of similar issues in future database operations.
Never recreate a table simply because ORA-00942 is reported. First confirm that the object exists, verify the correct schema and container, validate direct object privileges, check synonyms and database links, and ensure the application is connecting with the intended database user. A disciplined investigation will resolve most ORA-00942 incidents without unnecessary changes to production systems.
Found this guide helpful? Visit our Oracle Error Codes Guide for more production-tested Oracle DBA troubleshooting articles, Oracle RAC solutions, Oracle Net Services troubleshooting, backup and recovery procedures, performance tuning techniques, and Oracle Cloud Infrastructure administration guides.
Comments
Post a Comment