SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Page | 1
Oracle (ออราเคิล) Statspack
ติดตั้งและใช้งานเบื้องต้น
(เอกสารเวอร์ชัน 0.1)
นี่เป็นเอกสารที่รวบรวมข ้อมูลเกี่ยวกับ Oracle Statspack เพื่อให ้ผู้อ่านสามารถเข ้าใจการใช ้งาน
Oracle Statspack หลังจากอ่านบทความนี้ ผู้อ่านควรสามารถ ติดตั้ง และใช ้งานเบื้องต ้น Oracle
Statspack ได ้
Statspack คืออะไร?
Statspack คือเซตของ SQL และ PL/SQL สคริปท์ ที่ใช ้ในการเก็บข ้อมูลสถิติที่เกี่ยวกับ
ประสิทธิภาพการทางานของฐานข ้อมูลออราเคิล ในการเก็บข ้อมูลแต่ละครั้งเราเรียกว่า snapshot
หลังจากนั้นเราสามารถสร ้างรายงานระหว่าง snapshot เพื่อวิเคราะห์การทางานของฐานข ้อมูล และ
ตรวจสอบประสิทธิภาพในการทางานในช่วงเวลานั้น รายงานจาก Statspack นั้น เราสามารถ
นาไปใช ้เป็นส่วนหนึ่งในการปรับปรุงฐานข ้อมูล เพื่อให ้มีประสิทธิภาพมากขึ้น
ทาไมต้องใช้ Statspack?
Statspack เป็นเครื่องมือที่ช่วยในการเก็บข ้อมูลเกี่ยวกับประสิทธิภาพการทางานของฐานข ้อมูล ที่
ไม่มีค่าใช ้จ่ายเพิ่มเติม พร ้อมกันนี้หากเราใช ้ฐานข ้อมูลออราเคิลที่เป็น Standard Edition One
(SE1) หรือ Standard Edition (SE) เราจะพบว่าเราไม่สามารถจ่ายเงินเพิ่มในการใช ้“Diagnostics
pack” และ ”Tuning pack” ดังนั้น Statspack จึงเป็นทางเลือกที่เหมาะสม
หมายเหตุ: เราสามารถพบสคริปท์ต่างๆ ได ้ที่ ORACLE_HOME/rdbms/admin
- spcreate.sql ใช ้ในการติดตั้ง Statspack
- spauto.sql สร ้างออราเคิล job เพื่อใช ้ในการเก็บสถิติ
- spreport.sql หรือ sprepsql.sql ใช ้ในการสร ้างรายงาน
- sppurge.sql ใช ้ลบข ้อมูลสถิติของ Statspack สามารถลบในแต่ช่วงของ snapshot ได ้
- sptrunc.sql ใช ้ลบข ้อมูลในเทเบิลทั้งหมดของ Statspack
- spdrop.sql ใช ้ลบสิ่งที่เก็บและเกี่ยวกับ Statspack จากนั้นจะลบ Schema (PERFSTAT) ที่
ติดตั้ง Statspack
- spuexp.par เป็นพารามิเตอร์ที่ใช ้ในการดึงข ้อมูลทั้งหมดใน schema ของ Statspack ด ้วย
คาสั่ง exp
ติดตั้ง Statspack อย่างไร?
ก่อนติดตั้ง Statspack ควรพิจารณาค่าของพารามิเตอร์ STATISTICS_LEVEL (TYPICAL หรือ
ALL) และ TIMED_STATISTICS (ควรเป็น TRUE)
เมื่อพิจารณาที่จะใช ้งาน Statspack เราควรหยุดการทางานของ AWR
Page | 2
การติดตั้ง
- จัดหาพารามิเตอร์ที่ต ้องมีการโต ้ตอบ อาทิเช่น default_tablespace,
temporary_tablespace, perfstat_password
- ติดต่อฐานข ้อมูลด ้วยผู้ใช ้งานที่เป็น sysdba
- กาหนดพารามิเตอร์จากข ้างต ้น
- ติดตั้ง Statspack ด ้วย spcreate.sql
หมายเหตุ: เราไม่ควรติดตั้ง Statspack บน SYSTEM tablespace และควรสร้าง Tablespace
แยก สาหรับการใช ้งาน Statspack
CREATE TABLESPACE PERFSTAT_TS DATAFILE
'/u01/app/oracle/oradata/orcl/perfstat_ts01.dbf' size 50M autoextend on maxsize
unlimited;
SQL> connect / as sysdba
SQL> define default_tablespace='PERFSTAT_TS'
SQL> define temporary_tablespace='TEMP'
SQL> define perfstat_password='password'
SQL> @?/rdbms/admin/spcreate.sql
SQL> undefine perfstat_password
หลังจากการติดตั้งเราจะพบ schema ที่ชื่อว่า PERFSTAT
SQL> select username, default_tablespace, temporary_tablespace from dba_users
where username='PERFSTAT';
USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
PERFSTAT PERFSTAT_TS TEMP
SQL> connect perfstat/password
Connected.
ใช้งาน Statspack อย่างไร?
เก็บข้อมูลสถิติปัจจุบันที่เกี่ยวกับประสิทธิภาพการทางานของฐานข้อมูล
ใช ้statspack.snap
SQL> connect perfstat/password
SQL> execute statspack.snap
หมายเหตุ: statspack.snap นั้น ประกอบไปด ้วย procedure และ function ดังนั้นเราสามารถ
เรียกใช ้statspack.snap ที่เป็น function เพื่อเช็ค snapshot number
FUNCTION SNAP RETURNS NUMBER(38)
Page | 3
SQL> variable snap number;
SQL> begin :snap := statspack.snap; end;
2 /
PL/SQL procedure successfully completed.
SQL> print snap
SNAP
----------
3
การเก็บข้อมูลสถิติที่เกี่ยวกับประสิทธิภาพการทางานของฐานข้อมูลโดยอัตโนมัติ
กรณีนี้เราใช ้ spauto.sql เพื่อสร ้างออราเคิล job ให ้มีการเรียกใช ้งาน “statspack.snap” ทุกๆ
ชั่วโมง เราสามารถที่จะเปลี่ยนได ้ภายหลัง ด ้วยการใช ้ dbms_job.interval
*** หลังจากมีการติดตั้ง Statspack การเก็บข้อมูลสถิติ (snapshot) หรือเรียกใช้งาน
“statspack.snap” โดยอัตโนมัติ เป็ นสิ่งจาเป็ นอย่างมากที่ไม่ควรลืม ***
SQL> connect perfstat/password
SQL> @?/rdbms/admin/spauto.sql
หมายเหตุ: การใช ้งานออราเคิล job ค่าของพารามิเตอร์ job_queue_processes ต ้องมากกว่า 0
ตัวอย่าง
SQL> connect perfstat/password
Connected.
SQL> @?/rdbms/admin/spauto.sql
PL/SQL procedure successfully completed.
Job number for automated statistics collection for this instance
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~
Note that this job number is needed when modifying or removing
the job:
JOBNO
----------
1
Job queue process
~~~~~~~~~~~~~~~~~
Below is the current setting of the job_queue_processes init.ora
Page | 4
parameter - the value for this parameter must be greater
than 0 to use automatic statistics gathering:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 1000
Next scheduled run
~~~~~~~~~~~~~~~~~~
The next scheduled run for this job is:
JOB NEXT_DATE NEXT_SEC
---------- --------- --------------------------------
1 09-APR-14 04:00:00
SQL> alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS';
Session altered.
SQL> select job, schema_user, what, next_date, interval from user_jobs;
JOB SCHEMA_USER WHAT NEXT_DATE INTERVAL
---------- --------------- ------------------------------ -------------------- ----------------------------
1 PERFSTAT statspack.snap; 09-APR-2014 04:00:00
trunc(SYSDATE+1/24,'HH')
หมายเหตุ: เราสามารถลบออราเคิล job ได ้ด ้วย dbms_job.remove(<job number>)
การกาหนดระดับ(level)สาหรับใช้ในการเก็บข้อมูล
เราสามารถควบคุมจานวนข ้อมูลที่เก็บได ้ด ้วยการกาหนดระดับของ snapshot ยิ่งระดับสูงยิ่งเก็บ
ข ้อมูลมาก เพราะยิ่งระดับสูง ก็จะมีการเก็บข ้อมูลสถิติหลายๆ ส่วน
หลังการติดตั้ง Statspack เสร็จสิ้น ระดับของ snapshot นั้นจะเป็น 5 (เช็คได ้ด ้วย SQL - select
SNAP_LEVEL from STATS$STATSPACK_PARAMETER) เราสามารถเปลี่ยนได ้ด ้วยการใช ้
STATSPACK.MODIFY_STATSPACK_PARAMETER
ระดับ (Level) Statistics captured
0 General Performance
5 SQL Statements
6 SQL plans and SQL plan usage
7 Segment-level statistics
10 Parent and child latches
ตาราง: Statspack Snapshot Levels (เช็คเพิ่มเติมได ้ที่เทเบิล stats$level_description)
Page | 5
หมายเหตุ: ระดับ 6 ไม่พบในเวอร์ชัน 8i, ระดับ 7 เริ่มที่เวอร์ชัน 9.2
ตัวอย่าง
SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER;
SNAP_LEVEL
----------
5
SQL> execute statspack.modify_statspack_parameter (i_snap_level=>10);
PL/SQL procedure successfully completed.
SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER;
SNAP_LEVEL
----------
10
เราสามารถกาหนดระดับของการ snapshot เมื่อใช ้statspack.snap
SQL> execute statspack.snap(i_snap_level=>6);
หรือเปลี่ยนค่าพารามิเตอร์ระดับของการ snapshot (SNAP_LEVEL) ด ้วยเลย
SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER;
SNAP_LEVEL
----------
5
SQL> execute statspack.snap(i_snap_level=>10, i_modify_parameter=>'true');
PL/SQL procedure successfully completed.
SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER;
SNAP_LEVEL
----------
10
หมายเหตุ: เรายังสามารถใช ้statspack.modify_statspack_parameter ในการเปลี่ยนค่า
threshold ต่างๆ ได ้อีกด ้วย
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.
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
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
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
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
Page | 12
อ้างอิง
FAQ- Statspack Complete Reference (Doc ID 94224.1)
Oracle Performance Tuning 11g – Oracle University
Oracle Documents
เรียบเรียงโดย
Surachart Opun
Oracle ACE และ Oracle Expert
Blogs: http://surachartopun.com, http://oraclethai.blogspot.com

