Está en la página 1de 101

AdministracinBsicadeOracle9i.

Estedocumentoelectrnicopuedeserdescargadolibrey
gratuitamentedesdeInternetparasuejecucine
impresin,sloparafineseducativosy/opersonales,
respetandosuintegridadymanteniendoloscrditosde
losautoresenelpiedepgina.
Quedaportantoprohibidasuventa.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FranciscoFernndezMartnez(pacof@um.es)
JuanLuisSerradillaAmarilla(juanlu@um.es)

UniversidaddeMurcia

TEMARIO

ArquitecturadelaBasedeDatos

Arranqueyparada

Ficherodecontrol

Redolog

Tablespaces

Segmentosderollback

Usuarios,roles,privilegiosyperfiles

Jobs

Auditora

Copiasdeseguridadyrecuperacin

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

OBJETIVOS

ConocerlaArquitecturaOracle.

SaberarrancarypararunabasededatosOracle.

GestionarlosficherosRedolog.

Gestionarelficherodecontrol.

Gestionartablespaces,incluyendotemporalesyundo.

Gestionarsegmentosderollback.

Gestionarusuarios,roles,privilegiosyperfiles.

Gestionarjobs.

Gestionarlaauditoradelsistemagestordebasededatos.

Realizarcopiasdeseguridadyrecuperacindelabasededatos.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TEMA1
ARQUITECTURADELABASEDEDATOS

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TEMA1.
ARQUITECTURADELABD

Servidororacle
Instancia
Basededatos
Memoria:SGAyPGA
Procesos:procesosdeusuario,servidoresybackground
Estructuralgica:tablespaces,segmentos,extensiones,bloques
ArquitecturaOFA
UsuariosadministradoresdelaBD:sysysystem

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

SERVIDORORACLE

ServidorOracle:
InstanciaOracle
BasededatosOracle

InstanciaOracle:
ProcesosBackground
SGA

BasededatosOracle:
FicherosdeDatos
Fichero(s)deControl
FicherosRedoLog.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

SERVIDORORACLE

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

INSTANCIA

LaintegranlosprocesosbackgroundylaSGA
AbreunayslounaBDO,ypermiteaccederaella.
EnlamquinadonderesideelservidorOracle,lavariableORACLE_SID
identificaalainstancia.

RECO

PMON

SMON

SGA

DBW0

LGWR

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARC0
ARQUITECTURADELABD

CONEXINALABD

Para poder conectarnos a una BDO, necesitamos una serie de variables en el


entornodelusuariodelS.O.desdeelquerealizaremoslaconexin.Enelcasode
unix/linux:
ORACLE_HOME.LocalizacindelswOracleautilizar.
ORACLE_SID.BD,asociadaalORACLE_HOME,alaquevamosaconectarnos.Tienesentido
sloenunSBD.
PATH=$PATH:$ORACLE_HOME/bin.ProgramasOracle
LD_LIBRARY_PATH=$ORACLE_HOME/lib. Localizacin de las libreras compartidas
(Linux/Unix).
NLS_LANG=spanish_spain.Idiomadelcliente(opcional).

Procesodeusuario:laejecucindelaaplicacinquepermitealusuarioiniciarla
conexin;porejemplo,sql*plus.
Procesoservidor:secreaenelSBDcuandoelusuarioseconectaalaBD,yesel
querealmenteinteractaconlaBD.
UnaconexindeunprocesodeusuarioalSBDesunasesinenlaBD(puede
habervariasdelmismousuario).Seiniciacuandoelusuariosevalidacontrala
BDyterminacuandoelusuariosedesconecta.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

CONEXINALABD:procesos

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

10

SGA(SystemGlobalArea)

Esunazonadememoriacompartida,quesereservaenelmomentodearrancarlainstancia.Su
tamao es dinmico ( desde la versin 9i) y limitado por el parmetro de inicializacin
SGA_MAX_SIZE.
Est compuesta, fundamentalmente, por tres estructuras de memoria: shared pool, database
buffercacheyredologbuffer.Adems,existendosestructurasdememoriaque,opcionalmente,
puedenestarpresentesenlaSGA:largepoolyjavapool.
Los parmetros del fichero de inicializacin que ms afectan al tamao de la SGA son:
DB_CACHE_SIZE(antiguodb_block_buffer),LOG_BUFFER,SHARED_POOL_SIZE.
LaSGAestformadaporgrnulos(espaciocontiguodememoriavirtual),quesernde4Mpara
SGAsmenoresde128M,yde16Mencasocontrario.LoscomponentesdelaSGA(buffercache,
sharedpool y largepool) variarn sutamao usando dicha unidad de asignacin de espacio. Al
arrancar,seasignanalmenostresgrnulos(unoparalaSGAfijaqueincluyelosredobuffers,
otro para la buffer cache y uno ms de sharedpool); y cada componente seguir reservando
tantosgrnuloscomonecesite.
Desdesql*plus,conshowsga,veremoseltamaodelaSGA.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

11

SGA(SystemGlobalArea)

DATABASE
BUFFERCACHE
(db_cache_size)
LARGEPOOL
(large_pool_size)
JAVAPOOL
(java_pool_size)

SQLAREA

PL/SQL
AREA

LIBRARYCACHE
DICTIONARYCACHE

SHAREDPOOL(shared_pool_size)
REDOLOGBUFFER(log_buffer)

SGA(sga_max_size)
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

12

SGA:SharedPool

Est formada por dos estructuras de


memoriagestionadasporalgoritmosLRU:
librarycache
dictionarycache
Su tamao viene determinado por el
parmetro shared_pool_size (en bytes), del
init.ora(nopuedesuperarsesga_max_size);
ysepuedecambiardinmicamentecon:

SQLAREA

LIBRARYCACHE

ALTERSYSTEMSETSHARED_POOL_SIZE
=64M;

Se pueden vaciar con ALTER SYSTEM


FLUSHSHARED_POOL;(sloloqnoest
en uso por sesiones y q adems no est
fijado).

PL/SQL
AREA

DICTIONARYCACHE

SHAREDPOOL(shared_pool_size)

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

13

SGA:SharedPool

En la library cache se almacena informacin sobre las sentencias SQL y


PL/SQL,usadasrecientemente.Estformadapordosestructuras:
SharedSQLrea;sealmacenanlosplanesdeejecucinylosrbolessintcticos
(parsetree)delassentenciasSQL.
SharedPL/SQLrea;contienelasunidadesdeprogramacompiladasyanalizadas
sintcticamente(parsed):procedures,functions,packagesytriggers.

En la dictionary cache se guardan las definiciones de datos usadas ms


recientemente:databasefiles,tablas,ndices,columnas,usuarios,privilegios,
etc. Esta informacin se genera y utiliza en la fase de anlisis sintctico
(parse);yseobtienedelastablasdeldiccionariodedatos.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

14

SGA:DatabaseBufferCache

Almacenacopiasdelosbloquesdedatos,extradosdelosficherosdedatos(datafiles);yestgestionado
porunalgoritmoLRU.
Cuando se procesa una query, el proceso servidor busca los bloques de datos en la Database Buffer
Cache; si no los encuentra, los lee de los ficheros de datos y guarda una copia en la Database Buffer
Cache.
SutamaodependeprincipalmentedelparmetroDB_CACHE_SIZE(enbytesredondeandoagrnulos),
ypuedemodificarsedinmicamente(sinsobrepasarSGA_MAX_SIZE):
ALTERSYSTEMSETDB_CACHE_SIZE=96M;

LaDatabaseBufferCacheconstadetrescachsindependientes:

DB_CACHE_SIZE.Dimensionalacachpordefecto,quesiempreexisteycuyotamaonopuedevalercero.
DB_KEEP_CACHE_SIZE. Dimensiona la cach donde se guardarn los bloques de tablas que se usan
frecuentemente.
DB_RECYCLE_CACHE_SIZE.Dimensionalacachquealmacenalosbloquesdelastablasqueseusanpoco

ElusodeunauotracachloindicaremosconelparmetroBUFFER_POOL,delaclausulaSTORAGEdelatabla:keep,recycleodefault.

Se pueden definir cachs adicionales para tablas que no usan el tamao de bloque por defecto de la BD; con los
parmetrosDB_nK_CACHE_SIZE,porejemplo,DB_16K_CACHE_SIZE.UtilalimportaruntablespacedeotraBDcon
otrodb_block_size.Elnuevotamaodebloqueseindicaaniveldetablespace.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

15

SGA:RedoLogBufferCache

Es un buffer circular que registra todos los cambios


hechos en los bloques de datos/rollback, en lo que
llamaremos redo entries. Su propsito principal es la
recuperacin de la instancia (no confundir con el
rollback).
Eltamaovienedeterminadoporelparmetrolog_buffer(enbytes).

Las redo entries contienen la informacin necesaria


(indices y rollback incluidos) para repetir los cambios
hechos mediante una sentencia insert, update, delete,
create,alterodrop.
Los procesos servidores copian las entradas de redo en la
RedoLogBufferCache(antesdemodificarlosbloquesenla
cache de datos) ; y el proceso LGWR es el encargado de
volcardichosbuffersalficheroredologactivo(endisco).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

16

SGA:LargePool
Es un rea de memoria de la SGA, a configurar
slosiseusa:
unentornodeservidorescompartidos(sharedserveroMTS)
recoverymanager(RMAN)
parallelquery
ConMTS,almacenainformacinsobrelassesionesconectadasatravsde
servidorescompartidos:UGA,I/Oyoperacionesdebackupyrecuperacin.
NohaceusodealgoritmoLRUparasugestin.
Sutamaodependedelparmetrolarge_pool_size(enbytes),delficherode
inicializacin,quesepuedemodificardinmicamente(sinqueeltamaototal
delaSGAsobrepaseelparmetroSGA_MAX_SIZE):
ALTERSYSTEMSETLARGE_POOL_SIZE=64M;
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

17

SGA:JavaPool

Slo es necesaria si se instala y se usa Java en la BD. Se utiliza para el


