Anonim

Ви час від часу бачите помилку ora-00942 під час запуску оператора SQL. У неї є кілька причин, і як завжди, синтаксис помилок не є найбільш описовим. Якщо ви проти цього і хочете знати, як виправити помилку ora-00942, читайте далі.

Наскільки мені відомо, є три основні причини помилки ora-00942:

  1. Недостатня кількість прав користувачів
  2. Таблиця або представлення насправді не існує
  3. Таблиця або представлення представлені в іншій схемі

Я покажу вам, як звертатися до кожного.

Виправте помилку ora-00942

По-перше, трохи відмови. Я не DBA, я адміністратор Windows, технічний апаратний апарат для сервера та настільних ПК. Я знаю, як запустити SQL, але не в якійсь мірі і, звичайно, не на рівні, який може вирішити проблеми. Мені довелося попросити у мого приятеля Oracle DBA про допомогу, тому, поки я писав цей твір, розумні біти - це все його.

Цей список з трьох причин помилки ora-00942 не є вичерпним. Очевидно, є й інші випадкові причини, але ці три, мабуть, є найбільш поширеними.

Недостатня кількість прав користувачів

Однією з основних причин помилки ora-00942 є те, що користувач не має достатніх привілеїв для доступу до відповідної таблиці. Ви можете перевірити це, виконавши два запити.

- перелічити системні привілеї для користувача або ролі SELECT * FROM dba_sys_privs WHERE грант IN (& user_role, 'PUBLIC');

- список привілеїв об'єкта для користувача або ролі

ВИБІР одержувач, власник || '.' || об'єкт_імен, привілей, доступний від dba_tab_privs, де отримувач отримує (& user_role) ЗАМОВЛЕННЯ по грантодавцю, власник || '.' || table_name, привілей;

Ці два підкажуть, чи має відповідний користувач правильні привілеї для запуску команди. Якщо користувач має правильні привілеї, перейдіть до наступного. Якщо користувач не має правильних привілеїв, надайте їм їх або попросіть вашого адміністратора БД зробити це.

Помилка ora-00942 може також виникнути, якщо користувач схеми, яку ви використовуєте, має привілеї INSERT, але не SELECT. Знову перевірте рівень привілеїв та додайте SELECT до списку або попросіть адміністратора БД зробити це. Мабуть, специфічна привілей SELECT повинна бути надана кожній схемі, інакше ви все одно побачите помилку ora-00942.

Таблиця або представлення насправді не існує

Ця причина помилки ora-00942 може бути викликана неправильним синтаксисом запиту або якщо таблиці не існує. Хоча це буде здаватися логічним першим місцем для початку, я впевнений, що привілей користувача є причиною помилки номер один. Таблиця, яка там не використовується, або неправильний синтаксис таблиці використовується другим.

Щоб перевірити, чи існує таблиця, спочатку перевірте синтаксис запиту. Якщо синтаксис правильний, запустіть цей запит.

ВИБІР власника, імені об’єкта, типу об’єкта З усіх_об'єктів, де ДІЙ_типу об'єкта ('ТАБЛИЦЯ', 'ВИДИ') І об’єкта_назви = 'YOUR_TABLE_NAME';

У цьому останньому рядку вставте фактичну назву таблиці, де ви бачите "YOUR_TABLE_NAME". Це повинно вам точно сказати, існує таблиця, яку ви намагаєтеся запитувати. Якщо він повертається без таблиці, таблиця, яку ви запитуєте, не існує в схемі чи базі даних.

Якщо система, яку ви використовуєте, має меню «Таблиці», ви можете вручну перевірити таблицю, якщо ви хочете, але вищезазначений запит виконує завдання.

Таблиця або представлення представлені в іншій схемі

Якщо у користувача є привілеї, а таблиця існує, і ви все ще бачите помилку ora-00942, швидше за все, це до схеми. Якщо ви керуєте кількома схемами, легко запустити запит на схему, яка не є вашою. Коли ви зайняті і не проти цього, зробити просту помилку.

Перевірте схему вручну, чи можете ви або додати ім'я схеми у рядку ВІД запиту. Якщо у вас немає правильних привілеїв для нової схеми, ви знову побачите помилку ora-00942. Поверніться до першого виправлення привілеїв користувача та перевірте відповідну схему або дозвольте своєму DBA зробити це за вас.

Як уже згадувалося вище, я порадився з моїм другом Oracle DBA за цей твір, так що я вдячний йому за важку роботу. Якщо ви знайдете тут якісь помилки чи упущення, вони лише мої. Повідомте мене в розділі коментарів, якщо я щось пропустив або помилявся, і я виправлю це.

Якщо ви знаєте будь-який інший спосіб виправити помилку ora-00942, розкажіть про це нижче!

Як виправити помилку ora-00942