ORA-00942: table or view does not exist
Oracle tabloyu ya da görünümü bulamıyor — ya da nesne var ama üzerinde yetkiniz yok. Önce adı ve şema önekini, sonra yetkileri kontrol edin. Oracle iki durumda da bilerek aynı hatayı gösterir.
Ne anlama gelir?
Hangi nesnelerin var olduğunu açığa vurmamak için Oracle, nesne yokken de görme yetkiniz yokken de ORA-00942 döndürür. Yani bu hata tablonun silindiğini kanıtlamaz. Oracle 23ai’den itibaren mesaj nesnenin adını da içerir.
Yaygın nedenler
- Tablo başka bir şemada; ada şema öneki (
HR.EMPLOYEES) yazılmamış ve synonym yok. - Kullanıcınızın nesne üzerinde
SELECT(ya daREAD) yetkisi yok. - Ad tırnakla farklı büyük/küçük harfle oluşturulmuş ya da yanlış yazılmış.
- Definer’s rights bir PL/SQL biriminde yetki bir rol üzerinden geliyor — roller orada etkin değildir, doğrudan yetki gerekir.
- Sandığınızdan farklı bir veritabanına, PDB’ye ya da şemaya bağlısınız.
Nasıl çözülür?
- Nesnenin var olup olmadığını ve sahibini kontrol edin:
SELECT owner, object_type FROM all_objects WHERE object_name = 'EMPLOYEES'(yalnızca görebildiğiniz nesneleri gösterir; bir DBADBA_OBJECTS’e bakabilir). - Ada sahibini önek olarak ekleyin ya da bir synonym oluşturun.
- Sahibinden ya da bir DBA’dan yetki isteyin:
GRANT SELECT ON hr.employees TO app_user. - PL/SQL için yetkiyi rol yerine doğrudan prosedür sahibine verin.
- Nereye bağlı olduğunuzu doğrulayın:
SELECT sys_context('USERENV','CON_NAME'), user FROM dual.
Örnek
Nesne nerede ve ben görebiliyor muyum?
SELECT owner, object_name, object_type
FROM all_objects
WHERE object_name = 'EMPLOYEES';
Doğrudan yetki (definer’s rights PL/SQL için gerekli):
GRANT SELECT ON hr.employees TO app_owner;
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
ORA-01031ORA-00904ORA-01017 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-00942. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.