Cara menggunakan STATSPACK bukannya AWR di Oracle Standard Edition

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.

Source: https://habr.com/ru/post/id424235/


All Articles