Näet toisinaan ora-00942 -virheen SQL-käskyä ajaessa. Sillä on muutamia syitä, ja kuten yleensä, virhesyntaksi ei ole kaikkein kuvaavin. Jos kohtaat tämän ja haluat tietää, kuinka ora-00942 -virhe korjataan, lue eteenpäin.
Tiedän, että ora-00942 -virheessä on kolme pääasiallista syytä:
- Riittämättömät käyttöoikeudet
- Taulua tai näkymää ei oikeastaan ole
- Taulukko tai näkymä on eri kaaviossa
Näytän sinulle kuinka käsitellä kutakin.
Korjaa ora-00942-virhe
Ensinnäkin pieni vastuuvapauslauseke. En ole DBA, olen Windows-järjestelmänvalvoja ja työpöydän ja palvelimen laitteistotekniikka. Tiedän, kuinka suoritan SQL: n, mutta en missään määrin asiantuntemukselle, en todellakaan sellaiselle tasolle, joka pystyy vianmääritykseen. Minun täytyi pyytää apua Oracle DBA -kaveriltani, joten kirjoittaessani tätä palaa, älykkäät bitit ovat kaikki hänen.
Tämä luettelo ora-00942 -virheen kolmesta syystä ei ole tyhjentävä. Sillä on ilmeisesti muita satunnaisia syitä, mutta nämä kolme ovat ilmeisesti yleisimmät.
Riittämättömät käyttöoikeudet
Yksi keskeinen syy ora-00942 -virheeseen on, että käyttäjällä ei ole riittäviä oikeuksia käyttää kyseistä taulukkoa. Voit tarkistaa tämän suorittamalla kaksi kyselyä.
- luettele järjestelmän käyttöoikeudet käyttäjälle tai roolille VALITSE * FAKSI dba_sys_privs -PÄIVÄSTÄ, jona saaja (& käyttäjän_rooli, 'JULKINEN');
- luettele käyttäjän tai roolin objektioikeudet
VALITSE edunsaaja, omistaja || '.' || taulukon_nimi objekti, etuoikeus, kiinni annettavissa FABAsta dba_tab_privs MITÄ saaja (& käyttäjän_rooli) Tilaamassa saaja, omistaja || '.' || taulukon_nimi, etuoikeus;
Nämä kaksi kertovat sinulle, onko kyseisellä käyttäjällä oikeat oikeudet komennon suorittamiseen. Jos käyttäjällä on oikeat oikeudet, siirry seuraavaan. Jos käyttäjällä ei ole oikeita käyttöoikeuksia, myönnä heille tai pyydä DB-järjestelmänvalvojaa tekemään se.
Ora-00942 -virhe voi tapahtua myös, jos käyttämäsi skeeman käyttäjällä on INSERT-oikeudet, mutta ei SELECT-oikeudet. Tarkista uudelleen käyttöoikeustaso ja lisää SELECT luetteloon tai pyydä DB-järjestelmänvalvojaa tekemään se. Ilmeisesti tietty SELECT-käyttöoikeus on annettava jokaiselle skeemalle, muuten näet silti ora-00942 -virheen.
Taulua tai näkymää ei oikeastaan ole
Tämä syy ora-00942-virheeseen voi johtua virheellisestä kyselyn syntaksista tai jos taulukkoa ei ole. Vaikka tämä vaikuttaa loogiselta ensin aloittamiselta, olen luotettavasti vakuuttunut siitä, että käyttäjän oikeudet ovat virheen ensisijainen syy. Taulukkoa, joka ei ole siellä, tai väärää käytetyn taulukon syntaksia on toinen.
Tarkistaaksesi, onko taulukko olemassa, tarkista ensin kyselyn syntaksi. Jos syntaksi on oikea, suorita tämä kysely.
SELECT omistaja, object_name, object_type FROM all_objects WHERE object_type IN ('TAULUKKO', 'VIEW') JA object_name = 'YOUR_TABLE_NAME';
Lisää viimeiselle riville taulukon todellinen nimi kohtaan, jossa näet 'YOUR_TABLE_NAME'. Tämän pitäisi kertoa sinulle varmasti, onko taulukko, jota yrität kysyä, olemassa. Jos se palaa ilman taulukkoa, kyselyäsi olevaa taulukkoa ei ole schemassa tai tietokannassa.
Jos käyttämässäsi järjestelmässä on Taulukot-valikko, voit halutessasi tarkistaa taulukon manuaalisesti, mutta yllä oleva kysely saa työn suoritettua.
Taulukko tai näkymä on eri kaaviossa
Jos käyttäjällä on käyttöoikeuksia ja taulukko on olemassa ja näet edelleen ora-00942 -virhettä, se on todennäköisesti kaavamainen. Jos hallitset useita skeemejä, on helppo suorittaa kysely järjestelmää varten, joka ei ole sinun. Kun olet kiireinen ja sitä vastaan, se on yksinkertainen virhe.
Tarkista skeema manuaalisesti, voitko lisätä tai lisätä mallin nimen kyselyn FROM-riville. Jos sinulla ei ole oikeita oikeuksia uuteen skeemoon, näet ora-00942 -virheen jälleen. Palaa ensimmäiseen käyttöoikeuskorjaukseen ja tarkista vastaava skeema tai pyydä DBA: ta tekemään se puolestasi.
Kuten edellä mainittiin, kuulin Oracle DBA -kaveriani tästä kappaleesta, joten kaikki kiitokset hänelle kovasta työstä. Jos löydät täältä virheitä tai puutteita, ne ovat yksin minun. Kerro minulle kommenttiosassa, jos kaipaan mitään tai sain sen väärin, ja korjaan sen.
Jos tiedät jonkin muun tavan ora-00942 -virheen korjaamiseksi, kerro siitä alla!
