Documente Academic
Documente Profesional
Documente Cultură
PRACTICASTEMA1.
ARQUITECTURADELABASEDEDATOS.
1.1.ComprobarlasvariablesdeentornonecesariasparaconectarnosalaBD.
1.2.Identificarlosprocesosquecomponeninstancia.
1.3.VereltamaodelaSGAdelaBD.
1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA.
1.5.ComprobarficherosquecomponenlaBDyubicarlosenlaestructuraOFA.
1.6.IdentificarlaestructuralgicadelaBD:tablespaces,segmentos,extensiones.
1.7.Consultarinformacinsobrelabasededatos(v$database)ylainstancia(v$instance).
1.8.Localizarelprocesoservidorasociadoamisesin(v$processyv$session).Esunservidordedicadoocompartido?
1.9.CuantoocupalaDictionarycacheylaLibrarycacheentuBD?(v$sgastat)
1.10.VerlaactividaddelaLibraryCache(v$librarycache).
1.11.VerlassentenciasSQLqueguardalaSharedPool(v$sqlarea).
1.12.Crearunficherodeautenticacinyactivarsuuso.
1.13.QuocurresiquitamoslavariableLD_LIBRARY_PATH?
1.14.AsignarlavariableNLS_LANGparanuestropasycomprobarelcambioenlasrespuestasdeOracledesdesqlplus.
1.15.Subireltamaodelasharedpoolde12a14Mycomprobarcmoaumentaelespaciolibre.
1.16.Comprobarelfuncionamientodelacachderedolog,comoprotectoradelcontenidodelacachdedatos.
1.17.Comprobarelfuncionamientodelacachdedatos,enloqueserefierealamejoradelrendimientocuandoserepiteuna
consulta.
Recursos.
Mquina:cursos.atica.um.es
Usuariounix:curso51acurso70
Conexinmquinaunix:sshconSecureShell
Basesdedatos:CURSO51aCURSO70
Conexinabd:sqlplusdesdesesinunix,usuario/assysdba
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 1
AdministracinBsicadeOracle9i
Enprimerlugar,siyanoloest,hayquearrancarlabasededatos.Enelejemplovemoselarranquedelabasede
datosCURSOxy,desdeelusuariocurso01deLinux:
/home/CURSO/curso01(CURSOxy)>sqlplus
SQL*Plus:Release9.2.0.1.0ProductiononWedOct2012:39:052004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Enterusername:/assysdba
Connectedtoanidleinstance.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
1.1.ComprobarlaasignacindevariablesdeentornonecesariasparaconectarnosalaBD.
Setratadelasvariables$ORACLE_HOME,$ORACLE_SID,$LD_LIBRARY_PATHy$PATH.
Nota:sinoasignamosLD_LIBRARY_PATHenLinux,esposiblequenopodamosejecutarsqlplus,obteniendoun
errorsimilara:
sqlplus: error while loading shared libraries: libclntsh.so: cannot open shared
object file: No such file or directory
Sinosucedeelerroresposiblequenosehayacompiladoconlibrerascompartidas,oqueelsistematengaacceso
adichaslibrerasdeotromodo,como/etc/ld.so.confounenlaceen/usr/lib,etc.
Solucin:
/home/CURSO/curso01(CURSOxy)>echo$ORACLE_HOME
/u01/app/oracle/product/9.2.0.1.0
/home/CURSO/curso01(CURSOxy)>echo$ORACLE_SID
CURSO01
/home/CURSO/curso01(CURSOxy)>echo$PATH
/u01/app/oracle/product/9.2.0.1.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:
/usr/X11R6/bin:/home/CURSO/curso02/bin
/home/CURSO/curso01(CURSOxy)>echo$LD_LIBRARY_PATH
/u01/app/oracle/product/9.2.0.1.0/lib
1.2.Identificarlosprocesosquecomponeninstancia.
LospodemosidentificardesdeelS.O.,porejemplo,enUnixconelcomando"psef"quepermitevertodoslos
procesosenejecucinenelsistema,filtrandoporelnombredelainstanciadeBD:
psef|grepcurso01
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 2
AdministracinBsicadeOracle9i
TambinlopodemoshacerconsultandolavistadinmicaV$PROCESS(odirectamenteenV$BGPROCESS),enla
BDencuestin:
select*fromv$processwherebackgroundisnotnull;
obien
select*fromv$processa,v$bgprocessbwherea.ADDR=b.PADDR;
Solucin:
/home/CURSO/curso01(CURSOxy)>psef|grepCURSOxy
oracle302051009:32?00:00:00ora_pmon_CURSOxy
oracle302071009:32?00:00:00ora_dbw0_CURSOxy
oracle302091009:32?00:00:00ora_lgwr_CURSOxy
oracle302111009:32?00:00:00ora_ckpt_CURSOxy
oracle302131009:32?00:00:00ora_smon_CURSOxy
oracle302151009:32?00:00:00ora_reco_CURSOxy
curso013052830492012:58pts/1100:00:00grepCURSOxy
SQL>selectusername,programfromv$process
wherebackgroundisnotnull;
USERNAMEPROGRAM
curso01oracle@cursos.atica.um.es(PMON)
curso01oracle@cursos.atica.um.es(DBW0)
curso01oracle@cursos.atica.um.es(LGWR)
curso01oracle@cursos.atica.um.es(CKPT)
curso01oracle@cursos.atica.um.es(SMON)
curso01oracle@cursos.atica.um.es(RECO)
6rowsselected.
SQL>selectname,descriptionfromv$processa,v$bgprocessb
wherea.ADDR=b.PADDR;
NAMEDESCRIPTION
PMONprocesscleanup
DBW0dbwriterprocess0
LGWRRedoetc.
CKPTcheckpoint
SMONSystemMonitorProcess
RECOdistributedrecovery
6rowsselected.
1.3.VereltamaodelaSGAdelaBD.
HaydosvistasdinmicasdelaBDquenosdaninformacinsobreeltamaoylaestructuradelaSGA:V$SGAy
V$SGASTAT.
select*fromv$sga;
select*fromv$sgastat;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 3
AdministracinBsicadeOracle9i
Solucin:
SQL>select*fromv$sga;
NAMEVALUE
FixedSize450560
VariableSize29360128
DatabaseBuffers4194304
RedoBuffers143360
SQL>select*fromv$sgastat;
POOLNAMEBYTES
fixed_sga450560
buffer_cache4194304
log_buffer133120
...
sharedpoolsqlarea2343928
...
sharedpoolfreememory5534064
sharedpoolPL/SQLDIANA406632
sharedpoolPL/SQLMPCODE43652
sharedpoollibrarycache1834420
...
sharedpooldictionarycache1610880
...
41rowsselected.
SQL>select*fromv$sgastat
wherenamein('librarycache','dictionarycache','sqlarea',
'buffer_cache','log_buffer');
POOLNAMEBYTES
buffer_cache4194304
log_buffer133120
sharedpoolsqlarea2343928
sharedpoollibrarycache1834420
sharedpooldictionarycache1610880
1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA.
LosparmetrosdeinicializacinmsimportantesqueafectanaltamaodelaSGAson:shared_pool_size,
db_cache_size,db_block_size,log_buffer,large_pool_sizeyjava_pool_size.
Solucin:
SQL>showparametershared_pool_size
NAMETYPEVALUE
shared_pool_sizebiginteger12582912
SQL>showparameterdb_cache_size
NAMETYPEVALUE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 4
AdministracinBsicadeOracle9i
db_cache_sizebiginteger4194304
SQL>showparameterdb_block_size
NAMETYPEVALUE
db_block_sizeinteger2048
SQL>showparameterlog_buffer
NAMETYPEVALUE
log_bufferinteger1048576
SQL>showparameterlarge_pool_size
NAMETYPEVALUE
large_pool_sizebiginteger0
SQL>showparameterjava_pool_size
NAMETYPEVALUE
java_pool_sizebiginteger0
1.5.ComprobarficherosquecomponenlaBDyubicarlosenlaestructuraOFA.
LosficherosquecomponenlaBDlospodemosconsultardesdeelpropioS.O.odesdelaBD.DesdeelS.O.,y
teniendoencuentalaestructuraOFAlosencontraremosen/u0?/oradata/CURSOxy,dadoquenuestrospuntosde
montajeson/u01,/u02,/u03y/u04:
lsl/u0?/oradata/CURSOxy
Podemoslocalizarcadatipodefichero(datafile,controlyredolog)porlaextensin;porejemplo:dbf,ctlylog.
Ojo!!!,stonoesmsqueunaconvencin,lasextensionespuedenserotras,oinclusonoexistir.
OtraopcinesaccederalainformacindelosficherosdecontroldesdelapropiaBD,consultandolasvistas
dinmicasV$DATAFILE,V$TEMPFILE,V$CONTROLFILEyV$LOGFILE:
select*fromv$datafile;
select*fromv$tempfile;
select*fromv$logfile;
select*fromv$controlfile;
Solucin:
/home/CURSO/curso01(CURSOxy)>lsl/u0?/oradata/$ORACLE_SID
/u02/oradata/CURSOxy:
total269892
rwrw1oracle9dba3459072sep1913:44control1.ctl
rwrw1oracle9dba272631808sep1913:16system01.dbf
/u03/oradata/CURSOxy:
total23968
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 5
AdministracinBsicadeOracle9i
rwrw1oracle9dba3459072sep1913:44control2.ctl
rwrw1oracle9dba10487808sep1112:51temp01.dbf
rwrw1oracle9dba20973568sep1913:36undo_rbs01.dbf
/u04/oradata/CURSOxy:
total30780
rwrw1oracle9dba10486272sep1913:41redo01.log
rwrw1oracle9dba10486272sep1910:58redo02.log
rwrw1oracle9dba10486272sep1910:58redo03.log
SQL>selectnamefromv$datafile;
NAME
/u02/oradata/CURSOxy/system01.dbf
/u03/oradata/CURSOxy/undo_rbs01.dbf
SQL>selectnamefromv$tempfile;
NAME
/u03/oradata/CURSOxy/temp01.dbf
SQL>selectmemberfromv$logfile;
MEMBER
/u04/oradata/CURSOxy/redo01.log
/u04/oradata/CURSOxy/redo02.log
/u04/oradata/CURSOxy/redo03.log
SQL>selectnamefromv$controlfile;
NAME
/u02/oradata/CURSOxy/control1.ctl
/u03/oradata/CURSOxy/control2.ctl
1.6.IdentificarlaestructuralgicadelaBD:tablespaces,segmentos,extensiones.
EnelDDdelaBDtenemosvistasquenospermitencomprobarlaestructuralgicadelaBD:DBA_TABLESPACES,
DBA_DATA_FILES,DBA_SEGMENTSyDBA_EXTENTS.
select*fromdba_tablespaces;
select*fromdba_datafiles;
select*fromdba_tempfiles;
select*fromdba_segments;
select*fromdba_extents;
Solucin:
SQL>selecttablespace_namefromdba_tablespaces
orderbytablespace_name;
TABLESPACE_NAME
SYSTEM
TEMP
UNDO_RBS
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 6
AdministracinBsicadeOracle9i
SQL>selecttablespace_name,file_namefromdba_data_files
orderbytablespace_name,file_name;
TABLESPACE_NAME
FILE_NAME
SYSTEM
/u02/oradata/CURSOxy/system01.dbf
UNDO_RBS
/u03/oradata/CURSOxy/undo_rbs01.dbf
SQL>selecttablespace_name,file_namefromdba_temp_files
orderbytablespace_name,file_name;
TABLESPACE_NAME
FILE_NAME
TEMP
/u03/oradata/CURSOxy/temp01.dbf
SQL>selecttablespace_name,segment_type,count(*)segmentos
fromdba_segments
groupbytablespace_name,segment_type;
TABLESPACE_NAMESEGMENT_TYPESEGMENTOS
SYSTEMCACHE1
SYSTEMINDEX442
SYSTEMTABLE369
SYSTEMCLUSTER10
SYSTEMLOBINDEX49
SYSTEMROLLBACK1
SYSTEMLOBSEGMENT49
SYSTEMINDEXPARTITION24
SYSTEMTABLEPARTITION27
UNDO_RBSTYPE2UNDO5
10rowsselected.
SQL>selecttablespace_name,segment_type,count(*)
fromdba_extents
groupbytablespace_name,segment_type;
TABLESPACE_NAMESEGMENT_TYPEEXTENSIONES
SYSTEMCACHE1
SYSTEMINDEX605
SYSTEMTABLE750
SYSTEMCLUSTER51
SYSTEMLOBINDEX49
SYSTEMROLLBACK27
SYSTEMLOBSEGMENT60
SYSTEMINDEXPARTITION24
SYSTEMTABLEPARTITION27
UNDO_RBSTYPE2UNDO10
10rowsselected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 7
AdministracinBsicadeOracle9i
1.7.Consultarinformacinsobrelabasededatos(v$database)ylainstancia(v$instance).
Podemosobtenerinformacindelabasededatosydelainstancia,delasvistasV$DATABASEyV$INSTANCE,
respectivamente.
Solucin:
1.8.Localizarelprocesoservidorasociadoamisesin(v$processyv$session).Esun
servidordedicadoocompartido?
Todasesintienedosvertientes:clienteyservidor.Enelclientetenemoselprocesodeusuarioqueinicialasesin
yenelservidordebasededatostendremoselprocesoquesirvelaspeticionesdedichasesin;quepuedeserun
servidordedicadoocompartido.EnlasvistasV$SESSIONyV$PROCESStenemostodalainformacinrelativaa
sesionesyprocesos,respectivamente.
Solucin:
SQL> show user
USER is "SYSTEM"
SQL> select a.SERVER, a.username dbuser,a.OSUSER, a.PROCESS user_process,
a.machine, a.terminal, a.program user_program,
b.spid server_process, b.program server_program
from v$session a, v$process b
where a.username=USER and a.PADDR=b.ADDR;
SERVER DBUSER OSUSER
--------- ------------------------------ ------------------------------
USER_PROCESS MACHINE
------------ ----------------------------------------------------------------
TERMINAL USER_PROGRAM
------------------------------ ------------------------------------------------
SERVER_PROCE SERVER_PROGRAM
------------ ------------------------------------------------
DEDICATED SYSTEM curso01
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 8
AdministracinBsicadeOracle9i
30580 cursos.atica.um.es
pts/11 sqlplus@cursos.atica.um.es (TNS V1-V3)
30581 oracle@cursos.atica.um.es (TNS V1-V3)
ElprocesoservidorasociadoamisesinesunservidorDEDICADO.
1.9.CuantoocupalaDictionarycacheylaLibrarycacheentuBD?(v$sgastat)
EnlavistaV$SGASTAThayinformacindetalladasobrelaspartesdelaSGA.
Solucin:
1.10.VerlaactividaddelaLibraryCache(v$librarycache).
EnlavistaV$LIBRARYCACHEpodemosverlosratios(entantosporuno).
Solucin:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 9
AdministracinBsicadeOracle9i
1.11.VerlassentenciasSQLqueguardalaSharedPool(v$sqlarea).
EnlavistaV$SQLAREAtenemoselcontenidodelreaSQLdelasharedpool.
Solucin:
1.12.Crearelficherodeautenticacinyactivarlo(orapwd).
Lospasosaseguirson:
Crearficheroen$ORACLE_HOME/dbsconlautilidadorapwd(siyaexisteyqueremosvolveracrearlo,le
cambiamoselnombre).
Aadirelparmetroremote_login_passwordfilealinit.ora.
PararyarrancarlaBD.
Solucin:
$ orapwd file=$ORACLE_HOME/dbs/orapwCURSOxy password=miclave entries=5
$ chmod g+w $ORACLE_HOME/dbs/orapwCURSOxy
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 10
AdministracinBsicadeOracle9i
1.13.QuocurresiquitamoslavariableLD_LIBRARY_PATH?
Comprobarsuvalorydejarlaenblanco.
Ejecutarsqlplus.
Volveraasignarelvalororiginalyejecutardenuevosqlplus.
Solucin:
$ echo $LD_LIBRARY_PATH
/u01/app/oracle/product/9.2.0.1.0/lib
$ unset LD_LIBRARY_PATH
$ sqlplus
sqlplus: error while loading shared libraries: libclntsh.so: cannot open shared
object file: No such file or directory
$ export LD_LIBRARY_PATH=/u01/app/oracle/product/9.2.0.1.0/lib
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Feb 2 10:18:27 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL>
1.14.AsignarlavariableNLS_LANGparanuestropasycomprobarelcambioenlasrespuestasdeOracle
desdesqlplus.
ComprobarelvalordeNLS_LANGyverlafechadelsistemadesdesqlplus.
Salirdesqlplusyasignarspanish_spainaNLS_LANG.
Ejecutarsqlplusycomprobarquepideusuarioynousername.
Comprobardenuevolafechadelsistemadesdesqlplusyverificarelcambiodeformato.
Solucin:
$ echo $NLS_LANG
$ sqlplus
Enter user-name: / as sysdba
SQL> select sysdate from dual;
SYSDATE
---------
02-FEB-05
SQL> exit
$ export NLS_LANG=spanish_spain
$ sqlplus
Introduzca el nombre de usuario: / as sysdba
SQL> select sysdate from dual;
SYSDATE
--------
02/02/05
SQL> exit
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 11
AdministracinBsicadeOracle9i
1.15.Subireltamaodelasharedpoolde12a14Mycomprobarcmoaumentaelespacio
libre.
Comprobarelvalordeshared_pool_size,ascomoelespaciolibreenlashared_pool.
Asignarle14Myvolveracomprobarelvalordelparmetro,ascomoelespaciolibrequetieneahoralashared
pool.
Finalmente,volveradejarlasharedpoolcon12Mycomprobardenuevolosvaloresanteriores.
Solucin:
SQL> show parameter shared_pool_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 12582912
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
----------
10592332
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
----------
14739172
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
----------
10544868
1.16.Comprobarelfuncionamientodelacachderedolog,comoprotectoradelcontenidodelacachde
datos.ParaelloiniciaremosunatransaccinyprovocaremosunacadadelaBD,comprobandoqueal
arrancarladenuevo,semantendrlaintegridaddelamisma.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 12
AdministracinBsicadeOracle9i
ConsultarelcontenidoylaestructuradelatablaBORRAMEdelusuarioSYSTEM.
InsertarunafilasinhacercommityforzarlacadadelaBD.
ArrancardenuevolaBDycomprobarquelafilainsertadanoest(puesnosehizocommit).
Repetirlainsercindelafila,estavezhaciendocommit;yforzarlacadadelaBDotravez.
ArrancarlaBDunavezmsycomprobarqueahoralafilasiest(yaquesevalidlatransaccinconcommit).
Solucin:
SQL> connect system
Enter password:
Connected.
SQL> commit;
Commit complete.
SQL> startup
...
Database opened.
SQL> select * from system.borrame;
C1
----------
Primera
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 13
AdministracinBsicadeOracle9i
SQL> commit;
Commit complete.
SQL> startup
...
Database opened.
1.17.Comprobarelfuncionamientodelacachdedatos,enloqueserefierealamejoradelrendimiento
cuandoserepiteunaconsulta.Porqulasegundavezqueselanzalamismaconsultatardamenos?
ActivarlamedicindetiemposensqlplusconSETTIMINGON.
LanzarlaconsultaSELECTCOUNT(*)FROMIDL_UB1$.
Volveralanzarlamismaconsulta.
Comprobarquelasegundaejecucintardamuchomenos,yaquelosdatosyasecargaronenlacachdedatos
allanzarlalaprimeravez;yportantoseaccedendirectamenteenmemoriaynoendisco.
Solucin:
SQL> set timing on
SQL> select count(*) from IDL_UB1$;
COUNT(*)
----------
3798
Elapsed: 00:00:02.65
SQL> r
COUNT(*)
----------
3798
Elapsed: 00:00:00.05
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez 14