Upload
cesar-perez-avilez
View
3
Download
1
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