
اگر با پایگاه داده Oracle کار کرده باشی، حتماً تجربه کردی که یک Query ساده ناگهان با یک خطای ترسناک قرمز رنگ جواب میدهد.
هرچه قدر هم مسلط باشی، باز هم این خطاها بخشی از مسیر هستند.
فرق حرفهایها با تازهکارها در این است که سریع بتوانند خطا را بفهمند، علتش را پیدا کنند و رفعش کنند.
در این مقاله جامع آموزش اوراکل، مهمترین و پرتکرارترین خطاهای اوراکل را به ترتیب اهمیت بررسی میکنیم.
برای هر خطا، علت، مثال واقعی، و راهکار عملی گفته شده تا در کمتر از چند دقیقه به جواب برسید.
اگر با دیتابیس Oracle کار میکنی، حتماً برایت پیش آمده که بخواهی اطلاعات خاصی مثل نام کاربر، نقشها، IP کلاینت، یا حتی نام ماژول برنامهات را در یک نشست (session) تنظیم کنی.
پیشنهاد می شود نوشته زیر را مطالعه کنید:
در این نوشته شما می خوانید
ORA‑۰۰۰۰۱ – unique constraint violated
مشکل: میخواهید رکوردی وارد کنید که یک مقدار تکراری در ستون با شرط Unique دارد.
مثال:
INSERT INTO users (id, username) VALUES (1, 'ali');
-- ID Tekrari Insert mikoni.
حل: قبل از ذخیره رکورد، وجود آن را بررسی کنید یا از MERGE استفاده کنید.
ORA‑۰۰۹۰۴ – invalid identifier
مشکل: ستون یا Alias وجود ندارد یا اشتباه تایپی دارد.
مثال:
SELECT usernme FROM users;
-- Eshtebah type dar username
حل: نام ستون را از Schema بررسی کنید و در صورت استفاده از کوتیشن، به بزرگی/کوچکی حروف دقت کنید.
ORA‑۰۰۹۴۲ – table or view does not exist
مشکل: جدول یا View پیدا نشد یا مجوز دسترسی ندارید.
حل: از schema.table_name استفاده کنید و با DBA هماهنگ شوید.
ORA‑۱۲۱۵۴ – TNS: could not resolve the connect identifier specified
مشکل: آدرس یا نام سرویس در TNS اشتباه است.
حل: فایل tnsnames.ora را بررسی و اصلاح کنید.
ORA‑۱۲۵۱۴ – listener does not currently know of service requested
مشکل: Listener اوراکل سرویس شما را نمیشناسد.
حل: با lsnrctl status سرویسها را بررسی کنید.
ORA‑۰۱۰۱۷ – invalid username/password; logon denied
مشکل: نامکاربری یا رمز اشتباه یا منقضی است.
حل: رمز را بررسی یا با ALTER USER تغییر دهید.
ORA‑۰۰۹۰۷ – missing right parenthesis
مشکل: پرانتز جفت نشده یا جای اشتباه دارد.
مثال:
SELECT usernme FROM users;
-- Eshtebah type dar username
حل: پرانتزها را تطبیق دهید.
ORA‑۰۶۵۰۲ – PL/SQL: numeric or value error
مشکل: مقدار ورودی فراتر از ظرفیت متغیر یا ستون است.
حل: اندازه متغیر را افزایش دهید یا متن را کوتاه کنید.
ORA‑۰۶۵۱۲ – at line
مشکل: فقط مکان دقیق خطای PL/SQL را نشان میدهد.
حل: خط اصلی خطا را پیدا کنید.
ORA‑۰۱۴۰۳ – no data found
مشکل: SELECT … INTO دادهای برنگردانده.
حل: قبل از اجرا بررسی کنید یا از Exception Handling استفاده کنید.
ORA‑۰۱۴۰۰ – cannot insert NULL into
مشکل: ستون NOT NULL مقدار NULL گرفته.
حل: مقدار معتبر یا پیشفرض بدهید.
ORA‑۰۱۵۵۵ – snapshot too old
مشکل: Undo tablespace کوچک است یا Query طولانی شده.
حل: Undo را افزایش دهید یا Query را بخشبخش اجرا کنید.
ORA‑۰۱۶۵۳ – unable to extend table
مشکل: فضای Tablespace پر شده.
حل: Datafile اضافه یا extend کنید.
ORA‑۰۱۶۵۴ – unable to extend index
مشکل: همان مشکل قبلی برای Index.
حل: فضای Tablespace Index را افزایش دهید.
ORA‑۱۲۸۹۹ – value too large for column
مشکل: مقدار طولانیتر از تعریف ستون.
حل: طول ستون را تغییر دهید یا مقدار را کوتاه کنید.
ORA‑۲۸۰۰۱ – the password has expired
مشکل: رمز کاربر منقضی شده است.
حل:
ALTER USER username IDENTIFIED BY new_password;
ORA‑۰۱۵۵۵ – fetch out of sequence
مشکل: ترتیب استفاده از Cursor درست نیست.
حل: عملیات Cursor را بازبینی کنید.
✨ نکات حرفهای برای مدیریت خطا
- کد خطا را یادداشت و دقیق جستوجو کنید.
- پیامهای همراه خطا مثل ORA‑۰۶۵۱۲ را جدی بگیرید.
- برای Constraintها، داده را قبل از Insert کنترل کنید.
- کانفیگ TNS و Listener را مرتب نگه دارید.
لیست خطاهای رایج در اوراکل
| کد خطا | عنوان خطا | علت | راهکار |
|---|---|---|---|
| ORA-00001 | unique constraint violated | مقدار تکراری در ستون یکتا | بررسی قبل از درج یا استفاده از MERGE |
| ORA-00904 | invalid identifier | نام ستون یا alias اشتباه | بررسی نام صحیح ستون در Schema |
| ORA-00942 | table or view does not exist | جدول یا View وجود ندارد | دسترسی یا نام کامل جدول را بررسی کنید |
| ORA-12154 | TNS could not resolve service | آدرس یا نام سرویس TNS اشتباه | اصلاح tnsnames.ora |
| ORA-01555 | snapshot too old | فضای Undo کم یا Query طولانی | افزایش Undo یا تقسیم Query |
سوالات متداول درباره خطاهای رایج در اوراکل
وقتی اوراکل این خطا را میدهد یعنی رکوردی ثبت میکنید که مقدار ستون یا ترکیب ستونها طبق Constraint یکتا قبلاً وجود دارد.
برای رفعش یا باید قبل از INSERT با یک SELECT بررسی کنید، یا از روشهای ادغام داده مثل MERGE یا INSERT … ON DUPLICATE KEY استفاده کنید.
این خطا میگوید جدول یا View مورد نظر شما یا در این Schema وجود ندارد، یا مجوز دسترسی به آن را ندارید.
راهحل این است که از نام کامل شامل اسم Schema استفاده کنید (schema.table) و در صورت نیاز از DBA بخواهید دسترسی بدهد.
یعنی اوراکل نمیتواند نام سرویس (Service Name) مورد نظر شما را پیدا کند.
معمولاً دلیلش اشتباه بودن آدرس یا تعریف آن در فایل tnsnames.ora است.
فایل را باز کنید، ورودی صحیح را با اطلاعات سرور هماهنگ کنید و مجدد تست کنید.
این خطا یعنی Undo Tablespace کوچکتر از نیاز Query بوده یا Query بیشازحد طولانی شده.
برای رفع: یا Undo Tablespace را بزرگ کنید (ALTER DATABASE DATAFILE … RESIZE) یا Query را به بخشهای کوچکتر تقسیم کنید.
📥 اگر سوالی داری در مورد خطاهای رایج در Oracle داری، در بخش کامنتها بپرس.
سؤالی درباره این مقاله داری؟
اگر نکتهای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفتوگوی واقعی 💬
برو به صفحه پرسش و پاسخ
دیدگاهتان را بنویسید