بتاريخ: 30 يوليو 200916 سنة comment_165064 السلام عليكم ورحمة الله وبركاته،،أخواني الاعزاء...سألني مرة أحد الاخوان خارج المنتدى سؤال وهو :نفرض انه عندي عدد 3 من المستخدمين على النظام...و الــ 3 مستخدمين يقومون بعملية معينه..نفرض انهم يقومون بعملية update على رواتب الموظفين...في حال قاموا بعملية الحفظ بنفس الوقت ماذا يجري؟؟ام أن هناك خاصية معينه مثل الــ queue ؟؟وشكرا ... تقديم بلاغ
بتاريخ: 30 يوليو 200916 سنة comment_165073 السلام عليكم سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاولمثال قم بفتح 2 session من ال sql واكتب في الاولى مثلا كده update emp set sal=1000 where empno=7369; ولا تعمل commitواتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقةراقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية تقديم بلاغ
بتاريخ: 30 يوليو 200916 سنة comment_165074 شكرا اخي مصطفي علي التوضيح...لكن في حال تحدثنا عن شركة او مؤسسة ضخمة , لديها عدد من الموظفين (Users) ليس بالقليل , ألا تعتبر تلك مشكلة ؟ تقديم بلاغ
بتاريخ: 31 يوليو 200916 سنة كاتب الموضوع comment_165075 السلام عليكمهذا ما اقصده اخي مصطفى ما قاله الاخ محمود ؟؟ربما يعتقد المستخدم ان النظام يوجد به مشكله ان ظلت العملية التي قام بها معلقه ؟؟؟ تقديم بلاغ
بتاريخ: 31 يوليو 200916 سنة كاتب الموضوع comment_165076 السلام عليكم سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاولمثال قم بفتح 2 session من ال sql واكتب في الاولى مثلا كدهupdate emp set sal=1000 where empno=7369; ولا تعمل commitواتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقةراقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية اوك اخي مصطفى...طيب لو فرضنا ان المستخدم الاول كتب جملة الــ UPDATE ولم يقم بعمل COMMITوالمستخدم الثاني كتب نفس الجملة ولكنه عمل COMMIT...ماذا يحدث يهذه الحاله ؟؟؟ تقديم بلاغ
بتاريخ: 31 يوليو 200916 سنة comment_165120 هل من المعقول ان تسهو شركة اوراكل عن نقطة هامة مثل هذه النقطة....؟هل ممكن استخدام كود لحل تلك المشكلة...؟اذا كان كلام اخي مصطفي صحيح , ان السجل يحدث له اقفال Locked اوتوماتيكي مؤقت (طبعا حسب عدد المستخدمين المتزامنين عليه) , اعتقد انه يمكن حل هذه النقطة من خلال استخدام خاصية Lock Record تقديم بلاغ
بتاريخ: 31 يوليو 200916 سنة comment_165124 السلام عليكم هل من المعقول ان تسهو شركة اوراكل عن نقطة هامة مثل هذه النقطة....؟ بالعكس ده نوع كبير جدا من ال security ولابد من تنفيذه هعطيك مثال مثلا أنت أعطيت شيك لكذا شخص ومثلا رصيدك به وليكن 1000 ريال وهذه الشيكات بعدد 3 مثلا ماذا لو قام كل شخص الذي معه الشيك بصرفه في نفس الوقت تماما هل سيتم صرف لكل شخص الشيك رغم ان الرصيد لايكفي سوا لشخص واحد طبعا كان لابد من حدوث ال locked حتى يتم تنظيم العملية ولننظر ماذا سيتم هي المشكلة ستحدث لو ال 2 دخلوا في نفس الوقت وأحدهما بيعدل في السجل ولم ينتهي لابد من عمل ال locked على الاخر ويوجد من خصائص البلوك خاصية تسمى lock mode لو اخترتها delay سيتم انتظار المستخدم الاول حتى ينتهي أم لو اخترتها immediate سيخبرك بذلك وطبعا يمكنك كتابة رسالة للمستخدم تفيد ان هناك lock ويتطلب عليه فقط عمل re query فقط مرة اخرى للسجل تقديم بلاغ
بتاريخ: 31 يوليو 200916 سنة كاتب الموضوع comment_165130 السلام عليكم سيحدث نوع من ال lock على هذا السجل طالما ان المستخدم لازال واقف على هذا السجل ولن تستطيع عمل اي شيء حتى يخرج المستخدم الاولمثال قم بفتح 2 session من ال sql واكتب في الاولى مثلا كدهupdate emp set sal=1000 where empno=7369; ولا تعمل commitواتركها مفتوحة ادخل على ال session الاخرى واكتب نفس الجملة السابقةراقب الموقف ستجد ان ال session الثانية معلقة اذهب الى الاولى واكتب commit ستجد ان جملة ال update اشتغلت في التانية هكذا ايضا في الفورم افتح 2 فورم لنفس الجدول وراقب العملية اوك اخي مصطفى...طيب لو فرضنا ان المستخدم الاول كتب جملة الــ UPDATE ولم يقم بعمل COMMITوالمستخدم الثاني كتب نفس الجملة ولكنه عمل COMMIT...ماذا يحدث يهذه الحاله ؟؟؟ هل من اجابة لهذا السؤال اخي مصطفى؟؟ام ان جوابه هو نفس الجواب الذي كتبته باول مشاركة ؟؟تحياتي.. تقديم بلاغ
بتاريخ: 1 أغسطس 200916 سنة comment_165142 بص ياباشا 1- ماينفعش فى تقسيم العمل ان اتنين يعملوا تحديث للمرتبات اصلآ لازم يكون واحد .2- لو فى حالة غير دى فا ذى ماهو واضح ان بتحصل حاجة اسمها wait للمستخدمين حتى ينتهى من عمل التحديث و عمل commit و بعد ذلك تنفذ عمليات الموجوده فى ال wait 3- لو انت شايف ان دى صغرة فى اوراكل ممكنتشوف قواعد البيانات التانية بتعالجها اذاى و تشرح لينا الحل 4- الحل الجزرى انى اعمل lock لل row او لل block عشان محدش يتعامل معه اصلآ غير لما يخلص التانى و اوراكل بتعمل lock على ال row بس عشان اللى عاوز يتعامل مع سجل تانى يعرف 5- فى الجداول الحساسة بتعمل lock للجدول عشان تكون مطمنايهاب وجدى تقديم بلاغ
بتاريخ: 1 أغسطس 200916 سنة comment_165147 السلام عليكمإضافة بسيطة أخرى أعتقد ان السؤال موجه أكثر لل dba فأحيانا أحد المستخدمين يسبب ل lock على الاخر المفروض ان ينتظر حتى ينهي مايقوم به طيب ممكن يكون المستخدم الاي شغال مخرجشي وسايب ال lock شغال يبقى اه الاي يحصل يتم الاتصال على ال dba ويقوم ال dba بالتعرف على ال session المسببة ال lock ويقوم بعمل لها kill كي يوقف ال lock للتعرف كيفية الوصول الى السيشن المسببة لل lock يمكنك من خلال زيارة هذه الصفحةhttp://www.myoracleguide.com/s/managelocks.htmوهناك حالات كثيرة لل lockابحث عن الايرورو ora-00060ويايرت نقرأ مناقشات اخرى لهذا الموضوع تقديم بلاغ
بتاريخ: 1 أغسطس 200916 سنة كاتب الموضوع comment_165205 بص ياباشا 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ويايرت نقرأ مناقشات اخرى لهذا الموضوع تسلم يا مصطفى على التوضيح ... سأقوم بالاطلاع على الرابط ... واخبرك ان كان لدي بعض التساؤولات... تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.