پیش از اوراکل 23ai و 19.28، اسکریپت awrsqrpt.sql یکی از روشهای تحلیل اجراهای قبلی یک کوئری بود و از این طریق می توانستیم آمارهای مربوط به میزان استفاده از CPU، ورودی/خروجی (I/O) ، زمان سپری شده(elapsed time) و … را در یک بازه زمانی مشخص مشاهده کنیم. با این حال، این روش دو محدودیت اصلی داشت. در این روش نیاز بود دو AWR snapshot تعیین شوند و ضمنا اطلاعات ارائهشده در گزارش هم نسبتاً محدود بود. نمونه خروجی awrsqrpt.sql:
با معرفی اوراکل 23ai، تابع جدیدی به نام REPORT_SQL به پکیج DBMS_SQLDIAG اضافه شد. این تابع، یک گزارش تشخیصی کامل در قالب HTML برای یک کوئری مدنظر ما تولید می کند و به نسبت اسکریپت awrsqrpt.sql دید عمیقتری از نظر پرفورمنسی ارائه میدهد. این قابلیت در 19.28 نیز قابل استفاده است.
تابع REPORT_SQL گزارشی گرافیکی در فرمت HTML تولید میکند که امکان تحلیل موارد زیر را فراهم میسازد:
-
تاریخچه Execution plan
-
اطلاعات مربوط به Cursor sharing
-
تاریخچه Optimizer statistics
-
جزئیات مربوط به Index
-
و موارد دیگر
تابع REPORT_SQL:
-
BASIC — گزارش حداقلی که فقط شامل جزئیات ضروری است.
-
TYPICAL — گزارش استاندارد (پیشفرض) که بخشهای پایه و پیشرفته را دربرمیگیرد.
-
ALL — گزارشی کامل که شامل همه جزئیات موجود است.
مثال: تولید گزارش
1. ساخت دایرکتوری: ابتدا یک دایرکتوری در دیتابیس بسازید که به محلی که گزارش در آن ذخیره میشود اشاره کند:
SQL> create or replace directory DR_Diagnostic as '/oracle/Diagnostic'; Directory created.
2. ایجاد گزارش: با استفاده از یک بلاک PL/SQL، تابع REPORT_SQL را فراخوانی کرده و گزارش را تولید کنید:
3. دسترسی به گزارش: به دایرکتوری رفته و فایل تولیدشده را از حالت فشرده خارج کنید تا گزارش HTML قابل مشاهده باشد: