Because this post is the top one found on stackoverflow when searching for «ORA-00942: table or view does not exist insert», I want to mention another possible cause of this error (at least in Oracle 12c): a table uses a sequence to set a default value and the user executing the insert query does not have select privilege on the sequence. This was my problem and it took me an unnecessarily long time to figure it out.
To reproduce the problem, execute the following SQL as user1:
create sequence seq_customer_id;
create table customer (
c_id number(10) default seq_customer_id.nextval primary key,
name varchar(100) not null,
surname varchar(100) not null
);
grant select, insert, update, delete on customer to user2;
Then, execute this insert statement as user2:
insert into user1.customer (name,surname) values ('michael','jackson');
The result will be «ORA-00942: table or view does not exist» even though user2 does have insert and select privileges on user1.customer table and is correctly prefixing the table with the schema owner name. To avoid the problem, you must grant select privilege on the sequence:
grant select on seq_customer_id to user2;
Содержание
- 1 Исправьте ошибку ora-00942
- 1.1 Недостаточно прав пользователя
- 1.2 Таблица или представление на самом деле не существуют
- 1.3 Таблица или представление находятся в другой схеме
Иногда вы видите ошибку ora-00942 при выполнении оператора SQL. У него есть несколько причин, и, как обычно, синтаксис ошибок не является наиболее описательным. Если вы сталкиваетесь с этим и хотите знать, как исправить ошибку ora-00942, читайте дальше.
Насколько я знаю, есть три основные причины ошибки ora-00942:
- Недостаточно прав пользователя
- Таблица или представление на самом деле не существуют
- Таблица или представление находятся в другой схеме
Я покажу вам, как обратиться к каждому.
Исправьте ошибку ora-00942
Прежде всего, небольшой отказ от ответственности. Я не администратор баз данных, я администратор Windows, а также специалист по аппаратному и настольному оборудованию. Я знаю, как запустить SQL, но не до какой-то степени опыта и, конечно, не до уровня, который может устранять проблемы. Я должен был попросить моего друга Oracle DBA о помощи, поэтому, пока я писал эту часть, все умные биты принадлежали ему.
Этот список из трех причин ошибки ora-00942 не является исчерпывающим. Есть, очевидно, другие случайные причины этого, но эти три, по-видимому, наиболее распространены.
Недостаточно прав пользователя
Одной из основных причин ошибки ora-00942 является то, что у пользователя недостаточно прав для доступа к рассматриваемой таблице. Вы можете проверить это, выполнив два запроса.
-- перечислить системные привилегии для пользователя или роли SELECT * FROM dba_sys_privs ГДЕ получатель гранта (user_role, 'PUBLIC');
— список привилегий объекта для пользователя или роли
SELECT грантополучатель, владелец || '.' || объект table_name, привилегия, грантируемое FROM dba_tab_privs ГДЕ получатель гранта (user_role) ORDER BY грантополучатель, владелец || '.' || table_name, привилегия;
Эти двое скажут вам, имеет ли данный пользователь правильные привилегии для запуска команды. Если пользователь имеет правильные привилегии, переходите к следующему. Если пользователь не имеет правильных привилегий, предоставьте их им или попросите администратора БД сделать это.
Ошибка ora-00942 также может возникнуть, если пользователь используемой схемы имеет привилегии INSERT, но не привилегии SELECT. Опять же, проверьте уровень привилегий и добавьте SELECT в список или попросите администратора БД сделать это. Очевидно, что каждой схеме должна быть предоставлена определенная привилегия SELECT, в противном случае вы все равно увидите ошибку ora-00942.
Таблица или представление на самом деле не существуют
Причиной ошибки ora-00942 может быть неправильный синтаксис запроса или отсутствие таблицы. Хотя это может показаться логичным для начала, я уверен, что привилегия пользователя является причиной ошибки номер один. Таблица, которой там нет или используется неверный синтаксис таблицы, занимает второе место.
Чтобы проверить, существует ли таблица, сначала проверьте синтаксис запроса. Если синтаксис правильный, запустите этот запрос.
ВЫБЕРИТЕ владельца, имя_объекта, тип_объекта
ОТ всех_объектов
WHERE object_type IN ('TABLE', 'VIEW')
AND имя_объекта = ‘YOUR_TABLE_NAME ';
В последней строке вставьте фактическое имя таблицы, где вы видите «YOUR_TABLE_NAME». Это должно точно сказать вам, существует ли таблица, к которой вы пытаетесь обратиться, или нет. Если он возвращается без таблицы, запрашиваемая вами таблица не существует в схеме или базе данных.
Если в используемой вами системе есть меню «Таблицы», вы можете вручную проверить таблицу, если хотите, но вышеуказанный запрос выполняет свою работу.
Таблица или представление находятся в другой схеме
Если у пользователя есть права, и таблица существует, но вы все еще видите ошибку ora-00942, скорее всего, это связано со схемой. Если вы управляете несколькими схемами, легко выполнить запрос к схеме, которая не принадлежит вам. Когда вы заняты и против этого, это простая ошибка, чтобы сделать.
Проверьте схему вручную, если можно или добавьте имя схемы в строке ОТ вашего запроса. Если у вас нет правильных привилегий для новой схемы, вы снова увидите ошибку ora-00942. Вернитесь к первому исправлению привилегий пользователя и проверьте соответствующую схему или попросите своего администратора базы данных сделать это за вас.
Как упомянуто выше, я проконсультировался с моим приятелем по DBA Oracle для этой работы, так что вся заслуга ему в тяжелой работе. Если вы обнаружите здесь какие-либо ошибки или упущения, они одни. Дайте мне знать в разделе комментариев, если я что-то пропустил или ошибся, и я исправлю это.
Если вам известен какой-либо другой способ исправить ошибку ora-00942, сообщите нам об этом ниже!
Learn the cause and how to resolve the ORA-00942 error message in Oracle.
Description
When you encounter an ORA-00942 error, the following error message will appear:
- ORA-00942: table or view does not exist
Cause
You tried to execute a SQL statement that references a table or view that either does not exist, that you do not have access to, or that belongs to another schema and you didn’t reference the table by the schema name.
Resolution
The option(s) to resolve this Oracle error are:
Option #1
If this error occurred because the table or view does not exist, you will need to create the table or view.
You can check to see if the table exists in Oracle by executing the following SQL statement:
SELECT *
FROM all_objects
WHERE object_type IN ('TABLE','VIEW')
AND object_name = 'OBJECT_NAME';
For example, if you are looking for a suppliers table, you would execute:
SELECT *
FROM all_objects
WHERE object_type IN ('TABLE','VIEW')
AND object_name = 'SUPPLIERS';
Option #2
If this error occurred because you do not have access to the table or view, you will need to have the owner of the table/view, or a DBA grant you the appropriate privileges to this object.
Option #3
If this error occurred because the table/view belongs to another schema and you didn’t reference the table by the schema name, you will need to rewrite your SQL to include the schema name.
For example, you may have executed the following SQL statement:
SELECT * FROM suppliers;
But the suppliers table is not owned by you, but rather, it is owned by a schema called app, you could fix your SQL as follows:
SELECT * FROM app.suppliers;
If you do not know what schema the suppliers table/view belongs to, you can execute the following SQL to find out:
SELECT owner
FROM all_objects
WHERE object_type IN ('TABLE','VIEW')
AND object_name = 'SUPPLIERS';
This will return the schema name who owns the suppliers table.
Содержание
- Как исправить ошибку ora-00942
- Исправьте ошибку ora-00942
- Недостаточно прав пользователя
- Таблица или представление на самом деле не существуют
- Таблица или представление находятся в другой схеме
- Export Fails with Ora-00942 when OLD_CONNECT_BY_ENABLED set to true (Doc ID 436152.1)
- Applies to:
- Symptoms
- Changes
- Cause
- To view full details, sign in with your My Oracle Support account.
- Don’t have a My Oracle Support account? Click to get started!
- ORA-00942 and EXP-00024 during export, can not find view SYS.EXU9TYP (Doc ID 726757.1)
- Applies to:
- Symptoms
- Cause
- To view full details, sign in with your My Oracle Support account.
- Don’t have a My Oracle Support account? Click to get started!
- ORA-942 While Validating Objects or Components (Doc ID 1662239.1)
- Applies to:
- Symptoms
- Changes
- Cause
- To view full details, sign in with your My Oracle Support account.
- Don’t have a My Oracle Support account? Click to get started!
- ORA-942 While Validating Objects or Components (Doc ID 1662239.1)
- Applies to:
- Symptoms
- Changes
- Cause
- To view full details, sign in with your My Oracle Support account.
- Don’t have a My Oracle Support account? Click to get started!
Как исправить ошибку ora-00942
Иногда вы видите ошибку ora-00942 при выполнении оператора SQL. У него есть несколько причин, и, как обычно, синтаксис ошибок не является наиболее описательным. Если вы сталкиваетесь с этим и хотите знать, как исправить ошибку ora-00942, читайте дальше.
Насколько я знаю, есть три основные причины ошибки ora-00942:
- Недостаточно прав пользователя
- Таблица или представление на самом деле не существуют
- Таблица или представление находятся в другой схеме
Я покажу вам, как обратиться к каждому.
Исправьте ошибку ora-00942
Прежде всего, небольшой отказ от ответственности. Я не администратор баз данных, я администратор Windows, а также специалист по аппаратному и настольному оборудованию. Я знаю, как запустить SQL, но не до какой-то степени опыта и, конечно, не до уровня, который может устранять проблемы. Я должен был попросить моего друга Oracle DBA о помощи, поэтому, пока я писал эту часть, все умные биты принадлежали ему.
Этот список из трех причин ошибки ora-00942 не является исчерпывающим. Есть, очевидно, другие случайные причины этого, но эти три, по-видимому, наиболее распространены.
Недостаточно прав пользователя
Одной из основных причин ошибки ora-00942 является то, что у пользователя недостаточно прав для доступа к рассматриваемой таблице. Вы можете проверить это, выполнив два запроса.
— список привилегий объекта для пользователя или роли
Эти двое скажут вам, имеет ли данный пользователь правильные привилегии для запуска команды. Если пользователь имеет правильные привилегии, переходите к следующему. Если пользователь не имеет правильных привилегий, предоставьте их им или попросите администратора БД сделать это.
Ошибка ora-00942 также может возникнуть, если пользователь используемой схемы имеет привилегии INSERT, но не привилегии SELECT. Опять же, проверьте уровень привилегий и добавьте SELECT в список или попросите администратора БД сделать это. Очевидно, что каждой схеме должна быть предоставлена определенная привилегия SELECT, в противном случае вы все равно увидите ошибку ora-00942.
Таблица или представление на самом деле не существуют
Причиной ошибки ora-00942 может быть неправильный синтаксис запроса или отсутствие таблицы. Хотя это может показаться логичным для начала, я уверен, что привилегия пользователя является причиной ошибки номер один. Таблица, которой там нет или используется неверный синтаксис таблицы, занимает второе место.
Чтобы проверить, существует ли таблица, сначала проверьте синтаксис запроса. Если синтаксис правильный, запустите этот запрос.
В последней строке вставьте фактическое имя таблицы, где вы видите «YOUR_TABLE_NAME». Это должно точно сказать вам, существует ли таблица, к которой вы пытаетесь обратиться, или нет. Если он возвращается без таблицы, запрашиваемая вами таблица не существует в схеме или базе данных.
Если в используемой вами системе есть меню «Таблицы», вы можете вручную проверить таблицу, если хотите, но вышеуказанный запрос выполняет свою работу.
Таблица или представление находятся в другой схеме
Если у пользователя есть права, и таблица существует, но вы все еще видите ошибку ora-00942, скорее всего, это связано со схемой. Если вы управляете несколькими схемами, легко выполнить запрос к схеме, которая не принадлежит вам. Когда вы заняты и против этого, это простая ошибка, чтобы сделать.
Проверьте схему вручную, если можно или добавьте имя схемы в строке ОТ вашего запроса. Если у вас нет правильных привилегий для новой схемы, вы снова увидите ошибку ora-00942. Вернитесь к первому исправлению привилегий пользователя и проверьте соответствующую схему или попросите своего администратора базы данных сделать это за вас.
Как упомянуто выше, я проконсультировался с моим приятелем по DBA Oracle для этой работы, так что вся заслуга ему в тяжелой работе. Если вы обнаружите здесь какие-либо ошибки или упущения, они одни. Дайте мне знать в разделе комментариев, если я что-то пропустил или ошибся, и я исправлю это.
Если вам известен какой-либо другой способ исправить ошибку ora-00942, сообщите нам об этом ниже!
Источник
Export Fails with Ora-00942 when OLD_CONNECT_BY_ENABLED set to true (Doc ID 436152.1)
Last updated on SEPTEMBER 20, 2019
Applies to:
Symptoms
When attempting to perform export in schema mode the export job completes successfully except for the views.
The failing views views are selectable with normal queries.
ERRORS
—————
EXP-00056: ORACLE error 942 encountered
ORA-00942: table or view does not exist
EXP-00000: Export terminated unsuccessfully
Running the following script ORACLE_HOMERDBMSADMINcatexp.sql to recreate internal export view the following error appears in the catexp.log.
FROM sys.dependency$ d, sys.view$ v
*
ERROR at line 8:
ORA-01472: cannot use CONNECT BY on view with DISTINCT, GROUP BY, etc.
Changes
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | 


