نشر بواسطة : Obay Salah , November 19, 2024

تحدثنا سابقًا عن مفهوم الـ Schedules، والتي تستخدم لتحديد وقت تنفيذ الـ Jobs. يعتمد مفهوم الـ Windows بشكل أساسي على هذا المعنى لتحديد وقت تنفيذ الـ Jobs، مع إعطاء حرية أكبر لأوراكل لتقرير متى يتم التنفيذ.

الجديد في مفهوم الـ Windows هو أنه يقوم بتهيئة أوراكل استعدادًا لتنفيذ الـ Jobs من خلال تفعيل خطة مدير الموارد التي سيتم تنفيذ الـ Jobs من خلالها. لذلك، في لحظة فتح الـ Window، تقوم أوراكل بتهيئة وفقًا لمتغيرات الـ Window، وتحديد فترة بقاء الـ Window مفتوحة، وكذلك وقت إعادة فتح الـ Window ووقت انتهاء عمل الـ Window.

لاحظ أن متغيرات الإجراء تشبه إلى حد كبير الإجراء CREATE_SCHEDULE:

  • WINDOW_NAME: لاحظ أن اسم الـ Window يتشارك نفس مساحة الأسماء مع الـ Schedule، مما يعني أنه لا يمكن تسمية Window بنفس اسم Schedule موجود في نفس الـ Schema.
  • RESOURCE_PLAN: لتحديد خطة مدير الموارد التي سيتم تنشيطها لحظة فتح الـ Window.
  • START_DATE: لتحديد وقت فتح الـ Window.
  • REPEAT_INTERVAL: لإعادة فتح الـ Window مرة أخرى.
  • END_DATE: متى سيتم إنهاء عمل الـ Window.
  • DURATION: كم ستبقى الـ Window مفتوحة؟ ويتم ذلك عن طريق تحديد اليوم والساعة والدقيقة والثانية.
  • WINDOW_PRIORITY: لتحديد أولوية فتح الـ Windows، بحيث يمكن فتح Window واحدة فقط في نفس اللحظة. ستكون الأولوية للـ Window ذات الأولوية العالية.

يمكن أن يأخذ هذا المتغير قيمتين: LOW (وهي القيمة الافتراضية) وHIGH، وإذا تداخلت أكثر من Window تحمل نفس الأولوية، فإن الأولوية ستكون للـ Window التي يتم فتحها أولاً.

begin

dbms_scheduler.create_window(

window_name=>'dialy_window',

resource_plan=>'system_plan',

start_date=>sysdate,

repeat_interval=>'freq=daily;interval=1',

end_date=>sysdate+30,

duration=>'0 00:10:00',

window_priority=>'low');

end; 


الآن يمكننا استخدام هذا الـ Window لحظة إنشاء الـ Job، ولكن إذا راجعنا إجراءات إنشاء الـ Job (CREATE_JOB)، فلا تحتوي على أي إشارة للـ Windows.

هذا صحيح، ولكن كما ذكرت سابقًا، فإن الـ Schedule تتشارك نفس مساحة الأسماء مع الـ Window، مما يتيح لنا الإشارة إلى الـ Window من خلال متغير اسم الـ Schedule.

يوجد إجراء آخر يقوم بإنشاء الـ Window، ويسمى CREATE_WINDOW، لكن هذا الإجراء يعتمد على وجود Schedule جاهزة، بحيث لا نقوم بتحديد (START_DATE & REPEAT_INTERVAL & END_DATE) بأنفسنا، وإنما نستفيد من Schedule موجودة.

يمكن لمدير قاعدة البيانات تفعيل أو تعطيل الـ Window من خلال الإجرائين (ENABLE & DISABLE).

begin

dbms_scheduler.disable('DIALY_WINDOW');

dbms_scheduler.enable'DIALY_WINDOW');

end; 


يمكن لمدير قاعدة البيانات الاستعلام عن الـ Windows الموجودة في قاعدة البيانات عن طريق الاستعلام DBA_SCHEDULER_WINDOWS.

أما بالنسبة لحذف الـ Window، فيتم ذلك عن طريق الإجراء DROP_WINDOW.

begin

dbms_scheduler.disable('DIALY_WINDOW');

end; 


علامات : Database

يمكن ان يعجبك ايضا


Comments

لايوجد تعليق حتى الان