16
Administración Avanzada de Oracle10g PRACTICAS TEMA 5. MONITORIZACIÓN Y AJUSTE TRADICIONAL. 5.1. Revisar los eventos del sistema y comprobar los más significativos. Comprobar el evento “latch free” por sesiones.  Comprobar sesiones esperando por el evento “db file sequential read”. Comprueba el parámetro TIMED_STATISTICS. 5.2. Revisa las estadísticas del sistema más significativas. Comprueba el tamaño medio de la PGA de cada sesión. Revisa las lecturas lógicas y físicas y calcula el ratio de E/S. Comparar el uso de CPU para “SQL del sistema” (acceso al DD) sobre el total. 5.3. Ver el estado de ocupación de las partes más significativas de la Shared Pool. 5.4. Comprobar la contención en latches de la Shared Pool y Library Cache. 5.5. Comprobar el pinhitratio de la Library Caché, así como los reloads. Verificar  el espacio libre de la Shared Pool, y el valor de open_cursors. 5.6. Ver el ratio de la Row Cache. 5.7. Comprobar si el sistema recomienda ampliar la SharedPool. 5.8. Detectar sentencias similares que usan literales. Verificar los parámetros cursor_sharing y session_cached_cursors. Asignar cursor_sharing=similar. 5.9. Instalar el paquete DBMS_SHARED_POOL. Comprobar paquetes que se pueden “fijar” en la SharedPool y hacerlo. 5.10. Comprobar sentencias que ocupan mucha memoria (>=10% de SharedPool). 5.11. Calcular el ratio de eficiencia de la Caché de Datos. Comprobar el parámetro db_cache_advice. Consultar si Oracle recomienda incrementar la Caché de Datos. Comprobar si hay contención en el latch “cache buffers lru chain”. Ver si hay esperas del tipo “write complete waits” o “free buffer waits”. 5.12. Comprobar el tamaño de la Cache de Redo. Ver si hay contención en los latches de redo. Verificar la estadística “redo log space requests”. 5.13. Comprobar los segmentos de rollback ONLINE. Verificar las extensiones que tiene cada uno, así como el espacio total y libre del tablespace que los contiene. Ver si hay contención en segmentos de rollback. 5.14. Instalar la utilidad STATSPACK. Crear snapshots y generar informe. Analizar el informe. 5.15. Probar autotrace de sql*plus. 5.16. Comprobar el plan de ejecución con el que se ha compilado una sentencia sql que ya se ha ejecutado, obteniendo los datos de la SHARED POOL (v$sql). © Juan Luis Serradilla Amarilla y Francisco Fernández Martínez 1

PracticasAjusteTradicional_Tema5

Embed Size (px)

DESCRIPTION

PracticasAjusteTradicional_Tema5

