Oracle 11g DBA Performance Tuning Distribuito tramite il sito www.manualioracle.it Copyright © 2012 Assi Loris Qualsiasi abuso sarà perseguito e punito secondo i termini di legge. Version: 6.2 Alcuni termini usati sono trademarks registrati dei rispettivi proprietari. 11g__Performance_Tuning Sommario Introduzione al Manuale ............................................................................................................................................... 4 Cap. 1 – INTRODUZIONE al PERFORMANCE TUNING .................................................................................... 5 1.1 – Primi Concetti riguardo al Tuning Oracle .................................................................................................... 5 1.2 – Review dell’Architettura Oracle.................................................................. Error! Bookmark not defined. 1.3 – Strutture di memoria Oracle ........................................................................ Error! Bookmark not defined. Cap. 2 – FONTI della TUNING INFORMATION (1^ parte)....................................... Error! Bookmark not defined. 2.1 – L’Automatic Diagnostic Repository (ADR)................................................................................................. 6 2.2 – Alert e Trace Files ....................................................................................... Error! Bookmark not defined. 2.3 – Performance Tuning Views ......................................................................... Error! Bookmark not defined. Cap. 3 – FONTI della TUNING INFORMATION (2^ parte)....................................... Error! Bookmark not defined. 3.1 – Collecting Performance Statistics (AWR and ASH) .................................................................................... 7 3.2 – Come usare l’AWR ..................................................................................... Error! Bookmark not defined. 3.3 – Gli AWR baseline template ......................................................................... Error! Bookmark not defined. 3.4 – Settare le metric Thresholds per le AWR baseline ...................................... Error! Bookmark not defined. 3.5 – Diagnosing Performance Statistics: ADDM ................................................ Error! Bookmark not defined. 3.6 – Diagnosing Performance Statistics: Server-generated alerts ....................... Error! Bookmark not defined. 3.7 – Come usare l’ ADDM ................................................................................. Error! Bookmark not defined. 3.8 – Le directives dell’ADDM ............................................................................ Error! Bookmark not defined. 3.9 – Automated Maintenance Tasks ................................................................... Error! Bookmark not defined. Cap. 4 – SQL Tuning ........................................................................................................ Error! Bookmark not defined. 4.1 – Il TKPROF : Introduzione ............................................................................................................................ 8 4.2 – L’ Explain Plan : Introduzione .................................................................... Error! Bookmark not defined. 4.3 – L’ Explain Plan : Come interpretarlo .......................................................... Error! Bookmark not defined. 4.4 – L’ Optimizer ................................................................................................ Error! Bookmark not defined. 4.5 – Il parametro CURSOR_SHARING ............................................................. Error! Bookmark not defined. Cap. 5 – Tuning della SHARED Pool .............................................................................. Error! Bookmark not defined. 5.1 – Hard Parse e Soft Parse ............................................................................... Error! Bookmark not defined. 5.2 – La Shared Pool ............................................................................................ Error! Bookmark not defined. 5.3 – Misurare le Performance della Shared Pool ................................................ Error! Bookmark not defined. 5.4 – Migliorare le Performance della Shared Pool.............................................. Error! Bookmark not defined. 5.5 – Query Result Cache ..................................................................................... Error! Bookmark not defined. 5.6 – OCI Client Query Cache ............................................................................. Error! Bookmark not defined. 5.7 – PL/SQL Result Cache ................................................................................. Error! Bookmark not defined. Cap. 6 – Tuning della Database Buffer Cache ................................................................ Error! Bookmark not defined. 6.1 – La DB Buffer Cache .................................................................................... Error! Bookmark not defined. 6.2 – Misurare le Performance della DB Buffer Cache ........................................ Error! Bookmark not defined. 6.3 – Migliorare le Performance della DB Buffer Cache ..................................... Error! Bookmark not defined. 6.4 – Setup dell’Automatic Memory Management (AMM) ................................. Error! Bookmark not defined. Cap. 7 – Tuning del Redo Log Buffer .............................................................................. Error! Bookmark not defined. 7.1 – Il Redo Log Buffer ...................................................................................... Error! Bookmark not defined. 7.2 – Misurare le Performance del Redo Log Buffer ........................................... Error! Bookmark not defined. 7.3 – Migliorare le Performance del Redo Log Buffer ......................................... Error! Bookmark not defined. Cap. 8 – Tuning dell’ I/O Fisico ....................................................................................... Error! Bookmark not defined. 8.1 – I/O Operations ............................................................................................. Error! Bookmark not defined. 8.2 – Introduzione alle I/O calibrations ................................................................ Error! Bookmark not defined. 8.3 – Performance Tuning dell’I/O sul Datafile ................................................... Error! Bookmark not defined. 8.4 – Tuning del DBW0 ....................................................................................... Error! Bookmark not defined. 8.5 – Tuning del Segment Block I/O : Automatic Segment-Space Management (ASSM) Error! Bookmark not defined. 8.6 – Tuning del Segment Block I/O : altre considerazioni ................................. Error! Bookmark not defined. 8.7 – Tuning dei Redo Log, LGWR I/O, Archiving e ARC0 ............................... Error! Bookmark not defined. 8.8 – Tuning del Sort I/O ..................................................................................... Error! Bookmark not defined. 8.9 – Tuning del Rollback Segment I/O ............................................................... Error! Bookmark not defined. Cap. 9 – Tuning Contention ............................................................................................. Error! Bookmark not defined. 9.1 – Latch Contention ......................................................................................... Error! Bookmark not defined. 9.2 – DML e DDL Lock Contention .................................................................... Error! Bookmark not defined. 9.3 – Waits relativi alla gestione dei Cursori (mutex, pin S wait on X, ecc…) .... Error! Bookmark not defined. 9.4 – Free List Contention .................................................................................... Error! Bookmark not defined. 2 www.manualioracle.it 11g__Performance_Tuning 9.5 – Parametro DDL_LOCK_TIMEOUT........................................................... Error! Bookmark not defined. Cap. 10 – Raccolta Statistiche .......................................................................................... Error! Bookmark not defined. 10.1 – Statistiche .................................................................................................. Error! Bookmark not defined. 10.2 – DBMS_STATS ......................................................................................... Error! Bookmark not defined. 10.3 – Raccolta automatica delle Optimizer Statistics ......................................... Error! Bookmark not defined. 10.4 – Raccolta delle Data Dictionary statistics ................................................... Error! Bookmark not defined. 10.5 – Raccolta delle System statistics ................................................................. Error! Bookmark not defined. Cap. 11 – Space Management .......................................................................................... Error! Bookmark not defined. 11.1 – Segment Shrink ......................................................................................... Error! Bookmark not defined. 11.2 – Segment Advisor ....................................................................................... Error! Bookmark not defined. 11.3 – Undo Advisor and Redo Logfile Size Advisor .......................................... Error! Bookmark not defined. Cap. 12 – SQL Plans Baseline .......................................................................................... Error! Bookmark not defined. 12.1 – Architettura dell’SQL Plan Baseline ......................................................... Error! Bookmark not defined. 12.2 – Settare un SQL Plan Baseline.................................................................... Error! Bookmark not defined. 12.3 – I SQL Plan Attributes ................................................................................ Error! Bookmark not defined. 12.4 – Evoluzione dell’SQL Baseline .................................................................. Error! Bookmark not defined. 12.5 – Esempi ....................................................................................................... Error! Bookmark not defined. 12.6 – Quando usare un SQL Plan Baseline ......................................................... Error! Bookmark not defined. 12.7 – Gestione dello Spazio nell’SQL Management Base (SMB) ...................... Error! Bookmark not defined. Cap. 13 – Real Application Testing (RAT): Database Replay (DBR) ........................... Error! Bookmark not defined. 13.1 – Overview del Workload Capture and Replay ............................................ Error! Bookmark not defined. 13.2 – Workload Capture dal Sistema Source ...................................................... Error! Bookmark not defined. 13.3 – Workload PreProcessing, Replay and Report ............................................ Error! Bookmark not defined. 13.4 – Viste di dizionario relative alla Database Replay ...................................... Error! Bookmark not defined. Cap. 14 – SQL Performance Analyzer (SPA) ................................................................ Error! Bookmark not defined. 14.1 – Overview dell’SQL Performance Analyzer .............................................. Error! Bookmark not defined. 14.2 – Uso dell’SQL Performance Analyzer ........................................................ Error! Bookmark not defined. Cap. 15 – Miscellaneous .................................................................................................... Error! Bookmark not defined. 15.1 – Introduzione al Partizionamento................................................................ Error! Bookmark not defined. 15.2 – Index monitoring e Table monitoring ........................................................ Error! Bookmark not defined. 15.3 – Oracle Database Resource Manager .......................................................... Error! Bookmark not defined. 15.4 – Introduzione agli Advisor .......................................................................... Error! Bookmark not defined. 15.5 – Il CONTROL_MANAGEMENT_PACK_ACCESS Initialization Parameter ........ Error! Bookmark not defined. www.manualioracle.it 3 11g__Performance_Tuning Introduzione al Manuale Contenuto Il presente manuale tratta il Performance & Tuning in Oracle 11.2. Audience Il presente manuale è rivolto a chiunque voglia avere una conoscenza specifica del tema di Performance & Tuning (dunque le tecniche per velocizzare un db, un codice SQL e un workload in Oracle), avendo già una conoscenza base dell’architettura di Oracle 11g. Particolarità Il presente manuale è in italiano ma molti termini tecnici in esso contenuti sono in lingua inglese. Abbiamo fatto tale scelta perché spesso a lavoro tali termini vengono detti in inglese e perché riteniamo più utile che i lettori del manuale conoscano tali termini nella lingua usata nella documentazione ufficiale Oracle. Molti argomenti sono schematizzati al fine di fornire una comprensione ed una memorizzazione superiore. A volte quando nel manuale si parla di una feature particolare, citiamo anche la versione Oracle in cui tale feature è stata creata. Alcune abbreviazioni usate: !!! : Attenzione CBO : Cost-Based Optimizer FTS : Full Table Scan HW : hardware HWM : High Water Mark OS o O.S.: Sistema Operativo SW : software TAF : Table Access Full db : database init parameter : initialization parameter (contenuto nell’init file o nell’spfile) loccare : mettere un lock stats : statistiche tunare : fare il tuning Principali Versioni - 02.10.2012 : version 1.0 03.10.2012 : version 1.1 varie modifiche e rilascio al pubblico 15.02.2015 : version 3.0 varie modifiche 24.11.2015 : version 5.2 varie modifiche 09.03.2017 : version 6.0 varie modifiche Disclaimer Non si fornisce alcuna garanzia relativamente al fatto che il presente documento sia privo di errori. Non si assume nessuna responsabilità sugli eventuali errori o danni derivanti dall’uso delle informazioni qui contenute. 4 www.manualioracle.it 11g__Performance_Tuning Cap. 1 – INTRODUZIONE al PERFORMANCE TUNING 1.1 – Primi Concetti riguardo al Tuning Oracle Per riuscire a fare il tuning di un db bisogna capire come Oracle processa gli SQL statement e come interagisce con il Sistema Operativo e con l’Hardware del server. Quando bisogna ottimizzare un sistema, bisognerebbe seguire questo ordine di priorità: Step 1: Tuning del Data Design (ossia fare un corretto disegno del db) Step 2: Tuning dell’Application (db operations e access path: ad es. vanno evitati grossi Full Table Scan) Step 3: Tuning della Memoria (shared pool, db buffer cache, redo log buffer, pga, …) Step 4: Tuning dell’I/O e delle Strutture fisiche Step 5: Tuning della contesa Step 6: Tuning del Sistema Operativo Gli step che vanno fra il 2 e il 6 saranno ampiamente discussi in questo manuale. Mentre riguardo al Data Design (step 1) possiamo dire che se un db è disegnato nel modo opportuno: - potrà contenere tante informazioni pur non avendo un grosso Hardware (si parla di db con dati “normalizzati”) - potrà venire aggiornato in modo semplice e veloce - potrà restituire i dati efficientemente (anche aiutandosi con tabelle “denormalizzate”) Dunque per poter fare un buon disegno del db bisogna utilizzare adeguatamente i concetti di normalizzazione e denomalizzazione. Nell’ultimo capitolo faremo dei cenni su tali concetti. Ogni Server Oracle è limitato dalla disponibilità di 3 risorse chiave: - CPU: Il tuning della Oracle memory e della I/O activity darà pochi benefit se il processore del server è già sovraccarico (overburdened). .............. .............. .............. www.manualioracle.it 5 11g__Performance_Tuning Cap. 2 – FONTI della TUNING INFORMATION (1^ parte) 2.1 – L’Automatic Diagnostic Repository (ADR) Fault Diagnosability Infrastructure La Fault Diagnosability Infrastructure in Oracle 11g trova proattivamente i problemi e permette una diagnosi e una risoluzione veloce degli errori. Quando un errore critico viene rilevato sul db, l’errore dà un numero e tutti i dati relativi a questo errore vengono scritti nei trace files. Questi trace files sono contenuti nell’Automatic Diagnostic Repository (ADR), che è un repository file-based posto sul server. Locations dei File della Fault Diagnosability Infrastructure La root directory dell’ ADR è conosciuta come ADR base ed è la base per tutte le ADR homes. Una ADR base può contenere varie ADR homes e ognuna di esse corrisponde ad una istanza diversa. Ecco lo schema di una struttura ADR in un server Oracle: .............. .............. .............. 6 www.manualioracle.it 11g__Performance_Tuning Cap. 3 – FONTI della TUNING INFORMATION (2^ parte) 3.1 – Collecting Performance Statistics (AWR and ASH) Oracle 10g ha migliorato l’Automatic Statistics Collection feature per collezionare varie informazioni riguardanti l’O.S. e il db introducendo un nuovo set di programmi chiamato Automatic Workload Repository (AWR). L’AWR fa uno snapshot del db negli intervalli specificati e li contiene nella SYSAUX tablespace. Nelle precedenti versioni Oracle al posto dell’AWR esisteva lo statspack (era più semplice e non automatico). L’AWR è l’elemento centrale della Common Manageability Infrastructure (CMI). Ecco i componenti dell’architettura CMI: - l’AWR e l’ASH - Automated Tasks - Server Alerts - Advisory Framework L’AWR potrebbe avere informazioni non aggiornate visto che è popolata in set intervals. Per diagnosi correnti, si può usare l’Active Sessions History (ASH). Usare l’Automatic Workload Repository (AWR) Di default, l’AWR raccoglie statistiche ogni ora e le conserva per una settimana. .............. .............. .............. www.manualioracle.it 7 11g__Performance_Tuning Cap. 4 – SQL Tuning Un tuning appropriato dell’applicazione dipende molto dal tipo di sistema in cui si è: gli OnLine Transactional Processing systems (OLTP) hanno differenti SQL e design considerations rispetto ai data warehouse (DWH). Senza preoccuparti del tipo di sistema, la prima cosa da fare è misurare le performance degli SQL in esecuzione e capire le tuning options disponibili. Il metodo più usato per misurare le performance degli SQL statement è Explain Plan tramite il DBMS_XPLAN, l’AUTOTRACE, il TKPROF utility o l’AWR SQL report. 4.1 – Il TKPROF : Introduzione Il Trace Kernel Profile, o TKPROF, è usato per formattare gli user trace files che sono generati dalle sessioni messe in trace. Gli user trace file contengono, in formato raw, tutti gli SQL che l’utente ha fatto mentre il trace era attivo, informazioni sul tempo necessario ad eseguire ogni statement e la quantità di risorse che gli statements hanno consumato. Visto che il contenuto di un file raw è difficilmente interpretabile, il TKPROF converte il trace file in un formato facilmente interpretabile. Vediamo un esempio in Unix: $ tkprof ora_12558.trc trace.txt Questo es. formatta uno user trace file chiamato ora_12558.trc e mette la sua versione formattata nel file chiamato trace.txt. Il TKPROF ha molti altri argomenti che possono essere usati a seconda delle informazioni che si desidera avere. Queste opzioni vengono specificate nella linea di comando subito dopo i 2 parametri già visti. Sintassi: .............. .............. .............. 8 www.manualioracle.it