Halo, Habr! Saya hadir untuk Anda terjemahan artikel
"Bagaimana cara menggunakan statspack daripada awr dalam edisi standar oracle" .
Cara menggunakan STATSPACK bukannya AWR di Oracle Standard Edition.
Laporkan Masalah
Saya mengumpulkan data kinerja dalam database yang tidak dikenal.
Setelah saya menjalankan laporan AWR dengan menjalankan perintah
@?/Rdbms/admin/awrrpt.sql
Mendapat kesalahan:
WARNING (-20023) ORA-20023: Missing start and end values for time model stat: parse time elapsed WARNING (-20023) ORA-20023: Missing start and end values for time model stat: DB CPU WARNING (-20016) ORA-20016: Missing value for SGASTAT: free memory ...
Apakah ada kemungkinan paket diagnostik dinonaktifkan?
Mari kita lihat parameter CONTROL_MANAGEMENT_PACK_ACCESS.
SQL> show parameter control_management_pack_access NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ control_management_pack_access string NONE
Saya sedikit berhati-hati tentang nilai NONE. Karena Oracle Enterprise Edition menyertakan lisensi paket diagnostik, dan Standart Edition tidak, saya tidak punya hak untuk menggunakannya. Mari kita lihat informasi versi.
.SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Release 11.1.0.6.0 - 64bit Production PL/SQL Release 11.1.0.6.0 - Production CORE 11.1.0.6.0 Production TNS for 64-bit Windows: Version 11.1.0.6.0 - Production NLSRTL Version 11.1.0.6.0 - Production
Seperti yang dapat kita lihat, "Edisi Perusahaan" tidak muncul di konsol. Ini jelas merupakan Edisi Standar. Yah, setidaknya saya tahu bahwa saya tidak punya hak untuk menggunakannya.
Ketika saya melihat lagi pada direktori <ORACLE_HOME> / rdbms / admin, saya menemukan bahwa STATSPACK masih ada, yang merupakan alat pengumpulan data kinerja asli untuk database yang lebih lama dan sangat mirip dengan fungsi AWR. Yang terbaik dari semuanya, kita dapat menggunakan STATSPACK sebagai pengganti AWR dalam Edisi Standart tanpa batasan.
Instal STATSPACK
Setidaknya dua langkah harus diambil untuk membuat STATSPACK dengan tugas yang dijadwalkan.
1) Jalankan skrip spcreate.sql
Saya sarankan Anda pergi ke direktori <ORACLE_HOME> / rdbms / admin sebagai direktori kerja Anda saat ini, karena semua log akan tetap berada di direktori ini saat runtime.
Jalankan skrip:
SQL> @spcreate.sql;
Mari kita lihat apa yang kita miliki dalam skrip ini:
@@spcusr connect perfstat/&&perfstat_password @@spctab @@spcpkg
Ini membutuhkan 3 skrip SQL dasar untuk dijalankan.
spcusr.sql
- Ini akan membuat pengguna bernama PERFSTAT, tablespace default adalah SYSAUX, dan tablespace sementara adalah TEMP.
- Kedua ruang tabel dapat dikonfigurasi, tetapi sebelum menjalankan skrip ini, Anda harus memastikan bahwa ruang tabel ada di database Anda.
- Anda perlu mengingat kata sandi jika Anda ingin menjalankan beberapa rutinitas nanti
Dalam tabel spctab.sql, 71 tabel STATSPACK akan dibuat.
STATS$DATABASE_INSTANCE STATS$LEVEL_DESCRIPTION STATS$SNAPSHOT STATS$DB_CACHE_ADVICE STATS$FILESTATXS STATS$TEMPSTATXS STATS$LATCH STATS$LATCH_CHILDREN STATS$LATCH_PARENT STATS$LATCH_MISSES_SUMMARY STATS$LIBRARYCACHE STATS$BUFFER_POOL_STATISTICS STATS$ROLLSTAT STATS$ROWCACHE_SUMMARY STATS$SGA STATS$SGASTAT STATS$SYSSTAT STATS$SESSTAT STATS$SYSTEM_EVENT STATS$SESSION_EVENT STATS$WAITSTAT STATS$ENQUEUE_STATISTICS STATS$SQL_SUMMARY STATS$SQLTEXT STATS$SQL_STATISTICS STATS$RESOURCE_LIMIT STATS$DLM_MISC STATS$CR_BLOCK_SERVER STATS$CURRENT_BLOCK_SERVER STATS$INSTANCE_CACHE_TRANSFER STATS$UNDOSTAT STATS$SQL_PLAN_USAGE STATS$SQL_PLAN STATS$SEG_STAT STATS$SEG_STAT_OBJ STATS$PGASTAT STATS$PARAMETER STATS$INSTANCE_RECOVERY STATS$STATSPACK_PARAMETER STATS$SHARED_POOL_ADVICE STATS$SQL_WORKAREA_HISTOGRAM STATS$PGA_TARGET_ADVICE STATS$JAVA_POOL_ADVICE STATS$THREAD STATS$FILE_HISTOGRAM STATS$EVENT_HISTOGRAM STATS$TIME_MODEL_STATNAME STATS$SYS_TIME_MODEL STATS$SESS_TIME_MODEL STATS$STREAMS_CAPTURE STATS$STREAMS_APPLY_SUM STATS$PROPAGATION_SENDER STATS$PROPAGATION_RECEIVER STATS$BUFFERED_QUEUES STATS$BUFFERED_SUBSCRIBERS STATS$RULE_SET STATS$OSSTATNAME STATS$OSSTAT STATS$PROCESS_ROLLUP STATS$PROCESS_MEMORY_ROLLUP STATS$SGA_TARGET_ADVICE STATS$STREAMS_POOL_ADVICE STATS$MUTEX_SLEEP STATS$DYNAMIC_REMASTER_STATS STATS$IOSTAT_FUNCTION_NAME STATS$IOSTAT_FUNCTION STATS$MEMORY_TARGET_ADVICE STATS$MEMORY_DYNAMIC_COMPS STATS$MEMORY_RESIZE_OPS STATS$INTERCONNECT_PINGS STATS$IDLE_EVENT
spcpkg.sql
Ini akan membuat prosedur tersimpan STATSPACK yang diperlukan untuk PERFSTAT.
2. Jalankan skrip spauto.sql
Skrip ini akan mengirim tugas pada interval yang ditentukan (1 jam).
SQL> @spauto.sql;
Di mana ia menyajikan karya ini:
SQL> begin 2 select instance_number into :instno from v$instance; 3 dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno); 4 commit; 5 end; 6 /
Dan kemudian tunjukkan runtime berikutnya.
SQL> select job, next_date, next_sec 2 from user_jobs 3 where job = :jobno;
Lebih banyak pertimbangan
Untuk statistik yang lebih dalam, Anda perlu mengubah level snapshot ke 7 alih-alih level default 5.
SQL> exec statspack.snap(i_snap_level => 7, i_modify_parameter => 'true');
Perintah ini akan mengubah level snap ke 7 dan mengambil gambar pada saat yang bersamaan.