Statspack adalah seperangkat utilitas pemantauan dan pelaporan kinerja yang disediakan oleh Oracle untuk Oracle8i dan di atasnya. Seorang pengguna secara otomatis dibuat oleh skrip instalasi - pengguna ini, PERFSTAT, memiliki semua objek yang dibutuhkan oleh paket ini. Untuk informasi lebih lanjut tentang Statspack, baca dokumentasi di file $ORACLE_HOME/rdbms/admin/spdoc.txt.
Instal Statspack
Untuk menginstal paket, ubah ke direktori ORACLE_HOME rdbms/admin, atau tentukan sepenuhnya direktori ORACLE_HOME/rdbms/admin saat memanggil skrip instalasi, SPCREATE.
Untuk menjalankan skrip instalasi, Anda harus menggunakan SQL*Plus dan terhubung sebagai pengguna dengan hak istimewa SYSDBA. Misalnya, mulai SQL*Plus, lalu:
Di UNIX : SunOS/HP UX/Linux
SQL> CONNECT / SEBAGAI SYSDBA
SQL> @?/rdbms/admin/spcreate
Di Windows: XP/NT/2000/2003
SQL> CONNECT / SEBAGAI SYSDBA
SQL> @%ORACLE_HOME%rdbmsadminspcreate
Skrip instalasi SPCREATE menjalankan tiga skrip lainnya. Skrip ini dipanggil secara otomatis, jadi Anda tidak perlu menjalankannya:
* SPCUSR: Membuat pengguna dan memberikan hak istimewa
* SPCTAB: Membuat tabel
* SPCPKG: Membuat paket
Mengkonfigurasi Statspack
Bagaimana cara menemukan level Ststapack saat ini?
- Lihat tabel PERFSTST.STATS$SNAPSHOT
atau
- Jalankan spreport.sql dan Anda akan melihatnya bersama dengan snapid yang terdaftar
STATS$SNAPSHOT akan menunjukkan level untuk setiap Snapshot yang direkam
Ubah Tingkat
jalankan statspack.snap (i_snap_level=> 7, i_modify_parameter=>'true');
Level >= 0 Statistik Kinerja Umum
Levels >= 5 Data Tambahan: Pernyataan SQL
Levels >= 6 Data Tambahan: Paket SQL dan Penggunaan Paket SQL
Level >= 10 Statistik Tambahan: Kait Orang Tua dan Anak
Menggunakan Statspack (mengumpulkan data)
sqlplus perfstat
--
-- Ambil cuplikan performa
--
jalankan statspack.snap;
--
-- Dapatkan daftar snapshot
--
kolom snap_time format a21
pilih snap_id,to_char(snap_time,'MON dd, yyyy hh24:mm:ss') snap_time
dari sp$snapshot;
--
Menjalankan laporan Kinerja
--
-- Jalankan laporan Statspack:
--
@?/rdbms/admin/spreport.sql
Temukan Sulit memukul SQL dari Statpack Repository
1. Login sebagai pengguna PERFSTAT pada database.
Ini tidak akan berfungsi kecuali Anda login sebagai pengguna PERFSTAT.
2. Temukan DBID menggunakan
"pilih dbid dari stats$sql_summary"
3. Cari MIN(SNAP_ID) pBgnSnap & MAX(SNAP_ID) pEndSnap dari
pilih min(snap_id),max(snap_id),min(snap_time),max(snap_time) dari stats$snapshot
di mana to_number(to_char(snap_time,'HH24')) > 10 dan to_number(to_char(snap_time,'HH24')) < 13 dan trunc(snap_time)=trunc(sysdate)
Tampilkan Semua SQL Stmts diurutkan oleh Logical Reads
Pilih
e.hash_value "E.HASH_VALUE"
, e.modul "Modul"
, e.buffer_gets - nvl(b.buffer_gets,0) "Buffer Mendapat"
, e.eksekusi - nvl(b.eksekusi,0) "Eksekusi"
, Putaran( dekode ((e.eksekusi - nvl(b.eksekusi, 0)), 0, to_number(NULL)
, (e.buffer_gets - nvl(b.buffer_gets,0)) /
(e.executions - nvl(b.executions,0))) ,3) "Mendapat / Eksekusi"
, Bulat(100*(e.buffer_gets - nvl(b.buffer_gets,0))/sp920.getGets(:pDbID,:pInstNum,:pBgnSnap,:pEndSnap,'NO'),3) "Persen dari Total"
, Putaran((e.cpu_time - nvl(b.cpu_time,0))/1000000,3) "CPU (s)"
, Putaran((e.elapsed_time - nvl(b.elapsed_time,0))/1000000,3) "Elapsed (s)"
, Bulat(e.fetches - nvl(b.fetches,0)) "Ambil"
, sp920.getSQLText ( e.hash_value , 400) "Pernyataan SQL"
dari stats$sql_summary e
, stats$sql_summary b
dimana b.snap_id(+) = :pBgnSnap
dan b.dbid(+) = e.dbid
dan b.nomor_instance(+) = e.nomor_instance
dan b.hash_value(+) = e.hash_value
dan b.alamat(+) = e.alamat
dan b.text_subset(+) = e.text_subset
dan e.snap_id = :pEndSnap
dan e.dbid = :pDbId
dan e.instance_number = :pInstNum
pesan sebelum 3 desc
Tampilkan SQL Stmts di mana SQL_TEXT seperti '%'
Pilih
e.hash_value "E.HASH_VALUE"
, e.modul "Modul"
, e.buffer_gets - nvl(b.buffer_gets,0) "Buffer Mendapat"
, e.eksekusi - nvl(b.eksekusi,0) "Eksekusi"
, Putaran( dekode ((e.eksekusi - nvl(b.eksekusi, 0)), 0, to_number(NULL)
, (e.buffer_gets - nvl(b.buffer_gets,0)) /
(e.executions - nvl(b.executions,0))) ,3) "Mendapat / Eksekusi"
, Bulat(100*(e.buffer_gets - nvl(b.buffer_gets,0))/sp920.getGets(:pDbID,:pInstNum,:pBgnSnap,:pEndSnap,'NO'),3) "Persen dari Total"
, Putaran((e.cpu_time - nvl(b.cpu_time,0))/1000000,3) "CPU (s)"
, Putaran((e.elapsed_time - nvl(b.elapsed_time,0))/1000000,3) "Elapsed (s)"
, Bulat(e.fetches - nvl(b.fetches,0)) "Ambil"
, sp920.getSQLText ( e.hash_value , 400) "Pernyataan SQL"
dari stats$sql_summary e
, stats$sql_summary b
dimana b.snap_id(+) = :pBgnSnap
dan b.dbid(+) = e.dbid
dan b.nomor_instance(+) = e.nomor_instance
dan b.hash_value(+) = e.hash_value
dan b.alamat(+) = e.alamat
dan b.text_subset(+) = e.text_subset
dan e.snap_id = :pEndSnap
dan e.dbid = 2863128100
dan e.instance_number = :pInstNum
dan sp920.getSQLText ( e.hash_value , 400) seperti '%ZPV_DATA%'
pesan sebelum 3 desc
Cara mengambil seluruh SQL + Execution PLAN dari Statspack untuk sebuah tabel
Untuk mengambil paket SQL, Anda harus memiliki statspack yang berfungsi di level 7
1. sprepsql.sql
Laporan SQL (sprepsql.sql) adalah laporan untuk pernyataan SQL tertentu. Laporan SQL biasanya dijalankan setelah memeriksa sekte SQL beban tinggiion laporan kesehatan instans. Laporan SQL menyediakan statistik dan data terperinci untuk satu pernyataan SQL (seperti yang diidentifikasi oleh Nilai Hash dalam laporan Statspack).
2. Nilai Hash diketahui
- Pilih * dari STATS$SQLTEXT di mana hash_value='%from stats pack%' diurutkan demi sepotong;
- Untuk Obyek pertama cari OBJECT_ID
pilih * dari sys.obj$ di mana name='TRANSACTION'
pilih snap_time
snap_id,
rencana_hash_nilai,
OBYEK# ,
OBJECT_NAME ,
OPERASI ,
PILIHAN ,
BIAYA ,
IO_COST ,
KARDINALITAS ,
POSISI ,
CPU_COST ,
PENGOPTIMAL,
SEARCH_COLUMNS ,
BYTE ,
DISTRIBUSI ,
TEMP_SPACE ,
ACCESS_PREDICATES ,
FILTER_PREDICATES
dari stats$SQL_PLAN a , STATS$SNAPSHOT b di mana objek#='&&OBJECT_ID' dan a.snap_id=b.snap_id;
<a href="http://OracleDbaSupport.co.uk">http://OracleDbaSupport.co.uk</a> adalah situs blog Sagar Patil, konsultan oracle independen dengan pemahaman yang baik tentang bagaimana database Oracle engine & Aplikasi Oracle bekerja sama.
Saya seorang Oracle Certified RAC DBA dengan pengalaman lebih dari sepuluh tahun mendukung contoh Produksi dan Pengembangan database Oracle.
- Ahli dalam membangun sistem RAC 10g serta rman, cadangan penjaga data, dan strategi pemulihan untuk sistem produksi, pengujian, dan pengembangan.
- Instruktur untuk pengembang arsitektur Oracle, fitur Oracle9i/10g, metodologi tuning, replikasi database, PL/SQL dan Oracle Http Server.
- Pengguna Statspack, SQL Trace, OEM Performance Manager, Quest Central, Quest Foglight, Quest SQL impact, Bennchamark factory, Quest SQL optimizer, TOAD, dan skrip khusus.
- Penulis standar & praktik terperinci untuk instalasi, peningkatan, penyetelan & pencadangan Oracle pada Database Oracle dan PL/SQL. Pengembang, perancang, dan pelaksana Prosedur pencadangan pemulihan bencana
- Pemimpin pada proyek-proyek besar melalui semua fase pengembangan, pengujian, dan Dukungan
Saya dapat dipekerjakan dalam waktu singkat, untuk menangani strategi, desain, implementasi, pemecahan masalah, perlindungan DBA, pemantauan jarak jauh, dan pelatihan.
Silakan kunjungi www.oracledbasupport.co.uk untuk kebutuhan DBA oracle Anda.