6. Page | 6
Number of executions of the SQL statement (default 100)
Number of disk reads performed by the SQL statement (default 1,000)
Number of parse calls performed by the SQL statement (default 1,000)
Number of buffer gets performed by the SQL statement (default 10,000)
Size of sharable memory used by the SQL statement (default 1 MB)
Version count for the SQL statement (default 20)
*** เราสามารถตรวจสอบค่าต่างๆ ที่เทเบิล STATS$STATSPACK_PARAMETER ***
การสร้างรายงาน (spreport.sql หรือ sprepsql.sql)
SQL> connect perfstat/password
SQL> @?/rdbms/admin/spreport.sql
ตัวอย่าง
SQL> connect perfstat/password
Connected.
SQL> @?/rdbms/admin/spreport.sql
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
1372167019 ORCL 1 orcl
Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
----------- -------- ------------ ------------ ------------
1372167019 1 ORCL orcl test12c
Using 1372167019 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.
7. Page | 7
Listing all Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level Comment
------------ ------------ --------- ----------------- ----- --------------------
orcl ORCL 1 09 Apr 2014 02:50 5
3 09 Apr 2014 02:59 5
4 09 Apr 2014 03:05 5
5 09 Apr 2014 03:48 6
6 09 Apr 2014 03:53 6
7 09 Apr 2014 03:54 10
8 09 Apr 2014 03:54 10
9 09 Apr 2014 04:00 10
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 7
Begin Snapshot Id specified: 7
Enter value for end_snap: 9
End Snapshot Id specified: 9
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_7_9. To use this name,
press <return> to continue, otherwise enter an alternative.
Enter value for report_name: report-sp_7_9.txt
.
.
.
End of Report ( report-sp_7_9.txt )
SQL> !ls -l report-sp_7_9.txt
-rw-r--r--. 1 oracle oinstall 135082 Apr 9 04:04 report-sp_7_9.txt
หรือใช ้การกาหนดพารามิเตอร์ที่มีการโต ้ตอบ
SQL> connect perfstat/password
SQL> define begin_snap=9
SQL> define end_snap=10
SQL> define report_name=report_name.txt
SQL> @?/rdbms/admin/spreport.sql
8. Page | 8
หากต ้องการสร ้างรายงานสาหรับ SQL เราสามารถใช ้sprepsql.sql แต่เราต ้องทราบ hash_value
เสียก่อน
SQL> connect perfstat/password
SQL> define begin_snap=1
SQL> define end_snap=14
SQL> define hash_value=1616409590
SQL> define report_name=report_sql_name.txt
SQL> @?/rdbms/admin/sprepsql.sql
การสร้าง baselines
เมื่อเราติดตั้ง Statspack และสร ้างรายงานในช่วงเวลาที่เราสนใจ เราอาจจะสงสัยว่าประสิทธิภาพ
ของฐานข ้อมูลนั้นเปลี่ยนแปลงไปทางใด ดีหรือไม่ดี ดังนั้นเราควรที่จะเก็บข ้อมูลของ Statspack
ในช่วงเวลาที่ฐานข ้อมูลมีประสิทธิภาพในการทางานที่ดี(สร ้าง baselines) เพื่อนามาใช ้ในการ
เปรียบเทียบต่อไป เราใช ้statspack.make_baseline
FUNCTION MAKE_BASELINE RETURNS NUMBER(38)
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_SNAP NUMBER IN
I_END_SNAP NUMBER IN
I_SNAP_RANGE BOOLEAN IN DEFAULT
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
PROCEDURE MAKE_BASELINE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_SNAP NUMBER IN
I_END_SNAP NUMBER IN
I_SNAP_RANGE BOOLEAN IN DEFAULT
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
FUNCTION MAKE_BASELINE RETURNS NUMBER(38)
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_DATE DATE IN
I_END_DATE DATE IN
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
PROCEDURE MAKE_BASELINE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_DATE DATE IN
I_END_DATE DATE IN
9. Page | 9
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
SQL> execute statspack.make_baseline(i_begin_snap => 5, i_end_snap => 10);
และเราสามารถลบ baselines ได ้ด ้วย statspack.clear_baseline
FUNCTION CLEAR_BASELINE RETURNS NUMBER(38)
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_SNAP NUMBER IN
I_END_SNAP NUMBER IN
I_SNAP_RANGE BOOLEAN IN DEFAULT
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
PROCEDURE CLEAR_BASELINE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_SNAP NUMBER IN
I_END_SNAP NUMBER IN
I_SNAP_RANGE BOOLEAN IN DEFAULT
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
FUNCTION CLEAR_BASELINE RETURNS NUMBER(38)
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_DATE DATE IN
I_END_DATE DATE IN
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
PROCEDURE CLEAR_BASELINE
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
I_BEGIN_DATE DATE IN
I_END_DATE DATE IN
I_DBID NUMBER IN DEFAULT
I_INSTANCE_NUMBER NUMBER IN DEFAULT
หากต ้องการลบข ้อมูลจากการ snapshot เราสามารถใช ้statspack.purge
10. Page | 10
ตัวอย่าง รายงาน Statspack
STATSPACK report for
Database DB Id Instance Inst Num Startup Time Release RAC
~~~~~~~~ ----------- ------------ -------- --------------- ----------- ---
1372167019 orcl 1 09-Apr-14 00:05 12.1.0.1.0 NO
Host Name Platform CPUs Cores Sockets Memory (G)
~~~~ ---------------- ---------------------- ----- ----- ------- ------------
test12c Linux x86 64-bit 1 0 0 3.9
Snapshot Snap Id Snap Time Sessions Curs/Sess Comment
~~~~~~~~ ---------- ------------------ -------- --------- ------------------
Begin Snap: 7 09-Apr-14 03:54:24 38 2.1
End Snap: 9 09-Apr-14 04:00:01 41 2.0
Elapsed: 5.62 (mins) Av Act Sess: 0.0
DB time: 0.06 (mins) DB CPU: 0.04 (mins)
Cache Sizes Begin End
~~~~~~~~~~~ ---------- ----------
Buffer Cache: 512M Std Block Size: 8K
Shared Pool: 272M Log Buffer: 6,656K
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ ------------------ ----------------- ----------- -----------
DB time(s): 0.0 0.2 0.00 0.05
DB CPU(s): 0.0 0.1 0.00 0.03
Redo size: 28,302.7 476,900.0
Logical reads: 2,526.7 42,574.8
Block changes: 35.2 592.8
Physical reads: 0.2 3.2
Physical writes: 3.9 65.1
User calls: 0.2 3.3
Parses: 2.6 43.2
Hard parses: 0.3 4.7
W/A MB processed: 0.5 7.8
Logons: 0.1 1.3
Executes: 3.3 55.9
Rollbacks: 0.0 0.0
Transactions: 0.1
Instance Efficiency Indicators
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11. Page | 11
Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 99.99 Optimal W/A Exec %: 100.00
Library Hit %: 94.88 Soft Parse %: 89.12
Execute to Parse %: 22.72 Latch Hit %: 100.00
Parse CPU to Parse Elapsd %: 76.32 % Non-Parse CPU: 93.83
Shared Pool Statistics Begin End
------ ------
Memory Usage %: 89.49 91.52
% SQL with executions>1: 69.92 76.85
% Memory for SQL w/exec>1: 65.98 83.78
Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time
----------------------------------------- ------------ ----------- ------ ------
lreg timer 112 336 3001 33.1
heartbeat redo informer 336 336 1000 33.1
AQPC idle 11 330 30010 32.5
control file parallel write 182 6 32 .6
CPU time 5 .5
-------------------------------------------------------------
^LHost CPU (CPUs: 1 Cores: 0 Sockets: 0)
~~~~~~~~ Load Average
Begin End User System Idle WIO WCPU
------- ------- ------- ------- ------- ------- --------
0.64 0.55 7.06 4.55 88.34 0.80
.
.
.
สรุป
การใช ้งาน Statspack ถือว่ามีประโยชน์ อย่างมากในการตรวจสอบ วิเคราะห์ประสิทธิภาพการ
ทางานของฐานข ้อมูลออราเคิล และยังสามารถช่วยในการวิเคราะห์ปัญหาได ้อีกด ้วย
ผู้ทางานดูแลระบบฐานข ้อมูลออราเคิลควรมีความรู้ในการใช ้งาน Statspack และควรสามารถ
วิเคราะห์รายงานจาก Statspack