Contenu connexe

Tendances

Why oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cWhy oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cSatishbabu Gunukula
 
z/VSE Base Installation - Step by Step
z/VSE Base Installation - Step by Stepz/VSE Base Installation - Step by Step
z/VSE Base Installation - Step by StepIBM
 
Sangam 19 - Analytic SQL
Sangam 19 - Analytic SQLSangam 19 - Analytic SQL
Sangam 19 - Analytic SQLConnor McDonald
 
EM13c: Write Powerful Scripts with EMCLI
EM13c: Write Powerful Scripts with EMCLIEM13c: Write Powerful Scripts with EMCLI
EM13c: Write Powerful Scripts with EMCLIGokhan Atil
 
PostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability MethodsPostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability MethodsMydbops
 
MongoDB Backups and PITR
MongoDB Backups and PITRMongoDB Backups and PITR
MongoDB Backups and PITRIgor Donchovski
 
User, roles and privileges
User, roles and privilegesUser, roles and privileges
User, roles and privilegesYogiji Creations
 
SOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesSOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesStefan Oehrli
 
zOSMF Software Update Lab.pdf
zOSMF Software Update Lab.pdfzOSMF Software Update Lab.pdf
zOSMF Software Update Lab.pdfMarna Walle
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenPostgresOpen
 
