Повремено видите ора-00942 грешку током покретања СКЛ израза. Има неколико узрока и као и обично, синтакса грешке није најочитији опис. Ако се суочавате са овим и желите да знате како да поправите грешку ора-00942, прочитајте даље.
Колико знам, постоје три главна узрока грешке ора-00942:
- Недовољно корисничких привилегија
- Табела или приказ у ствари не постоји
- Табела или приказ су у другој шеми
Показаћу вам како да се обратите сваком од њих.
Поправите грешку ора-00942
Прво, мало одрицања. Ја нисам ДБА, ја сам Виндовс администратор и техничка опрема за хардвер за рачунаре и сервере. Знам како покренути СКЛ, али не у било којој мјери стручности и сигурно не до нивоа који може ријешити проблеме. Морао сам да замолим мог пријатеља Орацле ДБА за помоћ, тако да док сам писао ово дело, паметни делићи су сви његови.
Ова листа од три узрока грешке ора-00942 није исцрпна. Очигледно постоје и други случајни узроци, али су ова три најчешће.
Недовољно корисничких привилегија
Један кључни узрок грешке ора-00942 је тај што корисник нема довољно привилегија за приступ предметној табели. Ово можете да проверите покретањем два упита.
- навести системске привилегије за корисника или улогу ИЗБОР * ИЗ ОД дба_сис_привс ГДЈЕ примаоца корисника (& усер_роле, 'ПУБЛИЦ');
- навести привилегије објекта за корисника или улогу
ОДАБЕРИТЕ приматеља, власника || '.' || табела_предмет, објект, привилегирање, подесив ОД дба_таб_привс ГДЈЕ је прималац (и корисник_роле) НАРУЧИ ПО примаоцу, власнику || '.' || табела_име, привилегија;
Ово двоје ће вам рећи да ли дотични корисник има исправне привилегије за покретање наредбе. Ако корисник има исправне привилегије, пређите на следећу. Ако корисник нема исправне привилегије, додијелите им или тражите свог ДБ Админ-а да то учини.
Грешка ора-00942 такође се може догодити ако корисник шеме коју користите има ИНСЕРТ привилегију, али не и СЕЛЕЦТ привилегије. Опет проверите ниво привилегија и додајте СЕЛЕЦТ на листу или тражите ДБ Админ да то уради. Очигледно, специфична привилегија СЕЛЕЦТ мора се додијелити свакој схеми, иначе ћете и даље видјети ора-00942 грешку.
Табела или приказ у ствари не постоји
Овај узрок грешке ора-00942 може бити проузрокован погрешном синтаксом упита или ако табела не постоји. Иако ће ово изгледати логично прво место за почетак, ја сам поуздано уверен да је привилегија корисника разлог број један због погрешке. Табела која није тамо или се користи погрешна синтакса табеле је друга.
Да бисте проверили да ли табела постоји, прво проверите синтаксу упита. Ако је синтакса тачна, покрените овај упит.
ИЗБОР власника, имена објекта, врсте објекта ОД свих_објеката ГДЈЕ ОБЈЕКТА типа ИН ('ТАБЕЛА', 'ПОГЛЕД') И објекта_наме = 'ИОУР_ТАБЛЕ_НАМЕ';
У том задњем реду уметните стварно име табеле где видите 'ИОУР_ТАБЛЕ_НАМЕ'. Ово би вам дефинитивно требало да каже да ли табела коју покушавате да упитате постоји или не. Ако се врати без таблице, таблица коју тражите не постоји у шеми или бази података.
Ако систем који користите има мени Табеле, можете ручно проверити таблицу ако желите, али горњи упит испуњава задатак.
Табела или приказ су у другој шеми
Ако корисник има повластице, а табела постоји, а ви и даље видите грешку ора-00942, вероватно је спуштена на схему. Ако управљате са више схема, лако је покренути упит против схеме која није ваша. Када сте заузети и противите се томе, то је једноставна грешка.
Ручно проверите шему да ли можете да додате име схеме у ФРОМ линији вашег упита. Ако немате исправне привилегије за нову схему, поново ћете видети грешку ора-00942. Вратите се на прво исправљање привилегија корисника и проверите одговарајућу шему или назовите свог ДБА да то уради за вас.
Као што је горе поменуто, за овај комад сам се консултовао са Орацлеовим ДБА пријатељем, како бих му захвалио за напоран рад. Ако овде пронађете било какве грешке или пропусте, оне су само моје. Јавите ми у одељку коментара да ли сам нешто пропустила или погрешно схватила и то ћу исправити.
Ако знате било који други начин да поправите грешку ора-00942, кажите нам о томе ниже!
