איך להריץ דוח AWR כשאין גישה למערכת ההפעלה בשרת

לאחרונה התבקשתי מאחד הלקוחות ליצור ולבדוק כמה דוחות AWR בסביבה שלו. הלקוח הסכים לתת לי גישה ממכונה שהיה בה Client של אורקל אבל לא גישה לשרת עצמו. על פניו זו נשמעת כמו משימה מורכבת אבל בפועל זו משימה פשוטה במיוחד ומיד נראה איך מבצעים אותה.

באופן מעניין, את הסקריפט awrrpt.sql שמייצר דוח AWR ושבדרך כלל מריצים אותו מהשרת ניתן להריץ מכל מקום ולכן אם יש לנו גישה לסקריפט הזה (בגרסה הנכונה) אז אין בכלל בעיה להריץ אותו גם מהתחנה שלנו. כדאי לשים לב שהסקריפט הזה מורכב מהערמה של סקריפטים אחרים ולכן לא מספיק להעתיק רק את awrrpt.sql לתחנה שלנו.

אם מסתכלים קצת לתוך הסקריפטים האלה, ניתן לראות שמה שקורה זה שבסך הכול מופעלות פרוצדורות מתוך package בתוך בסיס הנתונים (dbms_workload_repository). כלומר, אם אין לנו את הסקריפט (כמו שקרה לי אצל הלקוח) ניתן להשתמש באופן ידני בפרוצדורות שבתוך dbms_workload_repository כדי להציג את הדוח למסך או כדי לשמור אותו כקובץ.

באופן מעשי ניתן להשתמש באחת משתי הפרוצדורות – AWR_REPORT_HTML המייצר את הדוח בפורמט HTML או AWR_REPORT_TEXT המייצר את הדוח בפורמט טקסטואלי. הפרוצדורות מקבלות את הפרמטרים הבאים:

FUNCTION AWR_REPORT_HTML RETURNS AWRRPT_HTML_TYPE_TABLE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 L_DBID                         NUMBER                  IN
 L_INST_NUM                     NUMBER                  IN
 L_BID                          NUMBER                  IN
 L_EID                          NUMBER                  IN
 L_OPTIONS                      NUMBER                  IN     DEFAULT

FUNCTION AWR_REPORT_TEXT RETURNS AWRRPT_TEXT_TYPE_TABLE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 L_DBID                         NUMBER                  IN
 L_INST_NUM                     NUMBER                  IN
 L_BID                          NUMBER                  IN
 L_EID                          NUMBER                  IN
 L_OPTIONS                      NUMBER                  IN     DEFAULT

כדי לקבל את הפרמטרים שנעביר לפרוצדורת ניתן להשתמש בשליפה הפשוטה הבאה:

SELECT DBID, instance_number, snap_id, begin_interval_time, end_interval_time
  FROM dba_hist_snapshot
 where begin_interval_time > sysdate - 1
 ORDER BY snap_id

השליפה הזו תיתן לנו את כל ה-snap_id-ים מהיום האחרון.

בכדי להציג את דוח ה-AWR בצורה “נקייה” ככל האפשר, נפעיל מספר אפשרויות ב-SQLPlus שיבטלו הצגה של כותרות ותוצאות ביניים ונריץ את הפרוצדורה המבוקשת.

להצגה של html:

Set heading off
Set trimspool off
Set linesize 1500
Set termout on
Set feedback off

Spool awr_from_console.htm
select output from table(dbms_workload_repository.awr_report_html(&dbid, &inst_num, &bid, &eid));
spool off;

להצגה של text:

Set heading off
Set trimspool off
Set linesize 80
Set feedback off
Set termout on

Spool awr_from_console.txt
select output from table(dbms_workload_repository.awr_report_text(&dbid, &inst_num, &bid, &eid));
spool off;

והתוצאה:

SQL> Set heading off
SQL> Set trimspool off
SQL> Set linesize 80
SQL> Set termout on
SQL>
SQL> Spool awr_from_console.txt
SQL> select output from table(dbms_workload_repository.awr_report_text(&dbid, &inst_num, &bid, &eid));
Enter value for dbid: 2492639615
Enter value for inst_num: 1
Enter value for bid: 953
Enter value for eid: 954
old   1: select output from table(dbms_workload_repository.awr_report_text(&dbid, &inst_num, &bid, &eid))
new   1: select output from table(dbms_workload_repository.awr_report_text(2492639615, 1, 953, 954))

WORKLOAD REPOSITORY report for

DB Name         DB Id    Instance     Inst Num Startup Time    Release     RAC
------------ ----------- ------------ -------- --------------- ----------- ---
GHTEST        2492639615 ghtest              1 15-Aug-11 09:18 11.2.0.1.0  NO

[…awr report…]

SQL> spool off
2 תגובות

השאירו תגובה

Want to join the discussion?
Feel free to contribute!

השאר תגובה

This site uses Akismet to reduce spam. Learn how your comment data is processed.