Db2 recovery IDUG EMEA 2013
Db2 recovery IDUG EMEA 2013Db2 recovery IDUG EMEA 2013
Db2 recovery IDUG EMEA 2013Dale McInnis
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on ExadataAnil Nair
 
Solr Search Engine: Optimize Is (Not) Bad for You
Solr Search Engine: Optimize Is (Not) Bad for YouSolr Search Engine: Optimize Is (Not) Bad for You
Solr Search Engine: Optimize Is (Not) Bad for YouSematext Group, Inc.
 
Presentation oracle net services
Presentation    oracle net servicesPresentation    oracle net services
Presentation oracle net servicesxKinAnx
 
DB2 Data Sharing Performance
DB2 Data Sharing PerformanceDB2 Data Sharing Performance
DB2 Data Sharing PerformanceMartin Packer
 

Tendances (20)

Why oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19cWhy oracle data guard new features in oracle 18c, 19c
Why oracle data guard new features in oracle 18c, 19c
 
Smpe
SmpeSmpe
Smpe
 
z/VSE Base Installation - Step by Step
z/VSE Base Installation - Step by Stepz/VSE Base Installation - Step by Step
z/VSE Base Installation - Step by Step
 
Oracle Database 12c R1 主要新機能のご紹介
Oracle Database 12c R1 主要新機能のご紹介Oracle Database 12c R1 主要新機能のご紹介
Oracle Database 12c R1 主要新機能のご紹介
 
