دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
InnerException در سیشارپ
1403/09/11 -
بکاپ گیری و بازیابی در پایگاه داده اوراکل
1403/09/10 -
خواص Exception در سی شارپ
1403/09/09 -
انواع جداول در پایگاه داده اوراکل
1403/09/08 -
مدیریت خطا در سی شارپ
1403/09/07 -
انواع Statistics در پایگاه داده اوراکل
1403/09/04
مدیریت زمانبندی (Job) در پایگاه داده اوراکل
ایجاد و مدیریت زمانبندی (Job) در پایگاه داده اوراکل
پایگاه داده اوراکل دارای ابزار قدرتمندی برای مدیریت و اجرای خودکار وظایف (Job) است.
این وظایف یا Jobها میتوانند شامل اجرای اسکریپتهای PL/SQL، گزارشگیری، نگهداری از پایگاه داده و بسیاری از عملیات دیگر باشند.
با استفاده از DBMS_SCHEDULER، شما میتوانید این وظایف را به صورت خودکار و با زمانبندی دلخواه اجرا کنید.
در این مقاله به معرفی مفهوم زمانبندی (Job) در پایگاه داده اوراکل، نحوه ایجاد، مدیریت و حذف آنها میپردازیم.
همچنین ابزارهای مربوط به مدیریت زمانبندیها و نحوه بهینهسازی و رفع مشکلات مربوط به این فرآیندها را بررسی خواهیم کرد.
مقدمهای بر DBMS_SCHEDULER
در نسخههای قدیمیتر اوراکل، برای مدیریت و زمانبندی Jobها از بسته DBMS_JOB استفاده میشد
اما از نسخه 10g به بعد، اوراکل ابزار جدیدی به نام DBMS_SCHEDULER ارائه داد که قابلیتها و امکانات پیشرفتهتری را برای مدیریت Jobها فراهم میکند.
DBMS_SCHEDULER به کاربران این امکان را میدهد که وظایف پیچیدهتری را با برنامههای دقیقتر زمانبندی و اجرا کنند.
این ابزار امکاناتی همچون زمانبندی وابسته به شرایط، اجرای دورهای، کنترل کامل بر نحوه اجرای Job و مدیریت Chainهای وظایفی را که به هم وابسته هستند، فراهم میکند.
مزایای استفاده از DBMS_SCHEDULER
-
زمانبندی انعطافپذیر
این بسته امکانات گستردهای برای زمانبندی و اجرای دورهای Jobها با فواصل زمانی خاص یا براساس تقویم فراهم میکند. -
مدیریت بهتر منابع
با استفاده از DBMS_SCHEDULER، میتوانید استفاده بهینهتری از منابع سیستمی داشته باشید، چرا که زمانهای اجرای Jobها قابل کنترل هستند. -
مکانیزمهای پیچیدهتر
امکان تعریف Chain، وابستگیهای بین وظایف و تعریف شرایط خاص برای اجرای Jobها.
اجرای اسکریپتهای سیستمعامل: به شما اجازه میدهد که علاوه بر اسکریپتهای PL/SQL، فرمانهای سیستمعامل را نیز اجرا کنید. -
مدیریت خطاها و ثبت گزارشها
امکان کنترل کامل بر ثبت رویدادها و مدیریت خطاهای احتمالی.
ایجاد یک Job در پایگاه داده اوراکل
برای ایجاد Job در اوراکل، از بسته DBMS_SCHEDULER و به طور خاص از تابع CREATE_JOB استفاده میشود.
در این فرآیند، میتوان زمانبندی، نوع وظیفه و تنظیمات مربوطه را تعیین کرد.
ساختار کلی ایجاد یک Job:
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'job_name',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN your_code_here; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY; BYHOUR=10;',
enabled => TRUE
);
END;
توضیح پارامترها:
job_name: نامی که برای Job مورد نظر در نظر گرفته میشود. این نام باید منحصربهفرد باشد.
job_type: نوع Job که میتواند یکی از انواع زیر باشد:
PLSQL_BLOCK: اجرای یک بلوک PL/SQL.
STORED_PROCEDURE: اجرای یک رویه ذخیره شده (Stored Procedure).
EXECUTABLE: اجرای یک فرمان سیستمعامل.
job_action: عملیاتی که توسط Job انجام میشود. این عملیات میتواند شامل کد PL/SQL یا نام رویه ذخیره شده باشد.
start_date: زمانی که Job برای اولین بار اجرا میشود.
repeat_interval: الگوی تکرار Job که میتواند به صورت روزانه، هفتگی، ماهانه و غیره باشد.
enabled: مشخص میکند که آیا Job به محض ایجاد فعال باشد یا خیر.
مثال: ایجاد یک Job ساده برای ارسال ایمیل
در این مثال، یک Job ایجاد میکنیم که هر روز در ساعت 10 صبح یک ایمیل ارسال کند:
BEGIN
DBMS_SCHEDULER.create_job (
job_name => 'send_daily_email',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN send_email_procedure; END;',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY; BYHOUR=10;',
enabled => TRUE
);
END;
در این مثال، Job به نام send_daily_email ایجاد شده و هر روز ساعت 10 صبح اجرا میشود و رویه send_email_procedure را فراخوانی میکند.
مدیریت Jobها در پایگاه داده اوراکل
پس از ایجاد Job، میتوان آن را مدیریت و کنترل کرد.
برخی از عملیات مدیریتی شامل غیرفعالسازی، فعالسازی، تغییر زمانبندی، حذف و نمایش وضعیت Job میباشد.
-
فعالسازی و غیرفعالسازی یک Job
برای فعالسازی یک Job که غیرفعال شده است، از دستور زیر استفاده میشود:
BEGIN
DBMS_SCHEDULER.enable('job_name');
END;
برای غیرفعالسازی یک Job:
sql
Copy code
BEGIN
DBMS_SCHEDULER.disable('job_name');
END;
-
حذف یک Job
برای حذف یک Job از پایگاه داده اوراکل، از دستور زیر استفاده کنید:
BEGIN
DBMS_SCHEDULER.drop_job('job_name');
END;
-
تغییر زمانبندی یک Job
برای تغییر زمانبندی یک Job، از DBMS_SCHEDULER.set_attribute استفاده میشود. به عنوان مثال، اگر بخواهید الگوی تکرار Job را تغییر دهید:
BEGIN
DBMS_SCHEDULER.set_attribute (
name => 'job_name',
attribute => 'repeat_interval',
value => 'FREQ=WEEKLY; BYDAY=MON; BYHOUR=9;'
);
END;
این دستور باعث میشود Job هر دوشنبه ساعت 9 صبح اجرا شود.
-
بررسی وضعیت یک Job
برای مشاهده وضعیت و اطلاعات مربوط به Jobها، میتوانید از جداول سیستمی استفاده کنید.
جدول USER_SCHEDULER_JOBS اطلاعاتی در مورد Jobهای موجود نمایش میدهد:
SELECT job_name, enabled, state, last_start_date, next_run_date
FROM user_scheduler_jobs;
این کوئری اطلاعات مهمی مانند نام Job، وضعیت فعال بودن، تاریخ آخرین اجرای آن و زمان اجرای بعدی را نمایش میدهد.
-
اجرای دستی یک Job
اگر بخواهید یک Job را به صورت دستی و خارج از زمانبندی اجرا کنید، میتوانید از دستور RUN_JOB استفاده کنید:
BEGIN
DBMS_SCHEDULER.run_job('job_name');
END;
تعریف Chainهای وابسته در Jobها
یکی از قابلیتهای قدرتمند DBMS_SCHEDULER امکان تعریف Chain برای Jobها است.
در یک Chain، میتوان چندین وظیفه را به صورت وابسته به هم تعریف کرد.
به این معنی که تا زمانی که یک Job خاص به پایان نرسد، وظایف دیگر شروع نخواهند شد.
مراحل ایجاد Chain:
-
تعریف Chain: در ابتدا یک Chain تعریف میشود.
-
افزودن مراحل به Chain: هر مرحله از Chain شامل یک Job است.
-
تعریف وابستگیها: وابستگیهای بین مراحل مختلف مشخص میشود.
-
فعالسازی Chain: در نهایت Chain فعال و اجرا میشود.
مثال: ایجاد یک Chain وابسته
در این مثال، دو وظیفه تعریف شده است.
وظیفه اول اجرای یک رویه PL/SQL و وظیفه دوم ارسال ایمیل. وظیفه دوم فقط زمانی اجرا میشود که وظیفه اول با موفقیت به پایان برسد.
BEGIN
-- تعریف Chain
DBMS_SCHEDULER.create_chain('job_chain', 'Execution Chain');
-- افزودن وظایف به Chain
DBMS_SCHEDULER.define_chain_step('job_chain', 'step1', 'PLSQL_BLOCK');
DBMS_SCHEDULER.define_chain_step('job_chain', 'step2', 'send_email_procedure');
-- تعریف وابستگیها
DBMS_SCHEDULER.define_chain_rule('job_chain', 'step1 COMPLETED', 'step2');
-- فعالسازی Chain
DBMS_SCHEDULER.enable('job_chain');
END;
مدیریت و مانیتورینگ Jobها
اوراکل ابزارهای مختلفی برای مدیریت و مانیتورینگ Jobها ارائه میدهد. برخی از ابزارهای مهم شامل موارد زیر هستند:
-
DBA_SCHEDULER_JOBS
اطلاعات کلی درباره Jobها. -
DBA_SCHEDULER_JOB_LOG
ثبت تاریخچه اجرای Jobها. -
DBA_SCHEDULER_RUNNING_JOBS
نمایش Jobهایی که در حال اجرا هستند.
دوره های مرتبط
اموزش پایگاه داده اوراکل Oracle
در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیادهسازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .