sql >> Databáze >  >> RDS >> Oracle

Nejlepší užitečné dotazy AWR pro upgrade R12.2/R12.1

R12.1/R12.2 jsou docela velké a časově náročné upgrady. Abychom mohli vyřešit problémy s výkonem upgradu R12.2, potřebujeme najít všechny dlouhodobě běžící SQL. Protože každá iterace zabere spoustu času, je důležité, pokusili jsme se zjistit problémy s výkonem v menším počtu iterací a podle toho je opravit

Zde jsou Nejčastější dotazy týkající se AWR k řešení problémů s výkonem upgradu R12.2

Pokud je SQL stále v paměti (mezipaměť kurzoru), následující lze použít k identifikaci dlouho běžících SQL, které možná ještě nebyly zapsány do AWR (na poslední snímek)

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_read_read 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) spuštění, SUM(ss_time)application_wasit ss.sharable_mem) sharable_mem, SUM(ss.total_sharable_mem) total_sharable_mem FROM v$sqlstats ss GROUP BY ss.sql_id ORDER BY 2 DESC) WHERE ROWNUM <=100;

Následující skript SQL bude hlásit nejdelší běh SQL mezi dvěma snímky 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_stadi_secs.discs. 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) spuštění, ROUND(SUM),0_deltaio, ROUND(SUM), 0_deltaioaOUNDSUM00 (dhs.clwait_delta/1000000),0) clwait_secs, ROUND(SUM(dhs.ccwait_delta/1000000),0) ccwait_secs, ROUND(SUM(dhs.apwait_delta/1000000),0) apsl$dbait_ist_secv$dwait_ist_secv $dwait_ist_secv$dwait_ist_0 dhs.dbid =d.dbid AND snap_id> &begin_snap a snap_id <=&end_snap GROUP BY dhs.sql_id ORDER BY 2 DESC) WHERE ROWNUM <=100;

Kde &begin_snap a &end_snap jsou počáteční a koncové ID snímku.
Výstup tohoto příkazu bude vypadat podobně jako následující:

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

Poznámka:Uplynulý čas je maximální uplynulý čas pro všechny pracovníky zakázky.

Enterprise Manager lze také použít k identifikaci drahých SQL, jak se vyskytují.

Získejte přehled zobrazení kurzoru pro dlouhotrvající SQL

Pro toto  STATISTICS_LEVEL=ALL a _rowsource_execution_statistics =TRUE. Mělo by být spuštěno bez jakéhokoli zpoždění, abyste získali všechny informace, protože jinak budou tyto informace vymazány z SGA

SET stránek 0 SET řádků 300 SET LONG 10000SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_cursor('', NULL, 'ALL +ALLSTATS')); CÍVKA VYPNUTA; 

Pokud SQL již není v paměti, ale je v AWR, použijte místo toho Display AWR report:

SET stránek 0 SET řádků 300 SET LONG 10000 SET LONGCHUNKSIZE 10000 SPOOL .txt SELECT * FROM TABLE(dbms_xplan.display_awr('', NULL, NULL, 'ALL')); CÍVKA VYPNUTA; 

Poznámka:Uvědomte si, že přehled Display AWR (DBMS_XPLAN.DISPLAY_AWR) nevykazuje skutečné hodnoty:nemá možnost +ALLSTATS a v AWR nejsou uloženy žádné skutečné statistiky pro kroky plánu provádění

Důležitá poznámka:zobrazení kurzoru a zprávy AWR zobrazují pouze sql_text (prvních 1000 znaků), nikoli sql_fulltext. V případě potřeby tedy spusťte následující skript SQL, abyste získali úplný text SQL

SET stránek 0 SET řádků 300 SET LONG 10000 SET LONGCHUNKSIZE 10000 SPOOL.txt SELECT sql_id, sql_text, sql_fulltext FROM v$SQL WHERE sql_id =''; CÍVKA VYPNUTA; 

Získejte zprávu SQL Monitor pro SQL pomocí Parallel Query/DML