ZFS appliance
ZFS applianceZFS appliance
ZFS appliance
 
Sangam 19 - Analytic SQL
Sangam 19 - Analytic SQLSangam 19 - Analytic SQL
Sangam 19 - Analytic SQL
 
EM13c: Write Powerful Scripts with EMCLI
EM13c: Write Powerful Scripts with EMCLIEM13c: Write Powerful Scripts with EMCLI
EM13c: Write Powerful Scripts with EMCLI
 
PostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability MethodsPostgreSQL Replication High Availability Methods
PostgreSQL Replication High Availability Methods
 
MongoDB Backups and PITR
MongoDB Backups and PITRMongoDB Backups and PITR
MongoDB Backups and PITR
 
User, roles and privileges
User, roles and privilegesUser, roles and privileges
User, roles and privileges
 
SOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant DatabasesSOUG Oracle Unified Audit for Multitenant Databases
SOUG Oracle Unified Audit for Multitenant Databases
 
zOSMF Software Update Lab.pdf
zOSMF Software Update Lab.pdfzOSMF Software Update Lab.pdf
zOSMF Software Update Lab.pdf
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
 
Db2 recovery IDUG EMEA 2013
Db2 recovery IDUG EMEA 2013Db2 recovery IDUG EMEA 2013
Db2 recovery IDUG EMEA 2013
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on Exadata
 
Solr Search Engine: Optimize Is (Not) Bad for You
Solr Search Engine: Optimize Is (Not) Bad for YouSolr Search Engine: Optimize Is (Not) Bad for You
Solr Search Engine: Optimize Is (Not) Bad for You
 
Mainframe interview
Mainframe interviewMainframe interview
Mainframe interview
 
Ipl process
Ipl processIpl process
Ipl process
 
Presentation oracle net services
Presentation    oracle net servicesPresentation    oracle net services
Presentation oracle net services
 
DB2 Data Sharing Performance
DB2 Data Sharing PerformanceDB2 Data Sharing Performance
DB2 Data Sharing Performance
 

En vedette

การเพิ่มประสิทธิภาพ Instance memory - Oracle 11G
การเพิ่มประสิทธิภาพ Instance memory  - Oracle 11Gการเพิ่มประสิทธิภาพ Instance memory  - Oracle 11G
การเพิ่มประสิทธิภาพ Instance memory - Oracle 11GN/A
 
Oracle Database 11g Product Family
Oracle Database 11g Product FamilyOracle Database 11g Product Family
Oracle Database 11g Product FamilyN/A
 
การตรวจเช็คฐานข้อมูล Oracle v1 draft
การตรวจเช็คฐานข้อมูล Oracle v1 draftการตรวจเช็คฐานข้อมูล Oracle v1 draft
การตรวจเช็คฐานข้อมูล Oracle v1 draftN/A
 
Apex thaibook 01_draft
Apex thaibook 01_draftApex thaibook 01_draft
Apex thaibook 01_draftN/A
 
สอนSpss
สอนSpssสอนSpss
สอนSpsskaew393
 
Bai giang chi tiêt mon qtdn chuan
Bai giang chi tiêt mon qtdn chuanBai giang chi tiêt mon qtdn chuan
Bai giang chi tiêt mon qtdn chuanphuong2805
 
Basic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationBasic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationN/A
 
Test Dml With Nologging
Test Dml With NologgingTest Dml With Nologging
Test Dml With NologgingN/A
 
FIXING BLOCK CORRUPTION (RMAN) on 11G
FIXING BLOCK CORRUPTION (RMAN) on 11GFIXING BLOCK CORRUPTION (RMAN) on 11G
FIXING BLOCK CORRUPTION (RMAN) on 11GN/A
 
บทที่ 2 (1)
บทที่ 2 (1)บทที่ 2 (1)
บทที่ 2 (1)nopphanut
 
งานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลงานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลchanoot29
 
การใช้โปรแกรม Spss
การใช้โปรแกรม Spssการใช้โปรแกรม Spss
การใช้โปรแกรม Spssthaweesak mahan
 
Lesson 2 ไฟล์ฐานข้อมูล
Lesson 2 ไฟล์ฐานข้อมูลLesson 2 ไฟล์ฐานข้อมูล
Lesson 2 ไฟล์ฐานข้อมูลErrorrrrr
 
คู่มือSpss
คู่มือSpssคู่มือSpss
คู่มือSpsskuankaaw
 
การใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นการใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นtechno UCH
 

En vedette (18)

การเพิ่มประสิทธิภาพ Instance memory - Oracle 11G
การเพิ่มประสิทธิภาพ Instance memory  - Oracle 11Gการเพิ่มประสิทธิภาพ Instance memory  - Oracle 11G
การเพิ่มประสิทธิภาพ Instance memory - Oracle 11G
 
Oracle Database 11g Product Family
Oracle Database 11g Product FamilyOracle Database 11g Product Family
Oracle Database 11g Product Family
 
การตรวจเช็คฐานข้อมูล Oracle v1 draft
การตรวจเช็คฐานข้อมูล Oracle v1 draftการตรวจเช็คฐานข้อมูล Oracle v1 draft
การตรวจเช็คฐานข้อมูล Oracle v1 draft
 
Apex thaibook 01_draft
Apex thaibook 01_draftApex thaibook 01_draft
Apex thaibook 01_draft
 
สอนSpss
สอนSpssสอนSpss
สอนSpss
 
Bai giang chi tiêt mon qtdn chuan
Bai giang chi tiêt mon qtdn chuanBai giang chi tiêt mon qtdn chuan
Bai giang chi tiêt mon qtdn chuan
 
Basic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition PresentationBasic - Oracle Edition Based Redefinition Presentation
Basic - Oracle Edition Based Redefinition Presentation
 
Test Dml With Nologging
Test Dml With NologgingTest Dml With Nologging
Test Dml With Nologging
 
FIXING BLOCK CORRUPTION (RMAN) on 11G
FIXING BLOCK CORRUPTION (RMAN) on 11GFIXING BLOCK CORRUPTION (RMAN) on 11G
FIXING BLOCK CORRUPTION (RMAN) on 11G
 
Web 2.0 สู่ Library 2.0
Web 2.0 สู่ Library 2.0Web 2.0 สู่ Library 2.0
Web 2.0 สู่ Library 2.0
 