Citation preview

  • AdministracinAvanzadadeOracle10g

    PRACTICASTEMA5.MONITORIZACINYAJUSTETRADICIONAL.

    5.1.Revisarloseventosdelsistemaycomprobarlosmssignificativos.Comprobareleventolatchfree por sesiones. Comprobar sesiones esperando por el evento db file sequential read.CompruebaelparmetroTIMED_STATISTICS.

    5.2.Revisalasestadsticasdelsistemamssignificativas.CompruebaeltamaomediodelaPGAdecadasesin.RevisalaslecturaslgicasyfsicasycalculaelratiodeE/S.CompararelusodeCPUparaSQLdelsistema(accesoalDD)sobreeltotal.

    5.3.VerelestadodeocupacindelaspartesmssignificativasdelaSharedPool.

    5.4.ComprobarlacontencinenlatchesdelaSharedPoolyLibraryCache.

    5.5.ComprobarelpinhitratiodelaLibraryCach,ascomolosreloads.VerificarelespaciolibredelaSharedPool,yelvalordeopen_cursors.

    5.6.VerelratiodelaRowCache.

    5.7.ComprobarsielsistemarecomiendaampliarlaSharedPool.

    5.8. Detectar sentencias similares que usan literales. Verificar los parmetros cursor_sharing ysession_cached_cursors.Asignarcursor_sharing=similar.

    5.9.InstalarelpaqueteDBMS_SHARED_POOL.ComprobarpaquetesquesepuedenfijarenlaSharedPoolyhacerlo.

    5.10.Comprobarsentenciasqueocupanmuchamemoria(>=10%deSharedPool).

    5.11. Calcular el ratio de eficiencia de la Cach de Datos. Comprobar el parmetrodb_cache_advice.ConsultarsiOraclerecomiendaincrementarlaCachdeDatos.Comprobarsihaycontencinenel latchcachebuffers lruchain.Versihayesperasdeltipowritecompletewaitsofreebufferwaits.

    5.12.ComprobareltamaodelaCachedeRedo.Versihaycontencinenloslatchesderedo.Verificarlaestadsticaredologspacerequests.

    5.13.ComprobarlossegmentosderollbackONLINE.Verificarlasextensionesquetienecadauno,as como el espacio total y libre del tablespace que los contiene. Ver si hay contencin ensegmentosderollback.

    5.14.InstalarlautilidadSTATSPACK.Crearsnapshotsygenerarinforme.Analizarelinforme.

    5.15.Probarautotracedesql*plus.

    5.16.Comprobarelplandeejecucinconelquesehacompiladounasentenciasqlqueyasehaejecutado,obteniendolosdatosdelaSHAREDPOOL(v$sql).

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 1

  • AdministracinAvanzadadeOracle10g

    5.1.Revisarloseventosdelsistemaycomprobarlosmssignificativos.Comprobareleventolatchfreeporsesiones.Comprobarsesionesesperandoporeleventodbfilesequentialread.CompruebaelparmetroTIMED_STATISTICS.

    Solucin:

    SQL>setlinesize100SQL>selectrpad(event,30),total_waits,total_timeouts,time_waited,average_waitfromv$system_eventorderbytotal_waitsdesc;RPAD(EVENT,30)TOTAL_WAITSTOTAL_TIMEOUTSTIME_WAITEDAVERAGE_WAIT...controlfileparallelwrite141073018513.13dbfilesequentialread30448023774.78...controlfilesequentialread146080247.02logfileparallelwrite656303165.48dbfilescatteredread4386080121.83...logfilesequentialread2402.1logfilesinglewrite2406.26logfileswitchcompletion21259228.18latchfree210391.84...

    (Lacolumnatime_waitedestencentsimasdesegundo)

    SQL>selectsid,total_waits,total_timeouts,time_waited,average_waitfromv$session_eventwhereevent='latchfree';

    norowsselected

    SQL>selectevent,sid,P1TEXT,P1,P2TEXT,P2,P3TEXT,P3,WAIT_TIME,SECONDS_IN_WAIT,STATEfromv$session_waitwhereeventlike'dbfile%';

    norowsselected

    SQL>showparametertimed_statisticsNAMETYPEVALUEtimed_statisticsbooleanTRUE

    Consultaladocumentacinparaverenquconsisteeleventodbfilescatteredread.Lopuedesverenhttp://cursos.atica.um.es/oradoc102/server.102/b14237/waitevents003.htm#sthref4387.

    5.2. Revisa las estadsticas del sistema ms significativas. Comprueba eltamaomediodelaPGAdecadasesin.RevisalaslecturaslgicasyfsicasycalculaelratiodeE/S.CompararelusodeCPUparaSQLdelsistema(accesoalDD)sobreeltotal.

    Solucin:

    LasestadsticasdelsistemasepuedenconsultarenV$SYSSTAT.

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 2

  • AdministracinAvanzadadeOracle10g

    SQL>selectname,valuefromv$sysstat;NAMEVALUElogonscumulative113logonscurrent15openedcursorscumulative222072openedcursorscurrent53...CPUusedbythissession9526...dbblockgets727314...consistentgets5805950...physicalreads134646......

    LasestadsticassobreelusodelaPGAnospermitenhacerestimacionessobreelconsumodememoria(RAM)decadasesin:SQL>selectname,valuefromv$sysstatwherenamelike'sessionpgamemory%';NAMEVALUEsessionpgamemory60340248sessionpgamemorymax101365784

    LasestadsticasdeE/Snospermitencalcularelratiodeeficienciadelacachdedatos.Podemosverelporcentajedelecturasadiscosobrelaslecturaslgicas:

    SQL>select100*f1/(r1+r2)from(selectvaluef1fromv$sysstatwherename='physicalreads'),(selectvaluer1fromv$sysstatwherename='consistentgets'),(selectvaluer2fromv$sysstatwherename='dbblockgets');

    100*F1/(R1+R2)2.06093003

    TambinpodemoscalculareltiempodeCPUquesellevaelSQLdelsistema(accesoalDD)respectoaltiempototaldeCPU:SQL>select100*cpu1/cpu2

    from(selectvaluecpu1fromv$sysstatwherename='recursivecpuusage'),(selectvaluecpu2fromv$sysstatwherename='CPUusedbythissession');

    100*CPU1/CPU279.687172

    5.3.Verel estadodeocupacindelaspartesmssignificativasdelaSharedPool.

    Solucin:

    LavistaV$SGASTATnosmuestraelestadodelasdistintaspartesdelaSharedPool.

    SQL>select*fromv$sgastatwherenamein('freememory','librarycache','sqlarea','dictionarycache');

    POOLNAMEBYTESsharedpoolsqlarea3755132sharedpoolfreememory680920sharedpoollibrarycache2765552

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 3

  • AdministracinAvanzadadeOracle10g

    sharedpooldictionarycache1610880

    5.4.ComprobarlacontencinenlatchesdelaSharedPoolyLibraryCache.

    Solucin:

    Loslatchessonmicrobloqueosnecesariosparalagestindelosrecursoscompartidosdelsistema.EnlavistaV$LATCHtenemosinformacinsobreelusodelatches.LacolumnaMISSESindicalosfallosquehayalintentarcogerunlatch;ySLEEPSindicaelndevecesqueelprocesoqueintentacogerellatchpasaalestadodormido.SQL>selectrpad(name,30),gets,misses,sleeps

    fromv$latchwherenamelike'%librarycache%'ornamelike'%sharedpool%';

    RPAD(NAME,30)GETSMISSESSLEEPSsharedpool9746542506librarycachepinallocation222700librarycachelockallocation534600librarycachehashchains000librarycachelock76883670sharedpoolsimulator99239000librarycache13619661233sharedpoolsimalloc11600librarycachepin58721320librarycacheloadlock5651500

    Comohayfallos(misses)conesperas(sleeps)enloslatchsharedpoolylibrarycache,habraqsubireltamaodelaSharedPool(shared_pool_size).

    5.5.ComprobarelpinhitratiodelaLibraryCach,ascomolosreloads.VerificarelespaciolibredelaSharedPool,yelvalordeopen_cursors.

    Solucin:

    Podemosver las estadsticas de laLibraryCach en lavistaV$LIBRARYCACHE.LosespacioscorrespondientesaSQLyPLSQLson:SQL>selectnamespace,pinhitratio,reloadsfromv$librarycache

    wherenamespacein('SQLAREA','TABLE/PROCEDURE','BODY','TRIGGER');

    NAMESPACEPINHITRATIORELOADSSQLAREA.87204082211301TABLE/PROCEDURE.68195679612562BODY.81150959122TRIGGER.1428571433

    Serecomiendaunpinhitratiocercanoa1,yreloadscasicero.Llamalaatencinespacialmenteelnde reloads en sql area y table/procedure; as como el bajo ratio en trigger. PodemosplantearnossubiralgoeltamaodelaSharedPool.PrimerohabraqueversihayespaciolibreenlaSharedPool,deformacontinuada;ytambinrevisaropen_cursors.

    SQL>selectSharedPool,LibraryCache,Librefrom(selectsum(bytes)SharedPoolfromv$sgastatwherepool='sharedpool'),(selectbytesLibraryCachefromv$sgastatwherename='librarycache'),

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 4

  • AdministracinAvanzadadeOracle10g

    (selectbytesLibrefromv$sgastatwherename='freememory'andpool='sharedpool');SHAREDPOOLLIBRARYCACHELIBRE209715202793664764464

    SQL>showparameteropen_cursorsNAMETYPEVALUEopen_cursorsinteger50

    5.6.VerelratiodelaRowCache.

    Solucin:

    PodemosverlosratiosdelaRowCachenV$ROWCACHE,ytambincalcularunratiomedio..SQL>SELECTrpad(parameter,25),sum(gets),sum(getmisses)

    ,100*sum(getsgetmisses)/sum(gets)pct_succ_gets,sum(modifications)updatesFROMV$ROWCACHEWHEREgets>0GROUPBYparameter;

    RPAD(PARAMETER,25)SUM(GETS)SUM(GETMISSES)PCT_SUCC_GETSUPDATESdc_constraints1716760.8187135171dc_tablespaces606137299.88121360dc_tablespace_quotas1101dc_awr_control7454599.932921944dc_object_grants74688.108108110dc_histogram_data733822163370.52001852594dc_rollback_segments33258999.972938817dc_sequences464110.869565246dc_usernames12984796.37904470dc_segments307251402854.3433686255dc_objects89868546393.9210843334dc_histogram_defs1065335102552.10404293090dc_table_scns121200dc_users10220610799.89530950outstanding_alerts3166.66666672dc_object_ids138501671895.1494935133dc_global_oids208131185.05526190dc_profiles331069.6969697018rowsselected.

    SQL>SELECTSUM(GETSGETMISSESFIXED)*100/SUM(GETS)"RatioMedio"FROMV$ROWCACHE;

    RatioMedio84.5682021

    Larecomendacinesquedichoratioser>=85%.

    5.7.ComprobarsielsistemarecomiendaampliarlaSharedPool.

    Solucin:

    Las estadsticas sobre posibles redimensionamientos de la SharedPool los podemos ver enV$SHARED_POOL_ADVICE.SQL>selectSHARED_POOL_SIZE_FOR_ESTIMATESIZE_ESTIMATE,

    SHARED_POOL_SIZE_FACTORSIZE_FACTOR,ESTD_LC_TIME_SAVED_FACTORPARSE_SAVED_FACTOR

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 5

  • AdministracinAvanzadadeOracle10g

    fromv$shared_pool_advice;SIZE_ESTIMATESIZE_FACTORPARSE_SAVED_FACTOR40.8333.85684811561.16671.046641.33331.1486721.51.1676801.66671.1691881.83331.18179621.1817

    SegnlosdatosanterioreslagananciaporsubirlaSharedPoolde48a64M(+33%)seradel14.8%(de1a1.1486),asqprobaramosconshared_pool_size=64M.

    5.8. Detectar sentencias similares queusan literales. Verificar el parmetroscursor_sharingysession_cached_cursors.Asignarcursor_sharing=similar.

    Solucin:

    ParadetectarsentenciassimilaresmiraremosenV$SQLAREA:SQL>SELECTsubstr(sql_text,1,40)"SQL",count(*),sum(executions)"TotExecs"FROMv$sqlareaGROUPBYsubstr(sql_text,1,40)HAVINGcount(*)>5ORDERBY2;SQLCOUNT(*)TotExecsSELECTsubstr(sql_text,1,40)"SQL",coun79

    SQL> select sql_text from v$sqlarea where substr(sql_text,1,40) like 'SELECTsubstr(sql_text,1,40)%';SQL_TEXTSELECT substr(sql_text,1,40) "SQL", count(*), sum(executions) "TotExecs" FROMv$sqlareaGROUPBYsubstr(sql_text,1,40)HAVINGcount(*)>20ORDERBY2

    SELECT substr(sql_text,1,40) "SQL", count(*), sum(executions) "TotExecs" FROMv$sqlareaWHEREexecutions20ORDERBY2

    SELECT substr(sql_text,1,40) "SQL", count(*), sum(executions) "TotExecs" FROMv$sqlareaGROUPBYsubstr(sql_text,1,40)HAVINGcount(*)>10ORDERBY2...

    SQL>showparametercursor_sharingNAMETYPEVALUEcursor_sharingstringEXACT

    SQL>showparametersession_cached_cursorsNAMETYPEVALUEsession_cached_cursorsinteger20SQL>altersystemsetcursor_sharing=similar;Systemaltered.

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 6

  • AdministracinAvanzadadeOracle10g

    5.9. Instalar el paquete DBMS_SHARED_POOL. Comprobar paquetes que sepuedenfijarenlaSharedPoolyhacerlo.

    Elpaquetedbms_shared_poolseinstalaconelscript$ORACLE_HOME/rdbms/admin/dbmspool.sql,bajoelusuarioSYS.

    Solucin:

    Instalarelpaquete.SQL>connect/assysdbaSQL>@$ORACLE_HOME/rdbms/admin/dbmspool.sql

    Comprobarpaquetesafijar,porejemploqocupenmsde100Kb.SQL>setserveroutputonsize2000SQL>execdbms_shared_pool.sizes(100)SIZE(K)KEPTNAME429SYS.STANDARD(PACKAGE)

    Fijarlo.SQL>execdbms_shared_pool.keep('SYS.STANDARD');PL/SQLproceduresuccessfullycompleted.

    Comprobarlo:SQL>execdbms_shared_pool.sizes(100)SIZE(K)KEPTNAME429YESSYS.STANDARD(PACKAGE)

    5.10. Comprobar sentencias que ocupan mucha memoria (>=10% deSharedPool).

    Solucin:

    EnV$SQLtenemosinformacinsobrelassentenciasSQLenejecucin,incluyendoelconsumodememoria.Nosinteresacontrolaraquellasqueocupanel10%omsdelaSharedPool.

    SQL>showparametershared_pool_sizeNAMETYPEVALUEshared_pool_sizebiginteger0

    SQL>select*fromv$sgainfo;NAMEBYTESRESFixedSGASize1259408NoRedoBuffers2932736NoBufferCacheSize33554432YesSharedPoolSize50331648Yes...FreeSGAMemoryAvailable8388608

    SQL>selecTsubstr(sql_text,1,40)"Stmt",count(*),sum(sharable_mem)"Mem",sum(users_opening)"Open",

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 7

  • AdministracinAvanzadadeOracle10g

    sum(executions)"Exec"FROMv$sqlGROUPBYsubstr(sql_text,1,40)HAVINGsum(sharable_mem)>5000000;

    norowsselected

    Nohayninguna(siponemos50000,enlugarde5000000,veremosqsalealgo).

    5.11. Calcular el ratio de eficiencia de la Cach de Datos. Comprobar elparmetro db_cache_advice. Consultar si Oracle recomienda incrementar laCach deDatos.Comprobarsihaycontencinenel latchcachebuffers lruchain.Versihayesperasdeltipowritecompletewaitsofreebufferwaits.

    Solucin:

    LocalcularemosapartirdelosdatosdelecturasfsicasylgicasquepodemosverenV$SYSSTAT.

    SQL>select100*(1(f1f2f3)/(r1+r2f2f3))Ratiofrom(selectvaluef1fromv$sysstatwherename='physicalreads'),(selectvaluef2fromv$sysstatwherename='physicalreadsdirect'),(selectvaluef3fromv$sysstatwherename='physicalreadsdirect(lob)'),(selectvaluer1fromv$sysstatwherename='consistentgets'),(selectvaluer2fromv$sysstatwherename='dbblockgets');

    RATIO98.0134287

    Lasrecomendacionessobre incrementosdetamaodelaCach deDatoslospodemosverenV$DB_CACHE_ADVICE,siemprequeelparmetrodb_cache_advice=on.

    SQL>showparameterdb_cache_adviceNAMETYPEVALUEdb_cache_advicestringON

    SQL>setlinesize100SQL>selectid,name,size_for_estimate,size_factor,ESTD_PHYSICAL_READ_FACTOR

    fromv$db_cache_advice;IDNAMESIZE_FOR_ESTIMATESIZE_FACTORESTD_PHYSICAL_READ_FACTOR...3DEFAULT24.751.00563DEFAULT28.8751.00333DEFAULT32113DEFAULT361.125.99863DEFAULT401.25.99763DEFAULT441.375.9973DEFAULT481.5.99573DEFAULT521.625.9953DEFAULT561.75.99433DEFAULT601.875.99293DEFAULT642.9433...

    Comoseobserva,enestecasonomerecelapenasubirlacach, puestenemosqduplicarsu

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 8

  • AdministracinAvanzadadeOracle10g

    tamao(64Mb),paraconseguirunamejoradel6%.Inclusopodramosreducirlaa28M,puessloempeoramosel0.3%.

    EnlavistaV$LATCHpuedoversihaycontencinencachebufferslruchain.SQL>SELECTNAME,GETS,MISSES,SLEEPSFROMV$LATCHWHERENAME='cachebufferslruchain';NAMEGETSMISSESSLEEPScachebufferslruchain3411871543

    EnlavistaV$BUFFER_POOL_STATISTICSpuedoversihayesperasdeltipofreebufferwaitowritecompletewait.SQL>SELECTID,NAME,FREE_BUFFER_WAIT,WRITE_COMPLETE_WAIT

    FROMV$BUFFER_POOL_STATISTICS;IDNAMEFREE_BUFFER_WAITWRITE_COMPLETE_WAIT3DEFAULT00

    5.12.ComprobareltamaodelaCachedeRedo.Versihaycontencinenloslatchesderedo.Verificarlaestadsticaredologspacerequests.

    Solucin:

    EltamaodelaCachdeRedolodeterminaelparmetrolog_buffer.SQL>showparameterlog_bufferNAMETYPEVALUElog_bufferinteger2886656

    Tendremoscontencinenloslatchesderedosialgunodelossiguientesratiossuperael1%:SQL>SELECTsubstr(name,1,20)latch,

    100*decode(gets,0,0,misses/gets)mis_ratio,100*decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses))im_mis_ratioFROMv$latchWHEREnamein('redoallocation','redocopy');

    LATCHMIS_RATIOIM_MIS_RATIOredocopy0.245571834redoallocation.00722064.005709181

    Finalmente,comprobemoslaestadsticaredologspacerequests:SQL>select*fromv$sysstatwherename='redologspacerequests';STATISTIC#NAMECLASSVALUE141redologspacerequests225

    5.13.ComprobarlossegmentosderollbackONLINE.Verificarlasextensionesquetienecadauno,as comoelespaciototal y libredeltablespacequeloscontiene.Versihaycontencinensegmentosderollback.

    Solucin:

    EnlavistaDBA_ROLLBACK_SEGSpodemosverlossegmentosderollback,siestnenlnea,yaqu tablespace pertenecen. En V$ROLLSTAT (y V$ROLLNAME), podemos ver estadsticas de

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 9

  • AdministracinAvanzadadeOracle10g

    tamao,peticiones,extensindinmica,etc.SQL>selectsegment_name,tablespace_name,initial_extent,

    min_extents,max_extents,statusfromdba_rollback_segs;

    SEGMENT_NAMETABLESPACEINITIAL_EXTENTMIN_EXTENTSMAX_EXTENTSSTATUSSYSTEMSYSTEM102400132765ONLINE_SYSSMU1$UNDO_RBS131072232765ONLINE_SYSSMU2$UNDO_RBS131072232765ONLINE_SYSSMU3$UNDO_RBS131072232765ONLINE_SYSSMU4$UNDO_RBS131072232765ONLINE_SYSSMU5$UNDO_RBS131072232765ONLINE_SYSSMU6$UNDO_RBS131072232765ONLINE_SYSSMU7$UNDO_RBS131072232765ONLINE_SYSSMU8$UNDO_RBS131072232765ONLINE

    SQL>SELECTRPAD(NAME,10)NAME,EXTENTS,RSSIZE,GETS,WAITS,SHRINKS,EXTENDS,STATUSFROMV$ROLLNAMEA,V$ROLLSTATB

    WHEREA.USN=B.USN;NAMEEXTENTSRSSIZEGETSWAITSSHRINKSEXTENDSSTATUSSYSTEM74567041479000ONLINE_SYSSMU1$311776006722033ONLINE_SYSSMU2$2129024771411132ONLINE_SYSSMU3$212902492420412ONLINE_SYSSMU4$311776006893033ONLINE_SYSSMU5$21290246647021ONLINE_SYSSMU6$212902499830736ONLINE_SYSSMU7$21290247277022ONLINE_SYSSMU8$3117760064940211ONLINE

    PodemosconsultarlasextensionesyespacioocupadodecadaRS,enlavistaDBA_EXTENTS;yelespaciolibredeltablespacequeloscontiene,enDBA_FREE_SPACE.

    SQL>SELECTrpad(segment_name,10)Rsname,count(*),sum(bytes)FROMDBA_EXTENTSWHERETABLESPACE_NAME='UNDO_RBS'groupbysegment_name;

    RSNAMECOUNT(*)SUM(BYTES)_SYSSMU5$2131072_SYSSMU3$2131072_SYSSMU2$2131072_SYSSMU6$2131072_SYSSMU1$31179648_SYSSMU4$31179648_SYSSMU8$31179648_SYSSMU7$2131072

    SQL>selectsum(bytes)fromdba_free_spacewheretablespace_name='UNDO_RBS';SUM(BYTES)16711680

    Finalmente, las estadsticas sobre contencin en RS, las podemos ver en V$WAITSTAT. Si lahubieseenundoheadertendramosquecrearmsRS.SQL>SELECTCLASS,COUNTFROMV$WAITSTATWHERECLASSlike'%undo%';CLASSCOUNTsaveundoblock0saveundoheader0systemundoheader0systemundoblock0undoheader1undoblock0

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 10

  • AdministracinAvanzadadeOracle10g

    5.14.InstalarlautilidadSTATSPACK.Crearsnapshotsygenerarinforme.

    Solucin:

    Creartablespacestatspack_tspcon100Men/u05/oradata/CURSOxy(creardir./u05/oradata/CURSOxy).Creartablespacestatspack_tempcon2Men/u05/oradata/CURSOxy.Instalarstatspackcon$ORACLE_HOME/rdbms/admin/spcreate.sql,indicandolosdatosquesepiden:clavedeusuarioperfstat,tablespacepordefecto,ytablespacetemporalpordefecto.

    $mkdir/u05/oradata/CURSOxy$chmodRg+w/u05/oradata/CURSOxy

    SQL>createtablespacestatpack_tspdatafile'/u05/oradata/CURSOxy/statpack_tsp01.dbf'size100Mautoextendonnext10Mmaxsize200Mextentmanagementlocalautoallocatesegmentspacemanagementauto;

    Tablespacecreated.

    SQL>createtemporarytablespacestatpack_temptempfile'/u05/oradata/CURSOxy/statpack_temp01.dbf'size2Mautoextendonnext1Mmaxsize10M;

    Tablespacecreated.

    SQL>@$ORACLE_HOME/rdbms/admin/spcreate.sql...InstallingRequiredPackages......CreatingPERFSTATuser...ChoosethePERFSTATuser'spassword.NotspecifyingapasswordwillresultintheinstallationFAILINGSpecifyPERFSTATpasswordEntervalueforperfstat_password:perfcursoXY...ChoosetheDefaulttablespaceforthePERFSTATuser...SpecifyingtheSYSTEMtablespacewillresultintheinstallationFAILING,asusingSYSTEMforperformancedataisnotsupported.

    TABLESPACE_NAMECONTENTSSTATSPACKDEFAULTTABLESPACESEGAUTOPERMANENTSTATPACK_TSPPERMANENTSYSAUXPERMANENT*TSP4KPERMANENTUSERSPERMANENT

    PressingwillresultinSTATSPACK'srecommendeddefaulttablespace(identifiedby*)beingused.

    Entervaluefordefault_tablespace:STATPACK_TSP...ChoosethePERFSTATuser'stemporarytablespace.

    SpecifyingtheSYSTEMtablespacewillresultintheinstallationFAILING,asusingSYSTEMforthetemporarytablespaceisnotrecommended....SpecifyPERFSTATuser'stemporarytablespace.Entervaluefortemporary_tablespace:STATPACK_TEMP

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 11

  • AdministracinAvanzadadeOracle10g

    ...Noerrors.NOTE:SPCPKGcomplete.Pleasecheckspcpkg.lisforanyerrors.

    UnavezinstaladoSTATSACK,comprobamossihahabidoerrores(enlosficheros*.lis):SQL>!grepierr*.lisspcpkg.lis:Noerrors.spcpkg.lis:Noerrors.spcpkg.lis:SPCPKGcomplete.Pleasecheckspcpkg.lisforanyerrors.spctab.lis:SPCTABcomplete.Pleasecheckspctab.lisforanyerrors.spcusr.lis:SPCUSRcomplete.Pleasecheckspcusr.lisforanyerrors.

    AhorapodemosutilizarelpaqueteSTATSPACK.Primerocompruebosiestactivadalarecoleccindeestadsticas:SQL>showparametertimed_statisticsNAMETYPEVALUEtimed_statisticsbooleanTRUE

    AhorameconectocomoPERFSTAT(ousuarioconaccesoalpaqueteSTATSPACK)ygeneroelprimersnapshot(baseline)connivel10(i_snap_level).Despus,esperoalmenos5minutosparagenerarotrosnapshot,puesparasacaruninformenecesitoalmenosdos:

    SQL>connectperfstatEnterpassword:Connected.

    SQL>execSTATSPACK.SNAP(i_snap_level=>10)PL/SQLproceduresuccessfullycompleted.(...LANZARALGUNASCONSULTAS,COMOLASDOSSIGUIENTES...)SQL>SELECTCOUNT(*)FROMDBA_OBJECTS;COUNT(*)5924SQL>SELECTCOUNT(*)FROMDBA_EXTENTS;COUNT(*)2647(...ESPERAR5MINUTOSDESDEQUEHICIMOSELSNAPSHOT...)SQL>execSTATSPACK.SNAPPL/SQLproceduresuccessfullycompleted.

    Ahorayapodemosgenerarelinforme:SQL>@$ORACLE_HOME/rdbms/admin/spreport.sql...Entervalueforbegin_snap:1...Entervalueforend_snap:2...SnapshotSnapIdSnapTimeSessionsCurs/SessComment~~~~~~~~BeginSnap:129Jan0713:15:56155.4EndSnap:229Jan0713:17:40156.8Elapsed:1.73(mins)

    CacheSizesBeginEnd~~~~~~~~~~~BufferCache:28MStdBlockSize:2KSharedPoolSize:52MLogBuffer:2,819K

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 12

  • AdministracinAvanzadadeOracle10g

    LoadProfilePerSecondPerTransaction~~~~~~~~~~~~Redosize:17,111.121,779,556.00Logicalreads:352.4336,653.00Blockchanges:64.206,677.00Physicalreads:35.243,665.00Physicalwrites:31.093,233.00Usercalls:0.1010.00Parses:13.851,440.00Hardparses:1.34139.00Sorts:6.13637.00Logons:0.000.00Executes:29.433,061.00Transactions:0.01

    %BlockschangedperRead:18.22RecursiveCall%:99.98Rollbackpertransaction%:0.00RowsperSort:12.03

    InstanceEfficiencyPercentages~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~BufferNowait%:100.00RedoNoWait%:99.95BufferHit%:89.99InmemorySort%:100.00LibraryHit%:83.66SoftParse%:90.35ExecutetoParse%:52.96LatchHit%:99.99ParseCPUtoParseElapsd%:50.98%NonParseCPU:61.48

    SharedPoolStatisticsBeginEndMemoryUsage%:83.2284.28%SQLwithexecutions>1:72.2787.15%MemoryforSQLw/exec>1:66.2178.80

    Top5TimedEventsAvg%Total~~~~~~~~~~~~~~~~~~waitCallEventWaitsTime(s)(ms)Timedbfilesequentialread1,3876474.5CPUtime116.4dbfilescatteredread107023.1logfileparallelwrite90242.6logfileswitchcompletion20551.3...

    EndofReport(sp_1_2.lst)

    5.15.Probarautotracedesqlplus.

    Solucin:

    AUTOTRACEesunaopcindesql*plus,quenospermiteverelplandeejecucindeunasentenciasqly/olasestadsticasasociadasalamisma:

    Plandeejecucin:nosdicecmosevaaejecutarlasentencia(quindicesseusanosiseaccedealatablacompleta,etc).

    Estadsticas:proporcionandatoscomolaslecturaslgicasyfsicasnecesariasparaextraerlosdatos.

    Msinformacinsobreautotraceenhttp://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch8.htm#i1037226.

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 13

  • AdministracinAvanzadadeOracle10g

    SQL>connectsystem/systcursoXYEnterpassword:Connected.

    (AhoravamosaactivarAUTORACE,demodoqueslomuestreelplandeejecucindelassentenciassqlquelancemosposteriormente)SQL>setautotracetraceonlyexplainSQL>setlinesize100SQL>selectcount(*)fromdba_objectswherestatus='VALID';ExecutionPlan

    |Id|Operation|Name|Rows|Bytes|Cost(%CPU)||0|SELECTSTATEMENT||1|5|86(2)||1|SORTAGGREGATE||1|5|||2|VIEW|DBA_OBJECTS|89|445|86(2)||3|UNIONALL||||||*4|FILTER||||||*5|HASHJOIN||99|7623|85(2)||6|TABLEACCESSFULL|USER$|27|81|3(0)||*7|TABLEACCESSFULL|OBJ$|99|7326|82(2)||*8|TABLEACCESSBYINDEXROWID|IND$|1|7|2(0)||*9|INDEXUNIQUESCAN|I_IND1|1||1(0)||10|NESTEDLOOPS||1|16|1(0)||11|INDEXFULLSCAN|I_LINK1|1|13|0(0)||12|TABLEACCESSCLUSTER|USER$|1|3|1(0)||*13|INDEXUNIQUESCAN|I_USER#|1||0(0)|...

    (Pordefecto,eloptimizadorseleccionarelmejorplandeejecucinparaobtenerTODASlasfilasquepuededevolverunaconsulta(ALL_ROWS).Ahoravamosadecirlequequeremosqueescojaelmejorplandeejecucinparaobtenerprontoalgnresultado.olasPRIMERASFILAS(FIRST_ROWS))SQL>altersessionsetoptimizer_mode=first_rows;Sessionaltered.

    SQL>selectcount(*)fromdba_objectswherestatus='VALID';ExecutionPlan

    |Id|Operation|Name|Rows|Bytes|Cost(%CPU)||0|SELECTSTATEMENT||1|5|182(1)||1|SORTAGGREGATE||1|5|||2|VIEW|DBA_OBJECTS|89|445|182(1)||3|UNIONALL||||||*4|FILTER||||||5|NESTEDLOOPS||99|7623|181(1)||*6|TABLEACCESSFULL|OBJ$|99|7326|82(2)||7|TABLEACCESSCLUSTER|USER$|1|3|1(0)||*8|INDEXUNIQUESCAN|I_USER#|1||0(0)||*9|TABLEACCESSBYINDEXROWID|IND$|1|7|2(0)||*10|INDEXUNIQUESCAN|I_IND1|1||1(0)||11|NESTEDLOOPS||1|16|1(0)||12|INDEXFULLSCAN|I_LINK1|1|13|0(0)||13|TABLEACCESSCLUSTER|USER$|1|3|1(0)||*14|INDEXUNIQUESCAN|I_USER#|1||0(0)|...

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 14

  • AdministracinAvanzadadeOracle10g

    (Ahoraqueremosverslolasestadsticasdeaccesoadisco)SQL>setautotracetraceonlystatisticsSQL>selectcount(*)fromdba_objectswherestatus='VALID';Statistics0recursivecalls0dbblockgets22992consistentgets0physicalreads0redosize412bytessentviaSQL*Nettoclient384bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)1rowsprocessed

    Yahemosvistocomoverdeformaautomticaelplandeejecucindeunasentencia,ascomolasestadsticasdeE/S.TambinpodemoscalculareltiempoderepuestaalusuarioconSETTIMING:

    SQL>setautotraceoffSQL>settimingonSQL>selectcount(*)fromdba_objectswherestatus='VALID';COUNT(*)9932Elapsed:00:00:00.07

    5.16.Comprobarelplandeejecucinconelquesehacompiladounasentenciasqlqueyasehaejecutado,obteniendolosdatosdelaSHAREDPOOL(v$sql).

    Solucin:

    EnV$SQLpuedoverlassentenciassqlqueyasehanejecutado,demodoquepuedoobtenerelidentificador(V$SQL.SQL_ID)decualquiersentenciasql,paraposteriormenteconsultarelplandeejecucinhaciendousodelpaquetedbms_xplan(DBMS_XPLAN.DISPLAY_CURSOR(SQL_ID)).

    SQL>connectsystem/systcursoXYEnterpassword:Connected.

    SQL>selectdeptno,count(*)fromscott.empgroupbydeptno;

    DEPTNOCOUNT(*)306205103

    SQL>selectsql_idfromv$sqlwheresql_text='selectdeptno,count(*)fromscott.empgroupbydeptno';

    SQL_IDcxwqkgckrcpd8

    SQL>select*fromtable(dbms_xplan.display_cursor('cxwqkgckrcpd8'));

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 15

  • AdministracinAvanzadadeOracle10g

    PLAN_TABLE_OUTPUTSQL_IDcxwqkgckrcpd8,childnumber0selectdeptno,count(*)fromscott.empgroupbydeptno

    Planhashvalue:4067220884

    |Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time||0|SELECTSTATEMENT||||7(100)|||1|HASHGROUPBY||3|9|7(15)|00:00:01||2|TABLEACCESSFULL|EMP|14|42|6(0)|00:00:01|

    14filasseleccionadas.

    JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 16