anlisissintctico(parsing)deloscomandosJava.
Su tamao depende del parmetro java_pool_size, del fichero de
inicializacin.EnOracle9i,sutamaopordefectoesde24M(sieltamaodel
grnuloesde4M,yde32Msiesde16M.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

18

ProgramGlobalArea(PGA)

Esunazonadememoria,fueradelaSGA,reservadaparacadaprocesodeusuario
queseconectaalaBD.
Se crea cada vez que se arranca un nuevo proceso servidor (o un proceso
background);yseliberacuandoelprocesotermina.
En un entorno de servidores dedicados (dedicated server) contiene: sort area,
informacindesesin(privilegiosdeusuarioyestadsticasdesesin),estadodelos
cursores (etapa del procesamiento de cada sentencia SQL que est usando
actualmentelasesin),pila(stackspace).
Cuandoseutilizanservidorescompartidos,partedeestasestructurassealmacenan
enlaSGA.SiseactivalaLargePoolsealmacenanenella,sinoseguardanenla
SharedPool.
PGA_AGGREGATE_TARGET (>=9i). Valor mnimo 10M. En OLTP RAM*0.80*0.20
(enDSSRAM*0.80*0.50).JustoaWORKAREA_SIZE_POLICY=AUTO,habilitaeluso
deunazonadememoriacompartidaparalasPGA,evitandolanecesidaddeasignar
parmetroscomoSORT_AREA_SIZEoHASH_AREA_SIZE.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

19

ProgramGlobalArea(PGA)

PILA

PILA

SESION

PGA

PGA
(servidordedicado)

SQL

SHAREDPOOL

SGA
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

(servidorcompartido)
SQL

SHAREDPOOL
SESION

LARGEPOOL

SGA
ARQUITECTURADELABD

20

Estructuradeprocesos
Procesosdeusuario:searrancaunocuandounusuariosolicitaunaconexin
alaBD.EstablecelaconexinconlaBDperonointeractadirectamentecon
ella.
Procesosservidores:creadocuandoseestablecelaconexinalaBD.Esel
proceso que interacta con la BD, para cada sesin. Un proceso servidor
puede ser dedicado o compartido. Uno dedicado slo gestiona la peticiones
delasesinqueloinicia;sinembargo,unocompartidogestionalaspeticiones
devariosprocesosdeusuario.
Procesos background: disponibles cuando se arranca una instancia Oracle.
Son los siguientes: DBWR, PMON, SMON, LGWR y CKPT. Opcionalmente
podemos tener: ARCH, RECO, Dispatchers (Dnnn), Shared Servers (Snnn),
Job Queue (Jnnn), etc. El parmetro BACKGROUND_DUMP_DEST, del
ficherodeinicializacin,defineeldirectoriodondeseguardanlosficherosde
trazadelosprocesosbackground.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

21

Procesosbackground(DBWR)

DBWR.Escribelosbloquesdedatos(yrollback)delaSGA(databuffercache)enlos
ficherosdedatos.Estolohacedeformaasncrona,cuando:
Sucedeuncheckpoint.
Elnmerodebuffersmodificadosalcanzaunumbral.
Noquedanbufferslibres.
Ocurreuntimeout.
Ponemosuntablespaceoffline.
Dejamosuntablespaceenmodoreadonly.
Borramosotruncamosunatabla.
ALTERTABLESPACEnombretspBEGINBACKUP.
Nota.Uncheckpointsucedecuando:
Elficheroredologsellenaal90%.
Sealcanzalog_checkpoint_interval(bloquesdelSO).
Sellegaalog_checkpoint_timeout(ensegundos).

Nombredelproceso:DBW0aDBW9yDBWaDBWj(mximo20).

DB_WRITER_PROCESSES.Ndeprocesosarrancados.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

22

Procesosbackground(LGWR,SMON)

LGWR. Realiza escrituras secuenciales del contenidodela redolog buffer cacheen


losficherosredolog.Cuando?
Sehacecommit.
Laredologbuffercachesellena1/3.
Hay1Mbdecambiosenlaredologbuffercache.
Comomucho,cada3segundos.
SiempreantesqueescribaelDBWR.
SMON. Recupera la instancia, si es necesario, cuando sta arranca: aplica los
cambios registrados en los redo log (roll forward), abre la base de datos dejndola
accesiblealosusuarios,yhacerollbackdelastransaccionesquenoterminaron.
Tambin se activa peridicamente, agrupando extensiones libres contiguas en extensiones de
mayortamao(sloparatablespacescondefaultstoragecuyopctincrease>0).
Adems libera el espacio ocupado por segmentos temporales durante el procesamiento de
sentenciasSQL.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

23

Procesosbackground(PMON,CKPT,ARCH)

PMON.Seactivaperidicamente,recuperandolosrecursosdespusdeque
un proceso falle: hace rollback delas transacciones que el usuariotena en
curso,liberabloqueosaniveldetabla/filayotrosrecursosreservadosporel
usuario,yvuelveaarrancardispatchersmuertos(deaddispatchers).
CKPT. Avisa al DBWR cuando sucede un checkpoint y actualiza las
cabecerasdelosficherosdedatosydecontrol(elDBWRvolcarlosbuffers
actualizados a los ficheros de datos). Si los checkpoints suceden muy
frecuentemente puede haber contencin en disco. Si tardan mucho se
alargar el proceso de recovery. Como mucho suceder un checkpoint al
llenarseelredolog.
ARCH.Proceso opcional.Archiva automticamentelosredologonline si se
activa el modo ARCHIVELOG; asegurando que se registran todos los
cambioshechosenlabasededatos.Archivaelredologquesehallenado,
cuandosucedeunlogswitch.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

24

ESTRUCTURALGICA

La estructura lgica de la base de datos determina el uso que se hace del

espacio fsico que la sustenta. Existe una jerarqua topdown en esta


estructura,consistenteentablespaces,segmentos,extensionesybloques.
UnaBDOlaformanungrupodetablespaces.Untablespacepuedecontener
unoomssegmentos.Unsegmentolointegranunaomsextensiones.Una
extensin tendr al menos un bloque. El bloque es la unidad mnima de
almacenamiento.
El tamao del bloque ser mltiplo del que tenga el SO, y lo determina la
variabledb_block_size(2K,4K,8K,16Ky32K).
Cuandounsegmento(tabla,ndice,rollbackotemporal)crece,elespacioque
seaadeesdeunaextensin.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

25

ESTRUCTURALGICA

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

26

ARQUITECTURAOFA

OFA(OracleFlexibleArchitecture)proponeunaestructuradedirectoriosquepermite
ubicarfcilmentecualquierficherodelservidordebasededatos;ademsdeagrupar
dichosficherosporcomponentes.

Adems,facilitaelrepartodelosficherosentrediferentesdiscos,optimizandolaE/S.
Oraclerecomiendasepararelsoftwaredelosdatos;yestosltimosrepartirlosentre
varios discos (por ejemplo, separando datos e ndices, incluso tambin temp y
rollback):
/u01/app/oracle(ORACLE_BASE)
$ORACLE_BASE/product/9.2.0.1.0(ORACLE_HOME)
$ORACLE_HOME/bin(Ejecutables)
$ORACLE_HOME/dbs(initSID.ora,orapwSID)
$ORACLE_BASE/admin/SID(ADMIN)
$ORACLE_BASE/admin/SID/pfile(PFILE)
initSID.ora(crearenlaceen$ORACLE_HOME/dbs)
$ORACLE_BASE/admin/SID/bdump(BDUMP)
alertSID.orayficherosdetrazadeprocesosbackground

/u02/oradata/SID(FicherosdelaBD:*.dbf,*.ctl,*.log)
/u03/oradata/SID(FicherosdelaBD:*.dbf,*.ctl,*.log)
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

27

USUARIOSADMINISTRADORESDELABD
Cuando creamos una BDO se crean automticamente los usuarios SYS y
SYSTEM,ambosconelrolDBA.

El SYS, cuya clave inicial es change_on_install, es el propietario del DD y


habitualmenteseusaparaarrancarypararlabasededatos,ascomopara
modificar los componentes de la misma (como instalar nuevas opciones).
ParaconectarcomoSYS:
CONNECTSYSASSYSDBA
CONNECT/ASSYSDBA
Nota:hayqueperteneceralgrupodba(Unix/Linux)ocrearun
ficherodeautenticacinenelSBD.

ElSYSTEM,conclaveinicialmanager,eselDBAporexcelencia.Seusara
para las tareas administrativas habituales: alta de usuarios, creacin de
tablespaces,etc.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

28

FICHERODEAUTENTICACIN

Un fichero de autenticacin nos permite conectar a la BD como SYS AS SYSDBA, sin


pertenecer al grupo dba o desde un puesto remoto al SBD, realizando dicha autenticacin
contraelmencionadofichero.Lousaremoscuandonodispongamosdeunaconexindesdeel
propioSBDcomogrupodba.
Parausarunficherodeautenticacin:
Crearemoselficheroconlautilidadorapwd:

orapwd file=nombre_fichero password=clave


entries=mximo_de_usuarios
Nota:elficherosellamarorapw$ORACLE_SIDyestaren$ORACLE_HOME/dbs.

ActivaremoselparmetroREMOTE_LOGIN_PASSWORDFILEdelinit:
EXCLUSIVE.PermitedarelprivilegioSYSDBAaotrosusuarios(ademsdelSYS).Slouna
instanciausaelfichero.
SHARED.ElnicousuarioreconocidoporleficheroeselSYS.Elficheropuedesercompartido
porvariasinstancias.
Incluiremoselusuarioenelficherodeclaves(paraelSYSnohayquehacerlo):
GRANT SYSDBA TO usuario;
Nota: en V$PWFILE_USERS estn los usuarios con SYSDBA y/o SYSOPER.

ConectaremosalaBD(elusuarioOraclequeseconectasiempreeselSYS):
CONNECT usuario/clave AS SYSDBA
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

29

VISTASDELDD

V$DATABASE(Basededatos).

V$INSTANCE(Instancia).

V$SGA(SGA).

V$SGASTAT(SGAdetallada).

V$BUFFER_POOL(Buffersenlacachdedatos)

V$SQLAREA(SentenciasSQL).

V$PROCESS(Procesos).

V$BGPROCESS(Procesosbackground).

V$DATAFILE(FicherosdedatosdelaBD).

V$CONTROLFILE(FicherosdecontroldelaBD).

V$LOGFILE(FicherosredologdelaBD).

DBA_TABLESPACES(TablespacesdelaBD).

DBA_SEGMENTS(Segmentosquehayenlostablespaces).

DBA_EXTENTS(Extensionesquecomponenlossegmentos).

DBA_USERS(UsuariosdelaBD).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

30

PRACTICASTEMA1

1.1.Comprobarlaasignacindevariablesdeentornonecesariasparaconectarnosala
BD:

echo$ORACLE_HOME
echo$ORACLE_SID
echo$LD_LIBRARY_PATH
echo$PATH

1.2.Identificarlosprocesosquecomponeninstancia:

psef|grep$ORACLE_SID
selectusername,programfromv$processwherebackgroundisnotnull;
selectname,descriptionfromv$bgprocesswherePADDR!='00';

1.3.VereltamaodelaSGAdelaBD:

1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA:

select*fromv$sga;
select*fromv$sgastat;
select*fromv$sgastatwherenamein('librarycache','dictionarycache','sql
area','buffer_cache','log_buffer');

showparametershared_pool_size
showparameterdb_cache_size
showparameterdb_block_size
showparameterlog_buffer
showparameterlarge_pool_size
showparameterjava_pool_size

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

31

PRACTICASTEMA1.

1.5.ComprobarficherosquecomponenlaBDyubicarlosenlaestructuraOFA:

lsl/u0?/oradata/$ORACLE_SID
selectnamefromv$datafile;
selectnamefromv$tempfile;
selectmemberfromv$logfile;
selectnamefromv$controlfile;

1.6.IdentificarlaestructuralgicadelaBD:tablespaces,segmentos,extensiones.
Selecttablespace_namefromdba_tablespaces;
selecttablespace_name,file_namefromdba_data_filesorderbytablespace_name,
file_name;
selecttablespace_name,segment_type,count(*)segmentosfromdba_segmentsgroupby
tablespace_name,segment_type;
selecttablespace_name,segment_type,count(*)extensionesfromdba_extentsgroupby
tablespace_name,segment_type;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

32

PRACTICASTEMA1.

1.7.Consultarinformacinsobrelabasededatos(v$database)ylainstancia
(v$instance).
selectname,created,log_mode,checkpoint_change#,open_mode
fromv$database;
selectinstance_name,host_name,version,startup_time,
status,archiver,logins,database_statusfromv$instance;

1.8.Localizarelprocesoservidorasociadoamisesin(v$processyv$session).Es
unservidordedicadoocompartido?
selecta.server,a.usernamedbuser,a.programuser_program,b.spidserver_process,b.program
server_program
fromv$sessiona,v$processb
wherea.username=USERanda.PADDR=b.ADDR;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

33

PRACTICASTEMA1.

1.9.CuantoocupalaDictionarycacheylaLibrarycacheentuBD?(v$sgastat)
select*fromv$sgastatwherenamelike'%cache';

1.10.VerlaactividaddelaLibraryCache(v$librarycache).
selectnamespace,gethitratio,gethitratiofromv$librarycache;

1.11.VerlassentenciasSQLqueguardalaSharedPool(v$sqlarea).
selectsql_textfromv$sqlarea;

1.12.Crearelficherodeautenticacinyactivarlo(orapwd).
orapwdfile=$ORACLE_HOME/dbs/orapwCURSO01password=miclaveentries=5
remote_login_passwordfile=EXCLUSIVE"

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARQUITECTURADELABD

34

TEMA2
ARRANQUEYPARADADELABASEDEDATOS

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

35

TEMA2.
ARRANQUEYPARADADELABD
Ficherosdeinicializacin:init.orayspfile.ora
CreacindelaBD
OMF(OracleManagedFiles)
Arranquedelabasededatos
Comandostartup
Comandoalterdatabase
Pararlabasededatos
FicheroalertSID.Log
Trazasdelosprocesosbackground
Trazasdelosprocesosdeusuario
Diccionariodedatos
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

36

FICHEROSDEPARMETROSDE
INICIALIZACINI
Paraarrancarlainstancia,elservidorOracletienequeleerelficherodeparmetrosde

inicializacin(spfileoinit),cuyaubicacinpredeterminadaes$ORACLE_HOME/dbs.
Elficherodeparmetrosdeinicializacinpuedeserdedostipos:
Init:setratadeunficherodetexto,editable,cuyonombresigueelpatrn
init$ORACLE_SID.ora.
Spfile:esunficherobinario,noeditableperovisualizable,cuyonombresigueel
patrnspfile$ORACLE_SID.ora.
Secrea,apartirdeuninit,con:
CREATESPFILE[='nombre']FROMPFILE[='nombre'];
Nota1.Siseomitenlosnombres,tomalosvalorespordefecto.
Nota2.LaBDnopodrabrirelnuevospfilehastaelsiguientearranque.
Nota3.Sepuedecrearuninitapartirdeunspfile,invirtiendolasintaxis.

Losparmetrosdelspfilesemodificancon:

ALTERSYSTEMSETparametro=valor[SCOPE=MEMORY
|SPFILE|BOTH]
Nota.Sisloqueremosmodificarelparmetroenelspfile,indicaremosSPFILE.Parahacerelcambio
soloenmemoria,especificarMEMORY.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

37

FICHEROSDEPARMETROSDE
INICIALIZACINII
Haydostiposdeparmetros:

Explcitos:losqueseindicanenelficherodeparmetros.
Implcitos:elresto,quetomarnunvalorpordefecto.
Laformadeindicarvaloralosparmetrosesparametro=valor.
Elsmbolo#indicaelcomienzodeuncomentario,pudiendoestaralprincipiooen
mediodelalnea.
Enelinit.ora,elparmetroifilepermiteincluirotrosficherosconparmetros.
Unalistadevaloresseindicarentreparntesis,separandolosvaloresporcomas.
Paraindicarunvalordetipocadenadecaractereshayqueencerrarloentrecomillas
simples.
SiusamosOFA,laubicacintpicaparaelinit.oraes
$ORACLE_BASE/admin/$ORACLE_SID/pfile.Despuscreamosunenlaceen
$ORACLE_HOME/dbs(ubicacinpordefecto).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

38

EJEMPLODEINIT.ORA
db_name=CURSO98 # Nombre de la BD.
log_checkpoint_interval = 10000 # checkpoint
max_dump_file_size = 10240
# tamo mximo fichero traza de 5M
control_files = (/u02/oradata/CURSO98/ora_control1,
/u03/oradata/CURSO98/ora_control2)
compatible = 9.2.0
undo_management = auto
# Gestin automtica de Rollback
undo_tablespace = undo_rbs1
# Tablespace de undo
background_dump_dest = /u01/app/oracle/admin/CURSO98/bdump
core_dump_dest = /u01/app/oracle/admin/CURSO98/cdump
user_dump_dest = /u01/app/oracle/admin/CURSO98/udump
db_cache_size = 1M
# Tamao de la cach de datos
sga_max_size = 30M
# Tamao mximo de la SGA
shared_pool_size = 8M
# Tamao de la shared pool
large_pool_size = 0
java_pool_size = 0
log_buffer = 32768
# Tamao, en bytes, de la cache de redo
processes = 10
# N mx. de procesos
remote_login_passwordfile=EXCLUSIVE # Fichero de claves

Nota.SetratadeunficherodetextoquehayquemantenermanualmenteconuneditorASCII(comoelvioel
notepad).
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

39

EJEMPLODESPFILE.ORA
*.background_dump_dest='/u01/app/oracle/admin/CURSO98/bdump'
*.compatible='9.2.0'
*.control_files='/u02/oradata/CURSO98/ora_control1','/u03/orad
ata/CURSO98/ora_control2'
*.core_dump_dest='/u01/app/oracle/admin/CURSO98/cdump'
*.db_cache_size=1M# Tamae la cache datos
*.db_name='CURSO98'# Nombre de la BD.
*.java_pool_size=0
*.large_pool_size=0
*.log_buffer=32768# Tamaen bytes, de la cache de redo
*.log_checkpoint_interval=10000# checkpoint
*.max_dump_file_size='10240'# tammo fichero traza
*.processes=10# N m de procesos
*.remote_login_passwordfile='EXCLUSIVE'# Fichero de claves
*.sga_max_size=30M# Tamamo de la SGA
*.shared_pool_size=8M# Tamae la shared pool
*.user_dump_dest='/u01/app/oracle/admin/CURSO98/udump'
Nota.Esunficherobinarioynosepuedeeditar.Enelejemploseveunspfilegeneradoapartirdelinit
delejemploanterior(alserbinario,puedenversecaracteresextraos).
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

40

CREARLABASEDEDATOS

ParacrearunaBDnecesitamos:

ConectarnosalservidorOraclecomoSYSASSYSDBA,autenticndonoscontraelS.O.o
usandounficherodeclaves.
SuficientememoriaparaarrancarlainstanciayespacioendiscoparacrearlaBD.

ParaubicarlosficherosquecomponenlaBD:

Guardaremos,almenos,doscopiasdelficherodecontrol,endiscosseparados.
Multiplexaremoslosredologendiscosdiferentes(separadosdelrestodelaBD).
Separaremoslosficherosdedatosqueprovoquencontencinendisco;porejemplo:datos,
ndices,system(DD),tempyrollback.

LaBDlapodemoscrearconelasistentegrfico(enLinuxdbca)oconelcomando
CREATEDATABASE:

Crearemosunficheroinit.ora,ysiqueremos,unspfile.ora.
ArrancaremoslasinstanciaconSTARTUPNOMOUNT.
CrearemoslaBDconelcomandoCREATEDATABASE.
Ejecutaremoslosscriptscatalog.sqlycatproc.sqlqueestnen
$ORACLE_HOME/rdbms/admin.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

41

EJEMPLODECREACIONDEBASEDE
DATOS
connect/assysdba
startupnomount

CREATEDATABASE"CURSO98"
maxdatafiles254
maxinstances1
maxlogfiles32
charactersetWE8ISO8859P15
DATAFILE'/u02/oradata/CURSO98/system01.dbf'SIZE260M
AUTOEXTENDONNEXT10M
EXTENTMANAGEMENTLOCAL
UNDOTABLESPACEUNDO_RBS1
DATAFILE'/u03/oradata/CURSO98/rbs01.dbf'SIZE10M
DEFAULTTEMPORARYTABLESPACETEMP
TEMPFILE'/u03/oradata/CURSO98/temp01.dbf'SIZE10M
EXTENTMANAGEMENTLOCALUNIFORMSIZE64K
logfile'/u04/oradata/CURSO98/redo01.log'SIZE3M,
'/u04/oradata/CURSO98/redo02.log'SIZE3M,
'/u04/oradata/CURSO98/redo03.log'SIZE3M;
rem***CREACIONDELASVISTASDELDD***
@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql
@$ORACLE_HOME/rdbms/admin/catexp.sql
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

42

ORACLEMANAGEDFILES(OMF)

OMFpermitequeOracleseencarguedelacreacindelosficherosquecomponenlaBD,
simplificandolaadministracindelamisma.
OMFseactivamediantedosparmetrosdeinicializacin:
DB_CREATE_FILE_DEST.Defineeldirectoriodondeseubicarnlosficheros.
DB_CREATE_ONLINE_LOG_DEST_N.Establecelosdirectoriosdondeseguardarnlosficherosde
controlyredolog;dondeNpuedevalerde1a5.
Nota.Sepuedenactivarambosparmetrososlounoellos.

EjemploparacrearunaBD,usandoOMF,separandolosficherosredologydecontroldelresto:
Parmetrosdeinicializacin:
DB_CREATE_FILE_DEST='/u02/oradata/CURSO98'
DB_CREATE_ONLINE_LOG_DEST_1='/u03/oradata/CURSO98'
DB_CREATE_ONLINE_LOG_DEST_2='/u04/oradata/CURSO98'

CreacindelaBD:
CREATEDATABASECURSO98
charactersetWE8ISO8859P15
UNDOTABLESPACEUNDO_RBS
DEFAULTTEMPORARYTABLESPACETEMP;
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

43

ARRANCARLABASEDEDATOS

Cuando arrancamos una BDO, pasa por varios estados hasta que finalmente queda

accesiblealosusuarios:nomount,mountyopen.
En el primer estado (nomount) se arranca la instancia: lectura del fichero de
parmetros,creacindelaSGA,arranquedelosprocesosbackgroundyaperturadel
ficheroalert$ORACLE_SID.log.
Nota: el fichero de parmetros se busca en $ORACLE_HOME/dbs, comenzando por
spfile$ORACLE_SID.ora. Si no lo encuentra, sigue con spfile.ora, y finalmente
init$ORACLE_SID.ora.

SeguidamentelaBDsemonta(mount)abriendoelficherodecontrolyobteniendode

llosnombresdelosficherosquelacomponen:datafilesyredolog.
FinalmenteseabrelaBD(open),procediendoalaaperturadelosficherosdedatos
(datafiles)ylosficherosredolog.Elservidororaclecompruebalaconsistenciadela
base de datos, y si es necesario el proceso SMON inicia la recuperacin de la
instancia.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

44

COMANDOSTARTUP

ArrancalainstanciayabrelaBD.Permitepararelprocesodearranquedela
BDencualquieradesusfases(NOMOUNT,MOUNT).

STARTUP(abrelabasededatosconelficherodeparmetrospordefecto).
STARTUPPFILE=/home/CURSO/curso30/miinit.ora
STARTUPNOMOUNT(paracrearlabasededatos).
STARTUPMOUNT(pararenombrardatafiles,activarARCHIVELOGohacer
unarecuperacincompletadelaBD).

STARTUPRESTRICT(slopermitelaconexindeusuariosconelprivilegio
RESTRICTEDSESION).

STARTUPFORCE(haceSHUTDOWNABORTyarrancalaBD).
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

45

COMANDOALTERDATABASE

Permitecambiarelestadodelabasededatos.PorejemplodeNOMOUNTa

MOUNT,odeMOUNTaOPEN.TambinseutilizaparadejarlaBDenmodo
READONLY.

ALTERDATABASE{MOUNT|OPEN}
ALTERDATABASEOPEN[READWRITE|READONLY]

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

46

PARARLABASEDEDATOS

Hay determinadas operaciones que requieren parar la BD; como la actualizacin de


algunosparmetrosdelinit.ora;ohacerunacopiafsicadelaBD(copiaenfrio).LaBD
separaconelcomandoSHUTDOWN,impidiendocualquierconexinposterior.
SHUTDOWN [NORMAL], espera a que terminen todas las transacciones en curso y
todaslassesiones,fuerzauncheckpoint,ademsdecerrartodoslosficheros.
SHUTDOWN TRANSACTIONAL, slo espera a que terminen las transacciones en
curso,fuerzauncheckpointycierralosficheros.
SHUTDOWNIMMEDIATE,hacerollbackdetodaslastransaccionesencursoycierra
todaslassesiones;cierraydesmontalaBD,ademsdepararlainstancia(comolos
anteriores).
SHUTDOWN ABORT, cierra la instancia sin esperar a desmontar ni cerrar la BD
(comoenunacaida).Requiererecoveryalarrancar.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

47

COMANDOSHUTDOWN

Sintaxis:
SHUTDOWN[NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT]

Tiposdeparada.Cadaunadelasopcionesdeparadasecomportadeformadiferente
encuantoaesperaraqueterminentransaccionesysesiones;odesmontarycerrarla
BD:

EsperarTransacciones
EsperarSesiones
Checkpoint
DesmontarBD
CerrarBD
Pararinstancia

NORMAL
S
S
S
S
S
S

TRANSACTIONAL
S
N
S
S
S
S

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

IMMEDIATE
N
N
S
S
S
S

ARRANQUEYPARADADELABD

ABORT
N
N
N
N
N
S
48

FICHEROalert.log

EselficherodelogdelaBDylaprimerareferenciaparaelDBAeneldaadadela
administracindelamisma.
Por defecto est en $ORACLE_HOME/rdbms/log; o en el directorio que indique el
parmetroBACKGROUND_DUMP_DESTdelinit. SiusamosOFA,unaubicacintpicaes
$ORACLE_BASE/admin/$ORACLE_SID/bdump.

Recogetantoinformacindeestadocomoerrores:
arranqueyparada,
parmetrosdelinitsinvalorespordefecto,
arranquedelosprocesosbackground,
cambiodeficheroredolog(logswitch),
creacindetablespacesysegmentosderollback,
comandosalter(alterdatabase,altertablespace,etc),
errores ORA600 y los que indican falta de espacio (llenado de tablas, ndices,
tablespaces,etc).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

49

EJEMPLODEalert.log
Tue Oct 26 13:11:08 2004
Starting ORACLE instance (normal)
...
Starting up ORACLE RDBMS Version:
9.2.0.1.0.
System parameters with non-default values:
processes
= 10
shared_pool_size
= 8388608
sga_max_size
= 34148352
...
db_cache_size
= 4194304
log_buffer
= 32768
undo_management
= AUTO
undo_tablespace
= undo_rbs1
...
db_name
= CURSO98
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7

Tue Oct 26 13:11:08 2004


ALTER DATABASE
MOUNT
...
Tue Oct 26 13:11:13 2004
ALTER DATABASE OPEN
Tue Oct 26 13:11:13 2004
Beginning crash recovery of 1 threads
...
Tue Oct 26 13:11:13 2004
Crash recovery completed successfully
...
Tue Oct 26 13:11:13 2004
Undo Segment 1 Onlined
Undo Segment 2 Onlined
Undo Segment 3 Onlined
...
Tue Oct 26 13:11:16 2004
Completed: ALTER DATABASE OPEN
Wed Oct 27 19:34:06 2004
Thread 1 advanced to log sequence 552
Current log# 3 seq# 552 mem# 0:
/home/u04/oradata/CURSO98/redo03.log

Nota.Enelejemplodearribasepuedeverelarranquedelainstancia,losparmetrosasignados,losprocesosarrancados,comosemontala
BD,larecuperacindelainstancia,laactivacindelossegmentosderollbackautomticos(undo),ycmofinalmenteseabrelaBDyse
empiezanausarlosficheroredolog.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

50

FICHEROSDETRAZADELOSPROCESOS
BACKGROUND
Registran errores producidos en los procesos background de la instancia:
LGWR,DBWR,SMON,PMON,etc.
Se generan en el directorio indicado por el parmetro de inicializacin
BACKGROUND_DUMP_DEST,
que
por
defecto
es
$ORACLE_HOME/rdbms/log.SiseutilizalaarquitecturaOFAparaubicarlos
ficheros Oracle, una ubicacin tpica para estos ficheros de traza es
$ORACLE_BASE/admin/$ORACLE_SID/bdump.
Su nombre sigue el patrn ${ORACLE_SID}_nombreproceso_pid.trc; por
ejemplo, curso30_smon_16432.trc (los nombres de los ficheros de traza en
Unix/Linuxestnsiempreenminsculas).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

51

FICHEROSDETRAZADELOSPROCESOS
DEUSUARIO

RecogenestadsticasdeseguimientodesentenciasSQLoerroresenlassesionesde
usuario.
Las trazas de usuario se generan en el directorio que indique el parmetro
USER_DUMP_DEST(pordefecto,$ORACLE_HOME/rdbms/log).SiusamosOFA,una
ubicacintpicaes$ORACLE_BASE/admin/$ORACLE_SID/udump.
SutamaoestlimitadoporelparmetroMAX_DUMP_FILE_SIZE.
Sus nombres siguen el patrn ${ORACLE_SID}_ora_pid.trc; por ejemplo,
curso98_ora_23654.trc(siempreenminsculas).
Pueden ser muy tiles para el ajuste de sentencias SQL. En este caso se pueden
generarvoluntariamenteactivandolatraza:
AniveldesesinconALTERSESSIONSETSQL_TRACE=TRUE;,
Desde una sesin del DBA con dbms_system.set_sql_trace_in_session(sid,true), donde
SID es el n de sesion oracle (V$SESSION, V$PROCESS). Se desactiva de igual forma
(indicandofalseenlugardetrue).
Aniveldeinstancia,conelparmetroSQL_TRACE=TRUEdelinit.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

52

DICCIONARIODEDATOS(DD)

El DD est compuesto por un conjunto de tablas y vistas asociadas donde se


almacena toda la informacin sobre los objetos que componen la BD, as como la
estructuralgicayfsicadelamisma.
ElDDincluyedostiposdeobjetos:tablasbaseyvistas.
Las tablas base se crean automticamente cuando creamos la BD con el comando
CREATEDATABASE;ysonlasquerealmentecontienenlainformacindelDD.
Lasvistassecreanallanzarelscriptcatalog.sql;ypermitenaccederalainformacindelas
tablasdelDD(queestcodificada).

ElDDcontieneinformacinsobre:ladefinicindetodoslosobjetosdelaBD(tablas,
vistas,ndices, sinnimos,secuencias,procedimientos,funciones,paquetes,triggers,
etc), el espacio ocupado por cada objeto, condiciones de integridad, usuarios,
privilegios,roles,ascomoauditoradelsistema.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

53

VISTASDELDICCIONARIODEDATOS

ElDDsemodificacadavezquelanzamosunasentenciaDDL.
LasvistasestticasqueformanpartedelDDsondetrestipos:dba,allyuser.Cada
unadeellastendrunprefijoasociadoquelaubicaenunodedichostipos.
DBA:todoslosobjetosdelaBD.
ALL:todoslosobjetosaccesiblesporelusuarioactual.
USER:todoslosobjetospropiedaddelusuarioactual.
La vista DICTIONARY contiene una lista de todas las vistas del DD; y en
DICT_COLUMNStenemoseldetalledelascolumnasdecadaunadeellas.
EjemplosdevistasdelDD:

Objetos de la BD: dba_objects, dba_tables, dba_indexes, dba_tab_columns,


dba_ind_columns,dba_constraints,dba_views.
Espacioocupado:dba_data_files,dba_segments,dba_extents.
EstructuradelaBD:dba_tablespaces,dba_data_files.

ElDDtambintienelasllamadastablasdinmicas,cuyasvistastienenelprefijoV$(comoV$SESSION).Se
crean al arrancar la instancia y residen en memoria. Cuando cerramos la BD (y por tanto la instancia),
desaparecenyconellassucontenido.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

54

VISTASDELDD
V$INSTANCE
V$DATABASE
V$SESSION
V$PROCESS
V$PARAMETER
V$PARAMETER2
V$SYSTEM_PARAMETER
V$SYSTEM_PARAMETER2
DICTIONARY
DICT_COLUMNS
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

55

PRACTICASTEMA2.
2.1.Ficheroinit.ora.ArranqueyparadadelaBD.

Localizarelficheroinit.ora(yspfilesiexiste)denuestraBD:

Anotarelvalordelosparmetros:db_block_size,shared_pool_size,db_cache_size,log_buffer,processes.

Crearfichero/home/CURSO/cursoxy/init01xy.ora,copiadelinitCURSOxy.ora,ymodificarprocesses=9.

ArrancarlaBDycomprobarvalordeparmetros,porqunohatomadoelnuevovalor?.

PararlaBDyarrancarconelinit01xy.ora.Comprobarparmetroprocesses.Abrirotraconexindesqlplusy
verquocurre.

lsl$ORACLE_HOME/dbs/init$ORACLE_SID.ora
lsl$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

more$ORACLE_HOME/dbs/init$ORACLE_SID.ora
grepprocesses$ORACLE_HOME/dbs/init$ORACLE_SID.ora

cp$ORACLE_HOME/dbs/init$ORACLE_SID.orainit01xy.ora
echoprocesses=9>>init01xy.ora
tailinit01xy.ora

STARTUP
showparameterprocesses

SHUTDOWNimmediate
STARTUPpfile=init01xy.ora
showparameterprocesses

PararlaBDdeformanormal,estandoconectadoalgnusuarioyverquocurre.Yqusucedecuandotodos
losusuariossedesconectan.

SHUTDOWN

SHUTDOWNIMMEDIATE

RepetirlaparadadelaBD,estandoconectadoalgnusuario,deformaquenoespere:

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

56

PRACTICASTEMA2.
2.2.ArranquedelaBD(STARTUP).ComprobarlasdiferentesfasesenelarranquedelaBD.

Arrancarslolainstancia(NOMOUNT)yconsultaralgnparmetro.QuocurrealaccederaV$CONTROLFILE.
STARTUPNOMOUNT
SHOWPARAMETERprocesses
SELECT*FROMV$CONTROLFILE;
AhoramontarlaBDyvolveraconsultarV$CONTROLFILE.QuesucedealleerDBA_USERS.
ALTERDATABASEMOUNT
SELECT*FROMV$CONTROLFILE;
SELECT*FROMDBA_USERS;
AbrirlaBDenmodoREADONLYycrearunatabla.ActivarmodoREADWRITEyvolveracrearlatabla.
ALTERDATABASEOPENREADONLY
CREATETABLEMITABLA(C1VARCHAR2(2));
ALTERDATABASEOPENREADWRITE
CREATETABLEMITABLA(C1VARCHAR2(2));

2.3.Ficheroalert.logyficherosdetraza.Diccionariodedatos.

BuscaryconsultarelficherodealertdelaBD.
lsl$ORACLE_HOME/rdbms/log/alert_$ORACLE_SID.log
lsl$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log
catalert_$ORACLE_SID.log
tail26falert_$ORACLE_SID.log
Buscarsihayficherosdetraza.
lsl$ORACLE_HOME/rdbms/log/*.trc
lsl$ORACLE_BASE/admin/$ORACLE_SID/bdump/*.trc
lsl$ORACLE_BASE/admin/$ORACLE_SID/udump/*.trc
SacarlalistadevistasdelDD.Consultarlascolumnasdedichasvistas.
Select*fromDICTIONARY;
Select*fromDICT_COLUMNS;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

57

PRACTICASTEMA2.
2.4. Impedir las conexiones de usuarios, de modo que el DBA s pueda conectarse. Intenta
conectartecomoscott/tiger.Volverapermitirconexionesdeusuarios.
STARTUPRESTRICT(silaBDestparada)
ALTERSYSTEMENABLERESTRICTEDSESSION;(silaBDestabaarrancada)
ALTERSYSTEMDISABLERESTRICTEDSESSION;

2.5.ForzaruncheckpointyhaceruninsertenlatablaSCOTT.DEPT.Inmediatamentedespus
hacerSHUTDOWNABORT.ArrancarycomprobarSCOTT.DEPT.Volverarepetirelinsert,
haciendo commit antes del SHUTDOWN ABORT; y comprueba el contenido de
SCOTT.DEPT.

ALTERSYSTEMCHECKPOINT;
insertintoscott.deptvalues(99,'FORMACION','MURCIA');
SHUTDOWNABORT
STARTUP
SELECT*FROMSCOTT.DEPT;
insertintoscott.deptvalues(99,'FORMACION','MURCIA');
COMMIT;
SHUTDOWNABORT
STARTUP
SELECT*FROMSCOTT.DEPT;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

58

PRACTICASTEMA2.
2.6.ConctatecomoSCOTTyhazupdatesobreDEPT(sinhacercommit).Desdeotrasesin,
cierralaBDconSHUTDOWNTRANSACTIONAL.Qupasaalhacercommitenlasesinde
SCOTT?
CONNECTSCOTT/TIGER
SHUTDOWNTRANSACTIONAL(sesindelsys)
updatedeptsetdeptno=88wheredeptno=99;(sesindescott)
COMMIT;(sesindescott)
2.7.Conctatecomousuarioscott/tiger.ActivalatrazayhazunaqueryconunajoinentreEMP
yDEPT(selecta.ename,b.dnamefromempa,deptbwherea.deptno=b.deptno;).Desactivala
trazayanalizaelficheroquesehageneradoconelcomandotkprof(esuncomandounix,no
deSQL).
CONNECTSCOTT/TIGER
ALTERSESSIONSETSQL_TRACE=TRUE;
tkprofnombre_fichero_traza.trcsalida_traza.txtexplain=scott/tigersys=no(desdefueraSQL)
catsalida_traza.txt
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

ARRANQUEYPARADADELABD

59

TEMA3
FICHERODECONTROL

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

60

TEMA3.
FICHERODECONTROL

Ficherodecontrol
Contenidodelficherodecontrol
Multiplexarficherodecontrol
Backupdelficherodecontrol

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

61

FICHERODECONTROL

Setratadeunficherobinario,sinelcualnoesposiblearrancarlaBD.Porello
esconvenientemantenervariascopiasdelmismo,endiferentesdiscos.

SeleealmontarlaBD.
Sutamaoesfijo,ydependedelosparmetrosindicadosalcrearlaBDcon
CREATEDATABASE;comoporejemploMAXLOGFILESyMAXDATAFILES.

Elficherodecontrolcontieneinformacincomo:nombredelaBD,fechade
creacindelaBD,nombresdelostablespaces,nombreylocalizacindelos
ficheros de datos y de redo, nmero de secuencia del redo log en curso,
informacin de checkpoint, informacin del archivado de los redo log,
informacindebackup.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

62

AADIRCOPIASYBACKUPDELFICHERO
DECONTROL

Paraaadirunacopiadelficherodecontrol:
SeparalaBDconSHUTDOWNNORMAL.
Sehaceunacopiafsicadelficherodecontrol,aniveldelsistemaoperativo.EnUnixconel
comandocp.
Se incluye la nueva copia del fichero de control en el init.ora (o spfile); en el parmetro
CONTROL_FILES.
ArrancarlaBDconSTARTUP.

Se recomienda sacar una copia de seguridad del fichero de control cada vez que
cambielaestructurafsicadelaBD:
ALTERDATABASEBACKUPCONTROLFILETOTRACE;
Deestaformasegeneran,enunficherodetraza,lassentenciassqlnecesariasparavolver
acrearelficherodecontrol.
ALTERDATABASEBACKUPCONTROLFILETO
/u02/oradata/CURSO98/ora_control01.bak;

En la vista V$CONTROLFILE tenemos la lista de todos los ficheros de control de la


BD. En V$CONTROLFILE_RECORD_SECTION veremos las diferentes secciones y
suestadodeuso.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

63

ALTERDATABASEBACKUPCONTROLFILE
TOTRACE
STARTUPNOMOUNT
CREATE CONTROLFILE REUSE DATABASE "CURSO98" NORESETLOGS
NOARCHIVELOG
MAXLOGFILES32
MAXLOGMEMBERS2
MAXDATAFILES254
MAXINSTANCES1
MAXLOGHISTORY843
LOGFILE
GROUP1'/home/u04/oradata/CURSO98/redo01.log'SIZE500K,
GROUP2'/home/u04/oradata/CURSO98/redo02.log'SIZE500K,
GROUP3'/home/u04/oradata/CURSO98/redo03.log'SIZE500K
DATAFILE
'/home/u02/oradata/CURSO98/system01.dbf',
'/home/u03/oradata/CURSO98/rbs01.dbf',
'/home/u03/oradata/CURSO98/temp01.dbf'
CHARACTERSETWE8ISO8859P15;
ALTERDATABASEOPEN;
Nota:sihubiesequeindicarlaopcinRESETLOGS,seperderelcontenidodelosficherosredolog.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

64

VISTASDELDD

V$CONTROLFILE

V$CONTROLFILE_RECORD_SECTION

V$PARAMETER

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

65

PRACTICASTEMA3

3.1.LocalizarelficherodecontroldesdeelSOydesdelaBD.
lslt/u0?/oradata/$ORACLE_SID/*.ctl
lsl/u0?/oradata/$ORACLE_SID/*control*
select*fromv$controlfile;
3.2.ConsultarlainformacindelaBDrelativaalcontenidodelficherodecontrol.
Forzar un checkpoint y volver a consultar. Consultar las secciones que
contieneelficherodecontrolysuestadodeuso.
select*fromv$database;
altersystemcheckpoint;
select*fromv$controlfile_record_section;
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

66

PRACTICASTEMA3
3.3.AadeunacopiaalficherodecontroldelaBDen"/u04/oradata/$ORACLE_SID".Crea
uninitxx02.oraeincluyeelnuevofichero.ArrancalaBDconelnuevoinitycomprueba
quehatomadolanuevacopiadelficherodecontrol.
shutdown immediate
cp /u02/oradata/$ORACLE_SID/ora_control1
/u04/oradata/$ORACLE_SID/ora_control3
cp $PFILE/init$ORACLE_SID.ora initxx02.ora
vi initxx02.ora
startup pfile=init0102.ora
select * from v$controlfile;

3.4.Sacarunacopiadeseguridaddelficherodecontrol,tantoenunficherodetraza,como
unnuevoficherodecontrol.
alterdatabasebackupcontrolfiletotrace;
lslt$UDUMP|head2
alterdatabasebackupcontrolfileto
'/u02/oradata/CURSOxx/ora_control1.bak';
lslt/u02/oradata/$ORACLE_SID/ora_control1.bak
select*fromv$controlfile;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

FICHERODECONTROL

67

TEMA4
GESTIONDELREDOLOG

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

68

TEMA4.
GESTIONDELREDOLOG

Ficherosredolog
Funcionamientodelredolog
Aadir/quitargrupos/miembrosderedo
Configuracindelosficherosredolog
Modoarchivelog

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

69

FICHEROSREDOLOG

Los ficheros redo log guardan todos los


cambioshechosenlosdatosypermitenvolver
aaplicarlosencasodecadadelaBD.
Los ficheros redo log se organizan en grupos.
Una BD requiere al menos dos grupos. Cada
fichero redo log dentro de un grupo se llama
miembro.
La idea es que cada grupo tenga tantos
miembros como discos disponemos para
matener las copias de los redo. Lo usual es
tener 3 grupos de redo con 2 miembros cada
uno.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

70

FUNCIONAMIENTODELREDOLOG

Los ficheros redo log se usan de manera circular:


cuandounosellena,elLGWRcomienzaaescribir
en el siguiente grupo (log switch), hasta volver al
primero. Cuando ocurre un log switch, tambin
sucedeuncheckpoint;yseactualizaelficherode
control. Podemos forzar un log switch o un
checkpointexplcitamentecon:
ALTERSYSTEMSWITCHLOGFILE;
ALTERSYSTEMCHECKPOINT;
El LGWR escribe al hacer commit, o cada 3
segundos,osielbufferredologsellena1/3,yantes
dequeelDBWRvuelqueloscambiosdelosbuffers
dedatosalosficherosdelaBD.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

71

AADIRGRUPOSYMIEMBROSDEREDO

AadirgruposalRedoLogOnline:
ALTERDATABASEADDLOGFILEGROUP3
(/u04/oradata/CURSO98/redo03a.log,
/u03/oradata/CURSO98/redo03b.log)
SIZE1M;

AadirmiembrosRedoLogOnline:
ALTERDATABASEADDLOGFILEMEMBER
/u03/oradata/CURSO98/redo01b.logTOGROUP1,
/u03/oradata/CURSO98/redo02b.logTOGROUP2;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

72

ELIMINARGRUPOSYMIEMBROSDEREDO
Eliminar grupos del Redo Log Online (por ejemplo si he creado otros ms
grandes):

ALTERDATABASEDROPLOGFILEGROUP3;

Nopuedehabermenosde2grupos;nosepuedeborrarelgrupoactivo;al
borrar un grupo no se eliminan los ficheros del sistema operativo (a no ser
queseuseOMF).

ElminarmiembrosRedoLogOnline:
ALTERDATABASEDROPLOGFILEMEMBER
/u03/oradata/CURSO98/redo03b.log;

Nosepuedeborrarelprimermiembrodeungrupo;tampocounmiembrodel
grupoencurso;silaBDestenmodoARCHIVELOGnosepuedeborrarun
miembrocuyogruponohasidoarchivado;cuandoborramosunmiembrono
seeliminaelficherocorrespondientedelsistemaoperativo.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

73

CONFIGURACINDELOSFICHEROS
REDOLOG

Vaciado(porejemplositodoslosmiembrosdeungrupoestncorruptos):
ALTERDATABASECLEAR[UNARCHIVED]LOGFILE
/u02/oradata/CURSO98/redo02a.log;

Esequivalenteaaadiryborrarunficheroredolog.
Moverorenombrar(ojo!laBDdebeestarslomontada):

!mv/u04/oradata/CURSO98/redo03a.log
/u03/oradata/CURSO98/redo3a.log
ALTERDATABASERENAMEFILE/u04/oradata/CURSO98/redo03a.logTO
/u03/oradata/CURSO98/redo3a.log;

ConfiguracindelRedoLogOnline:
ElnmerodegruposRedoLogOnlinenecesarios,comomnimoserdos.Esprobable
quesenecesitealguno msdebidoa que, al llenarse circularmente,loscheckpointsno
completen.Laconfiguracindebesersimtrica:mismonmerodemiembrosparatodos
losgrupos.
Cadamiembrodeungrupodebeestarenundiscodiferente.Ademshayquesepararen
diferentes discos los Redo Log Archivados de los Redo Log Online, para reducir la
contencinentreelLGWRyelARCH.ElRedoLogOnlinetambindeberaestarenun
discodistintoalosficherosdedatos,parareducirlacontencinentreLGWRyDBWR.
EnlasvistasV$LOG,V$LOG_HISTORYyV$LOGFILEestnlosdetallesdelredo.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

74

MODOARCHIVELOG

Pordefecto,laBDsecreaenmodoNOARCHIVELOG(conCREATEDATABASE).Si
activamoselmodoARCHIVELOGseirnarchivandolosficherosredologconformese
llenan(cadavezqueocurreunlogswitch).
LOG_ARCHIVE_START=TRUE,activaarchivadoautomtico.ElprocesoARCHirarchivandoel
grupo redo log lleno, despus de cada log switch, en el directorio indicado por el parmetro
LOG_ARCHIVE_DEST(pordefecto$ORACLE_HOME/dbs/arch).
Nota.Sepuedeverelestadodelarchivadoconelcomandoarchiveloglistdelsqlplus.

Cadavezquesearchivaunredolog,enelficherodecontrolseguardaelnombredel
redologarchivado,nmerodesecuencia,ynmerosSCNmsaltoymsbajo.
Elredologquesehallenadonopuedereutilizarsehastaqueocurrauncheckpointy
hayasidocopiadoporelprocesoARCH.
Poner BD en modo ARCHIVELOG: SHUTDOWN, backup (por seguridad), configurar
archivado automtico en el INIT, STARTUP MOUNT, activar archivado (ALTER
DATABASEARCHIVELOG;),abrirBD(ALTERDATABASEOPEN;),pararBD,yhacer
backup(pueshacambiadoelficherodecontrolylacopiaanterioryanonossirve).
Msinformacinenhttp://cursos.atica.um.es/oradoc92/server.920/a96521/archredo.htm#14904

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

75

VISTASDELDD

V$LOG
V$LOG_HISTORY
V$LOGFILE
V$DATABASE

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

76

PRACTICASTEMA4

4.1.LocalizarlosficherosredologdelaBD.Cuntosgruposhayycuntosmiembrostiene
cadagrupo?estncorrectamentedistribuidos?
lslt/u0?/oradata/$ORACLE_SID/*.log
lslt/u0?/oradata/$ORACLE_SID/*redo*
select*fromv$logfile;
4.2.Comprobarelficheroredologactivo.Quocurrealforzarun"logswitch"?yalforzarun
checkpoint?
select*fromv$log;
altersystemswitchlogfile;
altersystemcheckpoint;
4.3.Aadeunmiembromsacadagrupo:/u03/oradata/$ORACLE_SID/redo11.log,
/u03/oradata/$ORACLE_SID/redo12.log,/u03/oradata/$ORACLE_SID/redo13.log.
alter database add logfile member
'/u03/oradata/CURSOxx/redo11.log' to group 1,
'/u03/oradata/CURSOxx/redo12.log' to group 2,
'/u03/oradata/CURSOxx/redo13.log' to group 3;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

77

PRACTICASTEMA4
4.4.

Aade un grupo ms (grupo 4), con dos miembros de 1M:


/u03/oradata/$ORACLE_SID/redo04.log y /u04/oradata/$ORACLE_SID/redo14.log. Aade 2
gruposms(grupo5y6),conlasmismascaractersticas.

alter database add logfile group 4

('/u03/oradata/CURSOxx/redo04.log',
'/u04/oradata/CURSOxx/redo14.log') size 1M;
alter database add logfile group 5
('/u03/oradata/CURSOxx/redo05.log',
'/u04/oradata/CURSOxx/redo15.log') size 1M;
alter database add logfile group 6
('/u03/oradata/CURSOxx/redo06.log',
'/u04/oradata/CURSOxx/redo16.log') size 1M;

4.5.Eliminalosmiembrosdelgrupo1,deunoenuno.Quocurrealeliminarelltimo?.Borrarlos
grupos1,2y3.Ojoynoborrarelredologactivo!!!

Alter database drop logfile member

'/u04/oradata/CURSO98/redo01.log';
alter database drop logfile member
'/u03/oradata/CURSO98/redo11.log';
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

78

PRACTICASTEMA4

4.6. Cambiar el nombre de los miembros de redo de los grupos 4, 5 y 6; a redo1a.log, redo1b.log,
redo2a.log,redo2b.log,redo3a.log,redo3b.log.
shutdown immediate
OJO,laBDdebeestarslomontada!!!
startup mount
mv /u03/oradata/CURSO98/redo01.log /u03/oradata/CURSO98/redo1a.log
mv /u04/oradata/CURSO98/redo11.log /u04/oradata/CURSO98/redo1b.log
mv /u03/oradata/CURSO98/redo02.log /u03/oradata/CURSO98/redo2a.log
mv /u04/oradata/CURSO98/redo12.log /u04/oradata/CURSO98/redo2b.log
mv /u03/oradata/CURSO98/redo03.log /u03/oradata/CURSO98/redo3a.log
mv /u04/oradata/CURSO98/redo13.log /u04/oradata/CURSO98/redo3b.log
alter database rename file '/u03/oradata/CURSO98/redo01.log' to
'/u03/oradata/CURSO98/redo1a.log';
alter database rename file '/u04/oradata/CURSO98/redo11.log' to
'/u04/oradata/CURSO98/redo1b.log';
alter database rename file '/u03/oradata/CURSO98/redo02.log' to
'/u03/oradata/CURSO98/redo2a.log';
alter database rename file '/u04/oradata/CURSO98/redo12.log' to
'/u04/oradata/CURSO98/redo2b.log';
alter database rename file '/u03/oradata/CURSO98/redo03.log' to
'/u03/oradata/CURSO98/redo3a.log';
alter database rename file '/u04/oradata/CURSO98/redo13.log' to
'/u04/oradata/CURSO98/redo3b.log';
alter database open;
select * from v$logfile;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

GESTIONDELREDOLOG

79

TEMA5
TABLESPACES

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

80

TEMA5.
TABLESPACES
Quesuntablespace
Tablespacesystem
Createtablespace
Formasdegestionarelespaciodeuntablespace
Tablespacesundo
Tablespacestemporales
TablespacetemporalpordefectodelaBD
Tablespaceoffline
Tablespacereadonly
Borraruntablespace
Redimensionaruntablespace
Moverficheros
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

81

QUEESUNTABLESPACE

AunqueunapequeaBDpodratenersloeltablespaceSYSTEM,Oraclerecomienda
crear tablespaces adicionales para los datos, ndices, rollback y segmentos
temporales.
Segnlaestructurafsica,unaBDestcompuestapor:elficherodecontrol,ficheros
redo log y ficheros de datos. La estructura lgica nos dice que est compuesta de
tablespaces,segmentos,extensionesybloques.
Cadatablespaceconsisteenunoomsficherosdels.o.llamadosficherosdedatos
(unficheroperteneceaunsolotablespace):
UntablespaceslopuedeperteneceraunaBDalavez.
Puedetenerceroomssegmentos(unsegmentosloperteneceauntablespace).
Exceptuando el tablespace SYSTEM, o aquellos que contengan segmentos de rollback
activos,untablespacesepuedeponeroffline,estandolaBDfuncionando.
Untablespacesepuedeponerenmodoreadonlyoreadwrite,yviceversa.

Tiposdetablespaces:permanent(datos:system,sysaux,aplicaciones),undo
(rollback)ytemporary(sort).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

82

TABLESPACES

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

83

TABLESPACESYSTEM

EltablespaceSYSTEMeselnicoquesecreaconlaBD(createdatabase).
Contiene el DD, incluidos los procedimientos almacenados (procedimientos,
funcionesypaquetes).
Tambin contiene el segmento de rollback system. No debe contener datos de
aplicaciones.

Respecto al resto de tablespaces (no SYSTEM), se recomienda separar


rollback,segmentostemporales,datosendices.Tambinesbuenoseparar
datosestticosydinmicos.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

84

CREARUNTABLESPACE
CREATE TABLESPACE nombre
[DATAFILE clasula_fichero]
[MINIMUM EXTENT n[K|M]]
[BLOCKSIZE n[K]]
[LOGGING|NOLOGGING]
[clasula_extensiones]
[DEFAULT clasula_storage]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY];

clasula_fichero:==nombre_fichero
[SIZEn[K|M][REUSE]|REUSE]
[AUTOEXTENDON|OFF[NEXTn[K|M]]
[MAXSIZEn[K|M]]]
clasula_extensiones:==EXTENTMANAGEMENT
[DICTIONARY|LOCAL[AUTOALLOCATE|
UNIFORM[SIZEn[K|M]]
[SEGMENTSPACEMANAGEMENTAUTO|MANUAL]]]
clasula_storage:==STORAGE(INITIAL
n[K|M][NEXTn[K|M]][MINEXTENTSn]
[MAXEXTENTSn][PCTINCREASEn])

CREATE TABLESPACE DATOS_USUARIOS


DATAFILE /u02/oradata/CURSO01/datos_usuarios01.dbf SIZE 16M
AUTOEXTEND ON NEXT 1M MAXSIZE 32M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
CREATE TABLESPACE DATOS_USUARIOS
DATAFILE /u02/oradata/CURSO01/datos_usuarios01.dbf SIZE 16M
AUTOEXTEND ON NEXT 1M MAXSIZE 32M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (INITIAL 16K NEXT 32K MAXEXTENTS 10 PCTINCREASE 50);
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

85

FORMASDEGESTIONARELESPACIODE
UNTABLESPACE

Tablespacesmanejadoslocalmente(Oraclelosrecomienda):

Lasextensioneslibresseregistranenunbitmap,deformaquecadabitcorrespondeaunbloque.El
valordecadabitindicasielbloquecorrespondienteestlibreousado.Existeunbitmapdeestetipo
encadaficherodeltablespace.Cadavezqueunaextensinsereservaoselibera,semodificael
bitmapcorrespondiente.
Ventajas:
ReduccindelacontencinenlastablasdelDD.
Nosegenerarollbackalreservar/liberarespacio(puesnoseactualizaelDD).
Noesnecesariohacercoalesce.
No se puede usar INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAXEXTENTS y
PCTINCREASEdelSTORAGEalcrearunatabla.TampocotienesentidoDEFAULTSTORAGEdel
tablespace.

Eltablespacesystemsepuedemanejarlocalmente,desdeOracle9i(en8ino).SielSYSTEMeslocal,NOse
puedencreartablespacespordiccionario.EnOracle9i,pordefecto,lostablespacessecreancomolocales(siel
parmetrocompatible>=9.0),exeptoelSYSTEM.

TablespacesgestionadosatravsdelDD(aextinguir):

EselmtodopordefectoenOracle8i.LasextensioneslibresquedanregistradasentablasdelDD.
Cada vez que unaextensin se liberao sereserva,lastablascorrespondientesdel DDdebenser
actualizadas.
PermitedefinirSTORAGEflexiblealossegmentos(loslocalesNO).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

86

TABLESPACESUNDO

Los tablespaces undo slo pueden contener segmentos de rollback (ningn otro tipo de
objeto).Losllamaremostablespacesderollback.
Sondeltipomanejadoslocalmente(deformaautomtica).
CREATEUNDOTABLESPACEundo01
DATAFILE/u03/oradata/CURSO01/undo01.dbfSIZE100M;

Untablespacederollbacksloseusacuandoseactivalagestinautomticaderollbackenla
BD (undo_management=auto y undo_tablespace=nombre_tablespace). Slo puede haber un
tablespacederollbackactivoenunmomentodado.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

87

TABLESPACESTEMPORALES

Lossegmentostemporales(odesort)secreanentablespacestemporales,automticamente,
paraoperacionesdeordenacin(orderby,joins,createindex,etc)quenocabenenmemoria.
ExistenslodurantelaejecucindelasentenciaSQL.
Nopuedencontenerobjetospermanentes.
Esrecomendablequeseanlocallymanaged(nopuedenusarAUTOALLOCATEniSEGMENT
SPACEMANAGEMENTAUTO),yusenficherostemporales:
CREATETEMPORARYTABLESPACEtemp
TEMPFILE/u03/oradata/CURSO01/temp01.dbfSIZE100M
EXTENTMANAGEMENTLOCALUNIFORMSIZE2M;

Para optimizar el rendimiento es recomendable que UNIFORM SIZE sea mltiplo de


SORT_AREA_SIZE.
No se puede renombrar un fichero temporal (tempfile). Tampoco se pueden poner en modo
readonly.SiempretienenelmodoNOLOGGING(noproducenentradasderedolog).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

88

TABLESPACETEMPORALPORDEFECTO
DELABD

EnOracle9i,alcrearlaBDsepuede(ysedebe)indicar untablespacetemporalpordefecto
paraaquellosusuariosalosquenoseleasigneunoexplcitamamente.Sinosehaceas,por
defecto,seasignareltablespaceSYSTEM(stohayqueevitarloatodacosta).
ELtablespacetemporalpordefectodelaBDsepuedecambiar:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nombre_tablespace;

TambinsepuedecrearconlaBD(CREATEDATABASE),encuyocaso,serdeltipolocal.
AlasignaralaBDuntablespacetemporalpordefecto,todoslosusuariosquenotenganuno
asignadoexplcitamente,pasarnatenerlo.Ycuandocambiemoseltablespacetemporalpor
defecto de la BD, cambiar para todos los usuarios que no lo tengan asignado de forma
explcita.
Nopodemosborrarlohastaquehayamosasignadootro.Nopodemosponerlooffline.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

89

TABLESPACEOFFLINE
Cuando un tablespace estOFFLINEnosepuede accedera losdatosque
contiene:
ALTERTABLESPACEDBA01USEROFFLINE;
ParaponerlodenuevoONLINE:
ALTERTABLESPACEDBA01USERONLINE;
Algunos tablespaces no se pueden poner OFFLINE: SYSTEM, tablespaces
consegmentosderollbackotemporalesactivos.

Sintaxis
ALTERTABLESPACEnombre ONLINE|OFFLINE;

Lossegmentosquecontienepuedenserborrados(porejemplodroptable,
porque slo afectan al DD). En tablespaces locales, el segmento borrado
pasaaserdeltipotemporal.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

90

TABLESPCEREADONLY

AlponeruntablespaceenmodoREADONLY,slosepermitenoperaciones
delecturasobresusdatos;sinembargolossegmentosquecontienepueden
ser borrados (por ejemplo drop table, porque slo afectan al DD). En
tablespaceslocales,elsegmentoborradopasaaserdeltipotemporal.
Un tablespace READONLY podra residir en un dispositivo de slo lectura,
comounCDROMounDVDROM:
ALTERTABLESPACEtsp_lecturaREADONLY;
Moveramoselficherocorrespondientealdispositivodeslolectura.
ALTERTABLESPACEtsp_lecturaRENAMEDATAFILE
/u02/oradata/CURSO01/tsp_lectura.dbfto
/mnt/cdrom/CURSO01/tsp_lectura.dbf;

Sintaxis:
ALTERTABLESPACEnombreREAD[ONLY|WRITE];

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

91

BORRARUNTABLESPACE

Alborraruntablespace,seeliminadelDD.Nopodemosborrareltablespace
SYSTEM. Los ficheros asociados no se borran (hay que borrarlos desde el
SO despus de eliminar el tablespace), a no ser que usemos la clasula
INCLUDINGCONTENTSANDDATAFILES(slodesdeOracle9i).
No podremos borrarlo si contiene objetos, a menos que indiquemos la
clasula INCLUDING CONTENTS. Tampoco podemos hacerlo si existen
foreignkeysapuntandoasusobjetos,amenosqueademsindiquemosla
clasulaCASCADECONSTRAINTS(seborrarnlascitadasconstraintsFK).
Se recomienda poner el tablespace OFFLINE antes de borrarlo, para
asegurarnosquenadieestusandosucontenido.
Sintaxis:
DROPTABLESPACEnombre_tablespace
[INCLUDINGCONTENTS[ANDDATAFILES][CASCADECONSTRAINTS]];

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

92

REDIMENSIONARUNTABLESPACE

Podemoscambiareltamaodeuntablespaceaadiendounficheroalmismo,
obiencambiandoeltamaodelficheroquelocompone.
ALTERTABLESPACEusersADDDATAFILE
/u02/oradata/CURSO01/users02.dbfsize1M;
ALTERDATABASEDATAFILE
/u02/oradata/CURSO01/users01.dbfresize2M;
Podemos reducir el tamao de un fichero, pero no podremos hacerlo si hay
espacioocupadoalfinaldelmismo.

Unaopcininteresanteesprogramarelcrecimientodelficheroquecompone
eltablespace:
ALTERDATABASEDATAFILE
/u02/oradata/CURSO01/users01.dbfSIZE1M
AUTOEXTENDONNEXT1MMAXSIZE4M;
Podemos indicar UNLIMITED como MAXSIZE. Y las unidades tambin pueden
serK(p.e.512K)obytes(p.e.100000).

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

93

REDIMENSIONARUNTABLESPACE

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

94

MOVERFICHEROS
Existendosmtodosparamoverficheros:conALTERTABLESPACEyconALTER
DATABASE.
El primero slo es aplicable a tablespaces que no son el SYSTEM, y que no
contienensegmentosderollbackotemporalesactivos:

Ponereltablespaceoffline
MoverelficheroaniveldelS.O.
ALTERTABLESPACERENAMEDATAFILE/path1/fichero1TO
/path2/fichero2;
Ponereltablespaceonline.

ElsegundorequierequelaBDestslomontada,yeslanicaformademoverel
tablespaceSYSTEM:

PararlaBD.
MoverelficherodesdeelS.O.
MontarlaBD.
ALTER DATABASE RENAME FILE /path1/fichero1 TO
/path2/fichero2;
AbrirlaBD.

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

95

VISTASDELDD

DBA_TABLESPACES
DBA_DATA_FILES
DBA_TEMP_FILES
V$TABLESPACE
V$DATAFILE
V$TEMPFILE
V$UNDOSTAT

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

96

PRACTICASTEMA5

5.1.ConsultarlostablespacesquecomponenlaBD.Comprobarlos
ficherosquetienencadaunodeellos.

Select*fromdba_tablespaces;
select*fromv$tablespace
select*fromdba_data_files;
select*fromv$datafile;
select*fromdba_temp_files;
select*fromv$tempfile;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

97

PRACTICASTEMA5
5.2. Crea el tablespace DATACURSOxy, NO manejado localmente, con el fichero
/u02/oradata/datacursoxy01.dbf, con un tamao de 1M. Crea 4 tablas (TABLA01,
TABLA02, TABLA03, TABLA04) de 256K sobre dicho tablespace. Borra las tablas
TABLA02yTABLA04,ycreaunatablaTABLA05de512K.Quocurreyporqu?.
BorraeltablespaceDATACURSOxyycralodenuevo,manejadolocalmente.Vuelve
a crear las tablas y repite el borrado de TABLA02 y TABLA04; y la creacin de
TABLA05de512K.Quocurreestavezyporqu?
CreatetablespaceDATACURSOxydatafile/u02/oradata/CURSOxy/datacursoxy01.dbfsize
1Mextentmanagementdictionary;
createtableTABLA01(C1VARCHAR2(4000))tablespaceDATACURSOxystorage(initial
256Kminextents1);
droptableTABLA02;
createtableTABLA05(C1VARCHAR2(4000))tablespaceDATACURSOxystorage(initial
512Kminextents1);
altertablespaceDATACURSOxyoffline;
droptablespaceDATACURSOxyincludingcontentsanddatafiles;
createtablespaceDATACURSOxydatafile/u02/oradata/CURSOxy/datacursoxy01.dbfsize
1Mextentmanagementlocaluniformsize256K;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

98

PRACTICASTEMA5
5.3.PoneltablespaceDATACURSOxyenmodoREADONLY.Insertaunafilaenalguna
desustablas,quocurre?.BorralatablaTABLA01,porqusepuedeborrar?.Deja
el tablespace DATACURSOxy en modo READWRITE. Repite el insert sobre
TABLA01.

altertablespaceDATACURSOxyreadonly;
insertintoTABLA01values(PRIMERAFILA);
droptableTABLA01;
altertablespaceDATACURSOxyreadwrite;
insertintoTABLA01values(PRIMERAFILA);

5.4.CreaunatablaTABLA06eneltablespaceDATACURSOxy,quocurreyporqu?.
Activaelautoextenddesufichero,ajustandonext256Kymaxsize2M.Vuelveacrear
latablaTABLA06.
CreatetableTABLA06(C1varchar2(4000))tablespaceDATACURSOxystorage(initial256K
minextents1);
alterdatabasedatafile/u02/oradata/CURSOxy/datacursoxy01.dbfautoextendonnext256K
maxsize2M;
CreatetableTABLA06(C1varchar2(4000))tablespaceDATACURSOxystorage(initial256K
minextents1);

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

99

PRACTICASTEMA5

5.5. Crea el tablespace INDCURSOxy de 1M con el fichero


/u02/oradata/CURSOxy/indcursoxy01.dbf. Muvelo al directorio
/u03/oradata/CURSOxy.
CreatetablespaceINDCURSOxydatafile
/u02/oradata/CURSOxy/indcursoxy01.dbfsize1M;
altertablespaceCURSOxyoffline;
mv/u02/oradata/CURSOxy/indcursoxy01.dbf
/u03/oradata/CURSOxy/indcursoxy01.dbf
altertablespacerenamedatafile/u02/oradata/CURSOxy/indcursoxy01.dbfto
/u03/oradata/CURSOxy/indcursoxy01.dbf;
altertablespaceINDCURSOxyonline;
select*fromdba_data_files;

AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

TABLESPACES

100

APENDICEA.
RecursosOracleenInternet.
www.orafaq.org(UndergroundOracleFAQs)
SitionooficialsobreOracle(FAQs,foros,artculos,scripts,etc).

otn.oracle.com(OracleTecnologyNetwork)
Descargas de sw, documentacin, foros, artculos, scripts, etc. Interesante
registrarse(esgratuito).

otn.oracle.com/oramag(OracleMagazine)
RevistaOracleMagazine.

www.oracle.com
PortaloficialdeOracle.

metalink.oracle.com
Soportetcnicoparausuariosconcontratodemantenimiento.
AdministracinBsicadeOracle9i.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez2006

101

También podría gustarte