ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

راهنمای جامع خطاهای متداول در اوراکل با مثال

اگر با پایگاه داده 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 یا INSERTON DUPLICATE KEY استفاده کنید.

این خطا می‌گوید جدول یا View مورد نظر شما یا در این Schema وجود ندارد، یا مجوز دسترسی به آن را ندارید.

راه‌حل این است که از نام کامل شامل اسم Schema استفاده کنید (schema.table) و در صورت نیاز از DBA بخواهید دسترسی بدهد.

یعنی اوراکل نمی‌تواند نام سرویس (Service Name) مورد نظر شما را پیدا کند.

معمولاً دلیلش اشتباه بودن آدرس یا تعریف آن در فایل tnsnames.ora است.

فایل را باز کنید، ورودی صحیح را با اطلاعات سرور هماهنگ کنید و مجدد تست کنید.

این خطا یعنی Undo Tablespace کوچک‌تر از نیاز Query بوده یا Query بیش‌ازحد طولانی شده.

برای رفع: یا Undo Tablespace را بزرگ کنید (ALTER DATABASE DATAFILE … RESIZE) یا Query را به بخش‌های کوچک‌تر تقسیم کنید.

📥 اگر سوالی داری در مورد خطاهای رایج در Oracle داری، در بخش کامنت‌ها بپرس.

سؤالی درباره این مقاله داری؟

اگر نکته‌ای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفت‌وگوی واقعی 💬

برو به صفحه پرسش و پاسخ

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *