الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

التحكم بالعمليات على النظام من خلال المستخدمين..؟؟

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله وبركاته،،
أخواني الاعزاء...سألني مرة أحد الاخوان خارج المنتدى سؤال وهو :
نفرض انه عندي عدد 3 من المستخدمين على النظام...
و الــ 3 مستخدمين يقومون بعملية معينه..نفرض انهم يقومون بعملية update على رواتب الموظفين...
في حال قاموا بعملية الحفظ بنفس الوقت ماذا يجري؟؟
ام أن هناك خاصية معينه مثل الــ queue ؟؟
وشكرا ...

بتاريخ:

السلام عليكم
سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاول

مثال
قم بفتح 2 session من ال sql واكتب في الاولى مثلا كده

update emp set sal=1000 where empno=7369;



ولا تعمل commit

واتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقة
راقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية

هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية

بتاريخ:

شكرا اخي مصطفي علي التوضيح...
لكن في حال تحدثنا عن شركة او مؤسسة ضخمة , لديها عدد من الموظفين (Users) ليس بالقليل , ألا تعتبر تلك مشكلة ؟

بتاريخ:
  • كاتب الموضوع

السلام عليكم
هذا ما اقصده اخي مصطفى ما قاله الاخ محمود ؟؟
ربما يعتقد المستخدم ان النظام يوجد به مشكله ان ظلت العملية التي قام بها معلقه ؟؟؟

بتاريخ:
  • كاتب الموضوع
السلام عليكم
سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاول

مثال
قم بفتح 2 session من ال sql واكتب في الاولى مثلا كده
update emp set sal=1000 where empno=7369;



ولا تعمل commit

واتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقة
راقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية

هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية



اوك اخي مصطفى...
طيب لو فرضنا ان المستخدم الاول كتب جملة الــ UPDATE ولم يقم بعمل COMMIT
والمستخدم الثاني كتب نفس الجملة ولكنه عمل COMMIT...
ماذا يحدث يهذه الحاله ؟؟؟
بتاريخ:

هل من المعقول ان تسهو شركة اوراكل عن نقطة هامة مثل هذه النقطة....؟
هل ممكن استخدام كود لحل تلك المشكلة...؟

اذا كان كلام اخي مصطفي صحيح , ان السجل يحدث له اقفال Locked اوتوماتيكي مؤقت (طبعا حسب عدد المستخدمين المتزامنين عليه) , اعتقد انه يمكن حل هذه النقطة من خلال استخدام خاصية Lock Record

بتاريخ:

السلام عليكم

هل من المعقول ان تسهو شركة اوراكل عن نقطة هامة مثل هذه النقطة....؟


بالعكس ده نوع كبير جدا من ال security ولابد من تنفيذه هعطيك مثال
مثلا أنت أعطيت شيك لكذا شخص ومثلا رصيدك به وليكن 1000 ريال وهذه الشيكات بعدد 3 مثلا ماذا لو قام كل شخص الذي معه الشيك بصرفه في نفس الوقت تماما هل سيتم صرف لكل شخص الشيك رغم ان الرصيد لايكفي سوا لشخص واحد طبعا كان لابد من حدوث ال locked حتى يتم تنظيم العملية ولننظر ماذا سيتم
هي المشكلة ستحدث لو ال 2 دخلوا في نفس الوقت وأحدهما بيعدل في السجل ولم ينتهي لابد من عمل ال locked على الاخر

ويوجد من خصائص البلوك خاصية تسمى lock mode لو اخترتها delay سيتم انتظار المستخدم الاول حتى ينتهي
أم لو اخترتها immediate سيخبرك بذلك وطبعا يمكنك كتابة رسالة للمستخدم تفيد ان هناك lock ويتطلب عليه فقط عمل re query فقط مرة اخرى للسجل
بتاريخ:
  • كاتب الموضوع
السلام عليكم
سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاول

مثال
قم بفتح 2 session من ال sql واكتب في الاولى مثلا كده
update emp set sal=1000 where empno=7369;



ولا تعمل commit

واتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقة
راقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية

هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية



اوك اخي مصطفى...
طيب لو فرضنا ان المستخدم الاول كتب جملة الــ UPDATE ولم يقم بعمل COMMIT
والمستخدم الثاني كتب نفس الجملة ولكنه عمل COMMIT...
ماذا يحدث يهذه الحاله ؟؟؟



