Anonim

Povremeno vidite ora-00942 grešku pri pokretanju SQL izraza. Ima nekoliko uzroka i kao i obično, sintaksa pogreške nije najočitiji opis. Ako se tome suočavate i želite znati kako ispraviti pogrešku ora-00942, pročitajte dalje.

Koliko znam postoje tri glavna uzroka pogreške ora-00942:

  1. Nedovoljno korisničkih privilegija
  2. Tablica ili prikaz zapravo ne postoje
  3. Tablica ili prikaz imaju drugu shemu

Pokazat ću vam kako da se obratite svakom.

Ispravite pogrešku ora-00942

Prvo, malo odricanja. Ja nisam DBA, ja sam Windows administrator i tehnička podrška za hardver i radne površine. Znam kako pokrenuti SQL, ali ne u bilo kojem stupnju stručnosti i sigurno ne na razini koja može riješiti probleme. Morao sam zamoliti mog prijatelja Oracle DBA za pomoć, tako da dok sam pisao ovaj komad, pametni dijelovi su svi njegovi.

Ovaj popis tri uzroka pogreške ora-00942 nije iscrpan. Očito postoje drugi slučajni uzroci, ali ova tri su naizgled najčešća.

Nedovoljno korisničkih privilegija

Jedan ključni uzrok pogreške ora-00942 je taj što korisnik nema dovoljno privilegija za pristup predmetnoj tablici. To možete provjeriti pokretanjem dva upita.

- navesti sistemske povlastice za korisnika ili ulogu ODABIR * OD dba_sys_privs GDJE primatelja u (& user_role, 'PUBLIC');

- Popis privilegija objekta za korisnika ili ulogu

ODABERITE primatelja, vlasnika || '.' || objekt_ ime objekta, privilegiju, odobrljiv OD dba_tab_privs GDJE je primatelj (& user_role) NARUDŽBA po primatelju, vlasniku || '.' || tablica_ime, privilegija;

Ovo dvoje će vam reći ima li dotični korisnik ispravne povlastice za izvršavanje naredbe. Ako korisnik ima ispravne povlastice, prijeđite na sljedeću. Ako korisnik nema ispravne privilegije, dodijelite im ih ili tražite svog DB Admin-a da to učini.

Do pogreške ora-00942 može doći i ako korisnik sheme koju koristite ima INSERT povlastice, ali ne i SELECT povlastice. Opet provjerite razinu privilegija i dodajte SELECT na popis ili zatražite DB administratora da to učini. Očigledno, svakoj shemi mora se dodijeliti specifična SELECT privilegija, inače ćete i dalje vidjeti pogrešku ora-00942.

Tablica ili prikaz zapravo ne postoje

Ovaj uzrok pogreške ora-00942 može biti uzrokovan pogrešnom sintaksom upita ili ako tablica ne postoji. Iako će ovo izgledati logično prvo mjesto za početak, pouzdano sam uvjeren da je korisnička privilegija jedan od razloga pogreške. Tablica koja nije tamo ili se koristi pogrešna sintaksa tablice je na drugom mjestu.

Da biste provjerili postoji li tablica, prvo provjerite sintaksu upita. Ako je sintaksa ispravna, pokrenite ovaj upit.

ODABIR vlasnika, imena objekta, vrste objekta OD svih_objekata GDJE OBJEKTA objekta ('TABLE', 'POGLED') I objekta_ime = 'YOUR_TABLE_NAME';

U tom zadnjem retku umetnite stvarno ime tablice gdje vidite "YOUR_TABLE_NAME". Ovo bi vam trebalo definitivno reći da li tablica koju pokušavate upitati postoji ili ne. Ako se vrati bez tablice, tablica koju tražite ne postoji u shemi ili bazi podataka.

Ako sustav koji koristite ima izbornik Tablice, možete ručno provjeriti tablicu ako želite, ali gornji upit ispunjava posao.

Tablica ili prikaz imaju drugu shemu

Ako korisnik ima povlastice, a tablica postoji, a vi i dalje vidite pogrešku ora-00942, to se vjerojatno svodi na shemu. Ako upravljate s više shema, lako je pokrenuti upit protiv sheme koja nije vaša. Kada ste zauzeti i protivite se tome, to je jednostavna pogreška.

Ručno provjerite shemu možete li ili dodati naziv sheme u FROM retku vašeg upita. Ako nemate ispravne povlastice za novu shemu, vidjet ćete pogrešku ora-00942 još jednom. Vratite se na prvo ispravljanje povlastica korisnika i provjerite odgovarajuću shemu ili nazovite svog DBA da to učini umjesto vas.

Kao što je gore spomenuto, za ovaj komad sam se savjetovao s mojim prijateljem iz Oracle DBA, pa sam mu zaslužan za naporan rad. Ako ovdje pronađete bilo kakve pogreške ili propuste, oni su samo moji. Javite mi u odjeljku s komentarima da li sam nešto propustila ili pogrešno shvatila i to ću ispraviti.

Ako znate bilo koji drugi način da popravite pogrešku ora-00942, recite nam u nastavku!

Kako popraviti pogrešku ora-00942