Orcale Tutorial Content
Getting Started - البدء مع إدارة قواعد البيانات
Oracle Architectural Components - مكونات قاعدة البيانات أوركل
Installing Oracle Database - تثبيت الأوركل
Creating and Configuring Database - إنشاء قاعدة البيانات
Controlling The Database -التحكم في قاعدة البيانات
Administrating Users - إدارة المستخدمين
Database Security & Monitoring - تأمين ومراقبة قاعدة البيانات
Oracle Net Services & Database Link & Metrlized Viewِ
Undo Management & Flashback Technology
Managing Shared Servers
Using Globalization Support
Logical Backup & Recovery
Physical Backup & Recovery
Recovery Manager (RMAN)
Managing Resources
Automating Tasks with the Scheduler
Dealing with Locking
Diagnostic Sources
Dealing With Database Corruption
Managing & Monitoring Memory
Performance Tunning
Automating Tasks with the Scheduler
Windows
ﺘﺤﺩﺜﻨﺎ ﺴﺎﺒﻘﺎﹰ ﻋﻥ ﻤﻔﻬﻭﻡ ﺍلSchedules ﻭﻋﺭﻓﻨﺎ ﺃﻨﻪ ﻴﺴﺘﺨﺩﻡ ﻟﺘﺤﺩﻴﺩ ﻭﻗﺕ ﺘﻨﻔﻴﺫ ﺍلJobs، ﻭﻤﻔﻬﻭﻡ ﺍلWindows ﻴﻘﻭﻡ ﺃﺴﺎﺴﺎﹰ ﻋﻠﻲ ﻫﺫﺍ ﺍﻟﻤﻌﻨﻲ ﻟﺘﺤﺩﻴﺩ ﻭﻗﺕ ﺘﻨﻔﻴﺫ ﺍلJobs
ﻤﻊ ﺇﻋﻁﺎﺀ ﺤﺭﻴﺔ ﺃﻜﺒﺭ ﻟﻸﻭﺭﻜل ﻟﺘﻘﺭﻴﺭ ﻤﺘﻲ ﻴﺘﻡ ﺍﻟﺘﻨﻔﻴﺫ، ﻭﺍﻟﺠﺩﻴﺩ ﻓﻲ ﻤﻔﻬﻭﻡ ﺍلWindows ﺃﻨﻪ ﻴﻘﻭﻡ ﺒﺘﻬﻴﺌﺔ ﺍﻷﻭﺭﻜل ﺍﺴﺘﻌﺩﺍﺩﹰﺍ ﻟﺘﻨﻔﻴﺫ ﺍلJobs ﺒﺤﻴﺙ ﻴﻘﻭﻡ ﺒﺘﻔﻌﻴل ﺍلResource Manager Plan
ﺍﻟﺘﻲ ﺴﻭﻑ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍلJobs ﻤﻥ ﺨﻼﻟﻬﺎ، ﻓﻠﺤﻅﺔ ﻓﺘﺢ ﺍلWindow ﻴﺘﻡ ﺘﻬﻴﺌﺔ ﺍﻻﻭﺭﻜل ﺤﺴﺏ ﻤﺘﻐﻴﺭﺍﺕ ﺍلWindow ﻭﻴﺘﻡ ﺘﺤﺩﻴﺩ ﻓﺘﺭﺓ ﺒﻘﺎﺀ ﺍلWindow
ﻤﻔﺘﻭﺤﺔ ﻭﻜﺫﻟﻙ ﻭﻗﺕ ﺇﻋﺎﺩﺓ ﻓﺘﺢ ﺍلWindow ﻤﻥ ﺠﺩﻴﺩ ﻭﻭﻗﺕ ﺇﻨﺘﻬﺎﺀ ﻋﻤل ﺍلWindow.
ﻻﺤﻅ ﺃﻥ ﻤﺘﻐﻴﺭﺍﺕ ﺍﻹﺠﺭﺍﺀ ﺘﺸﺒﻪ ﺇﻟﻲ ﺤﺩ ﻜﺒﻴﺭ ﺍﻹﺠﺭﺍﺀ CREATE_SCHEDULE ﺤﻴﺙ:
WINDOW_NAME: ﻻﺤﻅ ﺃﻥ ﺍلWindows_name ﺘﺘﺸﺎﺭﻙ ﻨﻔﺱ ﺍلnamespace ﻤﻊ ﺍلSchedule ﺒﻤﻌﻨﻲ ﺃﻨﻪ ﻻ ﻴﻤﻜﻥ ﺘﺴﻤﻴﺔ Window ﺒﻨﻔﺱ ﺇﺴﻡ Schedule ﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻨﻔﺱ ﺍلSchema.
RESOURCE_PLAN: ﻟﺘﺭﺸﻴﺢ ﺍلResource Manager Plan ﺍﻟﺘﻲ ﺴﻭﻑ ﻴﺘﻡ ﺘﻨﺸﻴﻁﻬﺎ ﻟﺤﻅﺔ ﻓﺘﺢ الWindow.
START_DATE: ﻟﺘﺤﺩﻴﺩ ﻭﻗﺕ ﻓﺘﺢ ﺍلWindow.
REPEAT_INTERVAL: ﻹﻋﺎﺩﺓ ﻓﺘﺢ ﺍلWindow ﻤﺭﻩ ﺃﺨﺭﻱ.
END_DATE: ﻤﺘﻲ ﻴﺘﻡ ﺇﻨﻬﺎﺀ ﻋﻤل الWindow.
DURATION: ﻜﻡ ﺴﺘﻅل ﺍلWindow ﻤﻔﺘﻭﺤﺔ؟ ﻭﻴﺘﻡ ﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﺘﺤﺩﻴﺩ ﺍﻟﻴﻭﻡ ﻭﺍﻟﺴﺎﻋﺔ ﻭﺍﻟﺩﻗﻴﻘﺔ ﻭﺍﻟﺜﺎﻨﻴﺔ.
WINDOW_PRIORITY: ﻟﺘﺤﺩﻴﺩ ﺃﻭﻟﻭﻴﺔ ﻓﺘﺢ ﺍلWindows، ﺒﺤﻴﺙ ﻴﺘﻡ ﻓﺘﺢ Window ﻭﺍﺤﺩﺓ ﻓﻘﻁ ﻓﻲ ﻨﻔﺱ ﺍﻟﻠﺤﻅﺔ، ﻭﻴﻜﻭﻥ ﺍﻷﻭﻟﻭﻴﺔ ﻟلWindow ﺫﺍﺕ ﺍﻷﻭﻟﻭﻴﺔ ﺍﻟﻌﺎﻟﻴﺔ
ﺒﺤﻴﺙ ﻴﺤﺘﻤل ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻗﻴﻤﺘﺎﻥ ﻓﻘﻁ LOW ﻭﻫﻲ ﺍﻟﻘﻴﻤﺔ ﺍﻹﻓﺘﺭﺍﺼﻴﺔ ﻭﺍﻟﻘﻴﻤﺔ HIGH، ﻭﺇﺫﺍ ﺘﺩﺍﺨل ﺃﻜﺜﺭ ﻤﻥ Windows ﻴﺤﻤل ﻨﻔﺱ ﺍﻷﻭﻟﻭﻴﺔ ﺘﻜﻭﻥ ﺍﻷﻭﻟﻭﻴﺔ ﻟل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 ﻓﻲ ﻨﻔﺱ ﺍلnamespace، ﺇﺫﺍﹰ ﻨﺴﺘﻁﻴﻊ ﻤﻨﺎﺩﺍﺓ ﺍلWindow ﻤﻥ ﺨﻼل ﺍﻟﻤﺘﻐﻴﺭ Schedule_name.
ﻴﻭﺠﺩ ﺇﺠﺭﺍﺀ ﺍﺨﺭ ﻴﻘﻭﻡ ﺒﺈﻨﺸﺎﺀ ﺍل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.
أﻤﺎ ﺤﺫﻑ ﺍلWindows ﻓﻴﺘﻡ ﺫﻟﻙ ﻋﻥ ﻁﺭﻴﻕ ﺍﻹﺠﺭﺍﺀ DROP_WINDOW.
begin dbms_scheduler.disable('DIALY_WINDOW'); end; |
--------------------------------------------------