Hlavní výhodou toho je, že poskytuje dobrý přehled o tom, jak funguje paralelní SQL/DML ve fázích plánu a paralelní podřízené jednotky

nastavit trimspool na set trim na set stránky 0 set long 10000000 set long chunksize 10000000 set line size 200 set termout off spool sql_monitor_for_.htm variable my_rept CLOB; BEGIN :my_rept :=dbms_sqltune.report_sql_monitor(sql_id => '', úroveň_přehledu => 'VŠECHNY', typ => 'HTML'); KONEC; / print :my_rept cívka vypnuta; nastavit termout na

Kde &begin_snap a &end_snap a jsou počáteční a koncové ID snímku.

Jak zjistit, kdy se konkrétní sql spustil

SELECT 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,istvd r &end_snap GROUP BY dhs.sql_id, dsn.snap_id, dsn.begin_interval_time, dsn.end_interval_time ORDER BY dsn.snap_id;

Kde &begin_snap a &end_snap jsou počáteční a koncové ID snímku.
Výstup tohoto příkazu bude vypadat podobně jako následující:

sql_id snap_id začátek_interval_time end_interval_time inspased_time_secs 2k3uw8n473r30 8278 04-jan-13 23,00279 05131313.150131313.150301313015.00, 130, 1350.

Jak najít statistiky CBO na 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 horní(uživatelské_jméno_oracle) jméno FROM fnd_oracle_userid WHERE oracle_only_id BETWE9 ANDEN read oracle_only_id BETWE ='U' UNION ALL SELECT DISTINCT horní(uživatelské_jméno_oracle) jméno FROM fnd_oracle_userrid a,fnd_product_installations b WHERE a.oracle_id =b.oracle_id ) ORDER BY vlastník, název_tabulky; 

Výstup tohoto příkazu bude vypadat podobně jako následující:

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_RU:2EC-2016 08:46:33 ABM ABM_ACT_ACC_RU_DAT:06 

Jak získat přehledy AWR po upgradu

Přehledy AWR  je možné získat za
• Za celé období, po které upgrade běží.
• Po dobu trvání dlouhotrvajících úloh (tj. mezi snímky pořízenými těsně před zahájením úlohy a těsně po jejím dokončení) .
• Každý jednotlivý snímek.

Jak generovat zprávy AWR
(1) Přejděte na $ORACLE_HOME/rdbms/admin
(2) Spusťte awrrpt.sql a vygenerujte zprávy AWR.
(3) Vždy vyberte typ zprávy HTML.
(4) Na instanci Oracle RAC obvykle postačí awrrpti.sql, protože upgrade bude spuštěn pouze na jednom uzlu Oracle RAC.
Zprávy AWR lze automatizovat. To je užitečné při vytváření velkého počtu zpráv AWR, zejména pro následné snímky. Viz část „Automation AWR Reports“ v dokumentu Moje podpora Oracle „Diagnostika výkonu s automatickým úložištěm pracovní zátěže (dokument 1674086.1)“.
Všimněte si, že některé pevné objekty a objekty slovníku (zejména WRH$_LATCH_CHILDREN, zvláště pokud je úroveň statistiky =ALL, nebo existuje dlouhá doba uchování nebo krátký interval snímků) během upgradu výrazně narostou. Před spuštěním AWR tedy může být nutné shromáždit pevné statistiky objektů a slovníků.

Související články

Automatické úložiště zátěže
Oracle ASH (Historie aktivních relací)
Ladění výkonu Oracle
Jak vytvořit úlohu ADDM a zkontrolovat její zprávu
Jak najít podrobnosti o relaci v databázi Oracle


  1. Pomocí kroku Unpivot Step vytvořte tabulkovou tabulku z křížové tabulky

  2. Převeďte postgresové zobrazení data na řetězec ISO 8601

  3. PostgreSQL, překonfigurujte existující tabulku, změňte primární klíč na typ=serial

  4. Postgresql:Připojení odmítnuto. Zkontrolujte, že název hostitele a port jsou správné a že správce pošty přijímá připojení TCP/IP