บทที่ 2 (1)
บทที่ 2 (1)บทที่ 2 (1)
บทที่ 2 (1)
 
งานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุลงานนำเสนอ การจัดการฐานข้อมุล
งานนำเสนอ การจัดการฐานข้อมุล
 
การใช้โปรแกรม Spss
การใช้โปรแกรม Spssการใช้โปรแกรม Spss
การใช้โปรแกรม Spss
 
Lesson 2 ไฟล์ฐานข้อมูล
Lesson 2 ไฟล์ฐานข้อมูลLesson 2 ไฟล์ฐานข้อมูล
Lesson 2 ไฟล์ฐานข้อมูล
 
คู่มือSpss
คู่มือSpssคู่มือSpss
คู่มือSpss
 
Spss jan2010
Spss jan2010Spss jan2010
Spss jan2010
 
Database Tuning for e-Learning
Database Tuning for e-LearningDatabase Tuning for e-Learning
Database Tuning for e-Learning
 
การใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้นการใช้โปรแกรม Access เบื้องต้น
การใช้โปรแกรม Access เบื้องต้น
 

ออราเคิล (Oracle) Statspack (ติดตั้งและใช้งานเบื้องต้น)

  • 1. Page | 1 Oracle (ออราเคิล) Statspack ติดตั้งและใช้งานเบื้องต้น (เอกสารเวอร์ชัน 0.1) นี่เป็นเอกสารที่รวบรวมข ้อมูลเกี่ยวกับ Oracle Statspack เพื่อให ้ผู้อ่านสามารถเข ้าใจการใช ้งาน Oracle Statspack หลังจากอ่านบทความนี้ ผู้อ่านควรสามารถ ติดตั้ง และใช ้งานเบื้องต ้น Oracle Statspack ได ้ Statspack คืออะไร? Statspack คือเซตของ SQL และ PL/SQL สคริปท์ ที่ใช ้ในการเก็บข ้อมูลสถิติที่เกี่ยวกับ ประสิทธิภาพการทางานของฐานข ้อมูลออราเคิล ในการเก็บข ้อมูลแต่ละครั้งเราเรียกว่า snapshot หลังจากนั้นเราสามารถสร ้างรายงานระหว่าง snapshot เพื่อวิเคราะห์การทางานของฐานข ้อมูล และ ตรวจสอบประสิทธิภาพในการทางานในช่วงเวลานั้น รายงานจาก Statspack นั้น เราสามารถ นาไปใช ้เป็นส่วนหนึ่งในการปรับปรุงฐานข ้อมูล เพื่อให ้มีประสิทธิภาพมากขึ้น ทาไมต้องใช้ Statspack? Statspack เป็นเครื่องมือที่ช่วยในการเก็บข ้อมูลเกี่ยวกับประสิทธิภาพการทางานของฐานข ้อมูล ที่ ไม่มีค่าใช ้จ่ายเพิ่มเติม พร ้อมกันนี้หากเราใช ้ฐานข ้อมูลออราเคิลที่เป็น Standard Edition One (SE1) หรือ Standard Edition (SE) เราจะพบว่าเราไม่สามารถจ่ายเงินเพิ่มในการใช ้“Diagnostics pack” และ ”Tuning pack” ดังนั้น Statspack จึงเป็นทางเลือกที่เหมาะสม หมายเหตุ: เราสามารถพบสคริปท์ต่างๆ ได ้ที่ ORACLE_HOME/rdbms/admin - spcreate.sql ใช ้ในการติดตั้ง Statspack - spauto.sql สร ้างออราเคิล job เพื่อใช ้ในการเก็บสถิติ - spreport.sql หรือ sprepsql.sql ใช ้ในการสร ้างรายงาน - sppurge.sql ใช ้ลบข ้อมูลสถิติของ Statspack สามารถลบในแต่ช่วงของ snapshot ได ้ - sptrunc.sql ใช ้ลบข ้อมูลในเทเบิลทั้งหมดของ Statspack - spdrop.sql ใช ้ลบสิ่งที่เก็บและเกี่ยวกับ Statspack จากนั้นจะลบ Schema (PERFSTAT) ที่ ติดตั้ง Statspack - spuexp.par เป็นพารามิเตอร์ที่ใช ้ในการดึงข ้อมูลทั้งหมดใน schema ของ Statspack ด ้วย คาสั่ง exp ติดตั้ง Statspack อย่างไร? ก่อนติดตั้ง Statspack ควรพิจารณาค่าของพารามิเตอร์ STATISTICS_LEVEL (TYPICAL หรือ ALL) และ TIMED_STATISTICS (ควรเป็น TRUE) เมื่อพิจารณาที่จะใช ้งาน Statspack เราควรหยุดการทางานของ AWR
  • 2. Page | 2 การติดตั้ง - จัดหาพารามิเตอร์ที่ต ้องมีการโต ้ตอบ อาทิเช่น default_tablespace, temporary_tablespace, perfstat_password - ติดต่อฐานข ้อมูลด ้วยผู้ใช ้งานที่เป็น sysdba - กาหนดพารามิเตอร์จากข ้างต ้น - ติดตั้ง Statspack ด ้วย spcreate.sql หมายเหตุ: เราไม่ควรติดตั้ง Statspack บน SYSTEM tablespace และควรสร้าง Tablespace แยก สาหรับการใช ้งาน Statspack CREATE TABLESPACE PERFSTAT_TS DATAFILE '/u01/app/oracle/oradata/orcl/perfstat_ts01.dbf' size 50M autoextend on maxsize unlimited; SQL> connect / as sysdba SQL> define default_tablespace='PERFSTAT_TS' SQL> define temporary_tablespace='TEMP' SQL> define perfstat_password='password' SQL> @?/rdbms/admin/spcreate.sql SQL> undefine perfstat_password หลังจากการติดตั้งเราจะพบ schema ที่ชื่อว่า PERFSTAT SQL> select username, default_tablespace, temporary_tablespace from dba_users where username='PERFSTAT'; USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE ------------------------------ ------------------------------ ------------------------------ PERFSTAT PERFSTAT_TS TEMP SQL> connect perfstat/password Connected. ใช้งาน Statspack อย่างไร? เก็บข้อมูลสถิติปัจจุบันที่เกี่ยวกับประสิทธิภาพการทางานของฐานข้อมูล ใช ้statspack.snap SQL> connect perfstat/password SQL> execute statspack.snap หมายเหตุ: statspack.snap นั้น ประกอบไปด ้วย procedure และ function ดังนั้นเราสามารถ เรียกใช ้statspack.snap ที่เป็น function เพื่อเช็ค snapshot number FUNCTION SNAP RETURNS NUMBER(38)
  • 3. Page | 3 SQL> variable snap number; SQL> begin :snap := statspack.snap; end; 2 / PL/SQL procedure successfully completed. SQL> print snap SNAP ---------- 3 การเก็บข้อมูลสถิติที่เกี่ยวกับประสิทธิภาพการทางานของฐานข้อมูลโดยอัตโนมัติ กรณีนี้เราใช ้ spauto.sql เพื่อสร ้างออราเคิล job ให ้มีการเรียกใช ้งาน “statspack.snap” ทุกๆ ชั่วโมง เราสามารถที่จะเปลี่ยนได ้ภายหลัง ด ้วยการใช ้ dbms_job.interval *** หลังจากมีการติดตั้ง Statspack การเก็บข้อมูลสถิติ (snapshot) หรือเรียกใช้งาน “statspack.snap” โดยอัตโนมัติ เป็ นสิ่งจาเป็ นอย่างมากที่ไม่ควรลืม *** SQL> connect perfstat/password SQL> @?/rdbms/admin/spauto.sql หมายเหตุ: การใช ้งานออราเคิล job ค่าของพารามิเตอร์ job_queue_processes ต ้องมากกว่า 0 ตัวอย่าง SQL> connect perfstat/password Connected. SQL> @?/rdbms/admin/spauto.sql PL/SQL procedure successfully completed. Job number for automated statistics collection for this instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ Note that this job number is needed when modifying or removing the job: JOBNO ---------- 1 Job queue process ~~~~~~~~~~~~~~~~~ Below is the current setting of the job_queue_processes init.ora
  • 4. Page | 4 parameter - the value for this parameter must be greater than 0 to use automatic statistics gathering: NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ job_queue_processes integer 1000 Next scheduled run ~~~~~~~~~~~~~~~~~~ The next scheduled run for this job is: JOB NEXT_DATE NEXT_SEC ---------- --------- -------------------------------- 1 09-APR-14 04:00:00 SQL> alter session set nls_date_format='DD-MON-YYYY HH24:MI:SS'; Session altered. SQL> select job, schema_user, what, next_date, interval from user_jobs; JOB SCHEMA_USER WHAT NEXT_DATE INTERVAL ---------- --------------- ------------------------------ -------------------- ---------------------------- 1 PERFSTAT statspack.snap; 09-APR-2014 04:00:00 trunc(SYSDATE+1/24,'HH') หมายเหตุ: เราสามารถลบออราเคิล job ได ้ด ้วย dbms_job.remove(<job number>) การกาหนดระดับ(level)สาหรับใช้ในการเก็บข้อมูล เราสามารถควบคุมจานวนข ้อมูลที่เก็บได ้ด ้วยการกาหนดระดับของ snapshot ยิ่งระดับสูงยิ่งเก็บ ข ้อมูลมาก เพราะยิ่งระดับสูง ก็จะมีการเก็บข ้อมูลสถิติหลายๆ ส่วน หลังการติดตั้ง Statspack เสร็จสิ้น ระดับของ snapshot นั้นจะเป็น 5 (เช็คได ้ด ้วย SQL - select SNAP_LEVEL from STATS$STATSPACK_PARAMETER) เราสามารถเปลี่ยนได ้ด ้วยการใช ้ STATSPACK.MODIFY_STATSPACK_PARAMETER ระดับ (Level) Statistics captured 0 General Performance 5 SQL Statements 6 SQL plans and SQL plan usage 7 Segment-level statistics 10 Parent and child latches ตาราง: Statspack Snapshot Levels (เช็คเพิ่มเติมได ้ที่เทเบิล stats$level_description)
  • 5. Page | 5 หมายเหตุ: ระดับ 6 ไม่พบในเวอร์ชัน 8i, ระดับ 7 เริ่มที่เวอร์ชัน 9.2 ตัวอย่าง SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER; SNAP_LEVEL ---------- 5 SQL> execute statspack.modify_statspack_parameter (i_snap_level=>10); PL/SQL procedure successfully completed. SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER; SNAP_LEVEL ---------- 10 เราสามารถกาหนดระดับของการ snapshot เมื่อใช ้statspack.snap SQL> execute statspack.snap(i_snap_level=>6); หรือเปลี่ยนค่าพารามิเตอร์ระดับของการ snapshot (SNAP_LEVEL) ด ้วยเลย SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER; SNAP_LEVEL ---------- 5 SQL> execute statspack.snap(i_snap_level=>10, i_modify_parameter=>'true'); PL/SQL procedure successfully completed. SQL> select SNAP_LEVEL from STATS$STATSPACK_PARAMETER; SNAP_LEVEL ---------- 10 หมายเหตุ: เรายังสามารถใช ้statspack.modify_statspack_parameter ในการเปลี่ยนค่า threshold ต่างๆ ได ้อีกด ้วย
  • 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
  • 12. Page | 12 อ้างอิง FAQ- Statspack Complete Reference (Doc ID 94224.1) Oracle Performance Tuning 11g – Oracle University Oracle Documents เรียบเรียงโดย Surachart Opun Oracle ACE และ Oracle Expert Blogs: http://surachartopun.com, http://oraclethai.blogspot.com