Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kueri berguna AWR teratas untuk Peningkatan R12.2/R12.1

R12.1/R12.2 cukup besar  dan pemutakhiran yang memakan waktu. Kami perlu menemukan semua sql yang berjalan lama untuk menyelesaikan masalah kinerja peningkatan versi R12.2. Karena setiap iterasi membutuhkan banyak waktu, itu penting, kami mencoba mencari tahu masalah kinerja dalam iterasi yang lebih sedikit dan memperbaikinya sesuai

Berikut adalah kueri berguna AWR teratas untuk memecahkan masalah kinerja peningkatan versi R12.2

Jika SQL masih dalam memori (cache kursor), berikut ini dapat digunakan untuk mengidentifikasi SQL yang berjalan lama yang mungkin belum ditulis ke AWR (pada snapshot terakhir)

SELECT * FROM (SELECT ss.sql_id, ROUND(SUM(ss.elapsed_time/1000000),0) elapsed_time_secs, ROUND(SUM(ss.cpu_time/1000000),0) cpu_time_secs, SUM(ss.disk_reads) disk_reads, SUM(ss.direct_writes) direct_writes, SUM(ss.buffer_gets) buffer_gets, SUM(ss.px_servers_executions) px_server_execs, SUM(ss.rows_processed) rows_processed, SUM(ss.executions) eksekusi, SUM(ss.application_application_ ss.sharable_mem) sharable_mem, SUM(ss.total_sharable_mem) total_sharable_mem DARI v$sqlstats ss GROUP MENURUT ss.sql_id ORDER BY 2 DESC) WHERE ROWNUM <=100;

Skrip SQL berikut akan melaporkan SQL yang paling lama berjalan di antara dua snapshot AWR

SELECT * FROM (SELECT dhs.sql_id, ROUND(SUM(dhs.elapsed_time_delta/1000000),0) elapsed_time_secs, ROUND(SUM(dhs.cpu_time_delta/1000000),0) cpu_time_secs, SUM(dhs.disk_reads_delta) disk_reads SUM(dhs.buffer_gets_delta) buffer_gets, SUM(dhs.px_servers_execs_delta) px_server_execs, SUM(dhs.rows_processed_delta) rows_processed, SUM(dhs.executions_delta) eksekusi, ROUND(SUM(dhs.iowait_deltaio) (dhs.clwait_delta/100000),0) clwait_secs, ROUND(SUM(dhs.ccwait_delta/100000),0) ccwait_secs, ROUND(SUM(dhs.apwait_delta/1000000),0) apwait_secs DARI dba_hist_sqlstat dhs , dhs.dbid =d.dbid DAN snap_id> &begin_snap dan snap_id <=&end_snap KELOMPOK MENURUT dhs.sql_id ORDER OLEH 2 DESC) WHERE ROWNUM <=100;

Dimana &begin_snap dan &end_snap adalah ID snapshot awal dan akhir.
Output dari pernyataan ini akan terlihat seperti berikut:

SQL_ID ELAPSED_TIME_SECS CPU_TIME_SECS DISK_READS BUFFER_GETS…. ------------- ----------------- --------------- ----- ----- ----------- …. 5vaxut40xbrmr 367440 42999 34838244 3795838289 …. 943ra4b7zg28x 264369 170788 441127 562033013 …. fkkrk9frwqfdr 70370 6448 3599284 469639133 …. 4847s6dt6sds9 68298 38896 7125573 1327384554 …. 2k3uw8n473r30 63600 27402 20043712 587615960 ….

Catatan:Waktu yang telah berlalu adalah waktu maksimum yang telah berlalu untuk semua pekerja dari suatu pekerjaan.

Enterprise Manager juga dapat digunakan untuk mengidentifikasi SQL yang mahal saat itu terjadi.

Dapatkan Laporan Kursor Tampilan untuk SQL yang Berjalan Lama

Untuk  STATISTICS_LEVEL=ALL dan _rowsource_execution_statistics =TRUE ini. Ini harus dijalankan tanpa  penundaan untuk mendapatkan semua informasi karena jika tidak, informasi ini akan dihapus dari SGA

SET halaman 0 SET baris 300 SET PANJANG 10000SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_cursor('', NULL, 'ALL +ALLSTATS')); SULIT MATI; 

Jika SQL tidak lagi ada di memori, tetapi ada di AWR, gunakan laporan Tampilkan AWR sebagai gantinya:

SET halaman 0 SET baris 300 SET PANJANG 10000 SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_awr('', NULL, NULL, 'ALL')); SULIT MATI; 

Catatan:Ketahuilah bahwa laporan AWR Tampilan (DBMS_XPLAN.DISPLAY_AWR) tidak melaporkan aktual:tidak memiliki opsi +ALLSTATS, dan tidak ada statistik aktual untuk langkah rencana eksekusi yang disimpan di AWR

Catatan Penting:kursor tampilan dan laporan AWR hanya menampilkan sql_text (1000 karakter pertama) dan bukan sql_fulltext. Jadi, jika perlu, jalankan skrip SQL berikut untuk mendapatkan teks SQL lengkap

SET halaman 0 SET baris 300 SET PANJANG 10000 SET LONGCHUNKSIZE 10000 SPOOL.txt SELECT sql_id, sql_text, sql_fulltext FROM v$SQL WHERE sql_id =''; SULIT MATI; 

