Anonim

Az SQL utasítás futtatásakor időnként ora-00942 hibát láthat. Ennek néhány oka van, és mint általában, a hiba szintaxisa nem a legmeghatározóbb. Ha ezzel áll szemben, és szeretné tudni, hogyan kell kijavítani az ora-00942 hibát, olvassa el tovább.

Tudomásom szerint az ora-00942 hibának három fő oka van:

  1. Nem kielégítő felhasználói jogosultságok
  2. A táblázat vagy nézet valójában nem létezik
  3. A táblázat vagy nézet más sémában van

Megmutatom, hogyan kell kezelni mindegyiket.

Javítsa ki az ora-00942 hibát

Először is, egy kis nyilatkozat. Nem vagyok DBA, Windows rendszergazda vagyok az asztali és szerver hardver tech. Tudom, hogyan kell futtatni az SQL-t, de nem vagyok olyan nagy szakértelemmel, és természetesen nem olyan szintre, amely problémákat okozhat. Kérdeznem kellett egy segítséget az Oracle DBA haveromatól, tehát amíg ezt a darabot írtam, az okos darabok mind ők.

Az ora-00942 hiba három okának ez a felsorolása nem kimerítő. Ennek nyilvánvalóan vannak más véletlenszerű okai is, ám nyilvánvalóan ez a három a leggyakoribb.

Nem kielégítő felhasználói jogosultságok

Az ora-00942 hiba egyik fő oka az, hogy a felhasználónak nincs elegendő jogosultsága a kérdéses táblázat eléréséhez. Ezt két lekérdezés futtatásával ellenőrizheti.

- felsorolja a felhasználó vagy a szerepkör rendszerjogosultságait. VÁLASZT * A dba_sys_privs-től, ahonnan kedvezményezett van (& user_role, 'PUBLIC');

- felsorolja a felhasználó vagy a szerep objektumjogosultságait

KIVÁLASZT a kedvezményezettet ||

Ez a kettő megmondja, hogy a szóban forgó felhasználó rendelkezik-e a jogosultságokkal a parancs futtatásához. Ha a felhasználó rendelkezik a megfelelő jogosultságokkal, ugorjon a következőre. Ha a felhasználó nem rendelkezik a megfelelő jogosultságokkal, akkor adja meg nekik, vagy kérje meg a DB rendszergazdát.

Az ora-00942 hiba akkor is előfordulhat, ha az Ön által használt séma felhasználói INSERT jogosultságokkal rendelkeznek, de nem választanak SELECT jogosultságokat. Ismét ellenőrizze a jogosultsági szintet, és adja hozzá a SELECT elemet a listához, vagy kérje meg egy DB rendszergazdát. Nyilvánvaló, hogy a specifikus SELECT jogosultságot minden sémának meg kell adni, különben továbbra is az ora-00942 hiba jelenik meg.

A táblázat vagy nézet valójában nem létezik

Az ora-00942 hibát ezt a hibát a helytelen lekérdezés szintaxisa vagy a táblázat hiánya okozhatja. Noha ez a logikus első lépés a kezdetben, megbízhatóan biztos vagyok benne, hogy a felhasználó elsőbbsége a hiba első számú oka. A második a hiányzó táblázat vagy a helytelen táblázatszintaxis.

A táblázat létezésének ellenőrzéséhez először ellenőrizze a lekérdezés szintaxisát. Ha a szintaxis helyes, futtassa ezt a lekérdezést.

SELECT tulajdonos, objektum_név, objektum_típus az összes_objektumtól, ahonnan az objektumtípus IN ('TÁBLÁZAT', 'VIEW') ÉS object_name = 'YOUR_TABLE_NAME';

Az utolsó sorba illessze be a tényleges tábla nevét, ahol a „YOUR_TABLE_NAME” felirat látható. Ennek határozottan meg kell mondania, hogy a lekérdezni kívánt táblázat létezik-e vagy sem. Ha táblázat nélkül tér vissza, akkor a lekérdezett táblázat nem létezik a sémában vagy az adatbázisban.

Ha az Ön által használt rendszer Táblázatok menüvel rendelkezik, akkor manuálisan ellenőrizheti a táblázatot, ha szeretné, de a fenti lekérdezés elvégzi a munkát.

A táblázat vagy nézet más sémában van

Ha a felhasználónak jogosultságai vannak, és a táblázat létezik, és továbbra is az ora-00942 hibát látja, akkor valószínűleg a sémához tartozik. Több séma kezelése esetén könnyű lekérdezést futtatni a nem a séma ellen. Ha elfoglalt vagy és ellenállsz, egyszerű hibát követ el.

Kézzel ellenőrizze a sémát, ha a séma nevét hozzáadhatja-e a lekérdezés FROM sorához. Ha nem rendelkezik a megfelelő jogosultságokkal az új sémához, akkor ismét meg fog jelenni az ora-00942 hiba. Visszatérés az első felhasználói jogosultság javításához, és ellenőrizze a megfelelő sémát, vagy kérje meg a DBA-t, hogy tegye meg érted.

Mint fentebb említettem, konzultáltam egy Oracle DBA haverommal a darabért, így mindenkinek köszönetük a kemény munkáért. Ha hibákat vagy hiányosságokat talál itt, ezek csak az enyém. Hadd értesítsen a megjegyzés részben, ha hiányzott valami, vagy rosszul értem, és kijavítom.

Ha bármilyen más módon tudja javítani az ora-00942 hibát, mondja el nekünk alább!

Az ora-00942 hiba javítása