Anonim

Anda sesekali melihat kesalahan ora-00942 saat menjalankan pernyataan SQL. Ini memiliki beberapa penyebab dan seperti biasa, sintaks kesalahan bukan yang paling deskriptif. Jika Anda menghadapi hal ini dan ingin tahu cara memperbaiki kesalahan ora-00942, baca terus.

Sejauh yang saya tahu, ada tiga penyebab utama kesalahan ora-00942:

  1. Hak pengguna tidak mencukupi
  2. Tabel atau tampilan sebenarnya tidak ada
  3. Tabel atau tampilan dalam skema yang berbeda

Saya akan menunjukkan cara mengatasi masing-masing.

Perbaiki kesalahan ora-00942

Pertama, sedikit penafian. Saya bukan DBA, saya adalah administrator Windows dan teknologi perangkat keras desktop dan server. Saya tahu cara menjalankan SQL tetapi tidak untuk tingkat keahlian apa pun dan tentu saja tidak ke tingkat yang dapat memecahkan masalah. Saya harus meminta bantuan seorang teman Oracle DBA saya, jadi ketika saya menulis bagian ini, semua kepintarannya adalah miliknya.

Daftar tiga penyebab kesalahan ora-00942 ini tidak lengkap. Tampaknya ada penyebab acak lainnya, tetapi ketiganya tampaknya paling umum.

Hak pengguna tidak mencukupi

Salah satu penyebab utama kesalahan ora-00942 adalah bahwa pengguna tidak memiliki hak yang cukup untuk mengakses tabel yang dimaksud. Anda dapat memeriksa ini dengan menjalankan dua kueri.

- daftar hak istimewa sistem untuk pengguna atau peran SELECT * DARI dba_sys_privs WHERE penerima hibah IN (& user_role, 'PUBLIC');

- daftar hak objek untuk pengguna atau peran

SELECT penerima, pemilik || '.' || table_name objek, hak istimewa, dapat diberikan DARI dba_tab_privs DI MANA penerima hibah (& user_role) PESANAN OLEH penerima, pemilik || '.' || table_name, privilege;

Keduanya akan memberi tahu Anda jika pengguna tersebut memiliki hak yang benar untuk menjalankan perintah. Jika pengguna memiliki hak yang benar, lanjutkan ke yang berikutnya. Jika pengguna tidak memiliki hak yang benar, berikan kepada mereka atau minta Admin DB Anda untuk melakukannya.

Kesalahan ora-00942 juga dapat terjadi jika pengguna skema yang Anda gunakan memiliki hak INSERT tetapi bukan hak SELECT. Sekali lagi, periksa level privilege dan tambahkan SELECT ke daftar atau minta DB Admin untuk melakukannya. Rupanya, hak istimewa SELECT spesifik harus diberikan kepada setiap skema jika tidak, Anda masih akan melihat kesalahan ora-00942.

Tabel atau tampilan sebenarnya tidak ada

Penyebab kesalahan ora-00942 ini dapat disebabkan oleh sintaks kueri yang salah atau jika tabel tidak ada. Meskipun ini akan menjadi tempat logis pertama untuk memulai, saya yakin bahwa hak pengguna adalah penyebab kesalahan nomor satu. Tabel tidak ada di sana atau sintaks tabel yang salah digunakan adalah yang kedua.

Untuk memeriksa apakah tabel itu ada, periksa dulu sintaks kueri. Jika sintaks sudah benar, jalankan kueri ini.

SELECT pemilik, object_name, object_type DARI all_objects DI MANA object_type IN ('TABLE', 'VIEW') AND object_name = 'YOUR_TABLE_NAME';

Pada baris terakhir itu, masukkan nama tabel aktual tempat Anda melihat 'YOUR_TABLE_NAME'. Ini akan memberi tahu Anda dengan pasti apakah tabel yang Anda coba query ada atau tidak. Jika kembali tanpa tabel, tabel yang Anda cari tidak ada dalam skema atau database.

Jika sistem yang Anda gunakan memiliki menu Tables, Anda dapat memeriksa tabel secara manual jika Anda mau, tetapi kueri di atas menyelesaikan pekerjaan.

Tabel atau tampilan dalam skema yang berbeda

Jika pengguna memiliki hak istimewa dan tabel ada dan Anda masih melihat kesalahan ora-00942, kemungkinan ke skema. Jika Anda mengelola beberapa skema, mudah menjalankan kueri terhadap skema yang bukan milik Anda. Ketika Anda sibuk dan menentangnya, itu adalah kesalahan sederhana untuk dibuat.

Periksa skema secara manual jika Anda bisa atau tambahkan nama skema di baris FROM dari kueri Anda. Jika Anda tidak memiliki hak yang benar untuk skema baru, Anda akan melihat kesalahan ora-00942 sekali lagi. Kembali ke perbaikan hak pengguna pertama dan periksa skema yang sesuai atau minta DBA Anda melakukannya untuk Anda.

Seperti yang disebutkan di atas, saya berkonsultasi dengan seorang teman Oracle DBA saya untuk bagian ini sehingga semua kredit kepadanya untuk kerja keras. Jika Anda menemukan kesalahan atau kekurangan di sini, itu adalah milik saya sendiri. Beri tahu saya di bagian komentar jika saya melewatkan sesuatu atau salah dan saya akan memperbaikinya.

Jika Anda mengetahui cara lain untuk memperbaiki kesalahan ora-00942, beri tahu kami di bawah ini!

Cara memperbaiki kesalahan ora-00942