ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

راهنمای جامع Chain در Oracle Database – مدیریت وابستگی Jobها در اوراکل

مقدمه : استفاده از Chain در اوراکل چه اهمیتی دارد؟

در Oracle Database، یکی از قابلیت‌های پیشرفته برای مدیریت فرآیندهای وابسته، استفاده از Chain در Oracle Scheduler است.

Chain به ما اجازه می‌دهد که Jobها را به‌صورت وابسته به هم اجرا کنیم،

به این معنا که اجرای یک مرحله می‌تواند وابسته به موفقیت یا شکست مراحل قبلی باشد.

در این مقاله آموزش اوراکل، به بررسی Chain در Oracle پرداخته و با ارائه مثال‌های عملی، نحوه ایجاد، مدیریت و اجرای Chain را به‌طور کامل توضیح خواهیم داد.

اگر می خواهید در مورد Execution Plan و نحوه اجرا آن در اوراکل بیشتر آشنا بشید نوشته زیر را مطالعه کنید:

در این نوشته شما می خوانید

Chain در اوراکل چیست؟

در Oracle Scheduler، Chain مجموعه‌ای از Steps است که به ترتیب و تحت شرایط خاصی اجرا می‌شوند.

هر Step در یک Chain می‌تواند شامل موارد زیر باشد:

  • یک Job خاص
  • یک Stored Procedure
  • یک بلوک PL/SQL

مزایای استفاده از Chain در Oracle Scheduler

✅ مدیریت خودکار گردش کار (Workflow)
✅ زمان‌بندی و هماهنگی چندین Job وابسته
✅ امکان تعریف شرط‌های منطقی برای اجرای مراحل
✅ افزایش کارایی پردازش‌های پیچیده در پایگاه داده اوراکل
✅ مدیریت خطاها و مسیرهای جایگزین در صورت بروز مشکل در یک مرحله

اجزای اصلی یک Chain در اوراکل

  • Chain Object: ساختار کلی Chain را مشخص می‌کند.
  • Steps: وظایف مختلف که داخل Chain اجرا می‌شوند.
  • Rules: شرایط و وابستگی‌های بین Steps را تعیین می‌کند.

آموزش ایجاد Chain در Oracle Database

۱. ایجاد Chain

برای ایجاد یک Chain جدید از تابع DBMS_SCHEDULER.CREATE_CHAIN استفاده می‌کنیم.

				
					BEGIN
  DBMS_SCHEDULER.CREATE_CHAIN (
    chain_name    => 'my_chain',
    comments      => 'Modiriate Jobs dar Oracle'
  );
END;
/

				
			

۲. تعریف Steps در Chain

پس از ایجاد Chain، مراحل مختلف را به آن اضافه می‌کنیم.

هر Step یک Job، Stored Procedure یا PL/SQL Block را اجرا می‌کند.

				
					BEGIN
  DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
    chain_name => 'my_chain',
    step_name  => 'step1',
    program_name => 'program1'
  );

  DBMS_SCHEDULER.DEFINE_CHAIN_STEP (
    chain_name => 'my_chain',
    step_name  => 'step2',
    program_name => 'program2'
  );
END;
/

				
			

۳. تعریف قوانین اجرا (Rules) برای Chain

اکنون قوانین وابستگی بین Steps را مشخص می‌کنیم.

				
					BEGIN
  -- Dar Ebteda Chain Run Step 1
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
    chain_name    => 'my_chain',
    condition     => 'TRUE',
    action        => 'START step1'
  );

  -- Run Step 2 pasaz az Success Run Step 1
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE (
    chain_name    => 'my_chain',
    condition     => 'STEP_COMPLETED ''step1''',
    action        => 'START step2'
  );
END;
/

				
			

۴. فعال‌سازی و اجرای Chain

				
					BEGIN
  DBMS_SCHEDULER.ENABLE('my_chain');
  DBMS_SCHEDULER.RUN_CHAIN('my_chain');
END;
/

				
			

۵. حذف Chain در صورت نیاز

				
					BEGIN
  DBMS_SCHEDULER.DROP_CHAIN('my_chain');
END;
/

				
			

مثال کاربردی – اجرای فرآیند مالی با استفاده از Chain در Oracle

سناریو:

یک شرکت مالی نیاز دارد که فرآیند زیر به‌طور خودکار اجرا شود:

  1. استخراج داده‌های مالی از ERP (Step1)
  2. تحلیل داده‌های مالی (Step2)
  3. گزارش‌گیری و ارسال ایمیل به مدیران (Step3)

ایجاد و اجرای Chain برای این سناریو:

				
					BEGIN
  -- Create a New Chain
  DBMS_SCHEDULER.CREATE_CHAIN (
    chain_name => 'finance_chain',
    comments   => 'Modiriate Pardazesh Data Mali'
  );

  -- Create Steps
  DBMS_SCHEDULER.DEFINE_CHAIN_STEP ('finance_chain', 'extract_data',
  'extract_program');
  DBMS_SCHEDULER.DEFINE_CHAIN_STEP ('finance_chain', 'analyze_data',
  'analyze_program');
  DBMS_SCHEDULER.DEFINE_CHAIN_STEP ('finance_chain', 'generate_report',
  'report_program');

  -- Create Run Steps Role
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('finance_chain', 'TRUE'
  , 'START extract_data');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('finance_chain',
  'STEP_COMPLETED ''extract_data''', 'START analyze_data');
  DBMS_SCHEDULER.DEFINE_CHAIN_RULE ('finance_chain',
  'STEP_COMPLETED ''analyze_data''', 'START generate_report');

  -- Enable and Run Chain
  DBMS_SCHEDULER.ENABLE('finance_chain');
  DBMS_SCHEDULER.RUN_CHAIN('finance_chain');
END;
/

				
			

سوالات متداول درباره پیاده سازی و اجرا Chain در اوراکل

Job یک وظیفه مستقل است، در حالی که Chain یک مجموعه از Jobهای وابسته است که طبق شرایط خاص اجرا می‌شوند.

بله، با استفاده از RULES می‌توان در صورت شکست یک Step، یک مسیر جایگزین را اجرا کرد.

بله، استفاده از Chain در پردازش داده‌های حجیم می‌تواند کارایی و مدیریت Jobها را بهبود ببخشد.

نتیجه‌گیری

Chain یکی از ابزارهای کلیدی و امکان مناسب برای مدیریت اجرا دستورات در اوراکل می باشد.
✅ در Chain می توانید با قرار دادن چندین step دستورات را به ترتیب اجرا کنید.
✅ می توانید برای هر step یه قانونی تعریف کنید که کی و چگونه و در چه زمانی اجرا شود..
✅ در Chain اجرای هر step می تواند به step قبلی و بعدی خود مرتبط باشد.

اگر شما تجربه‌ای در استفاده از Chain  در اوراکل را دارید پیشنهاد می کنیم نظرات خود را در کامنت‌ها بنویسید! 🚀

میثم راد

من یه برنامه نویسم که حسابی با دیتابیس اوراکل رفیقم! از اونایی ام که تا چیزی رو کامل نفهمم،ول کن نیستم، یادگرفتن برام مثل بازیه، و نوشتن اینجا کمک می کنه تا چیزایی که یاد گرفتم رو با بقیه به شریک بشم، با هم پیشرفت کنیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *