بن بست (Deadlock) در اوراکل
بن بست (DEADLOCK) در Oracle:
-
بن بست هنگامی رخ می دهد که دو یا چند Sessions (جلسه) منتظر اطلاعات قفل شده توسط یکدیگر باشند و در نتیجه مسدود می شود.
-
شما صبر می کنید ، شما مسدود شده اید. شما در حال تلاش برای تغییر برخی از داده هایی هستید که Session (جلسه) دیگر در حال تغییر است.
-
شما “ردیف X” را قفل کرده اید. آنها “ردیف y” را قفل کردند. شما باید “ردیف y” را قفل کنید ، آنها را مسدود می کنید. اکنون آنها باید “ردیف x” را قفل کنند. آنها توسط شما مسدود می شوند. شما اکنون به بن بست رسیده اید – منتظر هرکدام هستید. ما یکی از اظهارات را خاتمه می دهیم (دیگری شما و آنها فقط در آنجا برای همیشه منتظر یکدیگر می نشینیم).
آن Session (جلسه) تصمیم می گیرد که آیا باید:
a) commit
b) rollback
c) do something else
-
یکی از عوامل بوجود آمدن Deadlock در اوراکل به خاطر طراحی ضعیف دیتابیس و همچنین کد نویسی ضعیف در سطح اپلیکیشن می باشد که می توان با همکاری DBA با تیم Developer از بوجود آمدن اینگونه مسائل جلوگیری کرد.
-
بعضی اوقات بخاطر پروسس های هست که بصورت batch در اوراکل اجرا می شود و زمان زیادی طول میکشد و یا با هم Overlap-همپوشانی دارند و همچنین تعداد session های زیاد که بر روی یک سطر از جدول در حال عملیات هستند موجب Deadlock می شود.
-
یکی از ساده ترین راه ها این است که یوزرهایی که باعث lock شدن در اوراکل می شوند را پیدا کرده و سپس kill کنید.
پیشگیری:
-
یکی از آنها Tune کردن اپلیکیشن می باشد. بصورتی که از روش optimistic برای DML استفاده نمایید.
-
در بعضی شرایط بحرانی اضافه کردن مقدار INITRANS بر روی جداول و ایندکس های که بیشترین استفاده را در اوراکل دارند تاثیر گذار خواهد بود.
-
از block size های کوچکتر در Oracle استفاده نمایید مثلا db2k_cache_size و این پست را مشاهده کنید.
-
همیشه برای foreign keys ایندکس در اوراکل بسازید.
-
برای تشخیص Deadlock از $ORACLE_HOME/rdbms/admin/dbmslock.sql. استفاده کنید. بهتر است که قبل از وقوع آن همیشه اسکریپت مانیتورینگ Deadlock را در زمانهای مختلف اجرا کنید.
-
یک ابزار هم هست به نام Oracle Solaris Studio Thread Analyzer برای پیدا کردن Deadlock در برنامه ها.
Rate this post
جستجو
مطالب اخیر
نظرات اخیر
- مجتبی خالقداد در پلاگین کد امنیتی اوراکل اپکس(ای پکس)
- سعید حسن پور در تبدیل تاریخ ها در اوراکل
- حسین در تبدیل تاریخ ها در اوراکل
- مهرسا سعادت در نقشه راه اوراکل APEX برای نسخه بعدی
- سعید حسن پور در رفع مشکل Persian Date Picker برای اوراکل ایپکس(اپکس) ۲۱
برچسبها
AOP
APEX
apexrad
captcha
CDN
constraint
ebs
epg
forms
index
injection
longtype
Materialized-view
Oracle Application Express
orclapex
performance
Persian Sort
plsql
session
sql
standalone
variable scope
XE
امنیت
اوراکل
اپکس
ایندکس
ایپکس
بنبست
بهینه ساز
تاریخ شمسی
ترجمه
ترفند
حروف فارسی
داکیومنت
داینامیک
شمسی
مرتب سازی فارسی
نصب
نکته
پلاگین
یونیک