SQL స్టేట్మెంట్ను నడుపుతున్నప్పుడు మీరు అప్పుడప్పుడు ora-00942 లోపాన్ని చూస్తారు. దీనికి కొన్ని కారణాలు ఉన్నాయి మరియు ఎప్పటిలాగే, లోపం వాక్యనిర్మాణం చాలా వివరణాత్మకమైనది కాదు. మీరు దీనికి వ్యతిరేకంగా వస్తున్నట్లయితే మరియు ఒరా -00942 లోపాన్ని ఎలా పరిష్కరించాలో తెలుసుకోవాలనుకుంటే, చదవండి.
నాకు తెలిసినంతవరకు, ఓరా -00942 లోపానికి మూడు ప్రధాన కారణాలు ఉన్నాయి:
- తగినంత వినియోగదారు హక్కులు
- పట్టిక లేదా వీక్షణ వాస్తవానికి లేదు
- పట్టిక లేదా వీక్షణ వేరే స్కీమాలో ఉంది
ప్రతిదాన్ని ఎలా పరిష్కరించాలో నేను మీకు చూపిస్తాను.
Ora-00942 లోపాన్ని పరిష్కరించండి
మొదట, కొద్దిగా నిరాకరణ. నేను DBA కాదు, నేను విండోస్ అడ్మినిస్ట్రేటర్ మరియు డెస్క్టాప్ మరియు సర్వర్ హార్డ్వేర్ టెక్. SQL ను ఎలా అమలు చేయాలో నాకు తెలుసు, కానీ ఏ స్థాయిలో నైపుణ్యం లేదు మరియు ఖచ్చితంగా సమస్యలను పరిష్కరించగల స్థాయికి కాదు. నేను సహాయం కోసం నా ఒరాకిల్ DBA స్నేహితుడిని అడగవలసి వచ్చింది, కాబట్టి నేను ఈ భాగాన్ని వ్రాస్తున్నప్పుడు, తెలివైన బిట్స్ అన్నీ అతనివి.
Ora-00942 లోపం యొక్క మూడు కారణాల జాబితా సంపూర్ణంగా లేదు. దీనికి ఇతర యాదృచ్ఛిక కారణాలు స్పష్టంగా ఉన్నాయి, కానీ ఈ మూడు చాలా సాధారణమైనవి.
తగినంత వినియోగదారు హక్కులు
Ora-00942 లోపానికి ఒక ముఖ్య కారణం ఏమిటంటే, ప్రశ్న పట్టికను ప్రాప్యత చేయడానికి వినియోగదారుకు తగిన అధికారాలు లేవు. మీరు రెండు ప్రశ్నలను అమలు చేయడం ద్వారా దీన్ని తనిఖీ చేయవచ్చు.
- వినియోగదారు లేదా పాత్ర కోసం సిస్టమ్ హక్కులను జాబితా చేయండి * dba_sys_privs WHERE మంజూరు IN (& user_role, 'PUBLIC') నుండి ఎంచుకోండి;
- వినియోగదారు లేదా పాత్ర కోసం వస్తువు హక్కులను జాబితా చేయండి
మంజూరుదారుని, యజమానిని ఎన్నుకోండి || '.'
సందేహాస్పద వినియోగదారుకు ఆదేశాన్ని అమలు చేయడానికి సరైన అధికారాలు ఉన్నాయో లేదో ఈ రెండు మీకు తెలియజేస్తాయి. వినియోగదారుకు సరైన అధికారాలు ఉంటే, తదుపరిదానికి వెళ్లండి. వినియోగదారుకు సరైన అధికారాలు లేకపోతే, వాటిని వారికి ఇవ్వండి లేదా దీన్ని చేయమని మీ DB అడ్మిన్ను అడగండి.
మీరు ఉపయోగిస్తున్న స్కీమా యొక్క వినియోగదారుకు INSERT అధికారాలు ఉన్నప్పటికీ, ప్రత్యేక హక్కులను ఎంచుకోకపోతే ora-00942 లోపం కూడా సంభవించవచ్చు. మళ్ళీ, ప్రత్యేక స్థాయిని తనిఖీ చేసి, జాబితాకు SELECT ని జోడించండి లేదా దీన్ని చేయమని DB అడ్మిన్ను అడగండి. స్పష్టంగా, ప్రతి స్కీమాకు నిర్దిష్ట SELECT అధికారాన్ని మంజూరు చేయాలి, లేకపోతే మీరు ఇంకా ora-00942 లోపాన్ని చూస్తారు.
పట్టిక లేదా వీక్షణ వాస్తవానికి లేదు
Ora-00942 లోపం యొక్క ఈ కారణం తప్పు ప్రశ్న వాక్యనిర్మాణం వల్ల కావచ్చు లేదా పట్టిక లేకపోతే. ఇది ప్రారంభించడానికి తార్కిక మొదటి ప్రదేశంగా అనిపించినప్పటికీ, వినియోగదారు హక్కు అనేది లోపానికి ప్రధమ కారణమని నేను విశ్వసనీయంగా హామీ ఇస్తున్నాను. పట్టిక అక్కడ లేకపోవడం లేదా తప్పు పట్టిక వాక్యనిర్మాణం రెండవది.
పట్టిక ఉందో లేదో తనిఖీ చేయడానికి, మొదట ప్రశ్న యొక్క వాక్యనిర్మాణాన్ని తనిఖీ చేయండి. వాక్యనిర్మాణం సరైనది అయితే, ఈ ప్రశ్నను అమలు చేయండి.
అన్ని_ వస్తువుల నుండి యజమాని, ఆబ్జెక్ట్_పేరు, ఆబ్జెక్ట్_టైప్ ఎంచుకోండి WHERE ఆబ్జెక్ట్_టైప్ IN ('టేబుల్', 'VIEW') మరియు ఆబ్జెక్ట్_పేరు = 'YOUR_TABLE_NAME';
ఆ చివరి పంక్తిలో, మీరు 'YOUR_TABLE_NAME' చూసే అసలు పట్టిక పేరును చొప్పించండి. మీరు ప్రశ్నించడానికి ప్రయత్నిస్తున్న పట్టిక ఉందా లేదా అనేది ఇది ఖచ్చితంగా మీకు తెలియజేస్తుంది. ఇది పట్టిక లేకుండా తిరిగి వస్తే, మీరు ప్రశ్నిస్తున్న పట్టిక స్కీమా లేదా డేటాబేస్లో లేదు.
మీరు ఉపయోగిస్తున్న సిస్టమ్లో టేబుల్స్ మెనూ ఉంటే, మీరు కావాలనుకుంటే మీరు మాన్యువల్గా టేబుల్ కోసం తనిఖీ చేయవచ్చు కాని పై ప్రశ్న ఆ పనిని పూర్తి చేస్తుంది.
పట్టిక లేదా వీక్షణ వేరే స్కీమాలో ఉంది
వినియోగదారుకు అధికారాలు ఉంటే మరియు పట్టిక ఉనికిలో ఉంటే మరియు మీరు ఇప్పటికీ ఓరా -00942 లోపాన్ని చూస్తుంటే, అది స్కీమాకు తగ్గట్టుగా ఉంటుంది. మీరు బహుళ స్కీమాలను నిర్వహిస్తుంటే, మీది కాని స్కీమాకు వ్యతిరేకంగా ప్రశ్నను అమలు చేయడం సులభం. మీరు బిజీగా ఉన్నప్పుడు మరియు దానికి వ్యతిరేకంగా ఉన్నప్పుడు, ఇది ఒక సాధారణ లోపం.
మీకు వీలైతే స్కీమాను మాన్యువల్గా తనిఖీ చేయండి లేదా మీ ప్రశ్న యొక్క FROM లైన్లో స్కీమా పేరును జోడించండి. క్రొత్త స్కీమాకు మీకు సరైన అధికారాలు లేకపోతే, మీరు ఓరా -00942 లోపాన్ని మరోసారి చూస్తారు. మొదటి వినియోగదారు హక్కు పరిష్కారానికి తిరిగి వెళ్లి, సంబంధిత స్కీమాను తనిఖీ చేయండి లేదా మీ DBA ను మీ కోసం చేయండి.
పైన చెప్పినట్లుగా, నేను ఈ ముక్క కోసం నా ఒరాకిల్ డిబిఎ బడ్డీని సంప్రదించాను, అందువల్ల కష్టపడి పనిచేసినందుకు అతనికి అన్ని క్రెడిట్. మీరు ఇక్కడ ఏదైనా లోపాలు లేదా లోపాలను కనుగొంటే, అవి నావి మాత్రమే. నేను ఏదైనా తప్పిపోయినట్లయితే లేదా తప్పు జరిగితే వ్యాఖ్యల విభాగంలో నాకు తెలియజేయండి మరియు నేను దాన్ని సరిదిద్దుతాను.
Ora-00942 లోపాన్ని పరిష్కరించడానికి మీకు వేరే మార్గం తెలిస్తే, దాని గురించి క్రింద మాకు చెప్పండి!
