Oracle
 sql >> база данни >  >> RDS >> Oracle

Най-полезните заявки на AWR за надстройка на R12.2/R12.1

R12.1/R12.2 са доста големи и отнемащи време надстройка. Трябва да намерим целия дълго работещ sql, за да разрешим проблемите с производителността на  R12.2 надстройката. Тъй като всяка итерация отнема много време, важно е, ние се опитахме да открием проблемите с производителността на по-малко повторения и да ги коригираме съответно

Ето Водещи полезни заявки за AWR за решаване на проблеми с производителността на надстройката R12.2

Ако SQL все още е в паметта (кеш на курсора), следното може да се използва за идентифициране на дълго работещи SQL, които може да не са били записани в AWR все още (последната моментна снимка)

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(s.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) application(ss.executions) executions,swaswait ss.sharable_mem) sharable_mem, SUM(ss.total_sharable_mem) total_sharable_mem ОТ v$sqlstats ss GROUP BY ss.sql_id ORDER BY 2 DESC) WHERE ROWNUM <=100;

Следният SQL скрипт ще отчете най-дълго изпълнявания SQL между две 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_reads_delta, SUM_sechs_reads, SUM_secs_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) изпълнения, ROUNs. (dhs.clwait_delta/1000000),0) clwait_secs, ROUND(SUM(dhs.ccwait_delta/1000000),0) ccwait_secs, ROUND(SUM(dhs.apwait_delta/1000000_),0) FROM(SUM(dhs.ccwait_delta/1000000),0) ccwait_secs, ROUND(SUM(dhs.apwait_delta/1000000_),0) SUM(dhs. dhs.dbid =d.dbid И snap_id> &begin_snap и snap_id <=&end_snap ГРУПА ПО dhs.sql_id ПОРЪЧАЙТЕ ПО 2 DESC) WHERE ROWNUM <=100;

Където &begin_snap и &end_snap са началните и крайните идентификатори на моментна снимка.
Резултатът от това изявление ще изглежда подобно на следното:

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 ….

Забележка:Изминалото време е максималното изминало време за всички работници на дадена работа.

Enterprise Manager може да се използва и за идентифициране на скъп SQL, когато се появи.

Получете отчет за показване на курсора за продължителен SQL

За това  STATISTICS_LEVEL=ALL и _rowsource_execution_statistics =TRUE. Трябва да се изпълнява без  закъснение, за да се получи цялата информация, тъй като в противен случай тази информация ще бъде изтрита от SGA

SET pages 0 SET lines 300 SET LONG 10000SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_cursor('', NULL, 'ALL +ALLSTATS')); SPOOL OFF; 

Ако SQL вече не е в паметта, но е в AWR, използвайте вместо това отчета Display AWR:

SET pages 0 SET lines 300 SET LONG 10000 SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_awr('', NULL, NULL, 'ALL')); SPOOL OFF; 

Забележка:Имайте предвид, че отчетът за показване на AWR (DBMS_XPLAN.DISPLAY_AWR) не отчита действителни данни:той няма опция +ALLSTATS и няма действителни статистически данни за стъпките на плана за изпълнение, съхранявани в AWR

Важна забележка:дисплейният курсор и отчетите AWR показват само sql_text (първите 1000 знака), а не sql_fulltext. Така че, ако е необходимо, изпълнете следния SQL скрипт, за да получите пълния текст на SQL

SET pages 0 SET lines 300 SET LONG 10000 SET LONGCHUNKSIZE 10000 SPOOL.txt SELECT sql_id, sql_text, sql_fulltext FROM v$SQL WHERE sql_id_id '<>'; SPOOL OFF; 

Получете отчет за монитор на SQL за SQL с помощта на паралелна заявка/DML

Основното предимство на това е, че дава добра представа за това как паралелният SQL/DML работи на етапите на плана и паралелните подчинени устройства

задайте тримпула при зададено подстригване на зададени страници 0 задайте дълги 10000000 задайте дълги chunksize 10000000 задайте размер на линията 200 задайте termout изключен макара sql_monitor_for_.htm променлива my_rept CLOB; BEGIN :my_rept :=dbms_sqltune.report_sql_monitor(sql_id => '', report_level => 'ВСИЧКИ', type => 'HTML'); КРАЙ; / print :my_rept spool off; задайте термоут на 

