Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CursoDBA9i1 Parte1
CursoDBA9i1 Parte1
FranciscoFernndezMartnez(pacof@um.es) JuanLuisSerradillaAmarilla(juanlu@um.es)
UniversidaddeMurcia
TEMARIO
ArquitecturadelaBasedeDatos Arranqueyparada Ficherodecontrol Redolog Tablespaces Segmentosderollback Usuarios,roles,privilegiosyperfiles Jobs Auditora Copiasdeseguridadyrecuperacin
2
OBJETIVOS
ConocerlaArquitecturaOracle. SaberarrancarypararunabasededatosOracle. GestionarlosficherosRedolog. Gestionarelficherodecontrol. Gestionartablespaces,incluyendotemporalesyundo. Gestionarsegmentosderollback. Gestionarusuarios,roles,privilegiosyperfiles. Gestionarjobs. Gestionarlaauditoradelsistemagestordebasededatos. Realizarcopiasdeseguridadyrecuperacindelabasededatos.
3
TEMA1 ARQUITECTURADELABASEDEDATOS
TEMA1. ARQUITECTURADELABD
SERVIDORORACLE
ServidorOracle:
InstanciaOracle BasededatosOracle
InstanciaOracle:
ProcesosBackground SGA
BasededatosOracle:
FicherosdeDatos Fichero(s)deControl FicherosRedoLog.
SERVIDORORACLE
ARQUITECTURADELABD
INSTANCIA
LaintegranlosprocesosbackgroundylaSGA AbreunayslounaBDO,ypermiteaccederaella. EnlamquinadonderesideelservidorOracle,lavariableORACLE_SID identificaalainstancia.
RECO
PMON
SMON
SGA
DBW0
AdministracinBsicadeOracle9i.
LGWR
ARC0
ARQUITECTURADELABD
JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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).
CONEXINALABD:procesos
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.
ARQUITECTURADELABD
11
SGA(SystemGlobalArea)
SQLAREA
PL/SQL AREA
LIBRARYCACHE DICTIONARYCACHE
SHAREDPOOL(shared_pool_size) REDOLOGBUFFER(log_buffer)
SGA(sga_max_size)
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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: Se pueden vaciar con ALTER SYSTEM FLUSHSHARED_POOL;(sloloqnoest en uso por sesiones y q adems no est fijado).
ALTERSYSTEMSETSHARED_POOL_SIZE =64M;
SQLAREA
PL/SQL AREA
LIBRARYCACHE DICTIONARYCACHE
SHAREDPOOL(shared_pool_size)
ARQUITECTURADELABD
13
SGA:SharedPool
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.
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): LaDatabaseBufferCacheconstadetrescachsindependientes:
ALTERSYSTEMSETDB_CACHE_SIZE=96M; 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.
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 prop sito principal es la recuperaci n 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).
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
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.
ARQUITECTURADELABD
19
ProgramGlobalArea(PGA)
PILA
PILA SESION
PGA
(servidorcompartido) SQL
PGA
(servidordedicado)
SQL
SHAREDPOOL
SESION
SHAREDPOOL
SGA
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
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.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARQUITECTURADELABD
24
ESTRUCTURALGICA
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.
ARQUITECTURADELABD
25
ESTRUCTURALGICA
ARQUITECTURADELABD
26
ARQUITECTURAOFA
OFA(OracleFlexibleArchitecture)proponeunaestructuradedirectoriosquepermite ubicarfcilmentecualquierficherodelservidordebasededatos;ademsdeagrupar dichosficherosporcomponentes. Adems,facilitaelrepartodelosficherosentrediferentesdiscos,optimizandolaE/S. Oraclerecomiendasepararelsoftwaredelosdatos;yestos ltimosrepartirlosentre 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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARQUITECTURADELABD
27
USUARIOSADMINISTRADORESDELABD
Cuando creamos una BDO se crean automticamente los usuarios SYS y
SYSTEM,ambosconelrolDBA.
ElSYSTEM,conclaveinicialmanager,eselDBAporexcelencia.Seusara
para las tareas administrativas habituales: alta de usuarios, creacin de tablespaces,etc.
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
ConectaremosalaBD(elusuarioOraclequeseconectasiempreeselSYS):
CONNECT usuario/clave AS SYSDBA
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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).
ARQUITECTURADELABD
30
PRACTICASTEMA1
1.1.Comprobarlaasignacindevariablesdeentornonecesariasparaconectarnosala BD:
echo$ORACLE_HOME echo$ORACLE_SID echo$LD_LIBRARY_PATH echo$PATH
1.2.Identificarlosprocesosquecomponeninstancia: 1.3.VereltamaodelaSGAdelaBD:
psef|grep$ORACLE_SID selectusername,programfromv$processwherebackgroundisnotnull; selectname,descriptionfromv$bgprocesswherePADDR!='00'; 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
1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA:
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;
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;
ARQUITECTURADELABD
33
PRACTICASTEMA1.
1.12.Crearelficherodeautenticacinyactivarlo(orapwd).
orapwdfile=$ORACLE_HOME/dbs/orapwCURSO01password=miclaveentries=5 remote_login_passwordfile=EXCLUSIVE"
ARQUITECTURADELABD
34
TEMA2 ARRANQUEYPARADADELABASEDEDATOS
ARRANQUEYPARADADELABD
35
TEMA2. ARRANQUEYPARADADELABD
Ficherosdeinicializacin:init.orayspfile.ora CreacindelaBD OMF(OracleManagedFiles) Arranquedelabasededatos Comandostartup Comandoalterdatabase Pararlabasededatos FicheroalertSID.Log Trazasdelosprocesosbackground Trazasdelosprocesosdeusuario Diccionariodedatos
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
ARRANQUEYPARADADELABD
37
FICHEROSDEPARMETROSDE INICIALIZACINII
Haydostiposdeparmetros:
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARRANQUEYPARADADELABD
40
CREARLABASEDEDATOS
ParacrearunaBDnecesitamos:
ParaubicarlosficherosquecomponenlaBD:
LaBDlapodemoscrearconelasistentegrfico(enLinuxdbca)oconelcomando CREATEDATABASE:
Crearemosunficheroinit.ora,ysiqueremos,unspfile.ora. ArrancaremoslasinstanciaconSTARTUPNOMOUNT. CrearemoslaBDconelcomandoCREATEDATABASE. Ejecutaremoslosscriptscatalog.sqlycatproc.sqlqueestnen $ORACLE_HOME/rdbms/admin.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
ARRANQUEYPARADADELABD
44
COMANDOSTARTUP
ArrancalainstanciayabrelaBD.Permitepararelprocesodearranquedela
BDencualquieradesusfases(NOMOUNT,MOUNT).
STARTUPRESTRICT(slopermitelaconexindeusuariosconelprivilegio STARTUPFORCE(haceSHUTDOWNABORTyarrancalaBD).
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARRANQUEYPARADADELABD
45
COMANDOALTERDATABASE
Permitecambiarelestadodelabasededatos.PorejemplodeNOMOUNTa
MOUNT,odeMOUNTaOPEN.TambinseutilizaparadejarlaBDenmodo READONLY.
ALTERDATABASE{MOUNT|OPEN} ALTERDATABASEOPEN[READWRITE|READONLY]
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. SHUTDOWN IMMEDIATE,hacerollbackdetodaslastransaccionesencursoycierra todaslassesiones;cierraydesmontalaBD,ademsdepararlainstancia(comolos anteriores). SHUTDOWN ABORT, cierra la instancia sin esperar a desmontar ni cerrar la BD (comoenunacaida).Requiererecoveryalarrancar.
ARRANQUEYPARADADELABD
47
COMANDOSHUTDOWN
Sintaxis:
SHUTDOWN[NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT]
NORMAL S S S S S S
TRANSACTIONAL S N S S S S
IMMEDIATE N N S S S S
ABORT N N N N N S
48
ARRANQUEYPARADADELABD
JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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).
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
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).
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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.
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:
ElDDtambintienelasllamadastablasdinmicas,cuyasvistastienenelprefijoV$(comoV$SESSION).Se crean al arrancar la instancia y residen en memoria. Cuando cerramos la BD (y por tanto la instancia), desaparecenyconellassucontenido.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARRANQUEYPARADADELABD
55
PRACTICASTEMA2.
2.1.Ficheroinit.ora.ArranqueyparadadelaBD.
lsl$ORACLE_HOME/dbs/init$ORACLE_SID.ora lsl$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
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)); 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;
2.3.Ficheroalert.logyficherosdetraza.Diccionariodedatos.
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;
ARRANQUEYPARADADELABD
58
PRACTICASTEMA2.
2.6.ConctatecomoSCOTTyhazupdatesobreDEPT(sinhacercommit).Desdeotrasesi n, cierralaBDconSHUTDOWNTRANSACTIONAL.Qupasaalhacercommitenlasesi nde 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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 ARRANQUEYPARADADELABD
59
TEMA3 FICHERODECONTROL
FICHERODECONTROL
60
TEMA3. FICHERODECONTROL
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.
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.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 FICHERODECONTROL
64
VISTASDELDD
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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;
FICHERODECONTROL
67
TEMA4 GESTIONDELREDOLOG
GESTIONDELREDOLOG
68
TEMA4. GESTIONDELREDOLOG
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
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.
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;
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;
73
CONFIGURACINDELOSFICHEROS REDOLOG
Vaciado(porejemplositodoslosmiembrosdeungrupoestncorruptos): Esequivalenteaaadiryborrarunficheroredolog. Moverorenombrar(ojo!laBDdebeestarslomontada):
ALTERDATABASECLEAR[UNARCHIVED]LOGFILE /u02/oradata/CURSO98/redo02a.log; !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.
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
GESTIONDELREDOLOG
75
VISTASDELDD
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;
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.
('/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!!!
'/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;
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;
GESTIONDELREDOLOG
79
TEMA5 TABLESPACES
TABLESPACES
80
TEMA5. TABLESPACES
Quesuntablespace Tablespacesystem Createtablespace Formasdegestionarelespaciodeuntablespace Tablespacesundo Tablespacestemporales TablespacetemporalpordefectodelaBD Tablespaceoffline Tablespacereadonly Borraruntablespace Redimensionaruntablespace Moverficheros
AdministracinBsicadeOracle9i. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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).
TABLESPACES
82
TABLESPACES
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,datose ndices.Tambinesbuenoseparar datosestticosydinmicos.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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).
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;
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).
TABLESPACES
88
TABLESPACETEMPORALPORDEFECTO DELABD
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.
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006 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];
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]];
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. 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).
Unaopcininteresanteesprogramarelcrecimientodelficheroquecompone eltablespace:
TABLESPACES
93
REDIMENSIONARUNTABLESPACE
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. PararlaBD. MoverelficherodesdeelS.O. MontarlaBD. ALTER DATABASE RENAME FILE /path1/fichero1 TO /path2/fichero2; AbrirlaBD.
TABLESPACES
95
VISTASDELDD
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;
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;
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);
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;
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. JuanLuisSerradillaAmarillayFranciscoFern ndezMartnez2006
101