هل من اجابة لهذا السؤال اخي مصطفى؟؟
ام ان جوابه هو نفس الجواب الذي كتبته باول مشاركة ؟؟
تحياتي..
بتاريخ:

بص ياباشا

1- ماينفعش فى تقسيم العمل ان اتنين يعملوا تحديث للمرتبات اصلآ لازم يكون واحد .
2- لو فى حالة غير دى فا ذى ماهو واضح ان بتحصل حاجة اسمها wait للمستخدمين حتى ينتهى من عمل التحديث و عمل commit و بعد ذلك تنفذ عمليات الموجوده فى ال wait
3- لو انت شايف ان دى صغرة فى اوراكل ممكنتشوف قواعد البيانات التانية بتعالجها اذاى و تشرح لينا الحل
4- الحل الجزرى انى اعمل lock لل row او لل block عشان محدش يتعامل معه اصلآ غير لما يخلص التانى و اوراكل بتعمل lock على ال row بس عشان اللى عاوز يتعامل مع سجل تانى يعرف
5- فى الجداول الحساسة بتعمل lock للجدول عشان تكون مطمن

ايهاب وجدى

بتاريخ:

السلام عليكم
إضافة بسيطة أخرى
أعتقد ان السؤال موجه أكثر لل dba فأحيانا أحد المستخدمين يسبب ل lock على الاخر المفروض ان ينتظر حتى ينهي مايقوم به
طيب ممكن يكون المستخدم الاي شغال مخرجشي وسايب ال lock شغال يبقى اه الاي يحصل
يتم الاتصال على ال dba ويقوم ال dba بالتعرف على ال session المسببة ال lock ويقوم بعمل لها kill كي يوقف ال lock

للتعرف كيفية الوصول الى السيشن المسببة لل lock يمكنك من خلال زيارة هذه الصفحة
http://www.myoracleguide.com/s/managelocks.htm
وهناك حالات كثيرة لل lock
ابحث عن الايرورو ora-00060

ويايرت نقرأ مناقشات اخرى لهذا الموضوع

بتاريخ:
  • كاتب الموضوع
بص ياباشا

1- ماينفعش فى تقسيم العمل ان اتنين يعملوا تحديث للمرتبات اصلآ لازم يكون واحد .
2- لو فى حالة غير دى فا ذى ماهو واضح ان بتحصل حاجة اسمها wait للمستخدمين حتى ينتهى من عمل التحديث و عمل commit و بعد ذلك تنفذ عمليات الموجوده فى ال wait
3- لو انت شايف ان دى صغرة فى اوراكل ممكنتشوف قواعد البيانات التانية بتعالجها اذاى و تشرح لينا الحل
4- الحل الجزرى انى اعمل lock لل row او لل block عشان محدش يتعامل معه اصلآ غير لما يخلص التانى و اوراكل بتعمل lock على ال row بس عشان اللى عاوز يتعامل مع سجل تانى يعرف
5- فى الجداول الحساسة بتعمل lock للجدول عشان تكون مطمن

ايهاب وجدى


اشكرك اخي ايهاب على التوضيح...

السلام عليكم
إضافة بسيطة أخرى
أعتقد ان السؤال موجه أكثر لل dba فأحيانا أحد المستخدمين يسبب ل lock على الاخر المفروض ان ينتظر حتى ينهي مايقوم به
طيب ممكن يكون المستخدم الاي شغال مخرجشي وسايب ال lock شغال يبقى اه الاي يحصل
يتم الاتصال على ال dba ويقوم ال dba بالتعرف على ال session المسببة ال lock ويقوم بعمل لها kill كي يوقف ال lock

للتعرف كيفية الوصول الى السيشن المسببة لل lock يمكنك من خلال زيارة هذه الصفحة
http://www.myoracleguide.com/s/managelocks.htm
وهناك حالات كثيرة لل lock
ابحث عن الايرورو ora-00060

ويايرت نقرأ مناقشات اخرى لهذا الموضوع


تسلم يا مصطفى على التوضيح ... سأقوم بالاطلاع على الرابط ... واخبرك ان كان لدي بعض التساؤولات...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.