Oracle Database Error Solutions & DBA Knowledge Base

Welcome to Oracle Database Error Solutions, a professional technical knowledge base dedicated to helping Oracle Database Administrators, Oracle E-Business Suite administrators, developers, and IT professionals troubleshoot Oracle Database and Oracle Linux issues with confidence.

This website provides practical, real-world troubleshooting guides based on hands-on Oracle administration experience. You'll find detailed solutions for Oracle Database errors, RMAN backup and recovery, Data Guard, ASM, RAC, Oracle Linux administration, Oracle E-Business Suite (EBS), cloning, performance tuning, patching, installation, and day-to-day DBA tasks.

Whether you're resolving ORA-27101, ORA-28040, ORA-01555, ORA-12154, ORA-01017, or other Oracle errors, our step-by-step articles are designed to save you time and help you solve problems efficiently.

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.

Quick Solution

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:

  1. Current schema
  2. Private synonyms
  3. 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.

Production DBA Recommendation

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


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.

Learn more about the author →


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.

Final DBA Recommendation

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