Источник
ORA-00942 and EXP-00024 during export, can not find view SYS.EXU9TYP (Doc ID 726757.1)
Last updated on NOVEMBER 10, 2022
Applies to:
Oracle Database — Enterprise Edition — Version 9.2.0.5 and later
Oracle Database Cloud Schema Service — Version N/A and later
Oracle Database Exadata Cloud Machine — Version N/A and later
Oracle Cloud Infrastructure — Database Service — Version N/A and later
Oracle Database Exadata Express Cloud Service — Version N/A and later
Information in this document applies to any platform.
Customer encounterred error ORA-00942 and EXP-00024 during export
Symptoms
1. Encounter the following error during export.
2. Find the following current SQL in ORA-942 error stack trace.
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | 


Источник
ORA-942 While Validating Objects or Components (Doc ID 1662239.1)
Last updated on AUGUST 24, 2021
Applies to:
Symptoms
ORA-942 is reported while executing ultrp.sql script to validate objects or when scripts like catproc.sql or catupgrd.sql are executed to validate the components in dba_registry.
the Errorstack of ORA-942 shows:
Executing utlrp.sql script may fail with errors like
Changes
Discovered that the hidden parameter _no_objects set to TRUE in the database spfile.
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | 


Источник
ORA-942 While Validating Objects or Components (Doc ID 1662239.1)
Last updated on AUGUST 24, 2021
Applies to:
Symptoms
ORA-942 is reported while executing ultrp.sql script to validate objects or when scripts like catproc.sql or catupgrd.sql are executed to validate the components in dba_registry.
the Errorstack of ORA-942 shows:
Executing utlrp.sql script may fail with errors like
Changes
Discovered that the hidden parameter _no_objects set to TRUE in the database spfile.
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
In this Document
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | 


Источник



