Czasami pojawia się błąd ora-00942 podczas uruchamiania instrukcji SQL. Ma kilka przyczyn i jak zwykle składnia błędu nie jest najbardziej opisowa. Jeśli masz do czynienia z tym i chcesz wiedzieć, jak naprawić błąd ora-00942, czytaj dalej.
O ile mi wiadomo, istnieją trzy główne przyczyny błędu ora-00942:
- Niewystarczające uprawnienia użytkownika
- Tabela lub widok tak naprawdę nie istnieje
- Tabela lub widok ma inny schemat
Pokażę ci, jak rozwiązać każdy z nich.
Napraw błąd ora-00942
Po pierwsze, małe zastrzeżenie. Nie jestem DBA, jestem administratorem systemu Windows oraz sprzętem komputerowym i serwerowym. Wiem, jak obsługiwać SQL, ale nie jestem do końca ekspertem i na pewno nie do poziomu, który może rozwiązać problemy. Musiałem poprosić mojego kolegę Oracle DBA o pomoc, więc kiedy napisałem ten utwór, sprytne fragmenty należą do niego.
Ta lista trzech przyczyn błędu ora-00942 nie jest wyczerpująca. Są najwyraźniej inne losowe przyczyny, ale te trzy są najwyraźniej najczęstsze.
Niewystarczające uprawnienia użytkownika
Jedną z głównych przyczyn błędu ora-00942 jest to, że użytkownik nie ma wystarczających uprawnień, aby uzyskać dostęp do danej tabeli. Możesz to sprawdzić, uruchamiając dwa zapytania.
- wyszczególnij uprawnienia systemowe dla użytkownika lub roli WYBIERZ * Z dba_sys_privs GDZIE grantee IN (& user_role, 'PUBLIC');
- wymienić uprawnienia do obiektu dla użytkownika lub roli
WYBIERZ grantee, właściciel || '.' || nazwa_tabeli obiekt, uprawnienie, do przyznania OD dba_tab_privs GDZIE grantee IN (& rola_użytkownika) ZAMÓWIENIE według grantue, właściciel || '.' || nazwa_tabeli, uprawnienie;
Ci dwaj powiedzą ci, czy dany użytkownik ma odpowiednie uprawnienia do uruchomienia polecenia. Jeśli użytkownik ma odpowiednie uprawnienia, przejdź do następnego. Jeśli użytkownik nie ma odpowiednich uprawnień, nadaj mu je lub poproś o to administratora DB.
Błąd ora-00942 może również wystąpić, jeśli użytkownik używanego schematu ma uprawnienia INSERT, ale nie ma uprawnień SELECT. Ponownie sprawdź poziom uprawnień i dodaj SELECT do listy lub poproś o to administratora DB. Najwyraźniej do każdego schematu należy nadać określone uprawnienie SELECT, w przeciwnym razie nadal będzie występować błąd ora-00942.
Tabela lub widok tak naprawdę nie istnieje
Przyczyną błędu ora-00942 może być niepoprawna składnia zapytania lub brak tabeli. Chociaż wydaje się to logicznym pierwszym miejscem na rozpoczęcie, jestem pewny, że przywilej użytkownika jest główną przyczyną błędu. Tabela nie istnieje lub używana jest niewłaściwa składnia tabeli jest druga.
Aby sprawdzić, czy tabela istnieje, najpierw sprawdź składnię zapytania. Jeśli składnia jest poprawna, uruchom to zapytanie.
WYBIERZ właściciela, nazwa_obiektu, typ_obiektu Z wszystkich obiektów GDZIE TYP_obiektu ((TABELA, WIDOK)) ORAZ nazwa_obiektu = „YOUR_TABLE_NAME”;
W tym ostatnim wierszu wprowadź rzeczywistą nazwę tabeli, w której widzisz „YOUR_TABLE_NAME”. Powinno to zdecydowanie powiedzieć, czy tabela, którą próbujesz wykonać, istnieje, czy nie. Jeśli zwróci się bez tabeli, tabela, której dotyczy zapytanie, nie istnieje w schemacie lub bazie danych.
Jeśli używany system ma menu Tabele, możesz ręcznie sprawdzić tabelę, jeśli wolisz, ale powyższe zapytanie zakończy zadanie.
Tabela lub widok ma inny schemat
Jeśli użytkownik ma uprawnienia, a tabela istnieje i nadal widzisz błąd ora-00942, prawdopodobnie przyczyną jest schemat. Jeśli zarządzasz wieloma schematami, łatwo jest uruchomić zapytanie dotyczące schematu, który nie jest twój. Kiedy jesteś zajęty i nie masz nic przeciwko, możesz popełnić prosty błąd.
Sprawdź schemat ręcznie, czy możesz lub dodaj nazwę schematu w wierszu FROM zapytania. Jeśli nie masz odpowiednich uprawnień do nowego schematu, ponownie zobaczysz błąd ora-00942. Wróć do pierwszej poprawki uprawnień użytkownika i sprawdź odpowiedni schemat lub poproś o to DBA.
Jak wspomniano powyżej, skonsultowałem się z moim kolegą Oracle DBA w sprawie tego utworu, więc dziękuję mu za ciężką pracę. Jeśli znajdziesz tutaj jakieś błędy lub pominięcia, są one moje same. Daj mi znać w sekcji komentarzy, jeśli coś pominąłem lub źle zrozumiałem, a ja to poprawię.
Jeśli znasz inny sposób naprawienia błędu ora-00942, powiedz nam o tym poniżej!