مدیریت AWR در Active Data Guard – در اوراکل 26ai

از نسخه Oracle Database 12.2 به بعد، تولید گزارش‌های AWR روی Active Data Guard (ADG) با استفاده از Remote Management Framework (RMF) امکان‌پذیر شد. در این مدل، داده‌های AWR باید به‌صورت دستی از پایگاه داده standby به پایگاه داده primary منتقل می‌شدند. نقطه ضعف اساسی این روش آن بود که به مراحل پیکربندی متعددی نیاز داشت و عملا تحلیل AWR روی پایگاه‌داده‌های physical standby از نظر عملیاتی برای DBAها چالش‌برانگیز بود.

با ارائه Oracle AI Database 26ai، پشتیبانی AWR برای پایگاه‌داده‌های Active Data Guard Standby به‌صورت کامل یکپارچه شده و به‌طور پیش‌فرض فعال است. Snapshotهای AWR به‌صورت خودکار روی ADG standby جمع‌آوری شده و بدون نیاز به مداخله دستی یا پیکربندی RMF، به پایگاه داده primary منتقل می‌شوند. به‌صورت پیش‌فرض، snapshotها هر یک ساعت یک‌بار گرفته می‌شوند و مدت نگهداری (retention) آن‌ها ۸ روز است.

(بیشتر…)

آموزش نصب و راه‌اندازی بانک‌اطلاعاتی اوراکل 26ai

در این مستند قصد داریم نحوه نصب Oracle AI Database 26ai را روی سیستم عامل Oracle Linux 9.5 شرح دهیم. در گام اول باید مقدمات نصب اوراکل را در محیط سیستم عامل فراهم کنیم.

 مقدمات نصب اوراکل در محیط سیستم عامل

با طی هفت مرحله زیر، این کار را در محیط اوراکل لینوکس نسخه 9.5 انجام خواهیم داد.

توجه:حداقل نسخه سیستم عامل لینوکس برای نصب اوراکل 26ai برابر Oracle Linux 8.8 است(برای 23.5 به بعد) و برای نسخه 9 هم می توان 26ai را روی Oracle Linux 9.2 به بعد نصب کرد.

 مرحله اول: در گام اول، نام هاست را از localhost به OL95 تغییر می دهیم:

(بیشتر…)

اوراکل 26ai – امکان استفاده از bind variable با قابلیت Materialized View Query Rewrite

تا قبل از نسخه 26ai، کوئری‌هایی که شامل bind variable بودند، نمی‌توانستند از قابلیت query rewrite با استفاده از materialized view (MV) بهره ببرند و اوراکل مجبور بود داده‌ها را مستقیماً از جدول‌های پایه بخواند، که باعث از دست رفتن مزایای کاراییِ داده‌های پیش‌تجمیع‌شده (pre-aggregated data) می‌شد.

از Oracle AI Database 26ai به بعد، این محدودیت حذف شده است و این بهبود به optimizer اجازه می‌دهد مقدار واقعی bind variable را در زمان اجرا بررسی کرده و تصمیم بگیرد که آیا کوئری می‌تواند با استفاده از MV بازنویسی شود یا خیر.

مقایسه رفتار در اوراکل 19c و 26ai

ایجاد Materialized View

SQL> CREATE MATERIALIZED VIEW vahid.mv_emp_dep
ENABLE QUERY REWRITE AS
SELECT department_id,
       COUNT(*) AS emp_count,
       SUM(salary) AS total_salary
FROM vahid.employees where department_id<100
GROUP BY department_id;

Materialized view created

این MV داده‌های تجمیع‌شدهٔ کارمندان را برای دپارتمان‌هایی با شناسهٔ کمتر از ۱۰۰ ذخیره کرده و برای query rewrite خودکار مناسب است.

(بیشتر…)

قابلیت RESETTABLE در اوراکل 26ai

در دیتابیس اوراکل، state بسته‌های PL/SQL در سطح session حفظ می شود. یعنی زمانی که یک package در session ای اجرا می‌شود، متغیرهای global آن، مقادیر خود را در میان چندین فراخوانی حفظ می‌کنند. در نسخه‌های قبلی Oracle(قبل از 26ai)، زمانی که یک package دوباره compile می‌شد، تمام sessionهایی که state آن package را نگه داشته اند با خطاهای ORA-04068 مواجه می‌شدند.

در اوراکل 26ai، عبارت RESETTABLE راهی جدید برای مدیریت state بسته‌های PL/SQL معرفی می‌کند. با استفاده از این عبارت، زمانی که package تشخیص دهد وضعیت آن دیگر معتبر نیست، به‌صورت خودکار reset می‌شود، و مانع از کرش کردن session می شود. برای درک بهتر عملکرد آن، سناریوی عملی زیر را بررسی می‌کنیم. 

(بیشتر…)

اوراکل 26ai – چگونه با عبارت QUALIFY نتایج توابع تحلیلی را بدون subquery فیلتر کنیم؟

فرض کنید میخواهیم از جدول employees، از هر دپارتمان، فقط اطلاعات کارمندی را نمایش دهیم که بالاترین حقوق را دارد. برای گرفتن این خروجی، تا قبل از نسخه 26ai معمولا از subquery استفاده می کردیم:

SELECT *
FROM (
  SELECT employee_id,
         first_name,
         department_id,
         salary,
         RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS Rank_Per_DEP
  FROM employees
)
WHERE Rank_Per_DEP = 1;

(بیشتر…)