Където &begin_snap и &end_snap и са началните и крайните идентификатори на моментната снимка.

Как да разберете кога се е изпълнил конкретният sql

ИЗБЕРЕТЕ 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 FROM dba_hist_sqlv dba_hist_sqlv dba_hist_sqlvd d.dbid И dsn.snap_id =dhs.snap_id И dsn.dbid =dhs.dbid И dsn.instance_number =dhs.instance_number И dhs.sql_id ='' И dsn.snap_id. &end_snap GROUP BY dhs.sql_id, dsn.snap_id, dsn.begin_interval_time, dsn.end_interval_time ПОРЪЧАЙ ПО dsn.snap_id;

Където &begin_snap и &end_snap са началните и крайните идентификатори на моментна снимка.
Изходът от това изявление ще изглежда подобно на следното:

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 05-JAN-13 00.00.21.1620 05-JAN-13 01.00.38.2680 37145

Как да намерите статистическите данни за CBO в Ebiz Environment

ИЗБЕРЕТЕ собственик, име_на_таблица, брой_редове, TO_CHAR(last_analyzed,'DD-MON-YYYY HH24:MI:SS') последно_анализирано ОТ всички_таблици WHERE собственик В (ИЗБЕРЕТЕ горно(oracle_username) sname FROM fnd_oracle_userid WHERE_ORAcle_userid WHERE_WEENANDg read_9 0_WEENANDg read_9 ='U' UNION ALL SELECT DISTINCT upper(oracle_username) sname FROM fnd_oracle_userid a,fnd_product_installations b WHERE a.oracle_id =b.oracle_id ) ORDER BY owner, table_name; 

Резултатът от това изявление ще изглежда подобно на следното:

OWNER TABLE_NAME NUM_ROWS LAST_ANALYZED --- --------- ---------- --------------------- --- ABM ABM_ACC_MAP_SUM_REP 0 06-DEC-2016 08:46:33 ABM ABM_ACT_ACC_RU_DAT 0 06-DEC-2016 08:46:35 ABM ABM_ACT_STA_C-2:06-D:40-6 

Как да получите отчетите за AWR след надстройката

Отчетите за AWR могат да бъдат получени за
• целия период, през който се изпълнява надстройката.
• За продължителността на продължителни задачи (т.е. между моментните снимки, направени непосредствено преди стартирането на заданието и непосредствено след неговото приключване) .
• Всяка отделна моментна снимка.

Как да генерирате AWR отчетите
(1) Отидете на $ORACLE_HOME/rdbms/admin
(2) Изпълнете awrrpt.sql, генерирайте AWR отчетите.
(3) Винаги избирайте HTML тип отчет.
(4) На екземпляр на Oracle RAC, awrrpti.sql обикновено е достатъчен, тъй като надстройката ще се изпълнява само на един Oracle RAC възел.
Отчетите за AWR могат да бъдат автоматизирани. Това е полезно, ако създавате голям брой AWR отчети, особено за последователни моментни снимки. Вижте секцията „Автоматизиране на отчетите за AWR“ в документа за моята поддръжка на Oracle „Диагностика на производителността с автоматично хранилище за работно натоварване (Документ 1674086.1)“.
Обърнете внимание, че някои фиксирани обекти и речникови обекти (особено WRH$_LATCH_CHILDREN, особено ако ALL statistics_level или има висок период на задържане или кратък интервал на моментна снимка) ще нарасне значително по време на надстройката. Така че може да се наложи да се съберат статистически данни за фиксирани обекти и речник, преди да се стартират AWR.

Сродни статии

Автоматично хранилище за работно натоварване
Oracle ASH(Активна история на сесиите)
Настройка на производителността на Oracle
Как да създадете ADDM задача и да проверите нейния отчет
Как да намерите подробности за сесията в базата данни на 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. ORA-01017 Невалидно потребителско име/парола при свързване към 11g база данни от 9i клиент

  2. Генериране на дати между две дати

  3. Страхотни 24 въпроса за интервю за едновременен мениджър

  4. Функция POWER() в Oracle

  5. Курсор на Oracle за присвояване