Dapatkan Laporan Monitor SQL untuk SQL Menggunakan Parallel Query/DML

Keuntungan utama dari ini adalah memberikan pandangan yang baik tentang bagaimana kinerja SQL/DML paralel di seluruh tahapan rencana dan slave paralel

mengatur trimspool pada set trim pada halaman set 0 set panjang 10000000 set panjang chunksize 10000000 set linessize 200 set termout off spool sql_monitor_for_.htm variabel my_rept CLOB; BEGIN :my_rept :=dbms_sqltune.report_sql_monitor(sql_id => '', report_level => 'ALL', ketik => 'HTML'); AKHIR; / print :spool my_rept mati; atur termout pada 

Di mana &begin_snap dan &end_snap serta merupakan ID snapshot awal dan akhir.

Cara mengetahui kapan sql tertentu dijalankan

PILIH dhs.sql_id, dsn.snap_id, dsn.begin_interval_time, dsn.end_interval_time, ROUND(SUM(dhs.elapsed_time_delta/1000000),0) elapsed_time_secs DARI dba_hist_sqlstat dhs ,v$ d.dbid AND dsn.snap_id =dhs.snap_id AND dsn.dbid =dhs.dbid AND dsn.instance_number =dhs.instance_number AND dhs.sql_id ='' AND dsn.snap_id> &begin_snap &end_snap KELOMPOK MENURUT dhs.sql_id, dsn.snap_id, dsn.begin_interval_time, dsn.end_interval_time ORDER OLEH dsn.snap_id;

Dimana &begin_snap dan &end_snap adalah ID snapshot awal dan akhir.
Output dari pernyataan ini akan terlihat seperti berikut:

SQL_ID SNAP_ID BEGIN_INTERVAL_TIME END_INTERVAL_TIME ELAPSED_TIME_SECS 2k3uw8n473r30 8278 04-JAN-13 23.00.25.5560 05-JAN-13 00.00.21.1620 23123 2k3uw8n473r30 8279 00.005-JAN>377 

Cara menemukan statistik CBO di Ebiz Environment

SELECT owner, table_name, num_rows, TO_CHAR(last_analyzed,'DD-MON-YYYY HH24:MI:SS') last_analyzed FROM all_tables WHERE owner IN (SELECT atas(oracle_username) sname FROM fnd_Oracle_userid WHERE oracle_id ANTARA 999 DAN read_only ='U' UNION ALL SELECT DISTINCT upper(Oracle_username) sname DARI fnd_Oracle_userid a,fnd_product_installations b WHERE a.Oracle_id =b.oracle_id ) ORDER BY owner, table_name; 

Output dari pernyataan ini akan terlihat seperti berikut:

PEMILIK TABLE_NAME NUM_ROWS TERAKHIR_ANALISIS ----------- ---------- --------------------- --- ABM ABM_ACC_MAP_SUM_REP 0 06-DES-2016 08:46:33 ABM ABM_ACT_ACC_RU_DAT 0 06-DEC-2016 08:46:35 ABM ABM_ACT_STA_RU_DAT 0 06-DEC-2016 08:46:36

Cara mendapatkan laporan AWR setelah peningkatan versi

Laporan AWR  dapat diperoleh untuk
• Seluruh periode saat pemutakhiran berjalan.
• Selama durasi pekerjaan yang berjalan lama (yaitu antara snapshot yang diambil sesaat sebelum pekerjaan dimulai dan setelah selesai) .
• Setiap snapshot individu.

Cara membuat laporan AWR
(1) Buka $ORACLE_HOME/rdbms/admin
(2) Jalankan awrrpt.sql buat laporan AWR.
(3) Selalu pilih jenis laporan HTML.
(4) Pada instans Oracle RAC, awrrpti.sql biasanya sudah cukup, karena upgrade akan dijalankan hanya pada satu node Oracle RAC.
Laporan AWR dapat diotomatisasi. Ini berguna jika menghasilkan sejumlah besar laporan AWR, terutama untuk snapshot yang berurutan. Lihat bagian “Mengotomatiskan Laporan AWR” dalam dokumen Dukungan Oracle Saya “Diagnosis Kinerja dengan Repositori Beban Kerja Otomatis (Dokumen 1674086.1)”.
Perhatikan bahwa beberapa objek tetap dan objek kamus (terutama WRH$_LATCH_CHILDREN, terutama jika statistik_level =ALL, atau ada periode retensi tinggi atau interval snapshot pendek) akan meningkat secara signifikan selama pemutakhiran. Jadi, objek tetap dan statistik kamus mungkin perlu dikumpulkan sebelum menjalankan AWR.

Artikel Terkait

Repositori Beban Kerja Otomatis
Oracle ASH(Active Session History)
Oracle Performance Tuning
Cara membuat tugas ADDM dan memeriksa laporannya
Cara menemukan detail sesi di database Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan hasil dari prosedur tersimpan Oracle

  2. Apakah mungkin untuk melewatkan nama tabel sebagai parameter di Oracle?

  3. Perlu mengatur ulang nilai urutan di Oracle

  4. Data Kueri dari XML

  5. Hal-hal yang harus Anda ketahui tentang Tabel FND_LOBS di Aplikasi Oracle