Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ndicedecontenido
ARQUITECTURADELABASEDEDATOS...................................................................................2
ARRANQUEYPARADADELABASEDEDATOS......................................................................17
FICHERODECONTROL.................................................................................................................31
FICHEROSREDOLOG....................................................................................................................35
TABLESPACES.................................................................................................................................42
ESPACIODEUNDO......................................................................................................................51
USUARIOS,PERFILES,PRIVILEGIOSYROLES........................................................................85
TRABAJOS(JOBS)..........................................................................................................................118
AUDITORA....................................................................................................................................132
COPIASDESEGURIDAD..............................................................................................................153
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA1.
ARQUITECTURADELABASEDEDATOS.
1.1.ComprobarlasvariablesdeentornonecesariasparaconectarnosalaBD.
1.2.Identificarlosprocesosquecomponeninstancia.
1.3.VereltamaodelaSGAdelaBD.
1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA.
1.5.ComprobarficherosquecomponenlaBDyubicarlosenlaestructuraOFA.
1.6.IdentificarlaestructuralgicadelaBD:tablespaces,segmentos,extensiones.
1.7.Consultarinformacinsobrelabasededatos(v$database)ylainstancia(v$instance).
1.8.Localizarelprocesoservidorasociadoamisesin(v$processyv$session).Esunservidordedicadoo
compartido?
1.9.CuantoocupalaDictionarycacheylaLibrarycacheentuBD?(v$sgastat)
1.10.VerlaactividaddelaLibraryCache(v$librarycache).
1.11.VerlassentenciasSQLqueguardalaSharedPool(v$sqlarea).
1.12.Crearunficherodeautenticacinyactivarsuuso.
1.13.QuocurresiquitamoslavariableLD_LIBRARY_PATH?
1.14.AsignarlavariableNLS_LANGparanuestropasycomprobarelcambioenlasrespuestasdeOracledesde
sqlplus.
1.15.Subireltamaodelasharedpoolde8a12Mycomprobarcmoaumentaelespaciolibre.
1.16.Comprobarelfuncionamientodelacachderedolog,comoprotectoradelcontenidodelacachdedatos.
1.17.Comprobarelfuncionamientodelacachdedatos,enloqueserefierealamejoradelrendimientocuandose
repiteunaconsulta.
Recursos.
Mquina:cursos.atica.um.es
Usuariounix:curso51acurso70
Conexinmquinaunix:sshconSecureShell
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
Basesdedatos:CURSO51aCURSO70
Conexinabd:sqlplusdesdesesinunix,usuario/assysdba
Enprimerlugar,siyanoloest,hayquearrancarlabasededatos.Enelejemplovemoselarranquedela
basededatosCURSOxy,desdeelusuariocurso01delamquinamncs:
/home/DBA9i1/curso01(CURSOxy)>sqlplus
SQL*Plus:Release9.2.0.1.0ProductiononWedOct2012:39:052004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
Enterusername:/assysdba
Connectedtoanidleinstance.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
1.1.Comprobarlaasignacindevariablesdeentornonecesariasparaconectarnosala
BD.
Setratadelasvariables$ORACLE_HOME,$ORACLE_SID,$LD_LIBRARY_PATHy$PATH.
Nota:sinoasignamosLD_LIBRARY_PATHenLinux,nopodremosejecutarsqlplus,obteniendounerror
similara:
sqlplus: error while loading shared libraries: libclntsh.so: cannot open shared
object file: No such file or directory
Solucin:
/home/DBA9i1/curso01(CURSOxy)>echo$ORACLE_HOME
/u01/app/oracle/product/9.2.0.1.0
/home/DBA9i1/curso01(CURSOxy)>echo$ORACLE_SID
CURSO02
/home/DBA9i1/curso01(CURSOxy)>echo$PATH
/u01/app/oracle/product/9.2.0.1.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr
/bin:/usr/X11R6/bin:/home/DBA9i1/curso02/bin
/home/DBA9i1/curso01(CURSOxy)>echo$LD_LIBRARY_PATH
/u01/app/oracle/product/9.2.0.1.0/lib
1.2.Identificarlosprocesosquecomponeninstancia.
LospodemosidentificardesdeelS.O.,porejemplo,enUnixconelcomando"psef"quepermitevertodoslos
procesosenejecucinenelsistema,filtrandoporelnombredelainstanciadeBD:
psef|grepcurso01
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
TambinlopodemoshacerconsultandolavistadinmicaV$PROCESS(odirectamenteenV$BGPROCESS),
enlaBDencuestin:
select*fromv$processwherebackgroundisnotnull;
obien
select*fromv$processa,v$bgprocessbwherea.ADDR=b.PADDR;
Solucin:
/home/DBA9i1/curso01(CURSOxy)>psef|grepCURSOxy
oracle302051009:32?00:00:00ora_pmon_CURSOxy
oracle302071009:32?00:00:00ora_dbw0_CURSOxy
oracle302091009:32?00:00:00ora_lgwr_CURSOxy
oracle302111009:32?00:00:00ora_ckpt_CURSOxy
oracle302131009:32?00:00:00ora_smon_CURSOxy
oracle302151009:32?00:00:00ora_reco_CURSOxy
curso013052830492012:58pts/1100:00:00grepCURSOxy
SQL>selectusername,programfromv$process
wherebackgroundisnotnull;
USERNAMEPROGRAM
curso01oracle@cursos.atica.um.es(PMON)
curso01oracle@cursos.atica.um.es(DBW0)
curso01oracle@cursos.atica.um.es(LGWR)
curso01oracle@cursos.atica.um.es(CKPT)
curso01oracle@cursos.atica.um.es(SMON)
curso01oracle@cursos.atica.um.es(RECO)
6rowsselected.
SQL>selectname,descriptionfromv$processa,v$bgprocessb
wherea.ADDR=b.PADDR;
NAMEDESCRIPTION
PMONprocesscleanup
DBW0dbwriterprocess0
LGWRRedoetc.
CKPTcheckpoint
SMONSystemMonitorProcess
RECOdistributedrecovery
6rowsselected.
1.3.VereltamaodelaSGAdelaBD.
HaydosvistasdinmicasdelaBDquenosdaninformacinsobreeltamaoylaestructuradelaSGA:
V$SGAyV$SGASTAT.
select*fromv$sga;
select*fromv$sgastat;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
Solucin:
SQL>select*fromv$sga;
NAMEVALUE
FixedSize450560
VariableSize29360128
DatabaseBuffers4194304
RedoBuffers143360
SQL>select*fromv$sgastat;
POOLNAMEBYTES
fixed_sga450560
buffer_cache4194304
log_buffer133120
sharedpoolkrvxrr126528
sharedpoolKGKheap1836
sharedpoolKQRMPO214032
sharedpoolKQRSPO10000
sharedpoolKQRSSO2304
sharedpoolsqlarea2343928
sharedpool1Mbuffer2098176
sharedpoolKGLSheap287508
sharedpoolkglsimsga134144
sharedpoolparameters1680
sharedpoolfreememory5534064
sharedpoolPL/SQLDIANA406632
sharedpoolPL/SQLMPCODE43652
sharedpoollibrarycache1834420
sharedpoolmiscellaneous1428188
sharedpoolPLSnonlibhp1808
sharedpoolUNDOSTATINFO52416
sharedpooljoxsheapinit4220
sharedpoolkglsimulator563372
sharedpoolsimmemoryhea71480
sharedpooltriggerinform64
sharedpoolCheckpointqueue113344
sharedpooldictionarycache1610880
sharedpoolSYSTEMPARAMETERS96952
sharedpoolsimtraceentries98304
sharedpooltraceeventsarray72000
sharedpoolksm_file2sgaregion148652
sharedpoolnetworkconnections48600
sharedpoolKSXRreceivebuffers1032500
sharedpoolcharactersetobject300844
sharedpoolFileIdentificatonBlock127884
sharedpoolKSXRlargereplyqueue166024
sharedpoolmessagepoolfreequeue833032
sharedpoolKSXRpendingreplyqueue90292
sharedpoolKSXRpendingmessagesque840636
sharedpooleventstatisticspersess162624
sharedpoolfixedallocationcallback180
sharedpoollatchnowaitfailsorsle68320
41rowsselected.
SQL>select*fromv$sgastat
wherenamein('librarycache','dictionarycache','sqlarea',
'buffer_cache','log_buffer');
POOLNAMEBYTES
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
buffer_cache4194304
log_buffer133120
sharedpoolsqlarea2343928
sharedpoollibrarycache1834420
sharedpooldictionarycache1610880
1.4.ComprobarvaloresdeparmetrosdelinitrelacionadosconeltamaodelaSGA.
LosparmetrosdeinicializacinmsimportantesqueafectanaltamaodelaSGAson:shared_pool_size,
db_cache_size,db_block_size,log_buffer,large_pool_sizeyjava_pool_size.
Solucin:
SQL>showparametershared_pool_size
NAMETYPEVALUE
shared_pool_sizebiginteger8388608
SQL>showparameterdb_cache_size
NAMETYPEVALUE
db_cache_sizebiginteger4194304
SQL>showparameterdb_block_size
NAMETYPEVALUE
db_block_sizeinteger2048
SQL>showparameterlog_buffer
NAMETYPEVALUE
log_bufferinteger32768
SQL>showparameterlarge_pool_size
NAMETYPEVALUE
large_pool_sizebiginteger0
SQL>showparameterjava_pool_size
NAMETYPEVALUE
java_pool_sizebiginteger0
1.5.ComprobarficherosquecomponenlaBDyubicarlosenlaestructuraOFA.
LosficherosquecomponenlaBDlospodemosconsultardesdeelpropioS.O.odesdelaBD.DesdeelS.O.,
yteniendoencuentalaestructuraOFAlosencontraremosen/u0?/oradata/CURSOxy,dadoquenuestros
puntosdemontajeson/u01,/u02,/u03y/u04:
lsl/u0?/oradata/CURSOxy
Podemoslocalizarcadatipodefichero(datafile,controlyredolog)porlaextensin;porejemplo:dbf,ctlylog.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
Ojo!!!,stonoesmsqueunaconvencin,lasextensionespuedenserotras,oinclusonoexistir.
OtraopcinesaccederalainformacindelosficherosdecontroldesdelapropiaBD,consultandolasvistas
dinmicasV$DATAFILE,V$TEMPFILE,V$CONTROLFILEyV$LOGFILE:
select*fromv$datafile;
select*fromv$tempfile;
select*fromv$logfile;
select*fromv$controlfile;
Solucin:
/home/DBA9i1/curso01(CURSOxy)>lsl/u0?/oradata/$ORACLE_SID
/u02/oradata/CURSOxy:
total279012
rwrw1oracledba4384768oct2013:28ora_control1
rwrw1oracledba272631808oct2013:04system01.dbf
rwrw1oracledba4196352oct2009:28tools01.dbf
rwrw1oracledba4196352oct2009:28users01.dbf
/u03/oradata/CURSOxy:
total45376
rwrw1oracledba4384768oct2013:28ora_control2
rwrw1oracledba4196352oct2013:26rbs01.dbf
rwrw1oracledba38799360oct2008:36temp01.dbf
/u04/oradata/CURSOxy:
total1524
rwrw1oracledba512512oct2013:26redo01.log
rwrw1oracledba512512oct2009:28redo02.log
rwrw1oracledba512512oct2009:28redo03.log
SQL>selectnamefromv$datafile;
NAME
/home/u02/oradata/CURSOxy/system01.dbf
/home/u02/oradata/CURSOxy/tools01.dbf
/home/u03/oradata/CURSOxy/rbs01.dbf
/home/u02/oradata/CURSOxy/users01.dbf
SQL>selectnamefromv$tempfile;
NAME
/home/u03/oradata/CURSOxy/temp01.dbf
SQL>selectmemberfromv$logfile;
MEMBER
/home/u04/oradata/CURSOxy/redo01.log
/home/u04/oradata/CURSOxy/redo02.log
/home/u04/oradata/CURSOxy/redo03.log
SQL>selectnamefromv$controlfile;
NAME
/home/u02/oradata/CURSOxy/ora_control1
/home/u03/oradata/CURSOxy/ora_control2
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
1.6.IdentificarlaestructuralgicadelaBD:tablespaces,segmentos,extensiones.
EnelDDdelaBDtenemosvistasquenospermitencomprobarlaestructuralgicadelaBD:
DBA_TABLESPACES,DBA_DATA_FILES,DBA_SEGMENTSyDBA_EXTENTS.
select*fromdba_tablespaces;
select*fromdba_datafiles;
select*fromdba_tempfiles;
select*fromdba_segments;
select*fromdba_extents;
Solucin:
SQL>selecttablespace_namefromdba_tablespaces
orderbytablespace_name;
TABLESPACE_NAME
SYSTEM
TEMP
TOOLS
UNDO_RBS1
USERS
SQL>selecttablespace_name,file_namefromdba_data_files
orderbytablespace_name,file_name;
TABLESPACE_NAME
FILE_NAME
SYSTEM
/home/u02/oradata/CURSOxy/system01.dbf
TOOLS
/home/u02/oradata/CURSOxy/tools01.dbf
UNDO_RBS1
/home/u03/oradata/CURSOxy/rbs01.dbf
USERS
/home/u02/oradata/CURSOxy/users01.dbf
SQL>selecttablespace_name,file_namefromdba_temp_files
orderbytablespace_name,file_name;
TABLESPACE_NAME
FILE_NAME
TEMP
/home/u03/oradata/CURSOxy/temp01.dbf
SQL>selecttablespace_name,segment_type,count(*)segmentos
fromdba_segments
groupbytablespace_name,segment_type;
TABLESPACE_NAMESEGMENT_TYPESEGMENTOS
USERSTABLE1
SYSTEMCACHE1
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
SYSTEMINDEX442
SYSTEMTABLE369
SYSTEMCLUSTER10
SYSTEMLOBINDEX49
SYSTEMROLLBACK1
SYSTEMLOBSEGMENT49
SYSTEMINDEXPARTITION24
SYSTEMTABLEPARTITION27
UNDO_RBS1TYPE2UNDO5
11rowsselected.
SQL>selecttablespace_name,segment_type,count(*)
fromdba_extents
groupbytablespace_name,segment_type;
TABLESPACE_NAMESEGMENT_TYPEEXTENSIONES
USERSTABLE1
SYSTEMCACHE1
SYSTEMINDEX605
SYSTEMTABLE750
SYSTEMCLUSTER51
SYSTEMLOBINDEX49
SYSTEMROLLBACK27
SYSTEMLOBSEGMENT60
SYSTEMINDEXPARTITION24
SYSTEMTABLEPARTITION27
UNDO_RBS1TYPE2UNDO10
11rowsselected.
1.7.Consultarinformacinsobrelabasededatos(v$database)ylainstancia
(v$instance).
Podemosobtenerinformacindelabasededatosydelainstancia,delasvistasV$DATABASEy
V$INSTANCE,respectivamente.
Solucin:
SQL> select name,created,log_mode,checkpoint_change#,open_mode
from v$database;
NAME
CREATED
LOG_MODE
CHECKPOINT_CHANGE# OPEN_MODE
--------- --------- ------------ ------------------ ---------CURSOxy
13-AUG-04 NOARCHIVELOG
753958 READ WRITE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
AdministracinBsicadeOracle9iPrcticasresueltas
1.8.Localizarelprocesoservidorasociadoamisesin(v$processyv$session).Es
unservidordedicadoocompartido?
Todasesintienedosvertientes:clienteyservidor.Enelclientetenemoselprocesodeusuarioqueiniciala
sesinyenelservidordebasededatostendremoselprocesoquesirvelaspeticionesdedichasesin;que
puedeserunservidordedicadoocompartido.EnlasvistasV$SESSIONyV$PROCESStenemostodala
informacinrelativaasesionesyprocesos,respectivamente.
Solucin:
SQL> show user
USER is "SYSTEM"
SQL> select a.SERVER, a.username dbuser,a.OSUSER, a.PROCESS user_process,
a.machine, a.terminal, a.program user_program,
b.spid server_process, b.program server_program
from v$session a, v$process b
where a.username=USER and a.PADDR=b.ADDR;
SERVER
DBUSER
OSUSER
--------- ------------------------------ -----------------------------USER_PROCESS MACHINE
------------ ---------------------------------------------------------------TERMINAL
USER_PROGRAM
------------------------------ -----------------------------------------------SERVER_PROCE SERVER_PROGRAM
------------ -----------------------------------------------DEDICATED SYSTEM
curso01
30580
cursos.atica.um.es
pts/11
sqlplus@cursos.atica.um.es (TNS V1-V3)
30581
oracle@cursos.atica.um.es (TNS V1-V3)
SQL> !ps -fp 30581
UID
PID PPID C STIME TTY
TIME CMD
oracle
30581 30580 0 13:36 ?
00:00:01 oracleCURSOxy
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))
ElprocesoservidorasociadoamisesinesunservidorDEDICADO.
1.9.CuantoocupalaDictionarycacheylaLibrarycacheentuBD?(v$sgastat)
EnlavistaV$SGASTAThayinformacindetalladasobrelaspartesdelaSGA.
Solucin:
SQL> select * from v$sgastat where name like '%cache';
POOL
NAME
BYTES
----------- -------------------------- ---------buffer_cache
4194304
shared pool library cache
1567084
shared pool dictionary cache
1610880
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
10
AdministracinBsicadeOracle9iPrcticasresueltas
1.10.VerlaactividaddelaLibraryCache(v$librarycache).
EnlavistaV$LIBRARYCACHEpodemosverlosratios(entantosporuno).
Solucin:
SQL> select namespace,gethitratio from v$librarycache;
NAMESPACE
GETHITRATIO
--------------- ----------SQL AREA
.806060606
TABLE/PROCEDURE .713888889
BODY
0
TRIGGER
1
INDEX
.46969697
CLUSTER
.953020134
OBJECT
1
PIPE
1
JAVA SOURCE
1
JAVA RESOURCE
1
JAVA DATA
1
11 rows selected.
1.11.VerlassentenciasSQLqueguardalaSharedPool(v$sqlarea).
EnlavistaV$SQLAREAtenemoselcontenidodelreaSQLdelasharedpool.
Solucin:
SQL> select sql_text from v$sqlarea;
SQL_TEXT
-------------------------------------------------------------------------------commit
ALTER DATABASE OPEN
grant sysdba to system
ALTER DATABASE
MOUNT
SELECT USER FROM DUAL
select o.owner#,o.obj#,decode(o.linkname,null, decode(u.name,null,'SYS',u.name),
o.remoteowner), o.name,o.linkname,o.namespace,o.subname from user$ u, obj$ o whe
re u.user#(+)=o.owner# and o.type#=:1 and not exists (select p_obj# from depende
ncy$ where p_obj# = o.obj#) for update
...
1.12.Crearelficherodeautenticacinyactivarlo(orapwd).
Lospasosaseguirson:
Crearficheroen$ORACLE_HOME/dbsconlautilidadorapwd.
Aadirelparmetroremote_login_passwordfilealinit.ora.
PararyarrancarlaBD.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
11
AdministracinBsicadeOracle9iPrcticasresueltas
Solucin:
$ orapwd file=$ORACLE_HOME/dbs/orapwCURSOxy password=miclave entries=5
$ chmod g+w orapwCURSOxy
$ echo "remote_login_passwordfile=EXCLUSIVE" >>
/u01/app/oracle/admin/CURSOxy/pfile/initCURSOxy.ora
$ echo >> /u01/app/oracle/admin/CURSOxy/pfile/initCURSOxy.ora
SQL> CONNECT / AS SYSDBA
SQL> SHUTDOWN IMMEDIATE
SQL> exit
SQL> CONNECT SYS AS SYSDBA
Enter password: miclave
SQL> STARTUP
1.13.QuocurresiquitamoslavariableLD_LIBRARY_PATH?
Comprobarsuvalorydejarlaenblanco.
Ejecutarsqlplus.
Volveraasignarelvalororiginalyejecutardenuevosqlplus.
Solucin:
$ echo $LD_LIBRARY_PATH
/u01/app/oracle/product/9.2.0.1.0/lib
$ unset LD_LIBRARY_PATH
$ sqlplus
sqlplus: error while loading shared libraries: libclntsh.so: cannot open shared
object file: No such file or directory
$ export LD_LIBRARY_PATH=/u01/app/oracle/product/9.2.0.1.0/lib
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Feb 2 10:18:27 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL>
1.14.AsignarlavariableNLS_LANGparanuestropasycomprobarelcambioenlasrespuestasde
Oracledesdesqlplus.
ComprobarelvalordeNLS_LANGyverlafechadelsistemadesdesqlplus.
Salirdesqlplusyasignarspanish_spainaNLS_LANG.
Ejecutarsqlplusycomprobarquepideusuarioynousername.
Comprobardenuevolafechadelsistemadesdesqlplusyverificarelcambiodeformato.
Solucin:
$ echo $NLS_LANG
$ sqlplus
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
12
AdministracinBsicadeOracle9iPrcticasresueltas
Enter user-name: / as sysdba
SQL> select sysdate from dual;
SYSDATE
--------02-FEB-05
SQL> exit
$ export NLS_LANG=spanish_spain
$ sqlplus
Introduzca el nombre de usuario: / as sysdba
SQL> select sysdate from dual;
SYSDATE
-------02/02/05
SQL> exit
1.15.Subireltamaodelasharedpoolde8a12Mycomprobarcmoaumentael
espaciolibre.
Comprobarelvalordeshared_pool_size,ascomoelespaciolibreenlashared_pool.
Asignarle12Myvolveracomprobarelvalordelparmetro,ascomoelespaciolibrequetieneahorala
sharedpool.
Finalmente,volveradejarlasharedpoolcon8Mycomprobardenuevolosvaloresanteriores.
Solucin:
SQL> show parameter shared_pool_size
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------shared_pool_size
big integer 8388608
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
---------8922756
SQL> alter system set shared_pool_size=12M;
System altered.
SQL> show parameter shared_pool_size
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------shared_pool_size
big integer 12582912
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
---------13117060
SQL> alter system set shared_pool_size=8M;
System altered.
SQL> show parameter shared_pool_size
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
13
AdministracinBsicadeOracle9iPrcticasresueltas
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------shared_pool_size
big integer 8388608
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
---------8922756
1.16.Comprobarelfuncionamientodelacachderedolog,comoprotectoradelcontenidodelacach
dedatos.ParaelloiniciaremosunatransaccinyprovocaremosunacadadelaBD,comprobando
quealarrancarladenuevo,semantendrlaintegridaddelamisma.
ConsultarelcontenidoylaestructuradelatablaBORRAMEdelusuarioSYSTEM.
InsertarunafilasinhacercommityforzarlacadadelaBD.
ArrancardenuevolaBDycomprobarquelafilainsertadanoest(puesnosehizocommit).
Repetirlainsercindelafila,estavezhaciendocommit;yforzarlacadadelaBDotravez.
ArrancarlaBDunavezmsycomprobarqueahoralafilasiest(yaquesevalidlatransaccincon
commit).
Solucin:
SQL> select * from system.borrame;
C1
---------Primera
SQL> desc system.borrame
Name
Null?
Type
----------------------------------------- -------- ---------------------------C1
VARCHAR2(10)
SQL> insert into system.borrame values ('Segunda');
1 row created.
SQL> select * from system.borrame;
C1
---------Primera
Segunda
SQL> shutdown abort
ORACLE instance shut down.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Database mounted.
Database opened.
SQL> select * from system.borrame;
C1
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
14
AdministracinBsicadeOracle9iPrcticasresueltas
---------Primera
SQL> insert into system.borrame values ('Segunda');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from system.borrame;
C1
---------Primera
Segunda
SQL> shutdown abort
ORACLE instance shut down.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Database mounted.
Database opened.
SQL> select * from system.borrame;
C1
---------Primera
Segunda
1.17.Comprobarelfuncionamientodelacachdedatos,enloqueserefierealamejoradel
rendimientocuandoserepiteunaconsulta.Porqulasegundavezqueselanzalamismaconsulta
tardamenos?
ActivarlamedicindetiemposensqlplusconSETTIMINGON.
LanzarlaconsultaSELECTCOUNT(*)FROMIDL_UB1$.
Volveralanzarlamismaconsulta.
Comprobarquelasegundaejecucintardamuchomenos,yaquelosdatosyasecargaronenlacachde
datosallanzarlalaprimeravez;yportantoseaccedendirectamenteenmemoriaynoendisco.
Solucin:
SQL> set timing on
SQL> select count(*) from IDL_UB1$;
COUNT(*)
---------3798
Elapsed: 00:00:02.65
SQL> r
COUNT(*)
---------3798
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
15
AdministracinBsicadeOracle9iPrcticasresueltas
Elapsed: 00:00:00.05
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
16
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA2.
ARRANQUEYPARADADELABASEDEDATOS.
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,hatomadoelnuevovalor?porqu?.
PararlaBDyarrancarconelinit01xy.ora.Comprobarparmetroprocesses.Abrirotraconexindesqlplusyverqu
ocurre.
Crearunspfileapartirdelinit.oraquehayen$ORACLE_HOME/dbs.Dondeest?qucontiene?Modificarel
parmetroprocesses=9endichospfile.Finalmente,dejarprocesses=10.
PararlaBDdeformanormal,estandoconectadoalgnusuarioyverquocurre.Yqusucedecuandotodoslos
usuariossedesconectan.
RepetirlaparadadelaBD,estandoconectadoalgnusuario,deformaquenoespereaquesedesconecten.
2.2.ArranquedelaBD.ComprobarlasdiferentesfasesenelarranquedelaBD.
Arrancaslolainstancia(NOMOUNT)yconsultaalgnparmetro(db_cache_size,shared_pool_size,log_buffer,
processes,etc).QuocurrealaccederaV$CONTROLFILE.
AhoramontalaBDyvuelveaconsultarV$CONTROLFILE.QusucedealleerDBA_USERS.
AbrelaBDenmodoREADONLYycreaunatabla.ActivaelmodoREADWRITEyvuelveacrearlatabla,
observandoqusucede.
2.3.Ficheroalert.logyficherosdetraza.Diccionariodedatos.
BuscayconsultaelficherodealertdelaBD.CompruebaelltimoarranquedelaBD.
Buscasihayficherosdetraza,sisondeusuarioodeprocesosbackground.Miraelcontenido.
SacalalistadevistasdelDDyfjateenloscomentariosasociadosacadauna.Consultalascolumnasdedichas
vistas.
ConsultalasvistasV$INSTANCE,V$DATABASE,V$SESSION,V$PROCESS,DBA_USERS.
2.4.Impedirlasconexionesdeusuarios,demodoqueelDBAspuedaconectarse.Intentaconectartecomo
scott/tiger.Volverapermitirconexionesdeusuarios.
2.5. Forzar un checkpoint y hacer un insert en la tabla SCOTT.DEPT. Inmediatamente despus hacer
SHUTDOWNABORT.ArrancarycomprobarSCOTT.DEPT.Volverarepetirelinsert,haciendocommitantes
delSHUTDOWNABORT;ycompruebaelcontenidodeSCOTT.DEPT.
2.6.ConctatecomoSCOTTyhazupdatesobreDEPT(sinhacercommit).Desdeotrasesin,cierralaBD
conSHUTDOWNTRANSACTIONAL.QupasaalhacercommitenlasesindeSCOTT?
2.7.Conctatecomousuarioscott/tiger.ActivalatrazayhazunaqueryconunajoinentreEMPyDEPT
(selecta.ename,b.dnamefromempa,deptbwherea.deptno=b.deptno;).Desactivalatrazayanalizael
ficheroquesehageneradoconelcomandotkprof.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
17
AdministracinBsicadeOracle9iPrcticasresueltas
2.1.Ficheroinit.ora.ArranqueyparadadelaBD.
Localizaelficheroinit.oradetuBD.
/home/CURSO/curso23 (CURSO23)> ls -l
$ORACLE_BASE/admin/$ORACLE_SID/pfile/init$ORACLE_SID.ora
-rw-r--r-1 oracle oinstall
4413 24 oct 08:42
/u01/app/oracle/admin/CURSO23/pfile/initCURSO23.ora
Enestecasoelficheroinit.oraoriginalestbajo$PFILEybajo$ORACLE_HOME/dbshayunenlaceadicho
fichero.
Creafichero/home/CURSO/cursoxy/init01xy.ora,copiadelinitCURSOxy.ora,ymodifica
processes=9.
Puedeseditarelinit.oraconelviotambinaadiralfinaldelmismounalneaconelnuevovalordel
parmetro(estesegundomtodoeselusadoenelejemplo,usatelquequieras).
/home/CURSO/curso01
(CURSOxy)>
cp
$PFILE/init$ORACLE_SID.ora
init0101.ora
/home/CURSO/curso01 (CURSOxy)> echo processes = 9 >> init0101.ora
/home/CURSO/curso01 (CURSOxy)> grep processes init0101.ora
processes = 10
processes = 9
ArrancalaBD(slosiestparada)ycompruebalosparmetrosanteriores.
18
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> startup
Instancia de ORACLE arrancada.
Total System Global Area
24670100
Fixed Size
73620
Variable Size
7647232
Database Buffers
16777216
Redo Buffers
172032
Base de datos montada.
Base de datos abierta.
bytes
bytes
bytes
bytes
bytes
ParalaBDyarrancaconelinit01xy.ora.Compruebaelparmetroprocesses.Hazvarias
conexionesconsqlplusycompruebaquocurre.
bytes
bytes
bytes
bytes
bytes
DespusdeabrirunasesincomoelusuarioSYSTEM(ademsdelaquetenacomoSYS,
delaconexincomo/assysdba);siintentasabrirunams,daunerror,yaquenopuede
abrirmsde9procesos(6background,1PSEUDOy2sesiones).
/home/CURSO/curso01 (CURSOxy)> sqlplus
SQL*Plus: Release 9.2.0.1.0 - Production on Jue oct 26 13:26:18 2004
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Introduzca el nombre de usuario: system
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
19
AdministracinBsicadeOracle9iPrcticasresueltas
Introduzca su clave:
ERROR:
ORA-00020: maximum number of processes (9) exceeded
Crearunspfileapartirdelinit.oraquehayen$ORACLE_HOME/dbs.Dondeest?qu
contiene? Modificar el parmetro processes=9 en dicho spfile. Finalmente, dejar
processes=10.
Laubicacinpordefectotantodelinit.oracomodelspfile,es$ORACLE_HOME/dbs;portantocrearelspfile
pordefectoesmuysencillo:
SQL> create spfile from pfile;
File created.
SQL> !cat $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
...
*.processes=10
...
Estecomandocreaelspfilespfile$ORACLE_SID.oraen$ORACLE_HOME/dbs,deformaqueenelsiguiente
arranquedelaBDseusar(enlugardelinit.ora).Contienelosmismoparmetrosquetenaelinit.oraapartir
delcualsecrea.Paramodificarunparmetroenelspfile,nopodemoseditarelfichero(esbinario),lo
haremosdesdeunasesindelaBD:
Alvisualizarelcontenidodelspfiledirectamentesepuedenvercaracteresextraos,puessetratadeun
ficherobinario.
SQL> alter system set processes=9 scope=spfile;
System altered.
SQL> !cat $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
kA *.background_dump_dest='/u01/app/oracle/admin/CURSOxy/bdump'
...
*.processes=9
...
*.user_dump_dest='/u01/app/oracle/admin/CURSOxy/udump'
SQL> alter system set processes=10 scope=spfile;
ParalaBDdeformanormal,estandoconectadounusuario(ademsdelsysdetusesin)y
miraquocurre.Yqusucedecuandotodoslosusuariossedesconectan.
SQL> shutdown
Sequedaesperandoaquesedesconectenlosusuarios.Alcerrarlasesindelsystemqueestabierta,
terminadecerrarsinproblemas.SepuedevermirandolasltimaslneasdelalertSID.log.
(estandoconectadoelsystem,ademsdelasesindelsysqueestcerrando).Elficherodealertestenel
directorio indicado por el parmetro BACKGROUND_DUMP_DEST; o por defecto en
$ORACLE_HOME/rdbms/log. Si se usa OFA lo habitual es ubicarlo en
$ORACLE_BASE/admin/$ORACLE_SID/bdump(indicadoporlavariableBDUMP).
/home/CURSO/curso01 (CURSOxy)> tail -26f $BDUMP/alert_CURSOxy.log
...
Shutting down instance (normal)
License high water mark = 3
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
20
AdministracinBsicadeOracle9iPrcticasresueltas
(desconectndoseelsystem)
Thu oct 26 14:08:23 2004
ALTER DATABASE CLOSE NORMAL
Thu oct 26 14:08:23 2004
SMON: disabling tx recovery
SMON: disabling cache recovery
Thu oct 26 14:08:23 2004
Thread 1 closed at log sequence 4199
Thu oct 26 14:08:23 2004
Completed: ALTER DATABASE CLOSE NORMAL
Thu oct 26 14:08:23 2004
ALTER DATABASE DISMOUNT
Completed: ALTER DATABASE DISMOUNT
archiving is disabled
RepitelaparadadelaBD,estandoconectadoalgnusuario,deformaquenoesperea
quesedesconecten.
2.2.ArranquedelaBD(STARTUP).Comprobarlasdiferentesfasesenelarranquedela
BD(nomount,mountyopen).
Arrancarslolainstancia(NOMOUNT)yconsultaralgnparmetro.Quocurrealacceder
aV$CONTROLFILEyporqu.
Alarrancarslolainstancia,podemosconsultarlosparmetrosdelinit,yaqueestefichero(oelspfilesiexite)
seleejustoantesdearrancarlainstancia.Pero,alindicarNOMOUNT,todavanosehaabiertoelficherode
control,porloquenotendremosaccesoasucontenido.YmuchomenosalastablasestticasdelDDque
estnalmacenadasenlaBD,cuyosficherostampocosehanabierto.
SQL> startup nomount
Instancia de ORACLE arrancada.
Total System Global Area
24670100 bytes
Fixed Size
73620 bytes
Variable Size
7647232 bytes
Database Buffers
16777216 bytes
Redo Buffers
172032 bytes
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
21
AdministracinBsicadeOracle9iPrcticasresueltas
ERROR en lnea 1:
ORA-01219: b. de datos no abierta: solo se permiten consultas en tablas/vistas
fijas
AlmontarlaBD,seabreelficherodecontrolleyendosucontenido,deformaqueyasabemoslaubicaciny
elnombredecadaunodelosficherosquecomponenlaBD.
SQL> alter database mount;
Base de datos modificada.
no
abierta:
solo
se
permiten
consultas
en
CerrarlaBDyabrirlaenmodoREADONLY,ycrearunatabla.ActivarmodoREADWRITE
yvolveracrearlatabla.
ParaabrirlaBDenmodoreadonly,primerodebemosarrancarlaBDsinabrirla(MOUNT).
SQL> startup mount
Instancia de ORACLE arrancada.
Total System Global Area
24670100
Fixed Size
73620
Variable Size
7647232
Database Buffers
16777216
Redo Buffers
172032
Base de datos montada.
bytes
bytes
bytes
bytes
bytes
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
22
AdministracinBsicadeOracle9iPrcticasresueltas
ERROR en lnea 1:
ORA-00604: error producido a nivel 1 de SQL recursivo
ORA-00372: el fichero 1 no puede ser modificado en este momento
ORA-01110: fichero de datos 1: '/u02/oradata/CURSOxy/system01.dbf'
SQL> startup
Instancia de ORACLE arrancada.
Total System Global Area
24670100
Fixed Size
73620
Variable Size
7647232
Database Buffers
16777216
Redo Buffers
172032
Base de datos montada.
Base de datos abierta.
bytes
bytes
bytes
bytes
bytes
Comohemosvisto,enmodoreadonlynopodemoscrearunatablapueslosficherosdelaBDestnenmodo
deslolectura.SiabrimoslaBDenmodonormal(readwrite),notendremosproblemasparacrearlatabla.
2.3.Ficheroalert.logyficherosdetraza.Diccionariodedatos.
BuscayconsultaelficherodealertdelaBD.CompruebaelltimoarranquedelaBD.
/home/CURSO/curso01
(CURSOxy)>
ls
-l
$ORACLE_HOME/rdbms/log/alert_$ORACLE_SID.log
ls: /u01/app/oracle/product/9.2.0.1.0/rdbms/log/alert_CURSOxy.log: No existe el
fichero o el directorio
/home/CURSO/curso01 (CURSOxy)> ls -l $BDUMP/alert_$ORACLE_SID.log
-rw-rw-r-- 1 oracle dba 144537 nov 2 09:45
/u01/app/oracle/admin/CURSOxy/bdump/alert_CURSOxy.log
Enestecasoelficherodealertnoestensuubicacinpordefecto,puesseestusandoOFAyseha
modificadoelparmetroBACKGROUND_DUMP_DESTconsecuentemente.
/home/CURSO/curso01
(CURSOxy)>
grep
-i
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
background_dump_dest = /u01/app/oracle/admin/CURSOxy/bdump
background
SepuedenverlasltimaslneasdelficherodealertconelcomandotaildeLinux.
/home/CURSO/curso01 (CURSOxy)> tail -26
/u01/app/oracle/admin/CURSOxy/bdump/alert_$ORACLE_SID.log
Tue Nov 2 09:44:58 2004
Database mounted in Exclusive Mode.
Completed: ALTER DATABASE
MOUNT
Tue Nov 2 09:44:58 2004
ALTER DATABASE OPEN
Tue Nov 2 09:44:58 2004
Thread 1 opened at log sequence 556
Current log# 1 seq# 556 mem# 0: /home/u04/oradata/CURSOxy/redo01.log
Successful open of redo thread 1.
Tue Nov 2 09:44:58 2004
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Tue Nov 2 09:44:58 2004
SMON: enabling cache recovery
Tue Nov 2 09:44:59 2004
Undo Segment 1 Onlined
Undo Segment 2 Onlined
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
23
AdministracinBsicadeOracle9iPrcticasresueltas
Undo Segment 3 Onlined
Successfully onlined Undo Tablespace 2.
Tue Nov 2 09:44:59 2004
SMON: enabling tx recovery
Tue Nov 2 09:44:59 2004
Database Characterset is WE8ISO8859P15
replication_dependency_tracking turned off
found)
Completed: ALTER DATABASE OPEN
Tue Nov 2 09:45:22 2004
ALTER SYSTEM SET processes=20 SCOPE=SPFILE;
(no
async
multimaster
replication
Losficherosdetrazadelosprocesosbackgroundydeusuario,segenerarnenlosdirectoriosindicadosen
los parmetros BACKGROUND_DUMP_DEST y USER_DUMP_DEST (o en la ubicacin por defecto
$ORACLE_HOME/rdbms/log,sidichosparmetrosnoestnasignados.
/home/CURSO/curso01 (CURSOxy)> grep -i dest $ORACLE_HOME/dbs/init$ORACLE_SID.ora
# log_archive_dest = disk$rdbms:[oracle.archive]
background_dump_dest = /u01/app/oracle/admin/CURSOxy/bdump
core_dump_dest = /u01/app/oracle/admin/CURSOxy/cdump
user_dump_dest = /u01/app/oracle/admin/CURSOxy/udump
/home/CURSO/curso01 (CURSOxy)>
total 120
-rw-r----- 1 oracle dba
-rw-r----- 1 oracle oinstall
-rw-r----- 1 oracle oinstall
...
-rw-rw---- 1 oracle dba
ls -lt /u01/app/oracle/admin/CURSOxy/udump
735 nov 2 09:44 curso01_ora_20604.trc
652 nov 2 09:35 curso01_ora_20448.trc
733 oct 29 13:42 curso01_ora_2792.trc
735 sep 28 13:21 curso01_ora_25508.trc
SepuedeverelcontenidodelosficherosusandoelcomandomoredeLinux,ocatsielficheroecorto.
SacalalistadevistasdelDDyfjateenloscomentariosasociadosacadauna.Consulta
lascolumnasdedichasvistas.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
24
AdministracinBsicadeOracle9iPrcticasresueltas
The number of threads per instance for scanning the table
...
DBA_TABLES
NUM_FREELIST_BLOCKS
The number of blocks on the freelist
46 rows selected.
Consultaalgunasvistasestticas(comoDBA_USERS,DBA_TABLESPACES,DBA_TABLES,
DBA_ROLES), y algunas dinmicas (como V$INSTANCE, V$DATABASE, V$SESSION,
V$PROCESS).
SQL> select username,ACCOUNT_STATUS,CREATED from dba_users;
USERNAME
ACCOUNT_STATUS
------------------------------ -------------------------------SYS
OPEN
SYSTEM
OPEN
OUTLN
OPEN
DBSNMP
OPEN
SCOTT
OPEN
CREATED
--------13-AUG-04
13-AUG-04
13-AUG-04
17-AUG-04
28-SEP-04
SQL>
select
rpad(username,14),rpad(osuser,10),rpad(machine,15),rpad(terminal,10),
rpad(program,27)
from v$session where username is not null
order by username;
RPAD(USERNAME, RPAD(OSUSE RPAD(MACHINE,15 RPAD(TERMI RPAD(PROGRAM,27)
-------------- ---------- --------------- ---------- --------------------------SYSTEM
juanlu
cursos.atica.um pts/2
sqlplus@cursos.atica.um.es
2.4.Impedirlasconexionesdeusuarios,demodoqueelDBAspuedaconectarse.
Intentaconectartecomoscott/tiger.Volverapermitirconexionesdeusuarios.
En primer lugar vamos a parar la BD y a arrancarla en modo RESTRICT. Despus intentaremos la
conexin como el usuario SCOTT. Finalmente desactivaremos el modo RESTRICT y podremos
conectarnoscomoSCOTT.
SQL> connect / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup restrict
Instancia de ORACLE arrancada.
Total System Global Area
24670100
Fixed Size
73620
Variable Size
7647232
Database Buffers
16777216
Redo Buffers
172032
Base de datos montada.
Base de datos abierta.
bytes
bytes
bytes
bytes
bytes
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
25
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> connect / as sysdba
Conectado.
SQL> alter system disable restricted session;
Sistema modificado.
SQL> connect scott/tiger
Conectado.
SQL> desc dept
Nombre
Nulo?
Tipo
----------------------------------------- -------- ---------------------------DEPTNO
NOT NULL NUMBER(2)
DNAME
VARCHAR2(14)
LOC
VARCHAR2(13)
SQL> disconnect
Desconectado de Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning option
JServer Release 9.2.0.1.0 - Production
2.5.ForzaruncheckpointyhaceruninsertenlatablaSCOTT.DEPT.Inmediatamentedespushacer
SHUTDOWNABORT.ArrancarycomprobarSCOTT.DEPT.Volverarepetirelinsert,haciendocommit
antesdelSHUTDOWNABORT;ycompruebaelcontenidodeSCOTT.DEPT.
Se trata de comprobar los mecanismos de recuperacin de la instancia. Vamos a insertar una fila en
SCOTT.DEPTyasimularunacadadelaBDconSHUTDOWNABORT.Comprobaremosque,comonose
hizoCOMMIT,losdatosinsertadosnoestn,alarrancardenuevolaBD.Sirepetimoselexperimento
haciendoCOMMITdespusdelINSERT,comprobaremosquelainformacinnosepierde;yaquealhacer
commitestamosforzandoelvolcadoadiscodelosbuffersredolog,quesernledosenelsiguiente
arranquealrecuperarselainstancia.
RecuerdaqueelcheckpointeseleventoquefuerzalaescrituradelosbloquesdedatosqhayenlaSGA,a
disco,porpartedelDBWR(previovolcadodelosbufferredolog,porpartedelLGWR).
SQL> connect / as sysdba
Conectado.
SQL> alter system checkpoint;
Sistema modificado.
SQL> insert into scott.dept values (99,'FORMACION','MURCIA');
1 fila creada.
SQL> SHUTDOWN ABORT
Instancia de ORACLE cerrada.
SQL> startup
Instancia de ORACLE arrancada.
...
Base de datos abierta.
SQL> select * from scott.dept;
DEPTNO DNAME
LOC
---------- -------------- ------------10 ACCOUNTING
NEW YORK
20 RESEARCH
DALLAS
30 SALES
CHICAGO
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
26
AdministracinBsicadeOracle9iPrcticasresueltas
40 OPERATIONS
BOSTON
bytes
bytes
bytes
bytes
bytes
2.6.ConctatecomoSCOTTyhazupdatesobreDEPT(sinhacercommit).Desdeotrasesin,cierrala
BDconSHUTDOWNTRANSACTIONAL.QupasaalhacercommitenlasesindeSCOTT?
RecuerdaqueelSHUTDOWNTRANSACTIONALesperaaqueterminentodaslastransaccionesencurso;
portantoesperarhastaqueSCOTThagacommit.UnavezqueSCOTThahechocommit,elshutdown
cerrarsusesinalcabodeunosminutos.
(SESION DE SCOTT)
SQL> connect scott/tiger
Conectado.
SQL> update dept set deptno=88 where deptno=99;
1 fila actualizada.
(SESION DEL SYS)
SQL> CONNECT / AS SYSDBA
Conectado.
SQL> shutdown transactional
(SESION DE SCOTT)
SQL> !tail -7 $BDUMP/alert_CURSO22.log
Mon Apr 26 09:24:55 2004
SMON: enabling cache recovery
SMON: enabling tx recovery
Mon Apr 26 09:24:57 2004
Completed: ALTER DATABASE OPEN
Mon Apr 26 09:34:42 2004
Shutting down instance (transactional)
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
27
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> commit;
Validacin terminada.
SQL> !tail -10 $BDUMP/alert_CURSO22.log
Mon Apr 26 09:24:55 2004
SMON: enabling cache recovery
SMON: enabling tx recovery
Mon Apr 26 09:24:57 2004
Completed: ALTER DATABASE OPEN
Mon Apr 26 09:34:42 2004
Shutting down instance (transactional)
Mon Apr 26 09:35:12 2004
All transactions complete. Performing immediate shutdown
License high water mark = 7
SQL> !tail -10 $BDUMP/alert_CURSO22.log
SMON: disabling tx recovery
SMON: disabling cache recovery
Mon Apr 26 09:36:18 2004
Thread 1 closed at log sequence 191
Mon Apr 26 09:36:18 2004
Completed: ALTER DATABASE CLOSE NORMAL
Mon Apr 26 09:36:18 2004
ALTER DATABASE DISMOUNT
Completed: ALTER DATABASE DISMOUNT
archiving is disabled
(SESION DEL SYS)
Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.
2.7.Conctatecomousuarioscott/tiger.ActivalatrazayhazunaqueryconunajoinentreEMPyDEPT
(select a.ename, b.dname from emp a, dept b where a.deptno=b.deptno;). Desactiva la traza y
analizaelficheroquesehageneradoconelcomandotkprof.
Desde sqlplus, el usuario conectado (p.e. SCOTT) puede activar la traza con ALTER SESSION SET
SQL_TRACE=TRUE.Estosehacejustamenteantesdelanzarlassentenciasquesequierenanalizar.Una
vezterminadaslassentenciasencuestin,sevuelveadesactivarlatrazaconALTERSESSIONSET
SQL_TRACE=FALSE. El fichero de traza se generar en el directorio indicado por el parmetro
USER_DUMP_DEST,quepordefectoes$ORACLE_HOME/rdbms/log,yencasodeusarOFAserel
directorio$UDUMP,yserelficheromsrecientegenerado.
SQL> connect scott/tiger
Conectado.
SQL> alter session set sql_trace=true;
Sesin modificada.
SQL> select a.ename, b.dname from emp a, dept b where a.deptno=b.deptno;
ENAME
DNAME
---------- -------------SMITH
RESEARCH
...
MILLER
ACCOUNTING
14 filas seleccionadas.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
28
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> alter session set sql_trace=false;
Sesin modificada.
SQL> !ls -lt $UDUMP|head -2
total 24
-rw-r----1 oracle dba
SQL> exit
tkprof $UDUMP/ora_150400_cursoxy.trc
sys=no
on Lun Oct 26 09:56:31 2004
All rights reserved.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
29
AdministracinBsicadeOracle9iPrcticasresueltas
------- -----Parse
13
Execute
23
Fetch
45
------- -----total
81
...
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
---------0
0
32
---------32
30
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA3.
FICHERODECONTROL.
o LocalizarelficherodecontroldesdeelS.OydesdelapropiaBD.
o ConsultarlainformacindelaBDrelativaalcontenidodelficherodecontrol.
Forzaruncheckpointyvolveraconsultar.Consultarlosregistrosquecontieneel
ficherodecontrol.
o Aade una copia al fichero de control de la BD en
/home/u04/oradata/$ORACLE_SID.
o Sacarunacopiadeseguridaddelficherodecontrol.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
31
AdministracinBsicadeOracle9iPrcticasresueltas
3.1.LocalizarelficherodecontroldesdeelSOydesdelaBD.
EnprimerlugarbuscaremoslosficherosdesdeelSO.Elnombrenotieneporquseguirunpatrn
determinado,aunqueengeneralselessueleponerlaextensinctloselesincluyelapalabracontrolen
elnombre.
/home/CURSO/curso01 (CURSOxy)> ls -lat
/u0?/oradata/$ORACLE_SID/*control*
-rw-rw----rw-rw----
4 12:36 /u02/oradata/CURSOxy/ora_control1
4 12:36 /u03/oradata/CURSOxy/ora_control2
AhoraveremoscomoobtenerlamismainformacindesdelapropiaBD,deformamsdirecta.
SQL> select name from v$controlfile;
NAME
-------------------------------------------------------------------------------/home/u02/oradata/CURSOxy/ora_control1
/home/u03/oradata/CURSOxy/ora_control2
3.2.ConsultarlainformacindelaBDrelativaalcontenidodelficherodecontrol.Forzar
uncheckpointyvolveraconsultar.Consultarlosregistrosquecontieneelficherode
control.
En la vista V$DATABASE hay una serie de columnas, con el prefijo CONTROLFILE, que nos dan
informacin sobre el fichero de control, por ejemplo la fecha de creacin del fichero de control
(CONTROLFILE_CREATED) o la ltima vez que se actualiz la copia del fichero de control
(CONTROLFILE_TIME).
SQL> select CONTROLFILE_TYPE type,
to_char(CONTROLFILE_CREATED,'dd/mm/yyyy hh24:mi') created,
CONTROLFILE_SEQUENCE# secuence,CONTROLFILE_CHANGE# change,
to_char(CONTROLFILE_TIME,'dd/mm/yyyy hh24:mi') time
from v$database
TYPE
CREATED
SECUENCE
CHANGE TIME
------- ---------------- ---------- ---------- ---------------CURRENT 13/08/2004 14:15
1805
1115572 04/11/2004 12:47
Sistema modificado.
CREATED
SECUENCE
CHANGE TIME
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
32
AdministracinBsicadeOracle9iPrcticasresueltas
------- ---------------- ---------- ---------- ---------------CURRENT 13/08/2004 14:15
1806
1115772 04/11/2004 12:57
EnlavistaV$CONTROLFILE_RECORD_SECTIONsepuedenverlasdistintasseccionesquecomponenel
ficherodecontrolylosregistrosdelosqueconstacadauna;ascomoelnmeroderegistrosdecadatipo
usadoshastaelmomento.
SQL> select TYPE,RECORDS_USED,RECORDS_TOTAL
from v$controlfile_record_section;
TYPE
RECORDS_USED RECORDS_TOTAL
-------------------- ------------ ------------DATABASE
1
1
CKPT PROGRESS
0
11
REDO THREAD
1
8
REDO LOG
3
32
DATAFILE
4
254
FILENAME
8
319
TABLESPACE
5
254
TEMPORARY FILENAME
1
254
RMAN CONFIGURATION
0
50
LOG HISTORY
560
843
OFFLINE RANGE
0
289
ARCHIVED LOG
0
800
BACKUP SET
0
303
BACKUP PIECE
0
508
BACKUP DATAFILE
0
523
BACKUP REDOLOG
0
79
DATAFILE COPY
0
509
BACKUP CORRUPTION
0
276
COPY CORRUPTION
0
303
DELETED OBJECT
0
809
PROXY COPY
0
572
BACKUP SPFILE
0
56
DATABASE INCARNATION
1
36
23 rows selected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
33
AdministracinBsicadeOracle9iPrcticasresueltas
/home/CURSO/curso01 (CURSOxy)> vi initxy02.ora
control_files = (/home/u02/oradata/CURSOxy/ora_control1,
/home/u03/oradata/CURSOxy/ora_control2, /home/u04/oradata/CURSOxy/ora_control3)
34148352
450560
29360128
4194304
143360
bytes
bytes
bytes
bytes
bytes
3.4.Sacarunacopiadeseguridaddelficherodecontrol.
En primer lugar sacaremos una copia sobre un fichero de traza, que contendr las sentecias sql
necesariasparacrearunnuevoficherodecontrol.ComoestamosusandoOFAlatraza,alserdeusuario,
segenerareneldirectorio$ORACLE_BASE/admin/$ORACLE_SID/udump,posiblementeapuntadopor
lavariableUDUMP.
SQL> alter database backup controlfile to trace;
Base de datos modificada.
SQL> !ls -lt $UDUMP|head -2
total 140
-rw-r----- 1 oracle dba 4851 nov 4 13:32 curso01_ora_31562.trc
SQL> !more $UDUMP/curso01_ora_31562.trc
Despussacaremosunacopiabinariadelficherodecontrolquesloutilizaremosencasodeemergencia
(deperderelficherodecontrolysuscopias),paraarrancarlaBDy,posteriormentecrearotroficherode
controlnuevo.
SQL> alter database backup controlfile to
'/home/u04/oradata/CURSOxy/ora_control4';
Base de datos modificada.
SQL> select name from v$controlfile;
NAME
-------------------------------------------------------------------------------/home/u02/oradata/CURSOxy/ora_control1.ctl
/home/u03/oradata/CURSOxy/ora_control2.ctl
/home/u04/oradata/CURSOxy/ora_control3.ctl
SQL> !ls -lt /u0?/oradata/$ORACLE_SID/*control*
-rw-rw---- 1 oracle dba 4384768 nov 4 13:40 /u02/oradata/CURSOxy/ora_control1
-rw-rw---- 1 oracle dba 4384768 nov 4 13:40 /u03/oradata/CURSOxy/ora_control2
-rw-rw---- 1 curso01 dba 4384768 nov 4 13:40 /u04/oradata/CURSOxy/ora_control3
-rw-r----- 1 oracle dba 4384768 nov 4 13:39 /u04/oradata/CURSOxy/ora_control4
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
34
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA4.
FICHEROSREDOLOG.
o LocalizarlosficherosredologdelaBD.Cuntosgruposhayycuntos
miembrostienecadagrupo?estncorrectamentedistribuidos?.
o Comprobarelficheroredologactivo.Quocurrealforzarun"logswitch"?y
alforzaruncheckpoint?
o Aadeunmiembromsacadagrupo:/u03/oradata/$ORACLE_SID/redo11.log,
/u03/oradata/$ORACLE_SID/redo12.log,
/u03/oradata/$ORACLE_SID/redo13.log.
o Aadeungrupoms(grupo4),condosmiembrosde1M:
/u03/oradata/$ORACLE_SID/redo04.logy
/u04/oradata/$ORACLE_SID/redo14.log.Aade2gruposms(grupo5y6),con
lasmismascaractersticas.
o Eliminalosmiembrosdelgrupo1,deunoenuno.Quocurrealeliminarel
ltimo?.Borrarlosgrupos1,2y3.Ojoconborrarelredologactivo!!!
o Cambiarelnombredelosmiembrosderedodelosgrupos4,5y6;a
redo1a.log,redo1b.log,redo2a.log,redo2b.log,redo3a.log,redo3b.log.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
35
AdministracinBsicadeOracle9iPrcticasresueltas
4.1.LocalizarlosficherosredologdelaBD.Cuntosgruposhayycuntosmiembros
tienecadagrupo?estncorrectamentedistribuidos?.
Hay3gruposcon1miembrocadauno.Estntodoseneldisco/u04.Podraserinteresanteaadirun
miembroacadagrupoeneldisco/u03.
/home/CURSO/curso01 (CURSOxy)> ls -lt /u0?/oradata/$ORACLE_SID/*.log
-rw-rw---- 1 oracle dba 512512 nov 8 11:18 /u04/oradata/CURSOxy/redo02.log
-rw-rw---- 1 oracle dba 512512 nov 8 09:32 /u04/oradata/CURSOxy/redo01.log
-rw-rw---- 1 oracle dba 512512 nov 8 09:32 /u04/oradata/CURSOxy/redo03.log
SQL> select member from v$logfile;
MEMBER
-------------------------------------------------------------------------------/home/u04/oradata/CURSOxy/redo01.log
/home/u04/oradata/CURSOxy/redo02.log
/home/u04/oradata/CURSOxy/redo03.log
4.2.Comprobarelficheroredologactivo.Quocurrealforzarun"logswitch"?yal
forzaruncheckpoint?
ElficheroredologactivonoslosmuestraV$LOG,constatusCURRENT.
SQL> select * from v$log;
GROUP#
THREAD# SEQUENCE#
BYTES
MEMBERS ARC
---------- ---------- ---------- ---------- ---------- --FIRST_CHANGE# FIRST_TIM
------------- --------1
1
562
512000
1 NO
1146778 05-NOV-04
2
1
563
512000
1 NO
1175473 08-NOV-04
3
1
561
512000
1 NO
1112763 04-NOV-04
STATUS
----------------
INACTIVE
CURRENT
INACTIVE
Alforzarunlogswitch,seprovocaelcambiodeficheroredolog(current)
SQL> ALTER SYSTEM SWITCH LOGFILE;
Sistema modificado.
SQL> SELECT * FROM V$LOG;
GROUP#
THREAD# SEQUENCE#
BYTES
MEMBERS
---------- ---------- ---------- ---------- ---------- --FIRST_CHANGE# FIRST_TIM
------------- --------1
1
562
512000
1 NO
1146778 05-NOV-04
2
1
563
512000
1 NO
1175473 08-NOV-04
3
1
564
512000
1 NO
1178187 08-NOV-04
ARC STATUS
---------------INACTIVE
ACTIVE
CURRENT
UnCheckpointNOsuponeunlogswitch.Podemosconsultarelavancedeloscheckpointsen
V$DATABASE.CONTROLFILE_SECUENCE#.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
36
AdministracinBsicadeOracle9iPrcticasresueltas
'/u03/oradata/CURSOxy/redo11.log' to group 1,
'/u03/oradata/CURSOxy/redo12.log' to group 2,
'/u03/oradata/CURSOxy/redo13.log' to group 3;
Base de datos modificada.
SQL> select member from v$logfile;
MEMBER
-------------------------------------------------------------------------------/home/u04/oradata/CURSOxy/redo01.log
/home/u04/oradata/CURSOxy/redo02.log
/home/u04/oradata/CURSOxy/redo03.log
/u03/oradata/CURSOxy/redo11.log
/u03/oradata/CURSOxy/redo12.log
/u03/oradata/CURSOxy/redo13.log
6 filas seleccionadas.
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------1
2 INACTIVE
2
2 INACTIVE
3
2 CURRENT
37
AdministracinBsicadeOracle9iPrcticasresueltas
('/u03/oradata/CURSOxy/redo04.log',
'/u04/oradata/CURSOxy/redo14.log') size 1M;
Base de datos modificada.
SQL> alter database add logfile group 5
('/u03/oradata/CURSOxy/redo05.log',
'/u04/oradata/CURSOxy/redo15.log') size 1M;
Base de datos modificada.
SQL> alter database add logfile group 6
('/u03/oradata/CURSOxy/redo06.log',
'/u04/oradata/CURSOxy/redo16.log') size 1M;
Base de datos modificada.
SQL> select member from v$logfile;
MEMBER
-------------------------------------------------------------------------------/home/u04/oradata/CURSOxy/redo01.log
/home/u04/oradata/CURSOxy/redo02.log
/home/u04/oradata/CURSOxy/redo03.log
/u03/oradata/CURSOxy/redo11.log
/u03/oradata/CURSOxy/redo12.log
/u03/oradata/CURSOxy/redo13.log
/u03/oradata/CURSOxy/redo04.log
/u04/oradata/CURSOxy/redo14.log
/u03/oradata/CURSOxy/redo05.log
/u04/oradata/CURSOxy/redo15.log
/u03/oradata/CURSOxy/redo06.log
/u04/oradata/CURSOxy/redo16.log
12 filas seleccionadas.
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------1
2 INACTIVE
2
2 INACTIVE
3
2 CURRENT
4
2 UNUSED
5
2 UNUSED
6
2 UNUSED
6 filas seleccionadas.
Finalmenteharemosseislogswitchparaqueseusenlosnuevosredologquehemoscreado:
SQL> alter system switch logfile;
System altered.
Repetirloseisveces.
4.5.Eliminalosmiembrosdelgrupo1,deunoenuno.Quocurrealeliminarel
ltimo?.Borrarlosgrupos1,2y3.Ojoconborrarelredologactivo!!!
Vamosavercmoborrarmiembrosderedo,ytambingruposredolog.Nopodemosborrarelredologactivo
(current).
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
38
AdministracinBsicadeOracle9iPrcticasresueltas
Siintentamosborrarel1ermiembrodeungrupo,nopodremoshacerlo(aunquetengamsmiembros).Los
borradossonsiempreaniveldeBD,noseborranlosficherosaniveldelSO(habraqueborrarlosunavez
quehayamoshechoelborradoaniveldeBDojoconestaoperacin,yborremosunredologdelaBD!!!).
SQL> alter database drop logfile member '/home/u04/oradata/CURSOxy/redo01.log';
ERROR en lnea 1:
ORA-00362: se necesita un miembro para formar un logfile valido en el grupo 1
ORA-01517: miembro log: '/u04/oradata/CURSOxy/redo01.log'
SQL> alter database drop logfile member '/u03/oradata/CURSOxy/redo11.log';
Base de datos modificada.
Vamosaborrarlos3gruposquetienenmiembrosde512Kb;paraquedarnossloconlosnuevosde
1M.
SQL> alter database drop logfile group 1;
Base de datos modificada.
SQL> alter database drop logfile group 2;
Base de datos modificada.
SQL> alter database drop logfile group 3;
ERROR en lnea 1:
ORA-01623: log 3 is current log for thread 1 - cannot drop
ORA-00312: online log 3 thread 1: '/home/u04/oradata/CURSOxy/redo03.log'
ORA-00312: online log 3 thread 1: '/u03/oradata/CURSOxy/redo13.log'
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------3
2 CURRENT
4
2 INACTIVE
5
2 INACTIVE
6
2 INACTIVE
SQL> alter system switch logfile;
Sistema modificado.
SQL> alter database drop logfile group 3;
ERROR at line 1:
ORA-01624: log 3 needed for crash recovery of thread 1
ORA-00312: online log 3 thread 1: '/home/u04/oradata/CURSOxy/redo03.log'
ORA-00312: online log 3 thread 1: '/u03/oradata/CURSOxy/redo13.log'
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------3
2 ACTIVE
4
2 CURRENT
5
2 INACTIVE
6
2 INACTIVE
SQL> alter system switch logfile;
System altered.
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------3
2 INACTIVE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
39
AdministracinBsicadeOracle9iPrcticasresueltas
4
5
6
2 INACTIVE
2 CURRENT
2 INACTIVE
4.6.Cambiarelnombredelosmiembrosderedodelosgrupos4,5y6;aredo1a.log,
redo1b.log,redo2a.log,redo2b.log,redo3a.log,redo3b.log.
OJO,laBDdebeestarslomontada!!!portantohayquecerrarlaBDydespusslomontarla.Despues
secambiaelnombrealosficheros(desdeelS.O.);yentoncescambiamoselnombrealosredolog(desdela
BD).SiintentamoscambiarelnombreenlaBD,antesdecambiarlodesdeelSO,cascar.Finalmente
abrimoslaBDyveremoslosnuevosnombresenV$LOGFILE.
SQL> shutdown immediate
Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.
SQL> startup mount
Instancia de ORACLE arrancada.
Total System Global Area
34148352
Fixed Size
450560
Variable Size
29360128
Database Buffers
4194304
Redo Buffers
143360
Base de datos montada.
bytes
bytes
bytes
bytes
bytes
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
40
AdministracinBsicadeOracle9iPrcticasresueltas
Linux Error: 2: No such file or directory
SQL> !mv /u03/oradata/CURSOxy/redo04.log /u03/oradata/CURSOxy/redo1a.log
SQL> alter database rename file '/u03/oradata/CURSOxy/redo04.log' to
'/u03/oradata/CURSOxy/redo1a.log';
Base de datos modificada.
SQL> !mv /u04/oradata/CURSOxy/redo14.log /u04/oradata/CURSOxy/redo1b.log
SQL> alter database rename file '/u04/oradata/CURSOxy/redo14.log' to
'/u04/oradata/CURSOxy/redo1b.log';
Base de datos modificada.
SQL> !mv /u03/oradata/CURSOxy/redo05.log /u03/oradata/CURSOxy/redo2a.log
SQL> alter database rename file '/u03/oradata/CURSOxy/redo05.log' to
'/u03/oradata/CURSOxy/redo2a.log';
Base de datos modificada.
SQL> !mv /u04/oradata/CURSOxy/redo15.log /u04/oradata/CURSOxy/redo2b.log
SQL> alter database rename file '/u04/oradata/CURSOxy/redo15.log' to
'/u04/oradata/CURSOxy/redo2b.log';
Base de datos modificada.
SQL> !mv /u03/oradata/CURSOxy/redo06.log /u03/oradata/CURSOxy/redo3a.log
SQL> alter database rename file '/u03/oradata/CURSOxy/redo06.log' to
'/u03/oradata/CURSOxy/redo3a.log';
Base de datos modificada.
SQL> !mv /u04/oradata/CURSOxy/redo16.log /u04/oradata/CURSOxy/redo3b.log
SQL> alter database rename file '/u04/oradata/CURSOxy/redo16.log' to
'/u04/oradata/CURSOxy/redo3b.log';
Base de datos modificada.
SQL> select group#,rpad(member,40) member from v$logfile;
GROUP# MEMBER
---------- ---------------------------------------4 /u03/oradata/CURSOxy/redo1a.log
4 /u04/oradata/CURSOxy/redo1b.log
5 /u03/oradata/CURSOxy/redo2a.log
5 /u04/oradata/CURSOxy/redo2b.log
6 /u03/oradata/CURSOxy/redo3a.log
6 /u04/oradata/CURSOxy/redo3b.log
6 filas seleccionadas.
SQL> alter database open;
Base de datos modificada.
SQL> select GROUP#,MEMBERS,STATUS from v$log;
GROUP#
MEMBERS STATUS
---------- ---------- ---------------4
2 INACTIVE
5
2 CURRENT
6
2 INACTIVE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
41
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA5.
TABLESPACES.
o ConsultarlostablespacesquecomponenlaBD.Comprobarlosficherosque
tienecadaunodeellos.Culesson'locales'yculesno?
o CreaeltablespaceDATACURSOxx,NOmanejadolocalmente,conelfichero
/u02/oradata/CURSOxx/datacursoxx01.dbf,conuntamaode1M.Crea3tablas
(TABLA01,TABLA02,TABLA03)de256Ksobredichotablespace.Borralatabla
TABLA02ycreaunatablaTABLA04de352K.Quocurreyporqu?.Borrael
tablespaceDATACURSOxxycralodenuevo,manejadolocalmente.Vuelvea
crearlastablasyrepiteelborradodeTABLA02;ylacreacinde TABLA04.
Quocurreestavezyporqu?
o PoneltablespaceDATACURSOxxenmodoREADONLY.Insertaunafilaen
algunadesustablas,quocurreyporqu?.BorralatablaTABLA01,porqu
sepuedeborrar?.DejaeltablespaceDATACURSOxxenmodoREADWRITE.
RepiteelinsertsobreTABLA02.
ocurreyporqu?.Activaelautoextenddesufichero,ajustandonext256Ky
maxsize2M.VuelveacrearlatablaTABLA04.
o RedimensionareltablespaceDATACURSOxxa1Mquocurreyporqu?.
RedimensionareltablespaceINDCURSOxxa512K,yaadirleotroficherode
512K.
o CrearuntablespacedeundoUNDO_CURSOxx.Convertirloeneltablespace
o CrearuntablespacetemporalTEMP_CURSOxxde1M.Quocurrealponerlo
readonly?yalmoverlo?Hazqueseaeltablespacetemporalpordefectodela
basededatosquepasaalponerlooffline?ysiloborramos?
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
42
AdministracinBsicadeOracle9iPrcticasresueltas
5.1.ConsultarlostablespacesquecomponenlaBD.Comprobarlosficherosquetiene
cadauno.Cualesson'locales'ycualesno?
En el DD disponemos de vistas para consultar informacin sobre tablespaces (DBA_TABLESPACES,
V$TABLESPACE)ylosficherosqueloscomponen(DBA_DATA_FILES,DBA_TEMP_FILES,V$DATAFILE,
V$TEMPFILE)
SQL> select tablespace_name,extent_management from dba_tablespaces;
TABLESPACE_NAME
EXTENT_MAN
------------------------------ ---------SYSTEM
DICTIONARY
TOOLS
LOCAL
UNDO_RBS1
LOCAL
TEMP
LOCAL
USERS
LOCAL
SQL> SELECT rpad(TABLESPACE_NAME,10) tablespace,rpad(FILE_NAME,40) fichero,
to_char(BYTES/1024/1024,'999.99') MB,
to_char(increment_by*8/1024,'99.99') nextmb,
to_char(MAXBYTES/1024/1024,'9999.99') maxmb
FROM DBA_DATA_FILES;
TABLESPACE FICHERO
MB
NEXTMB MAXMB
---------- ---------------------------------------- ------- ------ -------SYSTEM
/home/u02/oradata/CURSOxy/system01.dbf
260.00 40.00 8192.00
TOOLS
/home/u02/oradata/CURSOxy/tools01.dbf
4.00
1.25 8192.00
UNDO_RBS1 /home/u03/oradata/CURSOxy/rbs01.dbf
4.00
.00
.00
USERS
/home/u02/oradata/CURSOxy/users01.dbf
4.00
5.00 8192.00
SQL> select rpad(name,40) name,CHECKPOINT_CHANGE#,
43
AdministracinBsicadeOracle9iPrcticasresueltas
NosepuedecrearlatablaporqueeltablespaceNOes'local'ynohayunaextensinlibremayoroiguala
352Kb.Vamosaborrareltablespaceyacrearlodenuevo'local'.Veremoscomosiendo'local'notendremos
problemasparacrearlatablade352Kb.
SQL> ALTER TABLESPACE DATACURSOxy OFFLINE;
Tablespace modificado.
SQL> DROP TABLESPACE DATACURSOxy;
ORA-01549: el tablespace no est vaco, use la opcin INCLUDING CONTENTS
SQL> DROP TABLESPACE DATACURSOxy INCLUDING CONTENTS;
Tablespace borrado.
SQL> Create tablespace DATACURSOxy
reuse
extent management local uniform size 128K;
Tablespace creado.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
44
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> select tablespace_name,extent_management from dba_tablespaces
where tablespace_name='DATACURSOxy';
TABLESPACE_NAME
EXTENT_MAN
------------------------------ ---------DATACURSOxy
LOCAL
SQL> create table TABLA01 (C1 VARCHAR2(4000))
Comoseobserva,siendoeltablespacelocal,seaprovechanloshuecosquesegeneranconelborradode
tablas.Lacuestinclave,enestecaso,esencontraruntamaoadecuadoparauniformsize.Unaposibilidad
estenervariostablespaces:pequeo,medianoygrandeconuniformsize,porejemplo,de8K,256Ky8M.
5.3.PoneltablespaceDATACURSOxxenmodoREADONLY.Insertaunafilaenalguna
desustablas,quocurre?.BorralatablaTABLA01,porqusepuedeborrar?.Deja
el tablespace DATACURSOxx en modo READWRITE. Repite el insert, ahora sobre
TABLA02.
Enuntablespacereadonlynosepuedenactualizardatos(insert,update,delete),perossepuedenborrar
objetos(droptable),yaqueelborradodeobjetossloafectaalDD(ynoaltablespace).
SQL> alter tablespace DATACURSOxy read only;
Tablespace modificado.
SQL> insert into tabla01 values ('PRIMERA FILA');
ORA-00372: el fichero 6 no puede ser modificado en este momento
ORA-01110: fichero de datos 6: '/u02/oradata/CURSOxy/datacurso0101.dbf'
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
45
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> DROP TABLE TABLA01;
Tabla borrada.
SQL> alter tablespace DATACURSOxy read write;
Tablespace modificado.
SQL> insert into tabla02 values ('PRIMERA FILA');
1 fila creada.
SQL> commit;
Validacin terminada.
5.4.CreaunatablaTABLA04eneltablespaceDATACURSOxx,quocurreyporqu?.
Activaelautoextenddesufichero,ajustandonext256Kymaxsize2M.Vuelveacrear
latablaTABLA06.
Cuandoeltablespacesellenanoserposiblecrearmsobjetos,anoserqueestactivadoel'autoextend',
deformaquepermitalaampliacindeltablespacelosuficienteparaalbergarelnuevoobjeto.
SQL> select bytes from dba_free_space where tablespace_name='DATACURSOxy';
no rows selected
SQL> create table TABLA04 (C1 VARCHAR2(4000))
tablespace DATACURSOxy storage (initial 256K minextents 1);
ERROR en lnea 1:
ORA-01658: no se ha podido crear extensin INITIAL para el segmento en el
tablespace DATACURSOxy
SQL> alter database datafile '/u02/oradata/CURSOxy/datacurso0101.dbf'
autoextend on next 256K maxsize 2M;
Base de datos modificada.
SQL> create table TABLA04 (C1 VARCHAR2(4000))
tablespace DATACURSOxy storage (initial 256K minextents 1);
Tabla creada.
SQL> select bytes from dba_free_space where tablespace_name='DATACURSOxy';
ninguna fila seleccionada
SQL> SELECT rpad(segment_name,20) segmento, segment_type tipo, bytes from
dba_extents
where tablespace_name='DATACURSOxy';
SEGMENTO
TIPO
BYTES
-------------------- ------------------ ---------TABLA04
TABLE
131072
TABLA04
TABLE
131072
TABLA03
TABLE
131072
TABLA03
TABLE
131072
TABLA02
TABLE
131072
TABLA02
TABLE
131072
TABLA02
TABLE
131072
5.33
TEMPORARY
131072
5.33
TEMPORARY
131072
9 filas seleccionadas.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
46
AdministracinBsicadeOracle9iPrcticasresueltas
Muvelo
al
directorio
'/u03/oradata/CURSOxx'.
Paramoverorenombrarunficherodeuntablespace,steltimodebeestarOFFLINE.
SQL> Create tablespace INDCURSOxy
5.6.RedimensionareltablespaceDATACURSOxxa1Mquocurreyporqu?
RedimensionareltablespaceINDCURSOxxa512K,yaadirleotroficherode512K.
Sepuederedimensionarunficheroreduciendosutamaoslosielespaciorecortadoestlibre.Enelcaso
deDATACURSOxxnoesposiblereducirloa1Mporquetieneespacioocupadoenelespaciorecortado.Sin
embargo,INDCURSOxxsquepuedeserreducidoa512Kporqueestvaco.
SQL> alter database datafile '/u02/oradata/CURSOxy/datacurso0101.dbf' resize 1M;
ORA-03297: file contains used data beyond requested RESIZE value
SQL> alter database datafile '/u03/oradata/CURSOxy/indcurso0101.dbf' resize
512K;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
47
AdministracinBsicadeOracle9iPrcticasresueltas
Database altered.
SQL> alter tablespace INDCURSOxy add datafile
'/u03/oradata/CURSOxy/indcurso0102.dbf' size 512K;
Tablespace altered.
SQL> select rpad(file_name,50),bytes from dba_data_files where
tablespace_name='INDCURSOxy';
RPAD(FILE_NAME,50)
BYTES
-------------------------------------------------- ---------/u03/oradata/CURSOxy/indcurso0101.dbf
524288
/u03/oradata/CURSOxy/indcurso0102.dbf
524288
5.7.CrearuntablespacedeundoUNDO_CURSOxx.Convertirloeneltablespacede
undoactivo.CrearunatablaTABLA05enelnuevotablespace,quocurre?
ConsultarlavistaV$UNDOSTAT.
Podemostenervariostablespacesdeundo,peroslounodeellosestaractivoenunmomentodado(el
indicadoenelparmetroundo_tablespace).Nosepuedencrearobjetossobreuntablespacedeundo(como
puedeserunatabla).
Alcambiardetablespaceundoactivo(conundo_tablespace),lossegmentosderollbackquecontieneel
nuevotablespacepasanaestaronline,mientrasquelosdeltablespaceanteriorseponenoffline.
SQL> create undo tablespace undo_curso01 datafile
'/u03/oradata/CURSOxy/undo_curso0101.dbf' size 1M;
Tablespace created.
SQL> select * from dba_tablespaces where tablespace_name='UNDO_CURSOxy';
TABLESPACE_NAME
CONTENTS
LOGGING
FOR EXTENT_MAN
----------- ------------ ---------- --------- --------- --------- --- ---------ALLOCATIO PLU SEGMEN
--------- --- -----UNDO_CURSOxy
2048
2147483645
SYSTEM
NO
65536 ONLINE
65536
UNDO
1
LOGGING
NO
LOCAL
MANUAL
TYPE
VALUE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
48
AdministracinBsicadeOracle9iPrcticasresueltas
------------------------------------ ----------- -----------------------------undo_tablespace
string
UNDO_RBS1
TABLESPACE_NAME
STATUS
SYSTEM
ONLINE
_SYSSMU1$
UNDO_RBS1
ONLINE
_SYSSMU2$
UNDO_RBS1
ONLINE
_SYSSMU3$
UNDO_RBS1
ONLINE
_SYSSMU4$
UNDO_CURSOxy
OFFLINE
_SYSSMU5$
UNDO_CURSOxy
OFFLINE
_SYSSMU6$
UNDO_CURSOxy
OFFLINE
_SYSSMU7$
UNDO_CURSOxy
OFFLINE
_SYSSMU8$
UNDO_CURSOxy
OFFLINE
9 rows selected.
SQL> ALTER SYSTEM SET UNDO_TABLESPACE=UNDO_CURSOxy;
System altered.
SQL> SELECT SEGMENT_NAME,TABLESPACE_NAME,STATUS FROM DBA_ROLLBACK_SEGS;
SEGMENT_NAME
TABLESPACE_NAME
STATUS
SYSTEM
ONLINE
_SYSSMU1$
UNDO_RBS1
OFFLINE
_SYSSMU2$
UNDO_RBS1
OFFLINE
_SYSSMU3$
UNDO_RBS1
OFFLINE
_SYSSMU4$
UNDO_CURSOxy
ONLINE
_SYSSMU5$
UNDO_CURSOxy
ONLINE
_SYSSMU6$
UNDO_CURSOxy
ONLINE
_SYSSMU7$
UNDO_CURSOxy
ONLINE
_SYSSMU8$
UNDO_CURSOxy
ONLINE
9 rows selected.
NAME
UNDOBLKS
TXNCOUNT
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
49
AdministracinBsicadeOracle9iPrcticasresueltas
21/02/2005 13:38 UNDO_RBS1
1096
1108
10
1130
EnlavistaV$UNDOSTATseguardainformacinvaliosacuandoseusaundoautomtico,puespodemosver
estadsticas(cada10minutos)deltablespacedeundousado(UNDOTSN),bloquesderollbackconsumidos
(UNDOBLKS)yelntotaldetransaccionesdedichoperiodo(TXNCOUNT).
5.8.CrearuntablespacetemporalTEMP_CURSOxxde1M.Quocurrealponerloread
only?Hazqueseaeltablespacetemporalpordefectodelabasededatosquepasaal
ponerlooffline?ysiloborramos?
Untablespacetemporalnopuedeponerseenmodoreadonly,ytampocosepuedeponeroffline.
EltablespacetemporalpordefectodelaBD,adems,nopuedeserborrado.
SQL> show parameter sort_area_size
NAME
TYPE
VALUE
integer
65536
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
50
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA6.
ESPACIODEUNDO.
1. Consultarelficherodeinicializacindelabasededatosyaveriguarcualesdelosparmetrosdeundoestn
definidosysuvaloractual.
/home/oracle(CURSO01)>cd$ADMIN/pfile
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>grepundo
initCURSO01.ora
undo_management=auto
undo_tablespace=undo_rbs1
2. Averiguar cuantos espacios de undo estn definidos en la base de datos (nombre, caractersticas de
almacenamiento,...).
SQL>selecttablespace_name,initial_extent,next_extent,
min_extents,max_extents,status,contentsfromdba_tablespaces
wherecontents='UNDO'
TABLESPACE_NAMEINITIAL_EXTENTNEXT_EXTENT
MIN_EXTENTSMAX_EXTENTSSTATUSCONTENTS
UNDO_RBS165536
12147483645ONLINEUNDO
3. Enqusistema/sdeficherosestndefinidoslosanterioresespaciosdealmacenamiento?,culessutamao?.
SQL>selecttablespace_name,file_name,file_id,bytes
2fromdba_data_fileswheretablespace_name='UNDO_RBS1';
TABLESPACE_NAME
FILE_NAME
FILE_IDBYTES
UNDO_RBS1
/home/u03/oradata/CURSO01/rbs01.dbf
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
51
AdministracinBsicadeOracle9iPrcticasresueltas
34194304
4. Consultarelvaloractualmenteactivodelosparmetrosdeundoenlabasededatos.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringundo_rbs1
5. Intentarasignarelsegmentoderollbackr01alatransaccinactual.Segeneraerror?,encasoafirmativocul?.
culeselvalordeundo_suppress_errors?.
SQL>settransactionuserollbacksegmentr01;
settransactionuserollbacksegmentr01
*
ERRORatline1:
ORA30019:IllegalrollbackSegmentoperationinAutomaticUndo
mode
6. Modificardinmicamenteelvalordelparmetroundo_suppress_errorsyvolverarealizarelejercicioanterior.
culeselresultado?.
SQL>altersystemsetundo_suppress_errors=TRUE;
Systemaltered.
SQL>settransactionuserollbacksegmentr01;
Transactionset.
7. Repetirelejercicionmero4yobservarelcambiodevalordelosparmetros.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanTRUE
undo_tablespacestringundo_rbs1
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
52
AdministracinBsicadeOracle9iPrcticasresueltas
8. Crearunsegundoespaciodealmacenamientodeundoconlassiguientescaractersticas:
Nombre...UNDO02
Localizacin.../home/u03/oradata/CURSOxx/undo02.dbf
Tamao...1M
Autoextensible...2M,hasta3M
Comprobarsucreacin.
SQL>createundotablespaceundo02
2datafile'/home/u03/oradata/CURSO01/undo02.dbf'
3size1M
4autoextendonnext2Mmaxsize3M;
Tablespacecreated.
SQL>selecttablespace_name,file_name
2*fromdba_data_fileswheretablespace_namelike'UNDO%'
UNDO_RBS1
/home/u03/oradata/CURSO01/rbs01.dbf
UNDO02
/home/u03/oradata/CURSO01/undo02.dbf
9. Crearunespaciodealmacenamientodeundoconlassiguientescaractersticas:
Nombre...UNDO03
Localizacin.../home/u03/oradata/CURSOxx/undo03.dbf
Tamao...1M
Definirlaclusulastoragepordefecto:initial100k,next100kymaxextents50.
SQL>createundotablespaceundo03
2datafile'/home/u03/oradata/CURSO01/undo03.dbf'
3size1M
4*defaultstorage(initial100knext100kmaxextents50)
defaultstorage(initial100knext100kmaxextents50)
*
ERRORatline4:
ORA30024:InvalidspecificationforCREATEUNDOTABLESPACE
10. Modificarelespaciodeundopordefecto,deformaqueseaapartirdeestemomentoUNDO02.Comprobarloantes
ydespuesdehacerlo.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
53
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>showparametersundo
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanTRUE
undo_tablespacestringundo_rbs1
SQL>altersystemsetundo_tablespace=undo02;
Systemaltered.
SQL>showparametersundo
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanTRUE
undo_tablespacestringUNDO02
11. Modificarelficherodeinicializacincomentandolalneacorrespondientealavariableundo_tablespace.cules
elespaciodeundoquesehabilita?(recuerdequealcerrarlabasededatoseraUNDO02,verejercicioanterior).
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononThuNov1814:40:33
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
54
AdministracinBsicadeOracle9iPrcticasresueltas
Databaseopened.
SQL>connectsystem
Enterpassword:
Connected.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringundo_rbs1
12. Modificarelficherodeinicializacinyasignaralavariableundo_tablespaceelvalorUNDO02.Pararyarrancarla
basededatos.
#GestionAutomaticadeRollback(UNDO).
undo_management=auto
undo_tablespace=UNDO02
"initCURSO01.ora"125L,5655Cescritos
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononThuNov1814:49:42
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
55
AdministracinBsicadeOracle9iPrcticasresueltas
Databaseopened.
SQL>connectsystem
Enterpassword:
Connected.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO02
13. BorrarelespaciodeundoUNDO02.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO02
SQL>droptablespaceundo02;
droptablespaceundo02
*
ERRORatline1:
ORA30013:undotablespace'UNDO02'iscurrentlyinuse
14. AsignarUNDO_RBS1comonuevoespaciodeundo.BorrarelespacioUNDO02.
SQL>altersystemsetundo_tablespace='UNDO_RBS1';
Systemaltered.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO_RBS1
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
56
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>droptablespaceundo02;
Tablespacedropped.
15. Pararyarrancarlabasededatos(deberecordarsequeenelficheroinitCURSOxx.oraelparmetroundo_tablespacetiene
elvalorUNDO02).
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
ORA01092:ORACLEinstanceterminated.Disconnectionforced
16. Comentarelparmetroundo_tablespaceenelficherodeinicializacin,yarrancarlabasededatos.Quespacio
deundotieneasignado?.
#GestionAutomatica
undo_management=auto
#undo_tablespace=UNDO02
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononFriNov1909:32:41
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connectedtoanidleinstance.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
57
AdministracinBsicadeOracle9iPrcticasresueltas
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO_RBS1
17. Comentartodoslosparmetroscorrespondientesaundoenelficherodeinicializacin,pararyarrancarlabasede
datos.Comprobarlosvaloresdeundo,quobserva?.
#GestionAutomatica
#undo_management=auto
#undo_tablespace=UNDO02
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononFriNov1909:41:09
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
58
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringMANUAL
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestring
18. BorrarelespaciodeundoUNDO_RBS1.Habilitardenuevolagestinautomticadeundoy,pararyarrancarla
basededatos.Comprobarlosvaloresdeundo,quespaciodeundoseusa?.
SQL>c.form.from.
1*select*fromdba_data_fileswhere
tablespace_name='UNDO_RBS1'
SQL>r
1*select*fromdba_data_fileswhere
tablespace_name='UNDO_RBS1'
FILE_NAME
FILE_IDTABLESPACE_NAMEBYTESBLOCKS
STATUS
RELATIVE_FNOAUTMAXBYTESMAXBLOCKSINCREMENT_BYUSER_BYTES
USER_BLOCKS
/home/u03/oradata/CURSO01/rbs01.dbf
3UNDO_RBS141943042048
AVAILABLE
3NO0004128768
2016
SQL>droptablespaceUNDO_RBS1;
Tablespacedropped.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
59
AdministracinBsicadeOracle9iPrcticasresueltas
#GestionAutomatica
undo_management=auto
#undo_tablespace=UNDO02
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononFriNov1909:49:03
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connectedtoanidleinstance.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestring
19. Enelejercicioanterior,segeneraalgnmensajedeerrorenelficherodealertas?.
StartingupORACLERDBMSVersion:9.2.0.1.0.
Systemparameterswithnondefaultvalues:
processes=20
shared_pool_size=8388608
sga_max_size=34148352
...
FriNov1909:49:122004
ALTERDATABASEMOUNT
FriNov1909:49:172004
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
60
AdministracinBsicadeOracle9iPrcticasresueltas
Successfulmountofredothread1,withmountid2097158872.
FriNov1909:49:172004
DatabasemountedinExclusiveMode.
Completed:ALTERDATABASEMOUNT
FriNov1909:49:172004
ALTERDATABASEOPEN
FriNov1909:49:172004
Thread1openedatlogsequence578
Currentlog#5seq#578mem#0:/u03/oradata/CURSO01/redo2a.log
Currentlog#5seq#578mem#1:/u04/oradata/CURSO01/redo2b.log
Successfulopenofredothread1.
FriNov1909:49:172004
MTTRadvisoryisdisabledbecauseFAST_START_MTTR_TARGETisnot
set
FriNov1909:49:172004
SMON:enablingcacherecovery
SMON:enablingtxrecovery
***WarningExecutingtransactionwithoutactiveUndoTablespace
FriNov1909:49:172004
DatabaseCharactersetisWE8ISO8859P15
replication_dependency_trackingturnedoff(noasyncmultimaster
replicationfound)
***WarningExecutingtransactionwithoutactiveUndoTablespace
Completed:ALTERDATABASEOPEN
20. CrearunespaciollamadoPRUEBA,quenoseadeundo,eintentarasignarlocomoespaciodeundo.Qu
sucede?.
Nombre...PRUEBA
Localizacin.../home/u03/oradata/CURSOxx/prueba01.dbf
Tamao...1M
SQL>createtablespacepruebadatafile
'/home/u03/oradata/CURSO01/prueba01.dbf'size1M
Tablespacecreated.
SQL>altersystemsetundo_tablespace=PRUEBA;
altersystemsetundo_tablespace=PRUEBA
*
ERRORatline1:
ORA02097:parametercannotbemodifiedbecausespecifiedvalueis
invalid
ORA30012:undotablespace'PRUEBA'doesnotexistorofwrong
type
21. CreardenuevoelespaciodeundoUNDO_RBS1yasignarlocomotal.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
61
AdministracinBsicadeOracle9iPrcticasresueltas
Nombre...UNDO_RBS1
Localizacin.../home/u03/oradata/CURSOxx/rbs01.dbf
Tamao...1M
Siguienteextensin...500k
Tamaomximo...2M
SQL>createundotablespaceundo_rbs1datafile
'/home/u03/oradata/CURSO01/rbs01.dbf'
2*size1Mautoextendonnext500Kmaxsize2M
createundotablespaceundo_rbs1datafile
'/home/u03/oradata/CURSO01/rbs01.dbf'
*
ERRORatline1:
ORA01119:errorincreatingdatabasefile
'/home/u03/oradata/CURSO01/rbs01.dbf'
ORA27038:skgfrcre:fileexists
Nota.CuandoseborrelespacioUNDO_RBS1,noseeliminelficherocorrespondienteyse
generaunerror.Esnecesariopreviamenteborrarorenombrarrbs01.dbf;seelige renombrarel
ficheroporserunaoperacinmsseguraenestecaso.Cuidadoconestaoperacin!.
SQL>!
/u01/app/oracle/admin/CURSO01/bdump(CURSO01)>cd
/home/u03/oradata/CURSO01
/home/u03/oradata/CURSO01(CURSO01)>mvrbs01.dbf
rbs01.dbf.antiguo
/home/u03/oradata/CURSO01(CURSO01)>exit
SQL>
SQL>createundotablespaceundo_rbs1datafile
'/home/u03/oradata/CURSO01/rbs01.dbf'
2size1Mautoextendonnext500Kmaxsize2M;
Tablespacecreated.
SQL>altersystemsetundo_tablespace=undo_rbs1
Systemaltered.
SQL>showparametersundo
NAMETYPEVALUE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
62
AdministracinBsicadeOracle9iPrcticasresueltas
undo_managementstringAUTO
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO_RBS1
22. Obtenerladescripcincompletadelasvistassiguientes(consultartambinladocumentacinenlnea).
DBA_UNDO_EXTENTS
V$UNDOSTAT
V$ROLLSTAT
SQL>descdba_undo_extents
NameNull?Type
OWNERCHAR(3)
SEGMENT_NAMENOTNULLVARCHAR2(30)
TABLESPACE_NAMENOTNULLVARCHAR2(30)
EXTENT_IDNUMBER
FILE_IDNOTNULLNUMBER
BLOCK_IDNUMBER
BYTESNUMBER
BLOCKSNUMBER
RELATIVE_FNONUMBER
COMMIT_JTIMENUMBER
COMMIT_WTIMEVARCHAR2(20)
STATUSVARCHAR2(9)
Especialmenteinteresantessonlascolumnasownerpropietariodelespaciodeundo,
tablespace_name nombre del espacio de undo, y status estado de la transaccin en la
extension:Active,contienetransaccinesactivas,expired,elsegmentonoseutiliza,ounexpired,no
haytransaccinesactivasperocontienedatosquepuedenserrequeridosporotrastransaccines.
Segnlanota231509.1,lascolumnascommit_jtimeycommit_wtimepierdensuvalorenla
vistadba_undo_extentsdesdelaversion9.2.0
SQL>descv$undostat
NameNull?Type
BEGIN_TIMEDATE
END_TIMEDATE
UNDOTSNNUMBER
UNDOBLKSNUMBER
TXNCOUNTNUMBER
MAXQUERYLENNUMBER
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
63
AdministracinBsicadeOracle9iPrcticasresueltas
MAXCONCURRENCYNUMBER
UNXPSTEALCNTNUMBER
UNXPBLKRELCNTNUMBER
UNXPBLKREUCNTNUMBER
EXPSTEALCNTNUMBER
EXPBLKRELCNTNUMBER
EXPBLKREUCNTNUMBER
SSOLDERRCNTNUMBER
NOSPACEERRCNTNUMBER
Muestra datos estadsticos relativos a consumo de espacio de undo, longitud de las
consultasejecutadas,...Sedevuelvenvaloresnulossisetrabajaenmodomanual.
Cada fila de la vista corresponde a un intervalo de 10 minutos (en total 1008 filas,
correspondientesaunperiododesietedias).
SQL>descv$rollstat
NameNull?Type
USNNUMBER
LATCHNUMBER
EXTENTSNUMBER
RSSIZENUMBER
WRITESNUMBER
XACTSNUMBER
GETSNUMBER
WAITSNUMBER
OPTSIZENUMBER
HWMSIZENUMBER
SHRINKSNUMBER
WRAPSNUMBER
EXTENDSNUMBER
AVESHRINKNUMBER
AVEACTIVENUMBER
STATUSVARCHAR2(15)
CUREXTNUMBER
CURBLKNUMBER
Enmodoautomticoreflejaelcomportamientodelossegmentosdeundoenelespaciode
undo.
23. Habilitarelmododegestinmanualdeundo.Pararyarrancarlabasededatos.
#GestionAutomatica
undo_management=manual
undo_tablespace=UNDO_RBS1
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
64
AdministracinBsicadeOracle9iPrcticasresueltas
SQL*Plus:Release9.2.0.1.0ProductiononFriNov1911:54:442004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
SQL>showparametersundo
NAMETYPEVALUE
undo_managementstringMANUAL
undo_retentioninteger900
undo_suppress_errorsbooleanFALSE
undo_tablespacestringUNDO_RBS1
SQL>altersystemsetundo_tablespace=UNDO02;
altersystemsetundo_tablespace=UNDO02
*
ERRORatline1:
ORA02097:parametercannotbemodifiedbecausespecifiedvalueisinvalid
ORA30014:operationonlysupportedinAutomaticUndoManagementmode
24. Obtenerladescripcincompletadelasvistassiguientes(consultartambinladocumentacinenlnea):
DBA_SEGMENTS
DBA_ROLLBACK_SEGS
V$ROLLNAME
V$ROLLSTAT
SQL>descdba_segments
NombreNulo?Tipo
OWNERVARCHAR2(30)
SEGMENT_NAMEVARCHAR2(81)
PARTITION_NAMEVARCHAR2(30)
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
65
AdministracinBsicadeOracle9iPrcticasresueltas
SEGMENT_TYPEVARCHAR2(18)
TABLESPACE_NAMEVARCHAR2(30)
HEADER_FILENUMBER
HEADER_BLOCKNUMBER
BYTESNUMBER
BLOCKSNUMBER
EXTENTSNUMBER
INITIAL_EXTENTNUMBER
NEXT_EXTENTNUMBER
MIN_EXTENTSNUMBER
MAX_EXTENTSNUMBER
PCT_INCREASENUMBER
FREELISTSNUMBER
FREELIST_GROUPSNUMBER
RELATIVE_FNONUMBER
BUFFER_POOLVARCHAR2(7)
SQL>descdba_rollback_segs
NombreNulo?Tipo
SEGMENT_NAMENOTNULLVARCHAR2(30)
OWNERVARCHAR2(6)
TABLESPACE_NAMENOTNULLVARCHAR2(30)
SEGMENT_IDNOTNULLNUMBER
FILE_IDNOTNULLNUMBER
BLOCK_IDNOTNULLNUMBER
INITIAL_EXTENTNUMBER
NEXT_EXTENTNUMBER
MIN_EXTENTSNOTNULLNUMBER
MAX_EXTENTSNOTNULLNUMBER
PCT_INCREASENUMBER
STATUSVARCHAR2(16)
INSTANCE_NUMVARCHAR2(40)
RELATIVE_FNONOTNULLNUMBER
SQL>descV$rollname
NombreNulo?Tipo
USNNUMBER
NAMENOTNULLVARCHAR2(30)
SQL>descv$rollstat
NombreNulo?Tipo
USNNUMBER
EXTENTSNUMBER
RSSIZENUMBER
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
66
AdministracinBsicadeOracle9iPrcticasresueltas
WRITESNUMBER
XACTSNUMBER
GETSNUMBER
WAITSNUMBER
OPTSIZENUMBER
HWMSIZENUMBER
SHRINKSNUMBER
WRAPSNUMBER
EXTENDSNUMBER
AVESHRINKNUMBER
AVEACTIVENUMBER
STATUSVARCHAR2(15)
CUREXTNUMBER
CURBLKNUMBER
25. Averiguarcuantosespaciosdeundodedicadosagestinautomticaexistenenlabasededatosyponerlosfuera
delnea(comprobarestepunto).
SQL>selecttablespace_name,contents,statusfromdba_tablespaces
wherecontents='UNDO';
TABLESPACE_NAMECONTENTSSTATUS
UNDO_RBS1UNDOONLINE
UNDO02UNDOONLINE
SQL>altertablespaceundo_rbs1offline;
Tablespacealtered.
SQL>altertablespaceundo02offline;
Tablespacealtered.
SQL>selecttablespace_name,contents,statusfromdba_tablespaces
wherecontents='UNDO';
TABLESPACE_NAMECONTENTSSTATUS
UNDO_RBS1UNDOOFFLINE
UNDO02UNDOOFFLINE
26. Averiguardecuntossegmentosde"rollback"disponelabasededatosyculesdeellosestnactivos.
SQL>selectcount(*)fromdba_rollback_segswherestatus='ONLINE';
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
67
AdministracinBsicadeOracle9iPrcticasresueltas
COUNT(*)
1
SQL> select owner, SEGMENT_NAME, TABLESPACE_NAME,STATUS from
dba_rollback_segsorderbyowner,segment_name,status
PUBLIC_SYSSMU1$UNDO_RBS1
OFFLINE
PUBLIC_SYSSMU2$UNDO_RBS1
OFFLINE
PUBLIC_SYSSMU3$UNDO_RBS1
OFFLINE
PUBLIC_SYSSMU4$UNDO_RBS1
OFFLINE
PUBLIC_SYSSMU5$UNDO_RBS1
OFFLINE
PUBLIC_SYSSMU6$UNDO02
OFFLINE
PUBLIC_SYSSMU7$UNDO02
OFFLINE
PUBLIC_SYSSMU8$UNDO02
OFFLINE
SYSSYSTEMSYSTEM
ONLINE
SQL>SELECTsegment_name,tablespace_name,bytes,blocks,extents
FROMsys.dba_segments
WHEREsegment_type='ROLLBACK';
SYSTEM
SYSTEM148275272427
RealizarlaconsultaanteriorparatipodesegmentoigualaUNDO.
SQL>SELECTsegment_name,tablespace_name,bytes,blocks,extents
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
68
AdministracinBsicadeOracle9iPrcticasresueltas
FROMsys.dba_segments
WHEREsegment_typelike'%UNDO'
27. Idemparaelnmerodesegmentosfueradelnea.
SQL>selectcount(*)fromdba_rollback_segswhere
status='OFFLINE';
COUNT(*)
8
28. AveriguarsiexisteunespaciodealmacenamientodenombreRBS,sinocrearlo.Enadelantesetrabajarconeste
espaciodealmacenamientoexclusivoparalossegmentosde"rollback".
Nombre...RBS
Localizacin.../home/u03/oradata/CURSOxx/rbs_manual01.dbf
Tamao...1M
Siguienteextensin...500k
Tamaomximo...2M
SQL>selecttablespace_namefromdba_tablespaces;
TABLESPACE_NAME
SYSTEM
TOOLS
UNDO_RBS1
TEMP
USERS
DATACURSO01
INDCURSO01
UNDO02
PRUEBA
9rowsselected.
SQL>selecttablespace_namefromdba_tablespaceswhere
tablespace_name='RBS';
norowsselected
SQL>createtablespacerbs
2datafile'/home/u03/oradata/CURSO01/rbs_manual01.dbf'
3size1M
4defaultstorage(initial100knext100kminextents2
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
69
AdministracinBsicadeOracle9iPrcticasresueltas
maxextentsunlimited)
5*extentmanagementdictionary
Tablespacecreated.
29. Crearunsegmentode"rollback"pblico,enelespaciodealmacenamientoanterior,llamadoRP01.
SQL>CREATEPUBLICROLLBACKSEGMENTRP01TABLESPACERBS
2storage(initial100knext100kminextents2maxextents10
optimal500K);
CREATEPUBLICROLLBACKSEGMENTRP01TABLESPACERBS
*
ERRORatline1:
ORA01552:cannotusesystemrollbacksegmentfornonsystem
tablespace'RBS'
Segnlanota1005227.6paralasolucinaesteproblema,provocadoporquedebehabercomo
mnimounsegmentoactivadoquenoseaSYSTEM,debenseguirselossiguientespasos:
CrearunsegmentoderollbackenelespacioSYSTEMyactivarlo.
Crearlossegmentosoportunosenelespaciodedicadoarollback.
BorrarodesactivarelsegmentocreadoenSYSTEM
SQL>createpublicrollbacksegmentr_borrartablespacesystem
2storage(initial100knext100kminextents2maxextents10
optimal500K);
Rollbacksegmentcreated.
SQL>alterrollbacksegmentr_borraronline;
Rollbacksegmentaltered.
SQL>CREATEPUBLICROLLBACKSEGMENTRP01TABLESPACERBS
2storage(initial100knext100kminextents2maxextents10
optimal500K);
Rollbacksegmentcreated.
30. ObservarlosparmetrosdealmacenamientoconquesehacreadoelsegmentoRP01.Culesson?,culesson
losdelespaciodealmacenamientoRBS?.
SQL>selectsubstr(segment_name,1,10)seg,
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
70
AdministracinBsicadeOracle9iPrcticasresueltas
substr(tablespace_name,1,10)tables,INITIAL_EXTENT,NEXT_EXTENT,
MIN_EXTENTS,MAX_EXTENTSfromdba_rollback_segswheresegment_name
='RP01';
SEGTABLESINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS
MAX_EXTENTS
RP01RBS1024001024002
10
SQL>selectsubstr(tablespace_name,1,10)tables,INITIAL_EXTENT,
NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTSfromdba_tablespaceswhere
tablespace_name='RBS'
TABLESINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTSMAX_EXTENTS
RBS10240010240022147483645
31. Crearunsegmentode"rollback"privadollamadoRPR01.
SQL>CREATEROLLBACKSEGMENTRPR01TABLESPACERBS;
Rollbacksegmentcreated.
32. Activarlossegmentosde"rollback"creadosanteriormente.
SQL>alterrollbacksegmentrp01online;
Rollbacksegmentaltered.
SQL>ALTERROLLBACKSEGMENTRPR01ONLINE;
Rollbacksegmentaltered.
33. Averiguarculesdelossegmentosde"rollback"anterioressonpblicosyculesprivados.
SQL>selectowner,segment_name,statusfromdba_rollback_segs;
OWNERSEGMENT_NAMESTATUS
SYSSYSTEMONLINE
PUBLIC_SYSSMU1$OFFLINE
PUBLIC_SYSSMU2$OFFLINE
PUBLIC_SYSSMU3$OFFLINE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
71
AdministracinBsicadeOracle9iPrcticasresueltas
PUBLIC_SYSSMU4$OFFLINE
PUBLIC_SYSSMU5$OFFLINE
PUBLIC_SYSSMU6$OFFLINE
PUBLIC_SYSSMU7$OFFLINE
PUBLIC_SYSSMU8$OFFLINE
PUBLICR_BORRARONLINE
PUBLICRP01ONLINE
SYSRPR01ONLINE
12rowsselected.
34. Averiguarenqueespaciosdealmacenamientoestdefinidocadaunodelossegmentosde"rollback"delabasede
datos.
SQL>selectsubstr(owner,1,10)prop,substr(segment_name,1,10)
nombre,tablespace_namefromdba_rollback_segsorderby
segment_name;
PROPNOMBRETABLESPACE_NAME
PUBLICRP01RBS
SYSRPR01RBS
PUBLICR_BORRARSYSTEM
SYSSYSTEMSYSTEM
PUBLIC_SYSSMU1$UNDO_RBS1
PUBLIC_SYSSMU2$UNDO_RBS1
PUBLIC_SYSSMU3$UNDO_RBS1
PUBLIC_SYSSMU4$UNDO_RBS1
PUBLIC_SYSSMU5$UNDO_RBS1
PUBLIC_SYSSMU6$UNDO02
PUBLIC_SYSSMU7$UNDO02
PROPNOMBRETABLESPACE_NAME
PUBLIC_SYSSMU8$UNDO02
12rowsselected.
35. Averiguarculessonlosparmetrosdealmacenamientodelossegmentosde"rollback".
SQL>selectsubstr(owner,1,10)prop,substr(segment_name,1,10)
nombre,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,
PCT_INCREASEfromdba_rollback_segswheresegment_namelike'R%';
PROPNOMBREINITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS
MAX_EXTENTSPCT_INCREASE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
72
AdministracinBsicadeOracle9iPrcticasresueltas
PUBLICRP011024001024002
100
SYSRPR011024001024002
327650
PUBLICR_BORRAR1024001024002
100
36. Desactivarlossegmentosde"rollback"RP01yRPR01.
SQL>ALTERROLLBACKSEGMENTRP01offline;
Rollbacksegmentaltered.
SQL>ALTERROLLBACKSEGMENTRPR01offline;
Rollbacksegmentaltered.
37. Pararyarrancarlabasededatos,comprobardenuevoelejercicio33.Qusucedeconlossegmentosde"rollback"
RP01yRPR01?.
Veaseresolucindelejercicioanterior.
38. Modificarelinit.oradelabasededatosdeformaqueestdeclaradoelsegmentode"rollback"RPR01.Parary
arrancarlabasededatos.
Enelficheroinit<SID>.ora:
rollback_segments=(RPR01)
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononMonNov2210:03:34
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
73
AdministracinBsicadeOracle9iPrcticasresueltas
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
Databaseopened.
39. Volverarealizarlosejercicios26y27.
Veaseresolucindeejerciciosanteriores.
40. Desactivarelsegmentode"rollback"RP01.
SQL>alterrollbacksegmentrp01offline;
Rollbacksegmentaltered.
41. Intentarborrarlossegmentosde"rollback"RP01yRPR01,qusucede?.
SQL>droprollbacksegmentrp01;
Rollbacksegmentdropped.
SQL>droprollbacksegmentrpr01;
droprollbacksegmentrpr01
*
ERRORatline1:
ORA01545:rollbacksegment'RPR01'specifiednotavailable
42. Desactivarelsegmentode"rollback"RPR01yborrarlo.
SQL>alterrollbacksegmentrpr01offline;
Rollbacksegmentaltered.
SQL>droprollbacksegmentrpr01;
Rollbacksegmentdropped.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
74
AdministracinBsicadeOracle9iPrcticasresueltas
43. Realizarunaparadayarranquedelabasededatos(sinmodificarelinit.oranilavariabledondesedeclaranlos
segmentosde"rollback").Culeselresultado?.Modificarelinit.orayvolveraarrancarlabasededatos.
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononMonNov2210:09:36
2004
Copyright(c)1982,2002,OracleCorporation.Allrights
reserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea34148352bytes
FixedSize450560bytes
VariableSize29360128bytes
DatabaseBuffers4194304bytes
RedoBuffers143360bytes
Databasemounted.
ORA01092:ORACLEinstanceterminated.Disconnectionforced
Buscarelmensajedeerrorprecedenteenladocumentacinen
lnea.Modificarelinit.orayrearrancarlabasededatos.
44. Creardenuevolossegmentosde"rollback"atenindosealossiguientesparmetrosdealmacenamiento:
minextents
maxextents
initial
next
1
1
100k
100k
SQL>CREATEPUBLICROLLBACKSEGMENTRP01
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS1
6*MAXEXTENTS1)
CREATEPUBLICROLLBACKSEGMENTRP01
*
ERRORatline1:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
75
AdministracinBsicadeOracle9iPrcticasresueltas
ORA01556:MINEXTENTSforrollbacksegmentmustbegreaterthan1
SQL>CREATEPUBLICROLLBACKSEGMENTRP01
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6*MAXEXTENTS1)
MAXEXTENTS1)
*
ERRORatline6:
ORA02221:invalidMAXEXTENTSstorageoptionvalue
45. Idemperomodificandolossiguientesparmetros:
minextents
maxextents
2
20
SQL>CREATEPUBLICROLLBACKSEGMENTRP01
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6*MAXEXTENTS20)
Rollbacksegmentcreated.
46. Crearunsegmentode"rollback"pblicollamadoRP02conlosmismosparmetrosquelosanterioresyadems:
pctincrease
50
SQL>CREATEPUBLICROLLBACKSEGMENTRP02
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6MAXEXTENTS20
7*PCTINCREASE50)
PCTINCREASE50)
*
ERRORatline7:
ORA02192:PCTINCREASEnotallowedforrollbacksegmentstorage
clauses
47. Crearunsegmentode"rollback"pblicollamadoRP02conlosmismosparmetrosquelosanteriores.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
76
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>CREATEPUBLICROLLBACKSEGMENTRP02
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6*MAXEXTENTS20)
Rollbacksegmentcreated.
48. Crearunsegmentode"rollback"pblicollamadoRP03conunoptimalde50k.Idemconunoptimalde300K.
SQL>CREATEPUBLICROLLBACKSEGMENTRP03
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6MAXEXTENTS20
7*OPTIMAL50K)
CREATEPUBLICROLLBACKSEGMENTRP03
*
ERRORatline1:
ORA01593:rollbacksegmentoptimalsize(25blks)issmallerthan
thecomputedinitialsize(100blks)
Buscarelerrorproducidoenladocumentacinenlnea.
SQL>CREATEPUBLICROLLBACKSEGMENTRP03
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
6MAXEXTENTS20
7*OPTIMAL300K)
Rollbacksegmentcreated.
49. Repetirlosejercicios26y27anteriores.
Veaseresolucindeejerciciosanteriores.
50. Decrementareltamaodelossegmentosde"rollback"RP02yRP03.ActivarRP02yRP03,repetirlaoperacin.
SQL>ALTERROLLBACKSEGMENTRP02SHRINK;
ALTERROLLBACKSEGMENTRP02SHRINK
*
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
77
AdministracinBsicadeOracle9iPrcticasresueltas
ERRORatline1:
ORA01598:rollbacksegment'RP02'isnotonline
SQL>ALTERROLLBACKSEGMENTRP03shrink;
ALTERROLLBACKSEGMENTRP03shrink
*
ERRORatline1:
ORA01598:rollbacksegment'RP03'isnotonline
SQL>ALTERROLLBACKSEGMENTRP02online;
Rollbacksegmentaltered.
SQL>c.rp02.rp03.
1*ALTERROLLBACKSEGMENTrp03online
SQL>r
1*ALTERROLLBACKSEGMENTrp03online
Rollbacksegmentaltered.
SQL>ALTERROLLBACKSEGMENTRP02SHRINK;
Rollbacksegmentaltered.
SQL>c.rp02.rp03.
1*ALTERROLLBACKSEGMENTrp03SHRINK
SQL>r
1*ALTERROLLBACKSEGMENTrp03SHRINK
Rollbacksegmentaltered.
51. Desactivartodoslossegmentosde"rollback"(incluidoelSYSTEM).
SQL>selectsegment_name,statusfromdba_rollback_segs;
SEGMENT_NAMESTATUS
SYSTEMONLINE
_SYSSMU1$OFFLINE
_SYSSMU2$OFFLINE
_SYSSMU3$OFFLINE
_SYSSMU4$OFFLINE
_SYSSMU5$OFFLINE
_SYSSMU6$OFFLINE
_SYSSMU7$OFFLINE
_SYSSMU8$OFFLINE
R_BORRARONLINE
RP01OFFLINE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
78
AdministracinBsicadeOracle9iPrcticasresueltas
SEGMENT_NAMESTATUS
RP02ONLINE
RP03ONLINE
13rowsselected.
SQL>alterrollbacksegmentr_borraroffline;
Rollbacksegmentaltered.
SQL>alterrollbacksegmentrp02offline;
Rollbacksegmentaltered.
SQL>alterrollbacksegmentrp03offline;
Rollbacksegmentaltered.
SQL>alterrollbacksegmentsystemoffline;
alterrollbacksegmentsystemoffline
*
ERRORatline1:
ORA01597:cannotaltersystemrollbacksegmentonlineoroffline
52. Borrartodoslossegmentosde"rollback"delabasededatos(exceptoelSYSTEM).
SQL>selectsegment_name,statusfromdba_rollback_segs;
SEGMENT_NAMESTATUS
SYSTEMONLINE
_SYSSMU1$OFFLINE
_SYSSMU2$OFFLINE
_SYSSMU3$OFFLINE
_SYSSMU4$OFFLINE
_SYSSMU5$OFFLINE
_SYSSMU6$OFFLINE
_SYSSMU7$OFFLINE
_SYSSMU8$OFFLINE
RP01OFFLINE
10rowsselected.
SQL>droprollbacksegmentr_borrar;
Rollbacksegmentdropped.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
79
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>droprollbacksegmentrp02;
Rollbacksegmentdropped.
SQL>droprollbacksegmentrp03;
Rollbacksegmentdropped.
53. Intentarborrarelsegmentode"rollback"SYSTEM,qusucede?.
SQL>selectsegment_name,statusfromdba_rollback_segswhere
status='ONLINE';
SEGMENT_NAMESTATUS
SYSTEMONLINE
SQL>droprollbacksegmentsystem;
droprollbacksegmentsystem
*
ERRORatline1:
ORA01544:cannotdropsystemrollbacksegment
54. Crearsegmentosde"rollback"pblicosRP01,RP02,RP03,...RP20conlosparmetros:
minextents
maxextents
initial
next
optimal
2
20
100k
100k
500K
Editarunficherollamadocrea_segmentos.sql,porejemplo,que
contengatodaslassentenciasdecreacindeltipo:
CREATEPUBLICROLLBACKSEGMENTRP01
TABLESPACERBS
STORAGE(INITIAL100K
NEXT100K
MINEXTENTS2
MAXEXTENTS20
OPTIMAL500K)
/
CREATEPUBLICROLLBACKSEGMENTRP02
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
80
AdministracinBsicadeOracle9iPrcticasresueltas
TABLESPACERBS
STORAGE(INITIAL100K
NEXT100K
MINEXTENTS2
MAXEXTENTS20
OPTIMAL500K)
/
...
Ejecutardesdesqlpluselficherodelasiguienteforma:
SQL>@crea_segmentos.sql
55. Ponertodoslossegmentosanterioresenlnea.
Editarunficherollamadoenlnea_segmentos.sql,porejemplo,
quecontengatodaslassentenciasdeltipo:
AlterROLLBACKSEGMENTRP01online;
Ejecutardesdesqlpluselficherodelasiguienteforma:
SQL>@enlnea_segmentos.sql
56. Modificarlossegmentosde"rollback"RP01yRP02,indicandolossiguientesparmetros:
minextents
initial
1
200k
SQL>alterrollbacksegmentrp01
2storage(minextents1
3*initial200k);
initial200k);
*
ERRORatline3:
ORA02203:INITIALstorageoptionsnotallowed
57. Intentarcrearelsegmentode"rollback"RP21conlasmismascaracteristicasquelosanterioresperosinposeerlos
privilegiosnecesariospararealizarlo(conectarsecmousuarioSCOTT).
SQL>CREATEPUBLICROLLBACKSEGMENTRP21
2TABLESPACERBS
3STORAGE(INITIAL100K
4NEXT100K
5MINEXTENTS2
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
81
AdministracinBsicadeOracle9iPrcticasresueltas
6MAXEXTENTS20
7*OPTIMAL500K)
CREATEPUBLICROLLBACKSEGMENTRP21
*
ERRORatline1:
ORA01031:insufficientprivileges
58. Intentarborrar el segmentode"rollback" RP21 yel RP20 sin poseerlosprivileios necesariospara realizarlo,
desactivarlospreviamente(conectarsecomousuarioSCOTT).
SQL>alterrollbacksegmentrp20offline;
alterrollbacksegmentrp20offline
*
ERRORatline1:
ORA01031:insufficientprivileges
59. Intentarmodificarlossegmentosde"rollback"RP19yelRP18,sinposeerlosprivilegiosnecesariospararealizarlo,
conectarsecomousuarioSCOTT,asignando:
maxextents
next
optimal
25
200k
1M
SQL>alterrollbacksegmentrp18
2storage(next200k
3maxextents25
4*optimal1M)
alterrollbacksegmentrp18
*
ERRORatline1:
ORA01031:insufficientprivileges
60. ConectarsecomousuarioSYSTEMyrealizarelejercicioanterior.
SQL>connectsystem
Enterpassword:
Connected.
SQL>alterrollbacksegmentrp18
2storage(next200k
3maxextents25
4*optimal1M)
Rollbacksegmentaltered.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
82
AdministracinBsicadeOracle9iPrcticasresueltas
61. RealizarunainsercinenlatablaSCOTT.DEPT,conectarsecomoSCOTT,previamenteasignaralatransaccinel
segmentode"rollback"RP19.Losvaloresseranlossiguientes:
DEPTNO
DNAME
LOC
50
INFORMATICA
MURCIA
SQL>connectscott
Enterpassword:
Connected.
SQL>SETTRANSACTIONUSEROLLBACKSEGMENTrp19;
Transactionset.
SQL>insertintoscott.deptvalues(50,'INFORMATICA','MURCIA');
1rowcreated.
SQL>commit;
Commitcomplete.
62. ModificarelparmetroOPTIMALdelossegmentosde"rollback"RP01aRP10,fijndoloen100K.Esposible?,
tienesentido?.
SQL>alterrollbacksegmentrp05storage(optimal100k);
Rollbacksegmentaltered.
63. ConsultarelvalordelparmetroOPTIMALdelossegmentosde"rollback"definidosenlabasededatos.
SQL>selecta.segment_name,a.segment_id,b.optsizefrom
dba_rollback_segsa,v$rollstatb
2wherea.segment_id=b.usn
3*orderbya.segment_name
SEGMENT_NAMESEGMENT_IDOPTSIZE
RP0110
RP029512000
RP0311512000
RP0412512000
RP0513102400
RP0614512000
RP0715512000
RP0816512000
RP0917512000
RP1018512000
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
83
AdministracinBsicadeOracle9iPrcticasresueltas
RP1119512000
SEGMENT_NAMESEGMENT_IDOPTSIZE
RP1220512000
RP1321512000
RP1422512000
RP1523512000
RP1624512000
RP1725512000
RP18261048576
RP1927512000
RP2028512000
SYSTEM0
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
84
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA7.
USUARIOS,PERFILES,PRIVILEGIOSYROLES.
7.
Buscarenladocumentacinenlneaelcontenidodelasvistas:
dba_profiles
dba_roles
dba_users
dba_role_privs
dba_tab_privs
dba_sys_privs
SQL>DESCDBA_PROFILES
NombreNulo?Tipo
PROFILENOTNULLVARCHAR2(30)
RESOURCE_NAMENOTNULLVARCHAR2(32)
RESOURCE_TYPEVARCHAR2(8)
LIMITVARCHAR2(40)
SQL>DESCDBA_ROLES
NombreNulo?Tipo
ROLENOTNULLVARCHAR2(30)
PASSWORD_REQUIREDVARCHAR2(8)
SQL>DESCDBA_USERS
NombreNulo?Tipo
USERNAMENOTNULLVARCHAR2(30)
USER_IDNOTNULLNUMBER
PASSWORDVARCHAR2(30)
ACCOUNT_STATUSNOTNULLVARCHAR2(32)
LOCK_DATEDATE
EXPIRY_DATEDATE
DEFAULT_TABLESPACENOTNULLVARCHAR2(30)
TEMPORARY_TABLESPACENOTNULLVARCHAR2(30)
CREATEDNOTNULLDATE
PROFILENOTNULLVARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUPVARCHAR2(30)
EXTERNAL_NAMEVARCHAR2(4000)
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
85
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>DESCDBA_ROLE_PRIVS
NombreNulo?Tipo
GRANTEEVARCHAR2(30)
GRANTED_ROLENOTNULLVARCHAR2(30)
ADMIN_OPTIONVARCHAR2(3)
DEFAULT_ROLEVARCHAR2(3)
SQL>descDBA_TAB_PRIVS
NombreNulo?Tipo
GRANTEENOTNULLVARCHAR2(30)
OWNERNOTNULLVARCHAR2(30)
TABLE_NAMENOTNULLVARCHAR2(30)
GRANTORNOTNULLVARCHAR2(30)
PRIVILEGENOTNULLVARCHAR2(40)
GRANTABLEVARCHAR2(3)
HIERARCHYVARCHAR2(3)
SQL>DESCDBA_SYS_PRIVS
NombreNulo?Tipo
GRANTEENOTNULLVARCHAR2(30)
PRIVILEGENOTNULLVARCHAR2(40)
ADMIN_OPTIONVARCHAR2(3)
8. ConectarsecomousuarioSYSTEMalabaseycrearunusuariollamadoadministradorautentificadoporlabase
dedatos.Indicarcomo"tablespace"pordefectoUSERSycomo"tablespace"temporalTEMP;asignarunacuotade
500Kenel"tablespace"USERS.
SQL>CREATEUSERADMINISTRADORIDENTIFIEDBYADMIN
2DEFAULTTABLESPACEUSERS
3TEMPORARYTABLESPACETEMP
4QUOTA500KONUSERS;
Usercreated.
SQL>
SELECT
USERNAME
USERNAME='ADMINISTRADOR';
FROM
DBA_USERS
WHERE
USERNAME
ADMINISTRADOR
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
86
AdministracinBsicadeOracle9iPrcticasresueltas
9. Abrirunasesinsqlpluseintentarconectarsecomousuarioadministrador,qusucede?,porqu?.
/u01/app/oracle/admin/CURSO01/creacion(CURSO01)>sqlplus
SQL*Plus: Release 9.2.0.1.0 Production on Mon Nov 22 12:50:48
2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Enterusername:administrador
Enterpassword:
ERROR:
ORA01045: user ADMINISTRADOR lacks CREATE SESSION privilege;
logondenied
10. Averiguarquprivilegiosdesistema,rolesyprivilegiossobreobjetostieneconcedidoselusuarioadministrador.
SQL>select*fromdba_role_privswheregrantee='ADMINISTRADOR';
norowsselected
SQL>select*fromdba_tab_privswheregrantee='ADMINISTRADOR';
norowsselected
SQL>select*fromdba_sys_privswheregrantee='ADMINISTRADOR';
norowsselected
11. OtorgarelprivilegioCREATESESSIONalusuarioadministradoreintentardenuevolaconexinsqlplus.
SQL>grantcreatesessiontoadministrador;
Grantsucceeded.
SQL>connectadministrador
Enterpassword:
Connected.
SQL>
12. Conectarsecomousuarioadministradorycrearunusuariollamadoprueba00quetengacomo"tablespace"por
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
87
AdministracinBsicadeOracle9iPrcticasresueltas
defectoUSERSycomo"tablespace"temporalTEMP;asignarunacuotade0Kenel"tablespace"USERS.Es
posiblehacerlo?.
SQL>showuser
USERis"ADMINISTRADOR"
SQL>r
1createuserprueba00identifiedbyprueba00
2defaulttablespaceusers
3temporarytablespacetemp
4*quota0konusers
createuserprueba00identifiedbyprueba00
*
ERRORatline1:
ORA01031:insufficientprivileges
13. ConectadocomousuarioSYSTEM,otorgarelprivilegiocreateuseralusuarioadministradoryrepetirelejercicio
anterior.
/u01/app/oracle/admin/CURSO01(CURSO01)>sqlplus
SQL*Plus: Release 9.2.0.1.0 Production on Mon Nov 22 12:55:31
2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Enterusername:system
Enterpassword:
Connectedto:
Oracle9iEnterpriseEditionRelease9.2.0.1.0Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
SQL>grantcreateusertoadministrador;
Grantsucceeded.
SQL>connectadministrador
Enterpassword:
Connected.
SQL>createuserprueba00identifiedbyprueba00
2defaulttablespaceusers
3temporarytablespacetemp
4*quota0konusers
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
88
AdministracinBsicadeOracle9iPrcticasresueltas
Usercreated.
14. Averiguarqueusuariosdelabasededatostienenasignadoelprivilegiocreateuserdeformadirecta,quvista
debeserconsultada?.
SQL>connectsystem
Introduzcasuclave:
Connected.
SQL>descdba_sys_privs
NombreNulo?Tipo
GRANTEENOTNULLVARCHAR2(30)
PRIVILEGENOTNULLVARCHAR2(40)
ADMIN_OPTIONVARCHAR2(3)
SQL>select*fromdba_sys_privswhereprivilege='CREATEUSER';
GRANTEE
ADM
DBA
YES
ADMINISTRADOR
NO
IMP_FULL_DATABASE
NO
PRIVILEGE
CREATE USER
CREATE USER
CREATE USER
15. Hacerlomismoparaelprivilegiocreatesession.
89
AdministracinBsicadeOracle9iPrcticasresueltas
RECOVERY_CATALOG_OWNER
NO
CREATE SESSION
16. Creardos"tablespace"llamadosNOMINAyACADEMO,quecontendrndatosrelativosalasaplicacionesde
nominaydatosacadmicosdelosempleadosdeunaempresa,segnlassiguientescaractersticas:
ACADEMO
NOMINA
1M
SI
200K
1400K
1M
SI
100K
1500K
Initial
16K
16K
Next
Minextents
Maxextents
16K
1
3
16K
1
3
Localizacin
/u02/oradata/<bd>
/u02/oradata/<bd>
Tamaoinicial
Autoextensible
Extensin
Tamaomximo
Parmetros
almacenamiento
Consultelaayudaenlneasinorecuerdalasintaxisexactadelasentencia.
SQL>createtablespaceacademodatafile
'/u02/oradata/CURSO01/academo01.dbf'size1M
2autoextendonnext200kmaxsize1400K
3defaultstorage(initial16knext16k
4minextents1maxextents3);
Tablespacecreated.
SQL>
create
tablespace
'/u02/oradata/CURSO01/nomina01.dbf'size1M
2autoextendonnext100Kmaxsize1500K
3defaultstorage(initial16knext16k
4minextents1maxextents3);
nomina
datafile
Tablespacecreated.
17. Creardos"tablespace"temporales,manejadosdeformalocal,llamadosTEMP_NOMINAyTEMP_ACADEMOcon
lassiguientescaractersticas:
TEMP_ACADEMO
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
TEMP_NOMINA
90
AdministracinBsicadeOracle9iPrcticasresueltas
Tamaoinicial
Autoextensible
Extensin
Tamaomximo
Localizacin
500K
SI
50K
600K
600K
SI
50K
700K
/u04/oradata/<bd>
/u04/oradata/<bd>
SQL>createtemporarytablespacetemp_academo
2tempfile'/u04/oradata/CURSO01/temp_academo01.dbf'
3size500kautoextendonnext50kmaxsize600k
4extentmanagementlocaluniformsize100k;
Tablespacecreated.
SQL>createtemporarytablespacetemp_nomina
2tempfile'/u04/oradata/CURSO01/temp_nomina01.dbf'
3size600kautoextendonnext50kmaxsize700k
4extentmanagementlocaluniformsize100k;
Tablespacecreated.
18. Estandoconectadocomousuarioadministradorprobaracrearunrolllamadoadministrador,quocurre?.
SQL>connectadministrador
Enterpassword:
Connected.
SQL>createroleadministrador;
createroleadministrador
*
ERRORatline1:
ORA01031:insufficientprivileges
19. IdemestandoconectadocomousuarioSYSTEM,qusucede?,porqu?.
SQL>connectsystem
Enterpassword:
Connected.
SQL>createroleadministrador;
createroleadministrador
*
ERRORatline1:
ORA01921: role name 'ADMINISTRADOR' conflicts with another user
orrolename
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
91
AdministracinBsicadeOracle9iPrcticasresueltas
20. ComprobareneldiccionariodedatoslosusuariosorolesqueposeenelprivilegioCREATEROLE.
SQL>select*fromdba_sys_privswhereprivilege='CREATEROLE';
GRANTEE PRIVILEGE
ADM
SQL>createroleadmin;
Rolecreated.
SQL>grantcreatesessiontoadmin;
Grantsucceeded.
SQL>c.session.user.
1*grantcreateusertoadmin
SQL>r
1*grantcreateusertoadmin
Grantsucceeded.
SQL>c.user.role.
1*grantcreateroletoadmin
SQL>r
1*grantcreateroletoadmin
Grantsucceeded.
SQL>grantadmintoadministrador;
Grantsucceeded.
22. Consultarlosprivilegiosdesistemaquetieneasignadosdeformadirectaelusuarioadministrador,revocarlosy
asignarleelroladmin..
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
92
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>select*fromdba_sys_privswheregrantee='ADMINISTRADOR'
GRANTEE PRIVILEGE
ADM
SQL>createuserprueba01identifiedbyprueba01;
Usercreated.
24. Consultarenlasvistascorrespondienteslos"tablespaces"ylaquotaencadaunodeellosquetienelosusuarios
SYS,SYSTEM,administrador,prueba00yprueba01.Quhaocurridoconelusuarioprueba01?.
SQL>selectsubstr(username,1,15)usuario,DEFAULT_TABLESPACE,
TEMPORARY_TABLESPACE
2fromdba_users
3whereusernamein
('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');
USUARIO
DEFAULT_TABLESPACE
TEMPORARY_TABLESPACE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
93
AdministracinBsicadeOracle9iPrcticasresueltas
PRUEBA01SYSTEMSYSTEM
PRUEBA00USERSTEMP
ADMINISTRADORUSERSTEMP
SYSTEMSYSTEMTEMP
SYSSYSTEMTEMP
SQL> select substr(username,1,15) usuario, tablespace_name,
max_bytes from dba_ts_quotas where username in
('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01')
USUARIOTABLESPACE_NAMEMAX_BYTES
ADMINISTRADORUSERS512000
25. Crearunusuariollamadoprueba02autenticadoporbasededatos,asignandocomo"tablespace"pordefecto
NOMINAycomo"tablespace"temporalTEMP_NOMINA(noseleasignaracuotaenNOMINA).
SQL>createuserprueba02identifiedbyprueba02
2defaulttablespacenomina
3temporarytablespacetemp_nomina;
Usercreated.
26. Asignaralusuarioprueba01los"tablespace"ACADEMOyTEMP_ACADEMOcomo"tablespace"detrabajoy
temporalrespectivamente(sinespecificarcuota).
SQL>alteruserprueba01temporarytablespacetemp_academo;
Useraltered.
SQL>alteruserprueba01defaulttablespaceacademo;
Useraltered.
27. Consultarenlasvistascorrespondienteslos"tablespace"ylacuotaencadaunodeellosquetienelosusuarios
prueba01yprueba02.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
94
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>createroleconexion;
Rolecreated.
SQL>grantcreatesessiontoconexion;
Grantsucceeded.
29. AsignarelrolCONEXINalosusuariosprueba00,prueba01yprueba02.
SQL>grantconexiontoprueba00,prueba01,prueba02;
Grantsucceeded.
30. Comprobarenlavistacorrespondientecualessonlosrolesasignadosalosusuariosprueba00,prueba01y
prueba02.
SQL>select*fromdba_role_privswheregranteein
('PRUEBA00','PRUEBA01','PRUEBA02');
GRANTEEGRANTED_ROLEADM
DEF
PRUEBA00CONEXIONNO
YES
PRUEBA01CONEXIONNO
YES
PRUEBA02CONEXIONNO
YES
31. Conectarsecomousuarioprueba01ycrearlatablasiguienteenel"tablespace"ACADEMO:
CREATETABLECODIGOS
(CODIGOvarchar2(3),
DESCRIPCIONvarchar2(20))
TABLESPACEACADEMO
STORAGE(INITIAL
NEXT
MINEXTENTS5
MAXEXTENTS10);
64K
64K
Esposiblehacerlo?,faltaalgnpermiso?.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
95
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>connectprueba01
Enterpassword:
Connected.
SQL>CREATETABLECODIGOS
2(CODIGOvarchar2(3),
3DESCRIPCIONvarchar2(20))
4TABLESPACEACADEMO
5STORAGE(INITIAL64K
6NEXT64K
7MINEXTENTS5
8*MAXEXTENTS10)
CREATETABLECODIGOS
*
ERRORatline1:
ORA01031:insufficientprivileges
32. CrearunrolllamadoDESARROLLOyasignarlelospermisos"CREATESEQUENCE","CREATESESSION",
"CREATE SYNONYM", "CREATE TABLE" y "CREATE VIEW". Asignar el rol DESARROLLO a los usuarios
prueba00,prueba01yprueba02.
SQL>connectsystem
Enterpassword:
Connected.
SQL>createroledesarrollo;
Rolecreated.
SQL>grantcreatesequence,createsession,createsynonym,create
table,createviewtodesarrollo;
Grantsucceeded.
SQL>grantdesarrollotoprueba00,prueba01,prueba02;
Grantsucceeded.
33. Volverarepetirelejercicio25.Segeneraalgnerror?.
SQL>connectprueba01
Introduzcasuclave:
Connected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
96
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>CREATETABLECODIGOS
2(CODIGOvarchar2(3),
3DESCRIPCIONvarchar2(20))
4TABLESPACEACADEMO
5STORAGE(INITIAL64K
6NEXT64K
7MINEXTENTS5
8*MAXEXTENTS10)
CREATETABLECODIGOS
*
ERRORatline1:
ORA01950:noprivilegesontablespace'ACADEMO'
34. Asignarcuotailimitadaalusuarioprueba01enel"tablespace"ACADEMO.Volverarepetirelejercicio26.
SQL>connectsystem
Enterpassword:
Connected.
SQL>alteruserprueba01quotaunlimitedonacademo;
Useraltered.
SQL>connectprueba01
Enterpassword:
Connected.
SQL>CREATETABLECODIGOS
(CODIGOvarchar2(3),
DESCRIPCIONvarchar2(20))
TABLESPACEACADEMO
STORAGE(INITIAL64K
NEXT64K
MINEXTENTS5
MAXEXTENTS10);
Tablecreated.
35. Asignarcuotailimitadaalusuarioprueba02enel"tablespace"NOMINA.
SQL>connectsystem
Introduzcasuclave:
Connected.
SQL>alteruserprueba02quotaunlimitedonacademo;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
97
AdministracinBsicadeOracle9iPrcticasresueltas
Useraltered.
36. Obtener informacin sobre roles, privilegios de sistema, "tablespace" y cuotas para los usuarios prueba00,
prueba01yprueba02.
SQL>select*fromdba_role_privswheregranteein
('PRUEBA00','PRUEBA01','PRUEBA02');
GRANTEEGRANTED_ROLEADM
DEF
PRUEBA00CONEXIONNO
YES
PRUEBA00DESARROLLONO
YES
PRUEBA01CONEXIONNO
YES
PRUEBA01DESARROLLONO
YES
PRUEBA02CONEXIONNO
YES
PRUEBA02DESARROLLONO
YES
6rowsselected.
SQL>select*fromdba_sys_privswheregranteein
('PRUEBA00','PRUEBA01','PRUEBA02')
2;
norowsselected
SQL>selectUSERNAME,TABLESPACE_NAME,BYTESfrom
dba_ts_quotaswhereusernamein
('PRUEBA00','PRUEBA01','PRUEBA02');
USERNAMETABLESPACE_NAME
BYTES
PRUEBA02ACADEMO
0
PRUEBA01ACADEMO
327680
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
98
AdministracinBsicadeOracle9iPrcticasresueltas
37. Asignarcuotaceroenel"tablespace"pordefectoparaelusuarioprueba01,siguenestandosusobjetos?,es
posiblecrearalgnotro?(probadacrearuntabla).
SQL>alteruserprueba01quota0konacademo;
Useraltered.
SQL>selectowner,table_namefromdba_tableswhere
owner='PRUEBA01';
OWNERTABLE_NAME
PRUEBA01CODIGOS
SQL>connectprueba01
Enterpassword:
Connected.
SQL>CREATETABLECODIGOS2(CODIGOvarchar2(3),
DESCRIPCIONvarchar2(20))
TABLESPACEACADEMO
STORAGE(INITIAL64K
NEXT64K
MINEXTENTS5
MAXEXTENTS10);
CREATETABLECODIGOS2(CODIGOvarchar2(3),
*
ERRORatline1:
ORA01536:spacequotaexceededfortablespace'ACADEMO'
38. Conectarsecomousuarioprueba01eintentarmodificarsucuotaenel"tablespace"ACADEMO,esposible?.
SQL>connectprueba01
Introduzcasuclave:
Connected.
SQL>alteruserprueba01quotaunlimitedonacademo;
alteruserprueba01quotaunlimitedonacademo
*
ERRORatline1:
ORA01031:insufficientprivileges
39. Conectarsecomousuarioprueba01ymodificarsuclave,esposible?.
SQL>alteruserprueba01identifiedbyprobando01;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
99
AdministracinBsicadeOracle9iPrcticasresueltas
Useraltered.
40. AveriguarqueusuariosorolesdebasededatostienenasignadoelprivilegioALTERUSER.
SQL>connectsystem
Introduzcasuclave:
Conectado.
SQL>select*fromdba_sys_privswhereprivilege='ALTERUSER';
GRANTEEPRIVILEGE
ADM
DBAALTERUSER
YES
41. Abrirunasesinconelusuarioadministradoryotraconelusuarioprueba02.Siendoelusuarioadministrador,
intentarborrarelusuarioprueba02.
SQL>showuser
USERes"SYSTEM"
SQL>dropuserprueba02;
dropuserprueba02
*
ERRORenlnea1:
ORA01940:nosepuedeborrarunusuarioconectadoactualmente
42. AsignarelpermisoDROPUSERalrolADMIN.
SQL>grantdropusertoadmin;
Grantsucceeded.
43. AveriguarqueusuariosorolesdebasededatostienenasignadoelprivilegioDROPUSER.
SQL>select*fromdba_sys_privswhereprivilege='DROPUSER';
GRANTEEPRIVILEGE
ADM
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
100
AdministracinBsicadeOracle9iPrcticasresueltas
ADMINDROPUSER
NO
DBADROPUSER
YES
IMP_FULL_DATABASEDROPUSER
NO
44. Conectadocomousuario"administrador",crearelusuarioprueba03autentificadoporbasededatosyasignando
cuotasenel"tablespace"ACADEMO(500K)yNOMINA(200K).Su"tablespace"temporalserTEMP.
SQL>connectadministrador
Enterpassword:
Connected.
SQL>createuserprueba03identifiedbyprueba03
defaulttablespaceacademo
temporarytablespacetemp
quota500konacademo
quota200konnomina
Usercreated.
45. Comprobarenelficherodeinicializacinsiestactivadoelmododelimitacinderecursos.
Editarconeleditorvi,porejemplo,elficherode
inicializacion.
46. AveriguarqueusuariosdebasededatosoquerolestienenasignadoelprivilegioCREATEPROFILE.
SQL>connectsystem
Enterpassword:
Connected.
SQL>select*fromdba_sys_privswhereprivilege='CREATEPROFILE';
GRANTEEPRIVILEGE
ADM
DBACREATEPROFILE
YES
IMP_FULL_DATABASECREATEPROFILE
NO
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
101
AdministracinBsicadeOracle9iPrcticasresueltas
47. AsignarelpermisoCREATEPROFILEalrolADMIN.
SQL>grantcreateprofiletoadmin;
Grantsucceeded.
48. Averiguarqueperfilesestndefinidosenlabasededatosyquelmitesderecursosfijacadaunodeellos.
SQL>r
1selectsubstr(profile,1,12)perfil,
substr(resource_name,1,25)recurso,resource_type,
2substr(limit,1,10)limitefromdba_profiles
3*orderbyprofile,resource_name
PERFILRECURSORESOURCELIMITE
DEFAULTCOMPOSITE_LIMITKERNELUNLIMITED
DEFAULTCONNECT_TIMEKERNELUNLIMITED
DEFAULTCPU_PER_CALLKERNELUNLIMITED
DEFAULTCPU_PER_SESSIONKERNELUNLIMITED
DEFAULTFAILED_LOGIN_ATTEMPTSPASSWORDUNLIMITED
DEFAULTIDLE_TIMEKERNELUNLIMITED
DEFAULTLOGICAL_READS_PER_CALLKERNELUNLIMITED
DEFAULTLOGICAL_READS_PER_SESSIONKERNELUNLIMITED
DEFAULTPASSWORD_GRACE_TIMEPASSWORDUNLIMITED
DEFAULTPASSWORD_LIFE_TIMEPASSWORDUNLIMITED
DEFAULTPASSWORD_LOCK_TIMEPASSWORDUNLIMITED
PERFILRECURSORESOURCELIMITE
DEFAULTPASSWORD_REUSE_MAXPASSWORDUNLIMITED
DEFAULTPASSWORD_REUSE_TIMEPASSWORDUNLIMITED
DEFAULTPASSWORD_VERIFY_FUNCTIONPASSWORDNULL
DEFAULTPRIVATE_SGAKERNELUNLIMITED
DEFAULTSESSIONS_PER_USERKERNELUNLIMITED
16rowsselected.
49. Consultarqueperfilestieneasignadoscadausuariodelabasededatos.
SQL>selectusername,profilefromdba_usersorderbyusername;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
102
AdministracinBsicadeOracle9iPrcticasresueltas
USERNAMEPROFILE
ADMINISTRADORDEFAULT
DBSNMPDEFAULT
OUTLNDEFAULT
PRUEBA00DEFAULT
PRUEBA01DEFAULT
PRUEBA03DEFAULT
SCOTTDEFAULT
SYSDEFAULT
SYSTEMDEFAULT
9rowsselected.
50. CrearunperfilllamadoDESARROLLOconlassiguientesespecificaciones:
Sessions_per_user
Cpu_per_session
Cpu_per_call
Connect_time
Idle_time
Failed_login_attempts
Password_life_time
2
unlimited
6000
480
2
2
120
SQL>r
1createprofiledesarrollo
2limit
3sessions_per_user2
4cpu_per_sessionunlimited
5cpu_per_call6000
6connect_time480
7idle_time2
8failed_login_attempts2
9*password_life_time120
Profilecreated.
51. Asignarelperfilanterioralosusuariosprueba00,prueba01,prueba02yprueba03.
SQL>alteruserprueba00profiledesarrollo;
Useraltered.
SQL>c.00.01
1*alteruserprueba01profiledesarrollo
SQL>r
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
103
AdministracinBsicadeOracle9iPrcticasresueltas
1*alteruserprueba01profiledesarrollo
Useraltered.
SQL>c.01.02
1*alteruserprueba02profiledesarrollo
SQL>r
1*alteruserprueba02profiledesarrollo
Useraltered.
SQL>c.02.03
1*alteruserprueba03profiledesarrollo
SQL>r
1*alteruserprueba03profiledesarrollo
Useraltered.
52. Intentarlaconexindosvecescomousuarioprueba01fallandolacontrasea,qusucede?.Comprobarsila
cuentahasidobloqueadaenlavistadebasededatoscorrespondiente.
SQL>connectprueba01
Enterpassword:
ERROR:
ORA01017:invalidusername/password;logondenied
Warning:YouarenolongerconnectedtoORACLE.
...
SQL>connectprueba01
Enterpassword:
ERROR:
ORA28000:theaccountislocked
SQL>selectusername,lock_datefromdba_userswhereusername
like'PRUEBA%';
USERNAMELOCK_DATE
PRUEBA03
PRUEBA00
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
104
AdministracinBsicadeOracle9iPrcticasresueltas
PRUEBA0122NOV04
53. Crearunusuarioprueba04conelparmetropasswordexpire,sus"tablespace"pordefectoytemporalsern
USERS(cuota0k)yTEMP.AsignarlosrolesCONEXINyDESARROLLO.Conectarsecomousuarioprueba04,
qusucede?.
SQL>createuserprueba04identifiedbyprueba04
2defaulttablespaceusers
3temporarytablespacetemp
4quota0konusers
5*passwordexpire
Usercreated.
SQL>grantconexion,desarrollotoprueba04;
Grantsucceeded.
SQL>connectprueba04
Enterpassword:
ERROR:
ORA28001:thepasswordhasexpired
Changingpasswordforprueba04
Newpassword:
Retypenewpassword:
Passwordchanged
Connected.
54. Bloquearlacuentadelusuarioprueba04,qusucedealconectarsedenuevo?.
SQL>connectsystem
Enterpassword:
Connected.
SQL>alteruserprueba04accountlock;
Useraltered.
SQL>connectprueba04
Enterpassword:
ERROR:
ORA28000:theaccountislocked
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
105
AdministracinBsicadeOracle9iPrcticasresueltas
Warning:YouarenolongerconnectedtoORACLE.
55. Modificar el "tablespace" por defecto y el temporal del usuario prueba01 de forma que sean NOMINA y
TEMP_NOMINA.
SQL>connectsystem
Enterpassword:
Connected.
SQL>alteruserprueba04defaulttablespacenomina;
Useraltered.
SQL>alteruserprueba04temporarytablespacetemp_nomina;
Useraltered.
56. ComprobarcualeselvalordelparmetroOS_AUTHENT_PREFIXenlabasededatos.
SQL>alteruserprueba01identifiedexternally;
Useraltered.
SQL>setheadoff
SQL>select*fromdba_userswhereusername='PRUEBA01'
PRUEBA0126EXTERNAL
LOCKED(TIMED)22NOV0422MAR05
ACADEMO TEMP_ACADEMO
22NOV04
DESARROLLODEFAULT_CONSUMER_GROUP
58. ModificarelparmetroOS_AUTHENT_PREFIXdeformaque,enadelante,lacadenaqueidentifiqueaunusuario
externosea(cadenavaca).
106
AdministracinBsicadeOracle9iPrcticasresueltas
os_authent_prefix=""
59. Desbloquearlacuentadelusuarioprueba04.
SQL>alteruserprueba03accountunlock;
60. ModificarlosvaloresdelperfilDEFAULTsegnseindicaenlasiguientetabla:
Sessions_per_user
Cpu_per_session
Cpu_per_call
Connect_time
Idle_time
Failed_login_attempts
Password_life_time
5
unlimited
6000
480
60
3
180
SQL>alterprofiledefault
2limit
3sessions_per_user5
4cpu_per_sessionunlimited
5cpu_per_call6000
6connect_time480
7idle_time60
8failed_login_attempts3
9password_life_time180;
Profilealtered.
61. AveriguarqueusuariosorolestienenasignadoelprivilegioALTERPROFILE.
107
AdministracinBsicadeOracle9iPrcticasresueltas
62. AsignarelprivilegioanterioralrolADMIN..
SQL>grantalterprofiletoadmin;
Grantsucceeded.
63. ComprobarlosvaloresasignadosalperfilDESARROLLO.ModificarelperfilDESARROLLO,desdeelusuario
administrador,segnlasiguientetabla:
Sessions_per_user
Connect_time
Idle_time
5
DEFAULT
30
Quhasucedidoconelrestodelosparmetros?.CoincideelvalordeConnect_timeenesteperfilconel
quetieneenelperfilDEFAULT?.
DESARROLLOCOMPOSITE_LIMITDEFAULT
DESARROLLOSESSIONS_PER_USER2
DESARROLLO CPU_PER_SESSION
UNLIMITED
DESARROLLOCPU_PER_CALL6000
DESARROLLOLOGICAL_READS_PER_SESSIONDEFAULT
DESARROLLOLOGICAL_READS_PER_CALLDEFAULT
DESARROLLOIDLE_TIME2
DESARROLLOCONNECT_TIME480
DESARROLLOPRIVATE_SGADEFAULT
DESARROLLOFAILED_LOGIN_ATTEMPTS2
DESARROLLOPASSWORD_LIFE_TIME120
PROFILENOMBRE_RECURSOLIMITE
DESARROLLOPASSWORD_REUSE_TIMEDEFAULT
DESARROLLOPASSWORD_REUSE_MAXDEFAULT
DESARROLLOPASSWORD_VERIFY_FUNCTIONDEFAULT
DESARROLLOPASSWORD_LOCK_TIMEDEFAULT
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
108
AdministracinBsicadeOracle9iPrcticasresueltas
DESARROLLOPASSWORD_GRACE_TIMEDEFAULT
16rowsselected.
SQL>alterprofiledesarrollo
2limitSESSIONS_PER_USER5
3connect_timedefault
4idle_time30;
Profilealtered.
64. Averiguarlosprivilegiosdesistemaysobreobjetos,ascomolosroles,quetieneasignadoslosrolespordefecto
CONNECT,RESOURCE,DBA,EXP_FULL_DATABASEeIMP_FULL_DATABASE.
ConsideraunabuenapolticadeseguridadasignarelrolCONNECTatodoslosusuariosqueprecisan
conectarsealabasededatos?.
DBA DELETE_CATALOG_ROLE
YESYES
DBA EXECUTE_CATALOG_ROLE
YESYES
DBAEXP_FULL_DATABASENO
YES
DBAGATHER_SYSTEM_STATISTICSNO
YES
DBAIMP_FULL_DATABASENO
YES
DBA SELECT_CATALOG_ROLE
YESYES
EXP_FULL_DATABASEEXECUTE_CATALOG_ROLENO
YES
EXP_FULL_DATABASESELECT_CATALOG_ROLENO
YES
IMP_FULL_DATABASEEXECUTE_CATALOG_ROLENO
YES
IMP_FULL_DATABASESELECT_CATALOG_ROLENO
YES
10rowsselected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
109
AdministracinBsicadeOracle9iPrcticasresueltas
No.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
110
AdministracinBsicadeOracle9iPrcticasresueltas
66. AveriguarqueusuariosorolesdelabasededatostienenasignadoelprivilegioDROPPROFILE.
SQL>select*fromdba_sys_privswhereprivilege='DROPPROFILE';
GRANTEEPRIVILEGEADM
DBADROPPROFILEYES
IMP_FULL_DATABASEDROPPROFILENO
67. AsignarelprivilegioDROPPROFILEalrolADMIN..
SQL>grantdropprofiletoadmin;
Grantsucceeded.
68. ConectarsecomousuarioadministradoreintentareliminarelperfilDEFAULT,quocurre?.
SQL>connectadministrador
Enterpassword:
Connected.
SQL>dropprofiledefault;
dropprofiledefault
*
ERRORatline1:
ORA00931:missingidentifier
SQL>dropprofiledefaultcascade;
dropprofiledefaultcascade
*
ERRORatline1:
ORA00931:missingidentifier
69. ComousuarioadministradorcrearelrolSECRETOidentificadoporlacontraseatotalyasignarloalusuario
prueba04.
SQL>connectadministrador
Enterpassword:
Connected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
111
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>createrolesecretoidentifiedbytotal;
Rolecreated.
SQL>grantsecretotoprueba04;
Grantsucceeded.
70. AveriguarqueusuariosposeenelprivilegioALTERANYROLE(deformadirectaoatravsderoles).
SQL>showparametersmax_enabled_roles
max_enabled_rolesinteger30
72. AveriguarqueusuariosposeenelprivilegioGRANTANYROLE(deformadirectaoatravsderoles).
73. Comousuarioadministrador,deasignarelrolSECRETOalusuarioprueba04.
SQL>revokesecretofromprueba04;
Revokesucceeded.
74. AsignarelprivilegioGRANTANYROLEalrolADMIN..
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
112
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>connectsystem
Enterpassword:
Connected.
SQL>grantgrantanyroletoadmin;
Grantsucceeded.
75. Repetirelejercicio66.
SQL>connectsystem
Enterpassword:
Connected.
SQL>grantconexiontoprueba03;
Grantsucceeded.
SQL>grantsecretotoprueba03;
Grantsucceeded.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
113
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>connectprueba03
Enterpassword:
Connected.
SQL>droprolesecreto;
droprolesecreto
*
ERRORatline1:
ORA01031:insufficientprivileges
78. Encasodequenolotengaasignado,asignarelrolCONEXIONyelrolDESARROLLOalusuarioprueba04.
HacerquesoloelrolCONEXINesteactivocuandoseconecte.
SQL>select*fromdba_role_privswheregrantee='PRUEBA04';
GRANTEEGRANTED_ROLEADM
DEF
PRUEBA04CONEXIONNO
YES
PRUEBA04DESARROLLONO
YES
SQL>alteruserprueba04defaultroleconexion;
Useraltered.
79. Comprobarenlavistaapropiadadeldiccionariodedatoslosrolesactivosenlasesin.
SQL>select*fromdba_role_privswheregrantee='PRUEBA04';
GRANTEEGRANTED_ROLEADM
DEF
PRUEBA04CONEXIONNO
YES
PRUEBA04DESARROLLONO
NO
80. Conectadocomousuarioprueba04,activarelrolDESARROLLOycomprobardenuevoenlavistaapropiadadel
diccionariodedatoslosrolesactivosenlasesin.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
114
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>connectprueba04
Enterpassword:
Connected.
SQL>select*fromsession_roles;
ROLE
CONEXION
SQL>setroleall;
Roleset.
SQL>select*fromsession_roles;
ROLE
CONEXION
DESARROLLO
81. Asignarelrol"CONNECT"alusuario"ADMIN".Esprecisoasignarlelospermisos"CREATEPROCEDURE",
"CREATEPUBLICSYNONYM","CREATEROLE","CREATETRIGGER"?,Lostieneyaasignados?.
SQL>grantconnecttoadmin;
Grantsucceeded.
SQL>select*fromdba_sys_privswheregrantee='CONNECT';
GRANTEE PRIVILEGE
ADM
115
AdministracinBsicadeOracle9iPrcticasresueltas
CONNECT CREATE DATABASE LINK
NO
8rowsselected.
82. ConectarsecomousuarioSYSTEMyotorgaralusuario"prueba02"elpermisoparaseleccionardatosdelatabla
cdigos(pertenecealusuario"prueba01").Qusucede?,porqu?.
SQL>showuser
USERes"SYSTEM"
SQL>grantselectonprueba01.codigostoprueba02;
grantselectonprueba01.codigostoprueba02
*
ERRORenlnea1:
ORA01031:privilegiosinsuficientes
83. Conectarsecomousuario"prueba01"yotorgaralusuario"prueba02"elpermisoparaseleccionardatosdelatabla
cdigos;hacerlodeformaque"prueba02"tambinpuedaotorgarelpermisoaotrosusuarios(opcinADMIN).
SQL>connectprueba01
Introduzcasuclave:
Connected.
SQL> grant select on prueba01.codigos to prueba02 with grant
option;
Grantsucceeded.
84. Conectarsecomousuario"prueba02"yotorgaralusuario"prueba03"elpermisoparaseleccionardatosdelatabla
cdigos.
SQL>connectprueba02
Enterpassword:
Connected.
SQL>grantselectonprueba01.codigostoprueba03;
Grantsucceeded.
SQL>connectprueba03
Enterpassword:
Connected.
SQL>select*fromprueba01.codigos;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
116
AdministracinBsicadeOracle9iPrcticasresueltas
norowsselected
85. Conectarsecomousuario"prueba01"yrevocaralusuario"prueba02"elpermisoparaseleccionardatosdelatabla
cdigos.
SQL>connectprueba01
Enterpassword:
Connected.
SQL>revokeselectonprueba01.codigosfromprueba02;
Revokesucceeded.
86. Conectarsecomousuario"prueba03"eintentarconsultarlatablacdigos.Quocurre?,porqu?.
SQL>connectprueba03
Enterpassword:
Connected.
SQL>select*fromprueba01.codigos;
select*fromprueba01.codigos
*
ERRORatline1:
ORA00942:tableorviewdoesnotexist
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
117
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA8.
TRABAJOS(JOBS).
87. Identificarlosprocesosdesistemaoperativoquecorrespondenalprocesogestordecolascorriendoenlainstancia.
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>psef|grepcj
oracle203211014:27?00:00:00ora_cjq0_CURSO01
oracle2052519652015:13pts/17200:00:00grepcj
88. Comprobarelvalordelparmetrojob_queue_procesesenelficherodeinicializacin.
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>grepjobinitCURSO01.ora
job_queue_processes=10
89. Eliminarelprocesodesistemaoperativogestordecolasmediantelaordenkill.Qusucede?,haafectadoala
instancia?,sehageneradoalgnerrorenelficherodealertas?,yalgunatraza?.
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>psef|grepCURSO01
oracle203091014:27?00:00:00ora_pmon_CURSO01
oracle203111014:27?00:00:00ora_dbw0_CURSO01
oracle203131014:27?00:00:00ora_lgwr_CURSO01
oracle203151014:27?00:00:00ora_ckpt_CURSO01
oracle203171014:27?00:00:00ora_smon_CURSO01
oracle203191014:27?00:00:00ora_reco_CURSO01
oracle205421015:16?00:00:00ora_cjq0_CURSO01
oracle2054619652015:17pts/17200:00:00grepCURSO01
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>kill920542
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>psef|grepCURSO01
oracle203091014:27?00:00:00ora_pmon_CURSO01
oracle203111014:27?00:00:00ora_dbw0_CURSO01
oracle203131014:27?00:00:00ora_lgwr_CURSO01
oracle203151014:27?00:00:00ora_ckpt_CURSO01
oracle203171014:27?00:00:00ora_smon_CURSO01
oracle203191014:27?00:00:00ora_reco_CURSO01
oracle2054819652015:17pts/17200:00:00grepCURSO01
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>psef|grepCURSO01
oracle203091014:27?00:00:00ora_pmon_CURSO01
oracle203111014:27?00:00:00ora_dbw0_CURSO01
oracle203131014:27?00:00:00ora_lgwr_CURSO01
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
118
AdministracinBsicadeOracle9iPrcticasresueltas
oracle203151014:27?00:00:00ora_ckpt_CURSO01
oracle203171014:27?00:00:00ora_smon_CURSO01
oracle203191014:27?00:00:00ora_reco_CURSO01
oracle205561015:21?00:00:00ora_cjq0_CURSO01
oracle2055819652015:21pts/17200:00:00grepCURSO01
Enelficherodealertasapareceelmensaje:
MonNov2215:13:312004
RestartingdeadbackgroundprocessCJQ0
CJQ0startedwithpid=8
MonNov2215:18:312004
RestartingdeadbackgroundprocessCJQ0
CJQ0startedwithpid=8
90. Fijar el parmetro job_queue_proceses en 1020 procesos. Parar y arrancar la base de datos. Arranca con
normalidad?,quvalortomaelparmetro?.
/u01/app/oracle/admin/CURSO01/pfile(CURSO01)>sqlplus/nolog
SQL*Plus:Release9.2.0.1.0ProductiononMonNov2215:24:092004
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>connect/assysdba;
Connected.
SQL>shutdownimmediate
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SQL>startup
ORA01078:failureinprocessingsystemparameters
LRM00122:value'1020'for'job_queue_processes'mustbebetween'0'and'1000'
91. Verelcontenidodelpaquetedbms_job.
Revisardocumentacionenlinea.
92. Verladescripcindelasvistasdba_jobs,user_jobsydba_jobs_running.Buscarladescripcindecadaunodelos
camposenladocumentacinenlnea.
SQL>descdba_jobs
NameNull?Type
JOBNOTNULLNUMBER
LOG_USERNOTNULLVARCHAR2(30)
PRIV_USERNOTNULLVARCHAR2(30)
SCHEMA_USERNOTNULLVARCHAR2(30)
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
119
AdministracinBsicadeOracle9iPrcticasresueltas
LAST_DATEDATE
LAST_SECVARCHAR2(8)
THIS_DATEDATE
THIS_SECVARCHAR2(8)
NEXT_DATENOTNULLDATE
NEXT_SECVARCHAR2(8)
TOTAL_TIMENUMBER
BROKENVARCHAR2(1)
INTERVALNOTNULLVARCHAR2(200)
FAILURESNUMBER
WHATVARCHAR2(4000)
NLS_ENVVARCHAR2(4000)
MISC_ENVRAW(32)
INSTANCENUMBER
SQL>descuser_jobs
NameNull?Type
JOBNOTNULLNUMBER
LOG_USERNOTNULLVARCHAR2(30)
PRIV_USERNOTNULLVARCHAR2(30)
SCHEMA_USERNOTNULLVARCHAR2(30)
LAST_DATEDATE
LAST_SECVARCHAR2(8)
THIS_DATEDATE
THIS_SECVARCHAR2(8)
NEXT_DATENOTNULLDATE
NEXT_SECVARCHAR2(8)
TOTAL_TIMENUMBER
BROKENVARCHAR2(1)
INTERVALNOTNULLVARCHAR2(200)
FAILURESNUMBER
WHATVARCHAR2(4000)
NLS_ENVVARCHAR2(4000)
MISC_ENVRAW(32)
INSTANCENUMBER
SQL>descdba_jobs_running
NameNull?Type
SIDNUMBER
JOBNUMBER
FAILURESNUMBER
LAST_DATEDATE
LAST_SECVARCHAR2(8)
THIS_DATEDATE
THIS_SECVARCHAR2(8)
INSTANCENUMBER
93. ComousuarioSYSTEMcrearuntrabajoquellamaraalprocedimientodescritoseguidamente,tambinpropiedad
delSYSTEM,quepermiteanalizarelesquemadeunciertonumerodeusuariosygenerarlasestadsticasinternas
usadasporelanalizadorsintcticodeOracle.
Seejecutaraenelmomentodesucreacinyconperiodicidadsemanal.
createtableusuarios_estadisticas(usernamevarchar2(30)notnull,
fechadate,
errorvarchar2(80))
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
120
AdministracinBsicadeOracle9iPrcticasresueltas
tablespaceusers
storage(initial16Knext16Kmaxextents10)
CREATEORREPLACEprocedureanaliza_usuariosas
cursorusuariosis
selectusername,rowidfromsystem.usuarios_estadisticas;
werrorvarchar2(80);
wrowidurowid;
begin
FORrec_usuariosINusuariosLOOP
wrowid:=rec_usuarios.rowid;
begin
DBMS_UTILITY.ANALYZE_SCHEMA(rec_usuarios.username,'ESTIMATE',NULL,33)
;
updatesystem.usuarios_estadisticas
setfecha=sysdate,error=null
whererowid=rec_usuarios.rowid;
exception
whenothersthen
werror:=rpad(sqlerrm,80);
updatesystem.usuarios_estadisticas
seterror=werror,fecha=sysdate
whererowid=wrowid;
end;
ENDLOOP;
endanaliza_usuarios;
/
Crearun"script"llamadocrea_trabajo1.sql,porejemplo,con
elcontenidosiguiente:
DECLARE
v_numjobinteger;
begin
dbms_job.submit(v_numjob,'SYSTEM.ANALIZA_USUARIOS;',SYSDATE,
'SYSDATE+7');
commit;
DBMS_OUTPUT.PUT_LINE('Identificadordetrabajoes:'||v_numjob);
end;
/
Ejecutarlodesdesqlplus:
SQL>@crea_trabajo1.sql
ProcedimientoPL/SQLterminadocorrectamente.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
121
AdministracinBsicadeOracle9iPrcticasresueltas
94. Fijarelnumerodeprocesosdeejecuciondetrabajosenceroyforzarlaejecucindeltrabajo,segeneraalgn
error?.Havariadoelintervalodeejecucin?,qudadelasemanaseejecutarasisefuerzadenuevosu
ejecucinmaana?.
SQL>altersystemsetjob_queue_processes=0;
Systemaltered.
SQL>selectjob,to_char(last_date,'ddmmyyyyhh24:mi:ss'),
to_char(next_date,'ddmmyyyyhh24:mi:ss'),substr(interval,1,25)
fromdba_jobs;
JOBTO_CHAR(LAST_DATE,'TO_CHAR(NEXT_DATE,'
SUBSTR(INTERVAL,1,25)
22211200415:31:182911200415:31:18SYSDATE+7
SQL>execdbms_job.run(2);
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(last_date,'ddmmyyyyhh24:mi:ss'),
to_char(next_date,'ddmmyyyyhh24:mi:ss'),substr(interval,1,25)
fromdba_jobs;
JOBTO_CHAR(LAST_DATE,'TO_CHAR(NEXT_DATE,'
SUBSTR(INTERVAL,1,25)
22211200415:37:112911200415:37:11SYSDATE+7
9. Observar,encasodequesehayaproducido,elerrorgeneradoenelejercicioanteriorenelficherodealertasy
comprobarsisehacreadoalgnficherodetraza;encasodeexistiresteultimo,editarloconeleditorviyversu
contenido.
10. Comousuarioprueba01crearuntrabajoquellamaraalprocedimientodescritoseguidamente,tambinpropiedad
deprueba01,quepermiteaveriguaracualesdelastablaspropiedaddelusuariotienenocupadomasdel80%de
lasextensionesquelesonpermitidas.Insertaraunafilaenlatablatablas_revisionporcadaunadelastablasque
cumplanlacondicin.
Seejecutaracadahora.
Previamentedebecrearselasiguientetabla:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
122
AdministracinBsicadeOracle9iPrcticasresueltas
CREATETABLEtablas_revision
(nombre_tablavarchar2(30),
ocupacionnumber)
storage(initial100knext100k);
Enqueespaciodealmacenamientosehacreadolatabla?,conqueparmetrosdealmacenamiento?.
CREATEORREPLACEprocedurechequear_tablasas
extensionesinteger;
maximo_extensionesinteger;
ocupacioninteger;
porcentaje_extensionesinteger:=80;
cursorc_tablasisselecttable_namefromuser_tables;
begin
FORrec_tablesINc_tablasLOOP
selectcount(*)intoextensiones
fromuser_extents
wheresegment_name=rec_tables.table_name;
selectmax_extentsintomaximo_extensiones
fromuser_tables
wheretable_name=rec_tables.table_name;
ocupacion:=(round(extensiones*100/maximo_extensiones));
IF(ocupacion>porcentaje_extensiones)THEN
insertintotablas_revisionvalues(rec_tables.table_name,ocupacion);
commit;
ENDIF;
ENDLOOP;
endchequear_tablas;
/
SQL>connectprueba01
Introduzcasuclave:
Connected.
SQL>CREATETABLEtablas_revision
2(nombre_tablavarchar2(30),
3ocupacionnumber)
4storage(initial100knext100k);
Tablecreated.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
123
AdministracinBsicadeOracle9iPrcticasresueltas
Paraverlascaracteristicasdealmacenamientodelatabla
consultarlavista"user_tables".
Crearun"script"llamadochequear_tablas.sql,porejemplo,que
contengalassentenciasdecreaciondelprocedimiento:
SQL>@chequear_tablas.sql
Procedurecreated.
Crearun"script"llmadocrea_trabajo2.sql,porejemplo,conel
contenidosiguiente:
DECLARE
v_numjobinteger;
begin
dbms_job.submit(v_numjob,'PRUEBA01.CHEQUEAR_TABLAS;',SYSDATE,
'SYSDATE+60/1440');
commit;
DBMS_OUTPUT.PUT_LINE('Identificadordetrabajoes:'||v_numjob);
end;
/
SQL>@crea_trabajo2.sql
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(last_date,'ddmmyyyyhh24:mi:ss'),
to_char(next_date,'ddmmyyyyhh24:mi:ss'),substr(interval,1,25)
fromuser_jobs
JOBTO_CHAR(LAST_DATE,'TO_CHAR(NEXT_DATE,'
SUBSTR(INTERVAL,1,25)
32311200413:13:42SYSDATE+
60/1440
11. ComousuarioSYSTEMcrearuntrabajoquellamaraalprocedimientodescritoseguidamente,tambinpropiedaddel
SYSTEM,quepermitemonitorizarelnumerodesesionesactivasdeusuarioenlainstancia.Seejecutaracadacinco
minutos.
CREATEORREPLACEproceduremonitorizar_usuariosas
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
124
AdministracinBsicadeOracle9iPrcticasresueltas
sesionesnumber(4);
activasnumber(4);
cursorc_usuariosis
selectusuario
fromusuarios_monitorizados
wheremonitorizar='S';
begin
FORrec_usuariosINc_usuariosLOOP
selectnvl(count(*),0)intosesiones
fromv$session
whereusername=rec_usuarios.usuario
andstatusin('ACTIVE','INACTIVE');
selectnvl(count(*),0)intoactivas
fromv$session
whereusername=rec_usuarios.usuario
andstatus='ACTIVE';
insertintousuarios_monitorizados_log
values(rec_usuarios.usuario,sysdate,sesiones,activas);
ENDLOOP;
commit;
endmonitorizar_usuarios;
/
Previamentedebencrearselassiguientestablas:
CREATETABLEusuarios_monitorizados_log
(usuariovarchar2(30),
fecha_logdate,
sesionesnumber(4),
activasnumber(4))
storage(initial100knext100k);
CREATETABLEusuarios_monitorizados
(usuariovarchar2(30),
monitorizarchar(1),
descripcionvarchar2(80))
storage(initial100knext100k);
SQL>CREATETABLEusuarios_monitorizados_log
(usuariovarchar2(30),
fecha_logdate,
sesionesnumber(4),
activasnumber(4))
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
125
AdministracinBsicadeOracle9iPrcticasresueltas
storage(initial100knext100k);
Tablecreated.
SQL>CREATETABLEusuarios_monitorizados
(usuariovarchar2(30),
monitorizarchar(1),
descripcionvarchar2(80))
storage(initial100knext100k);
Tablecreated.
ConectarsecomousuarioSYSydarpermisossobrevistaSESSION:
SQL>connectsysassysdba;
Enterpassword:
Connected.
SQL>showuser
USERis"SYS"
SQL>grantselectonV_$SESSIONtosystem;
Grantsucceeded.
Crearun"script"llamadomonitorizar_usuarios.sql,porejemplo,
quecontengalassentenciasdecreaciondelprocedimiento:
SQL>@monitorizar_usuarios.sql
Procedurecreated.
Crearun"script"llmadocrea_trabajo3.sql,porejemplo,conel
contenidosiguiente:
DECLARE
v_numjobinteger;
begin
dbms_job.submit(v_numjob,'SYSTEM.MONITORIZAR_USUARIOS;',SYSDATE,
'SYSDATE+5/1440');
commit;
DBMS_OUTPUT.PUT_LINE('Identificadordetrabajoes:'||v_numjob);
end;
/
SQL>@crea_trabajo3.sql
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
126
AdministracinBsicadeOracle9iPrcticasresueltas
PL/SQLproceduresuccessfullycompleted.
12. ConsultartodoslostrabajosdefinidosparaelusuarioSYSTEM,obteniendoelnumerodetrabajo,fechadela
prximaejecucin,intervalo,numerodefallosproducidos,estado(brokenono)ysudefinicin.
WHAT
12511200411:41:19SYSDATE+7
0N
SYSTEM.ANALIZA_USUARIOS;
22911200415:37:11SYSDATE+7
0N
SYSTEM.ANALIZA_USUARIOS;
42311200413:26:43SYSDATE+5/1440
N
SYSTEM.MONITORIZAR_USUARIOS;
13. Repetirelejercicioanteriorparaelusuarioprueba01.
WHAT
32311200413:13:42SYSDATE+60/1440
N
PRUEBA01.CHEQUEAR_TABLAS;
14. Conectarsecomousuarioprueba01eintentareliminardela coladetrabajos aaqueltrabajoquerealizala
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
127
AdministracinBsicadeOracle9iPrcticasresueltas
monitorizacindeusuarios,qusucede?.
SQL>connectprueba01
Introduzcasuclave:
Connected.
SQL>execdbms_job.remove(4);
BEGINdbms_job.remove(4);END;
*
ERRORatline1:
ORA23421:jobnumber4isnotajobinthejobqueue
ORA06512:at"SYS.DBMS_SYS_ERROR",line86
ORA06512:at"SYS.DBMS_IJOB",line529
ORA06512:at"SYS.DBMS_JOB",line171
ORA06512:atline1
15. Conectadocomousuario"prueba01",consultarlavistauser_jobsydeterminarsustrabajos.
WHAT
32311200413:13:42SYSDATE+60/1440
N
PRUEBA01.CHEQUEAR_TABLAS;
16. Marcareltrabajo,propiedaddelusuarioprueba01,querealizaelchequeodetablascomobroken.Consultarsu
estadoenlavistauser_jobs.
SQL>execdbms_job.broken(3,TRUE);
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(next_date,'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25),failures,broken,whatfrom
user_jobs;
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
128
AdministracinBsicadeOracle9iPrcticasresueltas
WHAT
30101400000:00:00SYSDATE+60/1440
Y
PRUEBA01.CHEQUEAR_TABLAS;
17. Intentarmarcarcomobrokeneltrabajoquerealizalamonitorizacindeusuarios.Qusucedealrealizarlo?,
quinessuposeedor?.
SQL>execdbms_job.broken(4,TRUE);
BEGINdbms_job.broken(4,TRUE);END;
*
ERRORatline1:
ORA23421:jobnumber4isnotajobinthejobqueue
ORA06512:at"SYS.DBMS_SYS_ERROR",line86
ORA06512:at"SYS.DBMS_IJOB",line529
ORA06512:at"SYS.DBMS_JOB",line245
ORA06512:atline1
18. ConectarsecomousuarioSYSTEMymodificareltrabajoquellamaalprocedimientodemonitorizacindeusuarios
paraqueserealicecadaquinceminutos.
SQL>execdbms_job.interval(4,'SYSDATE+15/1440');
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(next_date,'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25),failures,broken,whatfrom
dba_jobswhereschema_user='SYSTEM';
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB
WHAT
12511200411:41:19SYSDATE+7
0N
SYSTEM.ANALIZA_USUARIOS;
22911200415:37:11SYSDATE+7
0N
SYSTEM.ANALIZA_USUARIOS;
42311200413:26:43SYSDATE+15/1440
N
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
129
AdministracinBsicadeOracle9iPrcticasresueltas
SYSTEM.MONITORIZAR_USUARIOS;
19. Conectarsecomousuarioprueba01ymodificareltrabajoquechequealaocupacindelastablasparaquese
realicecadatreintaminutos.
SQL>connectprueba01
Enterpassword:
Connected.
SQL>execdbms_job.interval(3,'SYSDATE+30/1440');
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(next_date,'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25),failures,broken,whatfrom
user_jobs;
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB
WHAT
30101400000:00:00SYSDATE+30/1440
Y
PRUEBA01.CHEQUEAR_TABLAS;
20. Forzarlaejecucininmediatadeltrabajoquerealizaelchequeodeocupacindetablas.Conectadocomoque
usuariodeberealizarse?.
SQL>execdbms_job.run(3);
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(next_date,'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25),failures,broken,whatfrom
user_jobs;
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB
WHAT
32311200414:13:27SYSDATE+30/1440
0N
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
130
AdministracinBsicadeOracle9iPrcticasresueltas
PRUEBA01.CHEQUEAR_TABLAS;
21. ConectadocomousuarioSYSTEM,eliminareltrabajoquerealizaelchequeodeocupacindetablas.
SQL>connectsystem
Enterpassword:
Connected.
SQL>execdbms_job.remove(3);
BEGINdbms_job.remove(3);END;
*
ERRORatline1:
ORA23421:jobnumber3isnotajobinthejobqueue
ORA06512:at"SYS.DBMS_SYS_ERROR",line86
ORA06512:at"SYS.DBMS_IJOB",line529
ORA06512:at"SYS.DBMS_JOB",line171
ORA06512:atline1
22. Repetirelejercicioanteriorconectadocomousuarioprueba01.
SQL>connectprueba01
Enterpassword:
Connected.
SQL>execdbms_job.remove(3);
PL/SQLproceduresuccessfullycompleted.
SQL>selectjob,to_char(next_date,'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25),failures,broken,whatfrom
user_jobs;
norowsselected
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
131
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA9.
AUDITORA.
1. Ver la descripcin de las vistas ALL_DEF_AUDIT_OPTS, DBA_AUDIT_OBJECT, DBA_AUDIT_SESSION,
DBA_AUDIT_STATEMENT, DBA_AUDIT_TRAIL, DBA_OBJ_AUDIT_OPTS, DBA_PRIV_AUDIT_OPTS, y
DBA_STMT_AUDIT_OPTS.Averiguarelsignificadodecadaunodeloscamposusandoladocumentacinenlnea.
SQL>descALL_DEF_AUDIT_OPTS
NombreNulo?Tipo
ALTVARCHAR2(3)
AUDVARCHAR2(3)
COMVARCHAR2(3)
DELVARCHAR2(3)
GRAVARCHAR2(3)
INDVARCHAR2(3)
INSVARCHAR2(3)
LOCVARCHAR2(3)
RENVARCHAR2(3)
SELVARCHAR2(3)
UPDVARCHAR2(3)
REFVARCHAR2(3)
EXEVARCHAR2(3)
...
2. VerladescripcindelavistaSYS.AUD$.
SQL>descsys.aud$
NameNull?Type
SESSIONIDNOTNULLNUMBER
ENTRYIDNOTNULLNUMBER
STATEMENTNOTNULLNUMBER
TIMESTAMP#NOTNULLDATE
USERIDVARCHAR2(30)
USERHOST
VARCHAR2(128)
TERMINAL
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
132
AdministracinBsicadeOracle9iPrcticasresueltas
VARCHAR2(255)
ACTION#NOTNULLNUMBER
RETURNCODENOTNULLNUMBER
OBJ$CREATORVARCHAR2(30)
OBJ$NAME
VARCHAR2(128)
AUTH$PRIVILEGESVARCHAR2(16)
AUTH$GRANTEEVARCHAR2(30)
NEW$OWNERVARCHAR2(30)
NEW$NAME
VARCHAR2(128)
SES$ACTIONSVARCHAR2(19)
SES$TIDNUMBER
LOGOFF$LREADNUMBER
LOGOFF$PREADNUMBER
LOGOFF$LWRITENUMBER
LOGOFF$DEADNUMBER
LOGOFF$TIMEDATE
COMMENT$TEXT
VARCHAR2(4000)
CLIENTIDVARCHAR2(64)
SPARE1
VARCHAR2(255)
SPARE2NUMBER
OBJ$LABELRAW(255)
SES$LABELRAW(255)
PRIV$USEDNUMBER
SESSIONCPUNUMBER
3. Comprobarsiestahabilitadalaauditoraenlabasededatos.Habilitarlaauditoraenlabasededatosencasode
quenoeste.
SQL>showparametersaudit_trail
NAMETYPEVALUE
audit_trailstringNONE
Sedebepararlabasededatos,editarelficherodeparametros
de inicializacion, init<bd>.ora, aadiendo la linea
"audit_trail=db",yvolveraarrancarlabasededatos.
4. ComprobarqueusuariosdebasededatostienenasignadoslosprivilegiosAUDITSYSTEMyAUDITANY.
SQL>connectsystem
Enterpassword:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
133
AdministracinBsicadeOracle9iPrcticasresueltas
Connected.
SQL>select*fromdba_sys_privswhereprivilege='AUDITANY';
GRANTEE PRIVILEGE
ADM
SQL>auditsession;
Auditsucceeded.
6. Abrir una sesin a la base de datos como usuario SYSTEM y como usuario prueba01. Comprobar que
informacinsehaguardadoenlaauditoracomoconsecuenciadelasoperacionesanteriores(consultarlavista
DBA_AUDIT_TRAIL).
SQL>
select
substr(os_username,1,10)
usuario_so,
substr(username,1,12) usuario, to_char(timestamp,'ddmmyyy
hh24:mi:ss') tiempo_conexion, to_char(logoff_time,'ddmmyyyy
hh24:mi:ss') tiempo_desconexion from dba_audit_trail order by
username,timestamp,logoff_time;
USUARIO_SOUSUARIOTIEMPO_CONEXIONTIEMPO_DESCONEXION
oraclePRUEBA01291100411:53:50
oracleSYSTEM291100411:53:442911200411:53:50
7.
Auditarlasconexionesexitosasyfallidasalabasededatosdelosusuariosprueba01yprueba02.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
134
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>auditsessionbyprueba01,prueba02;
Auditsucceeded.
8. Conectarsealabasededatoscomousuarioprueba02introduciendounaclaveerrnea.Comprobarelapunte
realizadoenlaauditoradelsistema(consultarlavistaDBA_AUDIT_SESSION).
SQL>
select
substr(os_username,1,10)
usuario_so,
substr(username,1,12) usuario, to_char(timestamp,'ddmmyyy
hh24:mi:ss') tiempo_conexion, to_char(logoff_time,'ddmmyyyy
hh24:mi:ss') tiempo_desconexion from dba_audit_session where
username='PRUEBA02'orderbyusername,timestamp,logoff_time
USUARIO_SOUSUARIOTIEMPO_CONEXIONTIEMPO_DESCONEXION
oraclePRUEBA02291100411:55:37
9. AuditarelusodeSELECTTABLE,DELETETABLE,UPDATETABLEeINSERTTABLEencualquiercaso(fallidoo
no)yporsentenciaindividual.Comprobarlasopcionesactivasdeauditora(vistaDBA_STMT_AUDIT_OPTS).
PRUEBA01CREATESESSIONBYACCESSBYACCESS
PRUEBA02CREATESESSIONBYACCESSBYACCESS
CREATESESSIONBYACCESSBYACCESS
SELECTTABLEBYACCESSBYACCESS
INSERTTABLEBYACCESSBYACCESS
UPDATETABLEBYACCESSBYACCESS
DELETETABLEBYACCESSBYACCESS
7rowsselected.
10. Conectarsecomousuarioprueba01.Comprobarsisehacreadolatablacodigos_notasenel"tablespace"
ACADEMO,encasocontrariocreadla.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
135
AdministracinBsicadeOracle9iPrcticasresueltas
CREATETABLECODIGOS_NOTAS
(CODIGOvarchar2(3),
DESCRIPCIONvarchar2(20))
TABLESPACEACADEMO
STORAGE(INITIAL
64K
NEXT 64K
MINEXTENTS3
MAXEXTENTS10);
Otorgarprivilegiosparaconsultar,insertar,actualizaryborrarregistrosdelatablacodigos_notasalusuario
"prueba02".
Conectarsecomousuarioprueba02yrealizarlassiguientesoperaciones:
Seleccionartodoslosregistrosdelatablacodigos_notas.
Insertarenlatablacodigos_notaslossiguientesregistros:
0,NOPRESENTADO
1,APROBADO
Consultarlosregistrosdeauditorageneradosparalasoperacionesanteriores(vistaDBA_AUDIT_OBJECT).
SQL>connectprueba01
Enterpassword:
Connected.
SQL>CREATETABLECODIGOS_NOTAS
2(CODIGOvarchar2(3),
3DESCRIPCIONvarchar2(20))
4TABLESPACEACADEMO
5STORAGE(INITIAL64K
6NEXT64K
7MINEXTENTS3
8*MAXEXTENTS10)
Tablecreated.
SQL> grant select, insert, update, delete on codigos_notas to
prueba02;
Grantsucceeded.
SQL>connectprueba02
Enterpassword:
Connected.
SQL>select*fromprueba01.codigos_notas;
norowsselected
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
136
AdministracinBsicadeOracle9iPrcticasresueltas
SQL> insert into prueba01.codigos_notas values ('0','NO
PRESENTADO');
1rowcreated.
SQL>insertintoprueba01.codigos_notasvalues('1','APROBADO');
1rowcreated.
SQL>commit;
Commitcomplete.
SQL>SQL>connectsystem
Enterpassword:
Connected.
SQL>
select
substr(os_username,1,10)
usuario_so,
substr(username,1,12) usuario, to_char(timestamp,'ddmmyyy
hh24:mi:ss') tiempo_conexion, to_char(logoff_time,'ddmmyyyy
hh24:mi:ss') tiempo_desconexion from dba_audit_session where
username='PRUEBA02'orderbyusername,timestamp,logoff_time;
USUARIO_SOUSUARIOTIEMPO_CONEXIONTIEMPO_DESCONEXION
oraclePRUEBA02291100411:55:37
oraclePRUEBA02291100412:08:542911200412:10:42
SQL>
select
substr(os_username,1,10)
usuario_so,
substr(username,1,12) usuario, to_char(timestamp,'ddmmyyy
hh24:mi:ss') tiempo_conexion, substr(owner,1,10) propie,
substr(obj_name,1,15)objeto,substr(action_name,1,10)accionfrom
dba_audit_object where username='PRUEBA02' order by
os_username,timestamp,owner,obj_name,action_name;
USUARIO_SO USUARIO TIEMPO_CONEXION PROPIE OBJETO
ACCION
137
AdministracinBsicadeOracle9iPrcticasresueltas
oraclePRUEBA02291100412:08:54SYSTEMPRODUCT_PRIVS
SELECT
oracle PRUEBA02 2911004 12:08:54 SYSTEM
SQLPLUS_PRODUCTSELECT
oracle PRUEBA02 2911004 12:08:54 SYSTEM
SQLPLUS_PRODUCTSELECT
oraclePRUEBA02291100412:09:06PRUEBA01CODIGOS_NOTAS
SELECT
oraclePRUEBA02291100412:09:19PRUEBA01CODIGOS_NOTAS
INSERT
oraclePRUEBA02291100412:09:32PRUEBA01CODIGOS_NOTAS
INSERT
11. Consultarlasopcionespordefectodeauditoradeobjetos(ALL_DEF_AUDIT_OPTS).
SQL>select*fromall_def_audit_opts;
ALTAUDCOMDELGRAINDINSLOCRENSELUPDREFEXE
/////////////
12. Especificarlasopcionesdeauditorapordefectoparalosobjetoscreadosenunfuturodeformaqueseregistre
informacinsiemprequeseproduzcaunalter,grant,insert,updateodelete.
SQL>auditalter,grant,insert,update,deleteondefault;
Auditsucceeded.
SQL>select*fromall_def_audit_opts;
ALTAUDCOMDELGRAINDINSLOCRENSELUPDREFEXE
S/S//S/SS/S/S/S///S/S//
Elsignificadodecadaunadelascolumnases:
/:Noauditoriapordefecto.
S/:Auditadocuandoseaexitosalaoperacin.
/S:Auditadocuandoseafallidalaoperacin.
ALT...ALTER
AUD...AUDIT
COM...COMMENT
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
138
AdministracinBsicadeOracle9iPrcticasresueltas
DEL...DELETE
GRA...GRANT
IND...INDEX
INS...INSERT
LOC...LOCK
REN...RENAME
SEL...SELECT
UPD...UPDATE
REF...REFERENCES
EXE...EXECUTE
13. Desactivarlaauditoradelasconexionesalabasededatos.
PRUEBA01CREATESESSIONBYACCESS
BYACCESS
PRUEBA02CREATESESSIONBYACCESS
BYACCESS
ALTERANYRULEBYACCESS
BYACCESS
CREATEANYRULEBYACCESS
BYACCESS
CREATESESSIONBYACCESS
BYACCESS
DROPANYRULEBYACCESS
BYACCESS
EXECUTEANYRULEBYACCESS
BYACCESS
7rowsselected.
SQL>noauditsession;
Noauditsucceeded.
SQL> select substr(user_name,1,12) usuario, privilege,
success,failure from dba_priv_audit_opts order by user_name,
privilege;
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
139
AdministracinBsicadeOracle9iPrcticasresueltas
USUARIOPRIVILEGESUCCESS
FAILURE
PRUEBA01CREATESESSIONBYACCESS
BYACCESS
PRUEBA02CREATESESSIONBYACCESS
BYACCESS
ALTERANYRULEBYACCESS
BYACCESS
CREATEANYRULEBYACCESS
BYACCESS
DROPANYRULEBYACCESS
BYACCESS
EXECUTEANYRULEBYACCESS
BYACCESS
6rowsselected.
SQL>noauditsessionbyprueba01,prueba02;
Noauditsucceeded.
SQL> select substr(user_name,1,12) usuario, privilege,
success,failure from dba_priv_audit_opts order by user_name,
privilege;
USUARIOPRIVILEGESUCCESS
FAILURE
ALTERANYRULEBYACCESS
BYACCESS
CREATEANYRULEBYACCESS
BYACCESS
DROPANYRULEBYACCESS
BYACCESS
EXECUTEANYRULEBYACCESS
BYACCESS
14. DesactivarlaauditoradeusodeSELECTTABLE,DELETETABLE,UPDATETABLEeINSERTTABLE(activada
enejerciciosanteriores).
SQL>selectsubstr(user_name,1,12)usuario,substr(audit_option,
1,15) opcion, success,failure from dba_stmt_audit_opts order by
user_name,audit_option;
USUARIOOPCIONSUCCESSFAILURE
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
140
AdministracinBsicadeOracle9iPrcticasresueltas
DELETETABLEBYACCESSBYACCESS
INSERTTABLEBYACCESSBYACCESS
SELECTTABLEBYACCESSBYACCESS
UPDATETABLEBYACCESSBYACCESS
SQL> noaudit select table, delete table, update table, insert
table;
Noauditsucceeded.
SQL>selectsubstr(user_name,1,12)usuario,substr(audit_option,
1,15) opcion, success,failure from dba_stmt_audit_opts order by
user_name,audit_option;
norowsselected
15. Activar la auditora para cualquier operacin de consulta, insercin o borrado que se efectu sobre la tabla
prueba01.codigos_notas.
SQL>auditselect,insert,deleteonprueba01.codigos_notas;
Auditsucceeded.
SQL>
select
substr(owner,1,12),substr(OBJECT_NAME,1,12),
substr(object_type,1,10), DEL, INS, SEL, UPD from
dba_obj_audit_opts where owner='PRUEBA01' order by object_name,
object_type;
SUBSTR(OWNERSUBSTR(OBJECSUBSTR(OBDELINSSELUPD
PRUEBA01CHEQUEAR_TABPROCEDURE////
PRUEBA01CODIGOSTABLE////
PRUEBA01CODIGOS_NOTATABLES/SS/SS/S/
PRUEBA01TABLAS_REVISTABLE////
16. Conectadocomousuarioprueba01realizarunaconsultadelcontenidodelatablacodigos_notas.Consultarlos
registrosdeauditoragenerados(DBA_AUDIT_OBJECT).
SQL>connectprueba01
Introduzcasuclave:
Connected.
SQL>select*fromcodigos_notas;
CODDESCRIPCION
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
141
AdministracinBsicadeOracle9iPrcticasresueltas
0NOPRESENTADO
1APROBADO
SQL>insertintocodigos_notasvalues('3','NOTABLE');
1rowcreated.
SQL>commit;
SQL>connectsystem
Introduzcasuclave:
Connected.
SQL> select substr(username,1,10) usuario, to_char(timestamp,'dd
mmyyyy hh24:mi:ss') fecha, substr(owner,1,10) prop,
substr(obj_name,1,15) objeto, ses_actions from dba_audit_object
whereowner='PRUEBA01'orderbytimestamp
USUARIO FECHA PROP OBJETO
SES_ACTIONS
PRUEBA022911200412:09:06PRUEBA01CODIGOS_NOTAS
PRUEBA022911200412:09:19PRUEBA01CODIGOS_NOTAS
PRUEBA022911200412:09:32PRUEBA01CODIGOS_NOTAS
PRUEBA01 0212200410:09:30PRUEBA01 CODIGOS_NOTAS
SS
SES_ACTIONS Resumendesesion,unacadenade16caracteres,
uno por cada tipo de accion de la lista ordenada ALTER, AUDIT,
COMMENT, DELETE, GRANT, INDEX, INSERT, LOCK, RENAME, SELECT,
UPDATE,REFERENCES,yEXECUTE.
Lasposicones14,15,y16estanreservadasparausosfuturos.Los
caracteressonparaninguno,Sparaxito,FparafalloyBpara
ambos.
17. Desactivarlaauditoradelejercicio15.
SQL>noauditselect,insert,deleteonprueba01.codigos_notas;
Noauditsucceeded.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
142
AdministracinBsicadeOracle9iPrcticasresueltas
18. Desactivartodaslasopcionesdeauditoradeobjetosqueexistenpordefecto.
SQL>noauditallondefault;
Noauditsucceeded.
19. Comprobar las caractersticas de almacenamiento del audit trail. Borrar todos los registros de auditora
correspondientesalatablaprueba01.codigos_notas.
SQL>AUDITINSERT,UPDATE,DELETEONSYS.AUD$BYACCESS;
Auditsucceeded.
SQL> select substr(owner,1,12) prop,substr(OBJECT_NAME,1,12)
objeto, substr(object_type,1,10) tipo, DEL, INS, SEL, UPD from
dba_obj_audit_optswhereowner='SYS'andOBJECT_NAME='AUD$'order
byobject_name,object_type
PROPOBJETOTIPODELINSSELUPD
SYSAUD$TABLEA/AA/A/A/A
21. Considereuncasohipotticodondequiereauditarselabasededatosenbasealossiguienteshechosdetectados:
Sehanmodificadociertascuotas,asignacindeespaciosdealmacenamiento,tablespaces,ycontraseasde
usuario.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
143
AdministracinBsicadeOracle9iPrcticasresueltas
Seestnproduciendounnmeroconsiderabledeabrazosmortalesdebidoaqueseestnadquiriendobloqueos
exclusivossobretablas.
SehadetectadoelborradoderegistrosdelatablaSCOTT.EMP
Sesospechaquelosusuariosprueba01yprueba02sonlosresponsablesdelasaccionesanteriores.
Determinarlasdistintasoperacionessobrelasquehabrqueefectuarunaauditora,ascomoconsultarenlas
distintasvistasparaobtenerlainformacinprecisaquepermitadescartaroconfirmarlassospechasquehandadolugar
alaactivacindelaauditora.
Alusuario"prueba02"selehanasignadotodoslospermisosposiblessobrescott.emp:
SQL>grantallonscott.emptoprueba02;
Grantsucceeded.
Paraactivarlaauditoraseejecutaraelsiguienteordende
sentencias:
SQL>auditalter,INDEX,RENAMEONDEFAULTBYSESSION;
Auditsucceeded.
SQL>AUDITSESSIONBYprueba01,prueba02;
Auditsucceeded.
SQL>AUDITALTERUSER;
Auditsucceeded.
SQL>AUDITDROPUSER;
Auditsucceeded.
SQL>AUDITLOCKTABLEBYACCESSWHENEVERSUCCESSFUL;
Auditsucceeded.
SQL>AUDITDELETEONscott.empBYACCESSWHENEVERSUCCESSFUL;
Auditsucceeded.
Supongamosqueelusuarioprueba01ejecutalassentencias:
SQL>connectprueba01
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
144
AdministracinBsicadeOracle9iPrcticasresueltas
Enterpassword:
Connected.
SQL>ALTERUSERprueba03QUOTA0ONusers;
ALTERUSERprueba03QUOTA0ONusers
*
ERRORatline1:
ORA01031:insufficientprivileges
SQL>DROPUSERprueba04;
DROPUSERprueba04
*
ERRORatline1:
ORA01031:insufficientprivileges
Supongamosqueelusuarioprueba02ejecutalassentencias:
SQL>connectprueba02
Enterpassword:
Connected.
SQL>LOCKTABLEscott.empINEXCLUSIVEMODE;
Table(s)Locked.
SQL>DELETEFROMscott.empWHEREmgr=7698;
5rowsdeleted.
SQL>ALTERTABLEscott.empSTORAGE(NEXT500K);
Tablealtered.
SQL>CREATEINDEXscott.ename_indexONscott.emp(ename);
CREATEINDEXscott.ename_indexONscott.emp(ename)
*
ERRORatline1:
ORA01031:insufficientprivileges
SQL>DELETEFROMscott.empWHEREempno=8000;
0rowsdeleted.
Recuperamos ahora informacin sobre los registros de
auditora:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
145
AdministracinBsicadeOracle9iPrcticasresueltas
Opcionesdeauditoradesentenciasfijadas.
SQL>connectsystem
Enterpassword:
Connected.
SQL> select user_name, audit_option,success, failure from
sys.dba_stmt_audit_opts;
USER_NAME AUDIT_OPTION SUCCESS
FAILURE
PRUEBA02CREATESESSION BYACCESSBY
ACCESS
PRUEBA01 CREATESESSION BYACCESS BY
ACCESS
ALTERUSERBYACCESSBY
ACCESS
DROPUSERBYACCESSBY
ACCESS
LOCKTABLEBYACCESSNOT
SET
Opcionesdeauditoradeprivilegios.
SQL> select user_name, privilege,success, failure from
sys.dba_priv_audit_opts;
USER_NAMEPRIVILEGESUCCESSFAILURE
OpcionesdeauditoraparaobjetosdelesquemaSCOTT.
SQL> SELECT * FROM sys.dba_obj_audit_opts WHERE owner =
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
146
AdministracinBsicadeOracle9iPrcticasresueltas
'SCOTT'ANDobject_nameLIKE'EMP%';
OWNER OBJECT_NAME OBJECT_TYALTAUDCOMDELGRAIND
INSLOCRENSELUPDREFEXECREREAWRI
SCOTTEMPTABLE///A////
/////////
Lainformacindebeinterpretarsedelasiguienteforma:
Elcarcter""indicaquelaopcindeauditoranoesta
fijada.
EL carcter "S" indica que la opcin de auditora esta
fijadaBYSESSION.
El carcter "A" indica que la opcin de auditora esta
fijadaBYACCESS.
Cada opcin de auditora puede ser para WHENEVER
SUCCESSFULyWHENEVERNOTSUCCESSFUL;lasdosopciones
estnseparadaspor"/".
InformacindeauditoraparalasentenciaAUDITSESSION.
SQL> select substr(os_username,1,10) usuario_so,
substr(username,1,12)usuario,to_char(timestamp,'ddmmyyy
hh24:mi:ss') tiempo_conexion, to_char(logoff_time,'ddmm
yyyyhh24:mi:ss')tiempo_desconexionfromdba_audit_session
orderbyusername,timestamp,logoff_time;
USUARIO_SO USUARIO
TIEMPO_CONEXION
TIEMPO_DESCONEXION
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
147
AdministracinBsicadeOracle9iPrcticasresueltas
8rowsselected.
Registrosdeauditoriageneradosparaobjetos.
SQL>
select
substr(username,1,12)
usuario,
to_char(timestamp,'ddmmyyy hh24:mi:ss') tiempo_conexion,
substr(owner,1,10) propie, substr(obj_name,1,15) objeto,
substr(action_name,1,15) accion from dba_audit_object where
owner='SCOTT' order by os_username,usuario, timestamp,
owner,obj_name,action_name;
148
AdministracinBsicadeOracle9iPrcticasresueltas
ORA01031:insufficientprivileges
SQL>connectsystem
Enterpassword:
Connected.
SQL>
select
substr(username,1,12)
usuario,
to_char(timestamp,'ddmmyyy hh24:mi:ss') tiempo_conexion,
substr(owner,1,10) propie, substr(obj_name,1,15) objeto,
substr(action_name,1,15) accion from dba_audit_object where
owner='SCOTT' order by os_username,usuario, timestamp,
owner,obj_name,action_name;
USUARIO TIEMPO_CONEXION PROPIE OBJETO
ACCION
PRUEBA02021200410:38:35SCOTTEMPLOCK
PRUEBA02 0212004 10:38:45 SCOTT EMP
DELETE
PRUEBA02 0212004 10:39:12 SCOTT EMP
DELETE
PRUEBA02 0312004 10:13:29 SCOTT EMP
SESSIONREC
SQL> SELECT * FROM sys.dba_obj_audit_opts WHERE owner =
'SCOTT'ANDobject_nameLIKE'EMP%';
OWNEROBJECT_NAMEOBJECT_TYALTAUD
COMDELGRAINDINSLOCRENSELUPDREFEXECREREAWRI
SCOTTEMPTABLES/S/
/A//S/S//S/S///////
Siseauditaahoraporacceso.
SQL>auditalter,INDEX,RENAMEONscott.empbyaccess;
Auditsucceeded.
SQL>connectprueba02
Enterpassword:
Connected.
SQL>ALTERTABLEscott.empSTORAGE(NEXT1500K);
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
149
AdministracinBsicadeOracle9iPrcticasresueltas
Tablealtered.
SQL>CREATEINDEXscott.ename_indexONscott.emp(ename);
CREATEINDEXscott.ename_indexONscott.emp(ename)
*
ERRORatline1:
ORA01031:insufficientprivileges
SQL>connectsystem
Enterpassword:
Connected.
SQL>
select substr(username,1,12) usuario,
to_char(timestamp,'ddmmyyy hh24:mi:ss') tiempo_conexion,
substr(owner,1,10) propie, substr(obj_name,1,15) objeto,
substr(action_name,1,25) accion from dba_audit_object where
owner='SCOTT' order by os_username,usuario, timestamp,
owner,obj_name,action_name;
USUARIOTIEMPO_CONEXIONPROPIEOBJETO
ACCION
PRUEBA02021200410:38:35SCOTTEMP
LOCK
PRUEBA02021200410:38:45SCOTTEMP
DELETE
PRUEBA02021200410:39:12SCOTTEMP
DELETE
PRUEBA02031200410:13:29SCOTTEMP
SESSIONREC
PRUEBA02031200410:16:45SCOTTEMP
ALTERTABLE
Observemos que prueba02 no tiene permiso para crear
ndices.
SQL>connectsystem
Enterpassword:
Connected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
150
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>select*fromdba_sys_privswheregrantee='PRUEBA02';
norowsselected
SQL>select*fromdba_role_privswheregrantee='PRUEBA02'
GRANTEE GRANTED_ROLE
ADMDEF
PRUEBA02 CONEXION
NOYES
SQL>select*fromdba_role_privswheregrantee='CONEXION'
norowsselected
SQL>select*fromdba_sys_privswheregrantee='CONEXION'
GRANTEEPRIVILEGEADM
CONEXIONCREATESESSIONNO
Seleotorgapermisoysepruebaacrearunndicecomo
prueba02sobrescott.emp.Aunquefalle,registraelapunte.
SQL>grantcreatetabletoprueba02;
Grantsucceeded.
SQL>connectprueba02
Enterpassword:
Connected.
SQL>CREATEINDEXscott.ename_indexONscott.emp(kk);
CREATEINDEXscott.ename_indexONscott.emp(kk)
*
ERRORatline1:
ORA00904:"KK":invalididentifier
SQL>connectsystem
Enterpassword:
Connected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
151
AdministracinBsicadeOracle9iPrcticasresueltas
SQL>
select
substr(username,1,12)
usuario,
to_char(timestamp,'ddmmyyy hh24:mi:ss') tiempo_conexion,
substr(owner,1,10) propie, substr(obj_name,1,15) objeto,
substr(action_name,1,15) accion from dba_audit_object where
owner='SCOTT' order by os_username,usuario, timestamp,
owner,obj_name,action_name;
USUARIOTIEMPO_CONEXIONPROPIEOBJETOACCION
PRUEBA02021200410:38:35SCOTTEMPLOCK
PRUEBA02021200410:38:45SCOTTEMPDELETE
PRUEBA02021200410:39:12SCOTTEMPDELETE
PRUEBA02 0312004 10:13:29 SCOTT EMP
SESSIONREC
PRUEBA02031200410:16:45SCOTTEMPALTER
TABLE
PRUEBA02031200410:24:46SCOTTENAME_INDEXCREATE
INDEX
6rowsselected.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
152
AdministracinBsicadeOracle9iPrcticasresueltas
PRACTICASTEMA10.
COPIASDESEGURIDAD.
1. Revisarlaestructuradelabasededatos.IndicarsicumpleconlasindicacionesOFAyelcontenidodecadaunode
lossistemasdeficheros.
Desdesistemaoperativo,mediantelassentencias"cd"y"lsal"
2. Comprobarqueusuariosyrolestienenasignadoelrolexp_full_database.
SQL>
select
from
granted_role='EXP_FULL_DATABASE';
dba_role_privs
where
GRANTEEGRANTED_ROLEADM
DEF
DBAEXP_FULL_DATABASENO
YES
SYSEXP_FULL_DATABASEYES
YES
3. Podraunusuarioquetuvieraasignadoelroldbarealizarunaexportacintotaldelabasededatos?,porqu?.
4. Asignarelrolexp_full_databasealroladmin.
SQL>grantexp_full_databasetoadmin;
Grantsucceeded.
SQL>
select * from
granted_role='EXP_FULL_DATABASE';
dba_role_privs
where
GRANTEEGRANTED_ROLEADM
DEF
DBAEXP_FULL_DATABASENO
YES
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
153
AdministracinBsicadeOracle9iPrcticasresueltas
SYSEXP_FULL_DATABASEYES
YES
ADMINEXP_FULL_DATABASENO
YES
5. Enelsistemadeficheros/export/<nombre_bbdd>,crearunficherodeparmetrosllamadopar_admin01que
permitarealizarunaexportacintotaldelabasededatos,incluyendosusdatosylopermisossobretodoslos
objetos,aunficherollamadototal_admin01.dmp(opcionesfile,full,log).Realizarlaexportacincomousuario
administrador.
Elregistrodelaexportacinseguardarenelficherototal_admin01.log.
Conectarsecomousuariopropietariodelabasededatos.
Situarseeneldirecorio/export/<nombre_bbdd>.Editarcon"vi"
elficheropar_admin01.
buffer=102400
file=/export/CURSO01/total_admin01.dmp
log=/export/CURSO01/total_admin01.log
full=y
/export/CURSO01(CURSO01)>expparfile=par_admin01
Export:Release9.2.0.1.0ProductiononJueDic912:37:162004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
Exportandotodalabasededatos...
.exportandodefinicionesdetablespace
.exportandoperfiles
.exportandodefinicionesdeusuario
.exportandoroles
.exportandocostosderecursos
.exportandodefinicionesdesegmentosderollback
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
154
AdministracinBsicadeOracle9iPrcticasresueltas
.exportandoenlacesalabasededatos
.exportandonmerosdesecuencia
.exportandoaliasdedirectorios
.exportandoespaciosdenombresdecontexto
...
6. Editarelficherototal_admin01.logycomprobarsisehaproducidoalgnerror.Quinformacinapareceenla
ultimafiladelfichero?.
Debeeditarseelficherousandoeleditor"vi"(tambinpuede
hacerseconuntail).Lasultimaslneasmostraranelsiguiente
mensaje:
/export/CURSO01(CURSO01)>tailftotal_admin01.log
.exportandovistasmaterializadas
.exportandologsdeinstantneas
.exportandocolasdetrabajo
.exportandogruposderefrescamientoysecundarios
.exportandodimensiones
.exportandoaccionesyobjetosdeprocedimientopostesquema
.exportandotabladehistorialdeusuario
.exportandoopcionesdeauditorapordefectoydelsistema
.exportandoestadsticas
Laexportacinhaterminadocorrectamenteysinadvertencias.
7.
Editarelficherototal_admin01.logyverificarelordendecopiadelosobjetosdelabasededatos,cules?.
8. Comprobarsisehaexportadoalficherototal_admin01.dmpelusuarioSYS.YelSYSTEM?.
NoenelcasodelSYS.SenelcasodeSYSTEM.
9. Exportar todos los registros correspondientes al audit. trail. Crear un fichero de parmetros de nombre
"exporta_aud"conlassiguienteslneas:
buffer=102400
file=/export/CURSO01/exporta_aud.dmp
log=/export/CURSO01/exporta_aud.log
tables=(SYS.AUD$)
/export/CURSO01(CURSO01)>expparfile=exporta_aud
Export:Release9.2.0.1.0ProductiononJueDic912:57:092004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
155
AdministracinBsicadeOracle9iPrcticasresueltas
reserved.
Usuario:system
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
ExportandolastablasespecificadasatravsdelaRutadeAcceso
Convencional...
ElusuarioactualhacambiadoaSYS
.exportandolatablaAUD$114
filasexportadas
Laexportacinhaterminadocorrectamenteysinadvertencias.
10. Comousuarioscott,realizarunaexportacindesuesquema.Losparmetrossealmacenarnenunfichero
llamadopar_scott03,laexportacinenelficheroscott_scott03.dmpyelregistroenelficheroscott_scott03.log.
Seharealizadoconxitolaexportacin?.Usarlasmismasopcionesqueenelejercicioanterior.
Elficherodeparmetrostendrelsiguientecontenido:
buffer=102400
file=/export/CURSO01/scott_scott03.dmp
log=/export/CURSO01/scott_scott03.log
owner=(SCOTT)
compress=y
/export/CURSO01(CURSO01)>expparfile=par_scott03
Export:Release9.2.0.1.0ProductiononJueDic913:01:092004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:scott
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
156
AdministracinBsicadeOracle9iPrcticasresueltas
.exportandoaccionesyobjetosdeprocedimientopreesquema
. exportando nombres de biblioteca de funciones ajenas para el
usuarioSCOTT
.exportandosinnimosdetipopblico
.exportandosinnimosdetipoprivado
. exportando definiciones de tipos de objetos para el usuario
SCOTT
ExportandolosobjetosdeSCOTT...
.exportandoenlacesalabasededatos
.exportandonmerosdesecuencia
.exportandodefinicionesdeagrupamiento
. exportando las tablas de SCOTT a travs de la Ruta de Acceso
Convencional...
.exportandolatablaBONUS0
filasexportadas
.exportandolatablaDEPT5
filasexportadas
.exportandolatablaEMP9
filasexportadas
.exportandolatablaSALGRADE5
filasexportadas
.exportandosinnimos
.exportandovistas
.exportandoprocedimientosalmacenados
.exportandooperadores
.exportandorestriccionesdeintegridadreferencial
.exportandodisparadores
.exportandotiposdendice
.exportandondicesbitmap,funcionalesyextensibles
.exportandoaccionesdeposttables
.exportandovistasmaterializadas
.exportandologsdeinstantneas
.exportandocolasdetrabajo
.exportandogruposderefrescamientoysecundarios
.exportandodimensiones
.exportandoaccionesyobjetosdeprocedimientopostesquema
.exportandoestadsticas
Laexportacinhaterminadocorrectamenteysinadvertencias.
11. Comousuarioscott,intentarrealizarunaexportacintotaldelabasededatos.Losparmetrossealmacenarnen
un fichero llamado par_scott04, la exportacin en el fichero total_scott04.dmp y el registro en el fichero
total_scott04.log.Seharealizadoconxitolaexportacin?,porqu?.
/export/CURSO01(CURSO01)>expparfile=par_scott04
Export:Release9.2.0.1.0ProductiononJueDic913:04:182004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
157
AdministracinBsicadeOracle9iPrcticasresueltas
reserved.
Usuario:scott
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
EXP00023:debeserDBApararealizarunaexportacindelabase
dedatoscompletaodeltablespace
(2)U(suarios)o(3)T(ablas):(2)U>
12. Conectado como usuario scott, realizar una exportacin de sus tablas emp y dept. Los parmetros se
almacenarnenunficherollamadopar_scott05,laexportacinenelficherotablas_scott05.dmpyelregistroenel
ficherotablas_scott05.log.Huboxitoenlaexportacin?.
Elcontenidodelficherodeparmetrosser:
buffer=102400
file=/export/CURSO01/tablas_scott05.dmp
log=/export/CURSO01/tablas_scott05.log
tables=(EMP,DEPT)
compress=y
/export/CURSO01(CURSO01)>expparfile=par_scott05
Export:Release9.2.0.1.0ProductiononJueDic913:17:222004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:scott
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
ExportandolastablasespecificadasatravsdelaRutadeAcceso
Convencional...
.exportandolatablaEMP9
filasexportadas
.exportandolatablaDEPT5
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
158
AdministracinBsicadeOracle9iPrcticasresueltas
filasexportadas
Laexportacinhaterminadocorrectamenteysinadvertencias.
13. Comousuarioprueba01,intentarrealizarunaexportacindelastablasscott.empyscott.dept.Losparmetros
sealmacenarnenunficherollamadopar_prueba0101,laexportacinenelficherotablas_prueba0101.dmpyel
registroenelficherotablas_prueba0101.log.Qusucede?.
Elcontenidodelficherodeparmetrosser:
buffer=102400
file=/export/CURSO01/tablas_prueba0101.dmp
log=/export/CURSO01/tablas_prueba0101.log
tables=(SCOTT.EMP,SCOTT.DEPT)
compress=y
/export/CURSO01(CURSO01)>expparfile=par_prueba0101
Export:Release9.2.0.1.0ProductiononJueDic913:18:582004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:prueba01
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
ExportandolastablasespecificadasatravsdelaRutadeAcceso
Convencional...
EXP00009: no tiene privilegios para exportar la tabla SCOTT de
EMP
EXP00009: no tiene privilegios para exportar la tabla SCOTT de
DEPT
Laexportacinhaterminadocorrectamenteperoconadvertencias.
14. Comousuarioprueba01,realizarlaexportacindelatablainexistente.Losparmetrossealmacenarnenun
ficherollamadopar_prueba0102,laexportacinenelficherotablas_prueba0102.dmpyelregistroenelfichero
tablas_prueba0102.log.Segeneraalgnmensajedeerror?;siesas,quprefijotienen?.Sisehaproducido
algnmensajedeerror,buscarenladocumentacinenlneasusignificado.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
159
AdministracinBsicadeOracle9iPrcticasresueltas
Elcontenidodelficherodeparmetrosser:
buffer=102400
file=/export/CURSO01/tablas_prueba0102.dmp
log=/export/CURSO01/tablas_prueba0102.log
tables=(INEXISTENTE)
compress=y
/export/CURSO01(CURSO01)>expparfile=par_prueba0102
Export:Release9.2.0.1.0ProductiononJueDic913:20:182004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:prueba01
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ExportacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
ExportandolastablasespecificadasatravsdelaRutadeAcceso
Convencional...
EXP00011:PRUEBA01.INEXISTENTEnoexiste
Laexportacinhaterminadocorrectamenteperoconadvertencias.
15. Comprobarelvalordelparmetrodb_block_sizeenlabasededatos.
/export/CURSO01(CURSO01)>sqlplus
SQL*Plus: Release 9.2.0.1.0 Production on Jue Dic 9 13:21:11
2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Introduzcaelnombredeusuario:system
Introduzcalacontrasea:
Conectadoa:
Oracle9iEnterpriseEditionRelease9.2.0.1.0Production
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
160
AdministracinBsicadeOracle9iPrcticasresueltas
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
SQL>showparametersdb_block_size
NAMETYPEVALUE
db_block_sizeinteger2048
16. Realizardenuevolosejercicios5y10usandoelmododirectodeexportacin.Definaelvalordelparmetro
RECORDLENGTH.
Elnombredelosficherosusadosser:
Ejercicio6
Ejercicio10
F.parmetros
F.exportacin
F.registro
Pard_admin01
Pard_admin02
Totald_admin01.dmp
Sistemad_admin02.dmp
Totald_admin01.log
Sistemad_admin02.log
161
AdministracinBsicadeOracle9iPrcticasresueltas
usuarioSCOTT
.exportandosinnimosdetipopblico
.exportandosinnimosdetipoprivado
. exportando definiciones de tipos de objetos para el usuario
SCOTT
ExportandolosobjetosdeSCOTT...
.exportandoenlacesalabasededatos
.exportandonmerosdesecuencia
.exportandodefinicionesdeagrupamiento
. exportando las tablas de SCOTT a travs de la Ruta de Acceso
Directa...
.exportandolatablaBONUS0
filasexportadas
.exportandolatablaDEPT5
filasexportadas
.exportandolatablaEMP9
filasexportadas
.exportandolatablaSALGRADE5
filasexportadas
.exportandosinnimos
.exportandovistas
.exportandoprocedimientosalmacenados
.exportandooperadores
.exportandorestriccionesdeintegridadreferencial
.exportandodisparadores
.exportandotiposdendice
.exportandondicesbitmap,funcionalesyextensibles
.exportandoaccionesdeposttables
.exportandovistasmaterializadas
.exportandologsdeinstantneas
.exportandocolasdetrabajo
.exportandogruposderefrescamientoysecundarios
.exportandodimensiones
.exportandoaccionesyobjetosdeprocedimientopostesquema
.exportandoestadsticas
Laexportacinhaterminadocorrectamenteysinadvertencias.
17. Conectarsecomousuarioscottyeliminarlatablaemp.
SQL>droptableemp;
Tablaborrada.
18. Comousuarioadministrador,importarlatablascott.empdesdeelficheroscott_scott03.dmp.Crearunficherode
parmetrosllamadopar_imp_admin01(parmetrosfile,fromuserytables),elregistroseguardaraenelfichero
imp_tabla_emp.Terminaconxitolaimportacin?.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
162
AdministracinBsicadeOracle9iPrcticasresueltas
Elcontenidodelficherodeparmetrosdeimportacines:
buffer=102400
file=/export/CURSO01/scott_scott03.dmp
log=/export/CURSO01/imp_tabla_emp.log
tables=(EMP)
fromuser=scott
touser=scott
/export/CURSO01(CURSO01)>impparfile=par_imp_admin01
Import:Release9.2.0.1.0ProductiononJueDic913:47:362004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ArchivodeexportacincreadoporEXPORT:V09.02.00atravsdela
rutadeaccesoconvencional
Advertencia:LosobjetosfueronexportadosporSCOTT,noporusted
importacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
IMP00007:tienequeserDBAparaimportarobjetosenlacuentade
otrousuario
IMP00000:Laimportacinnohaterminadocorrectamente
19. Comprobarqueusuariosyrolestienenasignadoelrolimp_full_database.
SQL>
select
from
granted_role='IMP_FULL_DATABASE';
dba_role_privs
where
GRANTEEGRANTED_ROLEADM
DEF
DBAIMP_FULL_DATABASENO
YES
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
163
AdministracinBsicadeOracle9iPrcticasresueltas
SYSIMP_FULL_DATABASEYES
YES
20. Asignarelrolimp_full_databasealusuarioadministrador.
SQL>grantimp_full_databasetoadministrador;
Concesinterminadacorrectamente.
21. Realizardenuevoelejercicio18.
/export/CURSO01(CURSO01)>impparfile=par_imp_admin01
Import:Release9.2.0.1.0ProductiononJueDic913:52:042004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ArchivodeexportacincreadoporEXPORT:V09.02.00atravsdela
rutadeaccesoconvencional
Advertencia:LosobjetosfueronexportadosporSCOTT,noporusted
importacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
.importandoobjetosdeSCOTTenSCOTT
.importandolatabla"EMP"9
filasimportadas
Activandolasrestricciones...
Laimportacinhaterminadocorrectamenteperoconadvertencias.
22. Comprobarsilosusuariosprueba01yprueba02tienencuotaeneltablespaceUSERS.Encasodequenola
tengan,asignarunacuotade1Macadaunodeellos.
164
AdministracinBsicadeOracle9iPrcticasresueltas
ningunafilaseleccionada
SQL>alteruserprueba01quota1Monusers;
Usuariomodificado.
SQL>alteruserprueba02quota1Monusers;
Usuariomodificado.
SQL> select tablespace_name, max_bytes from dba_ts_quotas where
tablespace_name='USERS'andusernamein('PRUEBA01','PRUEBA02')
TABLESPACE_NAMEMAX_BYTES
USERS1048576
USERS1048576
23. Comousuarioadministrador,realizarunaimportacinenelesquemadeusuarioprueba01delastablasempy
deptpertenecientesalesquemadeusuarioscott(ficherotablas_scott05.dmp).Crearunficherodeparmetros
llamadopar_imp_admin02(parmetrosfile,log,grantsN,fromuser,touserytables);elregistroseguardaraenel
ficheroimp_tablas_prueba01.
Elcontenidodelficherodeparmetrosdeimportacines:
buffer=102400
file=/export/CURSO01/tablas_scott05.dmp
log=/export/CURSO01/imp_tablas_prueba01
tables=(EMP,DEPT)
fromuser=scott
touser=prueba01
grants=N
/export/CURSO01(CURSO01)>impparfile=par_imp_admin02
Import:Release9.2.0.1.0ProductiononJueDic913:55:362004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
165
AdministracinBsicadeOracle9iPrcticasresueltas
JServerRelease9.2.0.1.0Production
ArchivodeexportacincreadoporEXPORT:V09.02.00atravsdela
rutadeaccesoconvencional
Advertencia:LosobjetosfueronexportadosporSCOTT,noporusted
importacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
.importandoobjetosdeSCOTTenPRUEBA01
.importandolatabla"EMP"9
filasimportadas
.importandolatabla"DEPT"5
filasimportadas
Activandolasrestricciones...
Laimportacinhaterminadocorrectamenteperoconadvertencias.
24. Idemenelesquemaprueba02paratodoelesquemascott(ficheroscott_scott03.dmp).Crearunficherode
parmetrosllamadopar_imp_admin03(parmetrosfile,log,grantsN,fullytouser);elregistroseguardaraenel
ficheroimp_esquema_scott_prueba02.
Elcontenidodelficherodeparmetrosdeimportacines:
buffer=102400
file=/export/CURSO01/scott_scott03.dmp
log=/export/CURSO01/imp_esquema_scott_prueba02
full=y
grants=N
touser=prueba02
/export/CURSO01(CURSO01)>impparfile=par_imp_admin03
Import:Release9.2.0.1.0ProductiononJueDic913:58:542004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ArchivodeexportacincreadoporEXPORT:V09.02.00atravsdela
rutadeaccesoconvencional
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
166
AdministracinBsicadeOracle9iPrcticasresueltas
Advertencia:LosobjetosfueronexportadosporSCOTT,noporusted
importacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
.importandoobjetosdeSCOTTenPRUEBA02
.importandolatabla"BONUS"0
filasimportadas
.importandolatabla"DEPT"5
filasimportadas
.importandolatabla"EMP"9
filasimportadas
.importandolatabla"SALGRADE"5
filasimportadas
Activandolasrestricciones...
Laimportacinhaterminadocorrectamenteysinadvertencias.
25. Comousuarioadministrador",realizarunaimportacinaficherousandoelficheroscott_scott03.dmp(parmetro
SHOW=Y).Crearunficherodeparmetrosllamadopar_impfichero_admin04;elregistroseguardaraenelfichero
imp_scott_fichero.
Elcontenidodelficherodeparmetrosdeimportacines:
buffer=102400
file=/export/CURSO01/scott_scott03.dmp
log=/export/CURSO01/imp_scott_fichero
full=y
show=y
/export/CURSO01(CURSO01)>impparfile=par_impfichero_admin04
Import:Release9.2.0.1.0ProductiononJueDic914:00:442004
Copyright (c) 1982, 2002, Oracle Corporation. All rights
reserved.
Usuario:administrador
Contrasea:
Conectado a: Oracle9i Enterprise Edition Release 9.2.0.1.0
Production
WiththePartitioningandOracleLabelSecurityoptions
JServerRelease9.2.0.1.0Production
ArchivodeexportacincreadoporEXPORT:V09.02.00atravsdela
rutadeaccesoconvencional
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
167
AdministracinBsicadeOracle9iPrcticasresueltas
Advertencia:LosobjetosfueronexportadosporSCOTT,noporusted
importacinrealizadaeneljuegodecaracteresWE8ISO8859P15yel
juegodecaracteresNCHARAL16UTF16
.importandoobjetosdeSCOTTenADMINISTRADOR
"BEGIN"
"sys.dbms_logrep_imp.instantiate_schema(schema_name=>'SCOTT',
export_db_name"
"=>'CURSO01',inst_scn=>'2031207');"
"COMMIT;END;"
"CREATE TABLE "BONUS" ("ENAME" VARCHAR2(10), "JOB" VARCHAR2(9),
"SAL"NUMBER"
","COMM"NUMBER) PCTFREE10PCTUSED40INITRANS1MAXTRANS255
STORAGE(INI"
"TIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE50FRE"
"ELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
"SYSTEM"LOGGING"
"NOCOMPRESS"
..ignorandolatabla"BONUS"
"CREATE TABLE "DEPT" ("DEPTNO" NUMBER(2, 0), "DNAME"
VARCHAR2(14),"LOC"VAR"
"CHAR2(13)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(INITIAL6"
"5536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE
50FREELISTS"
" 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM"
LOGGINGNOCOM"
"PRESS"
..ignorandolatabla"DEPT"
"CREATEUNIQUEINDEX"PK_DEPT"ON"DEPT"("DEPTNO") PCTFREE10
INITRANS2"
"MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1
MAXEXTENTS21474"
"83645PCTINCREASE 50 FREELISTS 1FREELIST GROUPS 1BUFFER_POOL
DEFAULT)TAB"
"LESPACE"SYSTEM"LOGGING"
"ALTER TABLE "DEPT" ADD CONSTRAINT "PK_DEPT" PRIMARY KEY
("DEPTNO")USINGI"
"NDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536
NEXT65536MI"
"NEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 50 FREELISTS 1
FREELISTGROUPS"
"1BUFFER_POOLDEFAULT)TABLESPACE"SYSTEM"LOGGINGENABLE"
...
El resultado de la importacion, las sentencias de creacin, se
almacenarenelficherodelog.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez
168