از نسخه 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) آنها ۸ روز است.
این بهبود باعث میشود DBAها بتوانند با AWR روی Active Data Guard دقیقاً مانند پایگاه داده primary کار کنند.
معماری AWR برای ADG در نسخه 26ai
هر Active Data Guard بهصورت خودکار یک AWR ID منحصربهفرد دریافت میکند. این AWR ID در ستون DBID جداول AWR ذخیره میشود و برای تفکیک دادههای AWR مربوط به پایگاههای داده مختلف استفاده میشود.
برای دریافت AWR ID پایگاه داده فعلی:
SQL> select dbms_workload_repository.get_awr_id() awr_id; AWR_ID ---------- 3586104896
اگرچه دادههای AWR بهصورت فیزیکی در پایگاه داده primary ذخیره میشوند، اما پس از اعمال redo (redo apply)، روی standby قابل مشاهده و استفاده خواهند بود.
تولید گزارش AWR روی ADG Standby
گزارش AWR را میتوان مستقیماً روی Active Data Guard و با استفاده از اسکریپت awrrpt.sql تولید کرد. هنگام ساخت گزارش، Oracle بهصورت خودکار تمام repositoryهای AWR موجود را نمایش داده و DBID مناسب (از جمله AWR ID مربوط به standby) را درخواست میکند.
SQL> @?/rdbms/admin/awrrpt.sql
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats. Please enter the
name of the format at the prompt. Default value is 'html'.
'html' HTML format (default)
'text' Text format
'active-html' Includes Performance Hub active report
Enter value for report_type:
Type Specified: html
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance Container Name
-------------- -------------- -------------- -------------- --------------
4152038052 DB26AI 1 DG1 CDB$ROOT
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ ---------- --------- ---------- ------
3586104896 1 DB26AI DG1 DG1
4152038052 1 DB26AI db26ai OEL9-DB2
Using 3586104896 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing <return> without
specifying a number lists all completed snapshots.
Enter value for num_days:
Listing all Completed Snapshots
Instance DB Name Snap Id Snap Started Snap Level
------------ ------------ ---------- ------------------ ----------
DG1 DB26AI 1 09 Feb 2026 10:30 1
2 09 Feb 2026 10:40 1
بخشی از خروجی گزارش AWR در قسمت زیر نمایش داده شده است:

مشاهده تنظیمات AWR برای ADG Standby
هر ADG standby میتواند تنظیمات snapshot مخصوص به خودش را داشته باشد. این تنظیمات در ویوی AWR_CDB_WR_CONTROL قابل مشاهده هستند:
مثال:
SQL> select c.dbid,c.snap_interval,c.retention,c.topnsql,c.tablespace_name from awr_cdb_wr_control c where src_dbname='DG1';
DBID SNAP_INTERVAL RETENTION TOPNSQL TABLESPACE_NAME
---------- -------------------- -------------------- ---------- ------------------------------
3586104896 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT SYSAUX
خروجی این کوئری نشان می دهد که تناوب زمانی ایجاد snapshotها برابر با ۱ ساعت و مدت زمان نگهداری آنها هم ۸ روز می باشد.
تغییر تنظیمات Snapshot روی ADG Standby
تنظیمات snapshot را میتوان مستقیماً روی physical standby تغییر داد. مثلاً تناوب زمانی ایجاد snapshotها از ۶۰ دقیقه به ۳۰ دقیقه:
— ADG Standby:
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval => 30);
PL/SQL procedure successfully completed.
SQL> select c.dbid,c.snap_interval,c.retention,c.topnsql,c.tablespace_name from awr_cdb_wr_control c where src_dbname='DG1';
DBID SNAP_INTERVAL RETENTION TOPNSQL TABLESPACE_NAME
---------- -------------------- -------------------- ---------- ------------------------------
3586104896 +00000 00:30:00.0 +00008 00:00:00.0 DEFAULT SYSAUX
تغییر Retention AWR از طریق Primary Database
تنظیمات AWR مربوط به ADG را میتوان از طریق پایگاه داده primary نیز تغییر داد؛ فقط کافی است AWR ID مربوط به standby مشخص شود.
تغییر retention از ۸ روز به ۶۰ روز:
— Primary Database:
SQL> exec dbms_workload_repository.modify_snapshot_settings(dbid => 3586104896,retention => 86400); PL/SQL procedure successfully completed
پس از redo apply، تنظیمات جدید روی standby قابل مشاهده خواهند بود:
— ADG Standby:
SQL> select c.dbid,c.snap_interval,c.retention,c.topnsql,c.tablespace_name from awr_cdb_wr_control c where src_dbname='DG1';
DBID SNAP_INTERVAL RETENTION TOPNSQL TABLESPACE_NAME
---------- -------------------- -------------------- ---------- ------------------------------
3586104896 +00000 00:30:00.0 +00060 00:00:00.0 DEFAULT SYSAUX
ایجاد Snapshot دستی AWR روی ADG Standby
علاوه بر snapshotهای خودکار، میتوان snapshot دستی AWR را نیز روی Active Data Guard standby ایجاد کرد؛ درست مانند پایگاه داده primary:
— ADG Standby
SQL> exec dbms_workload_repository.create_snapshot(); PL/SQL procedure successfully completed.