Sei sulla pagina 1di 168

AdministracinBsicadeOracle9iPrcticasresueltas

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

SQL> select instance_name,host_name,version,startup_time,


status,archiver,logins,database_status from v$instance;
INSTANCE_NAME
---------------HOST_NAME
---------------------------------------------------------------VERSION
STARTUP_T STATUS
ARCHIVE LOGINS
DATABASE_STATUS
----------------- --------- ------------ ------- ---------- ----------------CURSOxy
cursos.atica.um.es
9.2.0.1.0
20-OCT-04 OPEN
STOPPED ALLOWED
ACTIVE

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.

La ubicacin por defecto es $ORACLE_HOME/dbs; y para el caso de usar OFA,


$ORACLE_BASE/admin/$ORACLE_SID/pfile(quesesueleasignaralavariablePFILE).
/home/CURSO/curso23 (CURSO23)> ls -l
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
lrwxrwxrwx
1 oracle dba
51 24 oct 08:42
/u01/app/oracle/product/9.2.0.1.0/dbs/initCURSO23.ora ->
/u01/app/oracle/admin/CURSO23/pfile/initCURSO23.ora

/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.

Anota el valor de los parmetros: db_block_size, shared_pool_size, db_cache_size,


log_buffer,processesasignadosenelinit.oradetuBD.

/home/CURSO/curso23 (CURSO23)> grep db_block_size


$PFILE/init$ORACLE_SID.ora
*** db_blcck_size no est asignado, por tanto toma el valor por defecto 2048.

/home/CURSO/curso23 (CURSO23)> grep db_cache_size


$PFILE/init$ORACLE_SID.ora
db_cache_size = 1M

/home/CURSO/curso23 (CURSO23)> grep shared_pool_size


$PFILE/init$ORACLE_SID.ora
shared_pool_size = 8M

/home/CURSO/curso23 (CURSO23)> grep log_buffer


$PFILE/init$ORACLE_SID.ora
log_buffer = 32768

/home/CURSO/curso23 (CURSO23)> grep processes


$PFILE/init$ORACLE_SID.ora
processes = 10

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.

SQL> connect / as sysdba


JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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

SQL> show parameter processes


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------processes
integer 10

SQL> show parameter shared_pool_size


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------shared_pool_size
string 4194304

SQL> show parameter db_cache_size


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------db_cache_size
integer 4194304

SQL> show parameter log_buffer


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------log_buffer
integer 32768

ParalaBDyarrancaconelinit01xy.ora.Compruebaelparmetroprocesses.Hazvarias
conexionesconsqlplusycompruebaquocurre.

SQL> shutdown immediate


Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.
SQL> startup pfile=init0101.ora
Instancia de ORACLE arrancada.
Total System Global Area
22908820
Fixed Size
73620
Variable Size
5885952
Database Buffers
16777216
Redo Buffers
172032
Base de datos montada.
Base de datos abierta.

bytes
bytes
bytes
bytes
bytes

SQL> show parameter processes


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------processes
integer 9

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.

SQL> shutdown immediate


Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.

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

SQL> show parameter processes


NAME
TYPE
VALUE
------------------------------------ ------- -----------------------------processes
integer 150
SQL> select count(*) from v$controlfile;
COUNT(*)
---------0

SQL> select * from dba_users;


select * from dba_users
*

JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

21

AdministracinBsicadeOracle9iPrcticasresueltas
ERROR en lnea 1:
ORA-01219: b. de datos no abierta: solo se permiten consultas en tablas/vistas
fijas

Ahora montar la BD y volver a consultar V$CONTROLFILE. Que sucede al leer


DBA_USERS.

AlmontarlaBD,seabreelficherodecontrolleyendosucontenido,deformaqueyasabemoslaubicaciny
elnombredecadaunodelosficherosquecomponenlaBD.
SQL> alter database mount;
Base de datos modificada.

SQL> select name from v$controlfile;


NAME
----------------------------------/u02/oradata/CURSOxy/control01.ctl
/u03/oradata/CURSOxy/control02.ctl
/u04/oradata/CURSOxy/control03.ctl

SQL> select * from dba_users;


select * from dba_users
*
ERROR en lnea 1:
ORA-01219: b. de datos
tablas/vistas
fijas

no

abierta:

solo

se

permiten

consultas

en

SQL> select count(*) from v$datafile;


COUNT(*)
---------5

SQL> select count(*) from v$logfile;


COUNT(*)
---------3

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

SQL> alter database open read only;


Base de datos modificada.

SQL> create table mitabla (c1 varchar2(2));


create table mitabla (c1 varchar2(2))
*

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> shutdown immediate


Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.

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

SQL> create table mitabla (c1 varchar2(2));


Tabla creada.

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

Busca si hay ficheros de traza, si son de usuario o de procesos background. Mira el


contenido.

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

/home/CURSO/curso01 (CURSOxy)> ls -lt /u01/app/oracle/admin/CURSOxy/bdump


total 280
-rw-rw-r-- 1 oracle dba
144537 nov 2 09:45 alert_CURSOxy.log
-rw-r----- 1 oracle oinstall
614 nov 2 09:35 curso01_lgwr_2785.trc
-rw-r----- 1 oracle oinstall
616 oct 29 13:19 curso01_lgwr_21906.trc
...
-rw-rw---- 1 oracle dba
657 ago 13 14:10 curso01_ora_13168.trc

SepuedeverelcontenidodelosficherosusandoelcomandomoredeLinux,ocatsielficheroecorto.

SacalalistadevistasdelDDyfjateenloscomentariosasociadosacadauna.Consulta
lascolumnasdedichasvistas.

SQL> select * from dictionary where table_name='DBA_TABLES';


TABLE_NAME
-----------------------------COMMENTS
-------------------------------------------------------------------------------DBA_TABLES
Description of all relational tables in the database
SQL> select * from dict_columns where table_name='DBA_TABLES';
TABLE_NAME
COLUMN_NAME
------------------------------ -----------------------------COMMENTS
-------------------------------------------------------------------------------DBA_TABLES
DEGREE

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

SQL> connect scott/tiger


ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
Aviso: Ya no est conectado a ORACLE!

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

SQL> alter system checkpoint;


Sistema modificado.
SQL> insert into scott.dept values (99,'FORMACION','MURCIA');
1 fila creada.
SQL> commit;
Validacin terminada.
SQL> shutdown abort
Instancia de ORACLE cerrada.
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

SQL> select * from scott.dept;


DEPTNO DNAME
LOC
---------- -------------- ------------10 ACCOUNTING
NEW YORK
20 RESEARCH
DALLAS
30 SALES
CHICAGO
40 OPERATIONS
BOSTON
99 FORMACION
MURCIA

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

11435 26 Oct 09:55 ora_150400_curso22.trc

cursos (CURSO22):/home/CURSO/curso22 >


salida_traza.txt explain=scott/tiger
TKPROF: Release 9.2.0.1.0 - Production
(c) Copyright 2000 Oracle Corporation.

tkprof $UDUMP/ora_150400_cursoxy.trc
sys=no
on Lun Oct 26 09:56:31 2004
All rights reserved.

cursos (CURSO22):/home/CURSO/curso22 > cat salida_traza.txt


...
********************************************************************************
count
= number of times OCI procedure was executed
cpu
= cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk
= number of physical reads of buffers from disk
query
= number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows
= number of rows processed by the fetch or execute call
********************************************************************************
...
********************************************************************************
select a.ename, b.dname
from
emp a, dept b where a.deptno=b.deptno
call
count
cpu
elapsed
disk
query
current
rows
------- ------ -------- ---------- ---------- ---------- ---------- ---------Parse
1
0.00
0.00
2
0
2
0
Execute
1
0.00
0.00
0
0
0
0
Fetch
2
0.00
0.00
3
18
4
14
------- ------ -------- ---------- ---------- ---------- ---------- ---------total
4
0.00
0.00
5
18
6
14
...
Optimizer goal: CHOOSE
...
Rows
Execution Plan
------- --------------------------------------------------0 SELECT STATEMENT
GOAL: CHOOSE
14
NESTED LOOPS
15
TABLE ACCESS (FULL) OF 'EMP'
14
TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
28
INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
********************************************************************************
...
********************************************************************************
OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS
call
count
cpu
elapsed
disk
query
current
rows
------- ------ -------- ---------- ---------- ---------- ---------- ---------Parse
2
0.00
0.00
2
0
2
0
Execute
3
0.00
0.00
0
0
0
0
Fetch
2
0.00
0.00
3
18
4
14
------- ------ -------- ---------- ---------- ---------- ---------- ---------total
7
0.00
0.00
5
18
6
14
...
OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS
call
count
cpu
elapsed
disk
query
current
rows

JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

29

AdministracinBsicadeOracle9iPrcticasresueltas
------- -----Parse
13
Execute
23
Fetch
45
------- -----total
81
...

-------- ---------- ---------- ---------- ---------0.00


0.00
0
0
0
0.00
0.00
0
0
0
0.00
0.00
2
73
0
-------- ---------- ---------- ---------- ---------0.00
0.00
2
73
0

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----

1 oracle dba 4384768 nov


1 oracle dba 4384768 nov

4 12:36 /u02/oradata/CURSOxy/ora_control1
4 12:36 /u03/oradata/CURSOxy/ora_control2

/home/CURSO/curso01 (CURSOxy)> ls -lat


/u0?/oradata/$ORACLE_SID/*.ctl
ls: /u0?/oradata/CURSOxy/*.ctl: No existe el fichero o el directorio

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

Si hacemos un checkpoint, que se registra en el fichero de control, se actualiza la columna


V$DATABASE.CONTROLFILE_SEQUENCE#.
SQL> alter system checkpoint;

Sistema modificado.

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

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.

3.3. Aade una copia al fichero de control de la BD en


/home/u04/oradata/$ORACLE_SID.
TenemosquecerrarlaBDantesdecrearlacopiadelficherodecontrol.Despus,copiamoselficherode
controlen/home/u04/oradata/$ORACLE_SID.Aadimoselnuevoficheroenelparmetrocontrol_filesdel
init.ArrancamoslaBD.Yfinalmente,comprobamosqueelnuevoficheroaparezcaenV$CONTROLFILE.
SQL> shutdown immediate
Base de datos cerrada.
Base de datos desmontada.
Instancia de ORACLE cerrada.
/home/CURSO/curso01 (CURSOxy)> cp -p /home/u02/oradata/CURSOxy/ora_control1
/home/u04/oradata/CURSOxy/ora_control3
OJO !!! hay que usr la opcin -p para mantener los permisos del
original.
/home/CURSO/curso01 (CURSOxy)> ls -l /home/u04/oradata/CURSOxy/ora_control3
-rw-rw---- 1 curso01 dba 4384768 nov 4 13:15
/home/u04/oradata/CURSOxy/ora_control3tl
/home/CURSO/curso01 (CURSOxy)> cp $ORACLE_HOME/dbs/init$ORACLE_SID.ora
initxy02.ora

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)

SQL> startup pfile=init0102.ora


ORACLE instance started.
Total System Global Area
Fixed Size
Variable Size
Database Buffers
Redo Buffers

34148352
450560
29360128
4194304
143360

bytes
bytes
bytes
bytes
bytes

SQL> select name from v$controlfile;


NAME
-------------------------------------------------------------------------------/home/u02/oradata/CURSOxy/ora_control1
/home/u03/oradata/CURSOxy/ora_control2
/home/u04/oradata/CURSOxy/ora_control3

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

SQL> select CONTROLFILE_SEQUENCE#,checkpoint_change#,LOG_MODE from v$database;


CONTROLFILE_SEQUENCE# CHECKPOINT_CHANGE# LOG_MODE
--------------------- ------------------ -----------1860
1178372 NOARCHIVELOG
SQL> alter system checkpoint;
Sistema modificado.
SQL> select CONTROLFILE_SEQUENCE#,checkpoint_change#,LOG_MODE from v$database;
CONTROLFILE_SEQUENCE# CHECKPOINT_CHANGE# LOG_MODE
--------------------- ------------------ -----------1861
1178432 NOARCHIVELOG

4.3. Aade un miembro ms a cada grupo:/u03/oradata/$ORACLE_SID/redo11.log,


/u03/oradata/$ORACLE_SID/redo12.log,/u03/oradata/$ORACLE_SID/redo13.log.
Hastaahorahaba3gruposredolog,con1miembrocadaunobajo/u04.Alaadirunmiembroacadagrupo
bajo/u03,pasarnatener2miembroscadauno(consultarV$LOGyV$LOGFILE),endiscosdistintos.
SQL> alter database add logfile member

'/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

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


/u03/oradata/$ORACLE_SID/redo04.logy/u04/oradata/$ORACLE_SID/redo14.log.Aade
2gruposms(grupo5y6),conlasmismascaractersticas.
Tenemos ficheros redolog de 512Kb, y vamos a crearlos de 1M, para poder alargar el tiempo entre
checkpoints.Paracadanuevogrupocrearemos2miembrosendiscosfsicosdistintos.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

37

AdministracinBsicadeOracle9iPrcticasresueltas

SQL> alter database add logfile group 4

('/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

SQL> alter database drop logfile group 3;


Database altered.
SQL> select member from v$logfile;
MEMBER
-------------------------------------------------------------------------------/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
6 filas seleccionadas.

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

SQL> select member from v$logfile;


MEMBER
-------------------------------------------------------------------------------/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
6 filas seleccionadas.
SQL> alter database rename file '/u03/oradata/CURSOxy/redo04.log' to
'/u03/oradata/CURSOxy/redo1a.log';
ORA-01512: error renaming log file /u03/oradata/CURSOxy/redo04.log - new file
/u03/oradata/CURSOxy/redo1a.log not found

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.

o Crea una tabla TABLA04 de 256K en el tablespace DATACURSOxx, qu

ocurreyporqu?.Activaelautoextenddesufichero,ajustandonext256Ky
maxsize2M.VuelveacrearlatablaTABLA04.

Crea el tablespace INDCURSOxx de 1M con el fichero


'/u02/oradata/CURSOxx/indcursoxx01.dbf'. Muvelo al directorio
'/u03/oradata/CURSOxx'.

o RedimensionareltablespaceDATACURSOxxa1Mquocurreyporqu?.

RedimensionareltablespaceINDCURSOxxa512K,yaadirleotroficherode
512K.

o CrearuntablespacedeundoUNDO_CURSOxx.Convertirloeneltablespace

de undo activo. Crear una tabla TABLA05 en el nuevo tablespace, qu


ocurre?ConsultarlavistaV$UNDOSTAT.

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#,

to_char(CHECKPOINT_TIME,'dd/mm/yyyy hh24:mi') CHECKPOINT_TIME


from v$datafile;
NAME
CHECKPOINT_CHANGE# CHECKPOINT_TIME
---------------------------------------- ------------------ ---------------/home/u02/oradata/CURSOxy/system01.dbf
1179986 08/11/2004 13:06
/home/u02/oradata/CURSOxy/tools01.dbf
1179986 08/11/2004 13:06
/home/u03/oradata/CURSOxy/rbs01.dbf
1179986 08/11/2004 13:06
/home/u02/oradata/CURSOxy/users01.dbf
1179986 08/11/2004 13:06

5.2. Crea el tablespace DATACURSOxx, NO manejado localmente, con el fichero


/u02/oradata/datacursoxx01.dbf, con un tamao de 1M. Crea 3 tablas (TABLA01,
TABLA02,TABLA03)de256Ksobredichotablespace.BorralastablaTABLA02ycrea
una tabla TABLA04 de 352K. Qu ocurre y por qu?. Borra el tablespace
DATACURSOxxycralodenuevo,manejadolocalmente.Vuelveacrearlas tablasy
repiteelborradodeTABLA02;ylacreacindeTABLA04.Quocurreestavezypor
qu?
Lostablespaces'manejadoslocalmente'gestionanmejorloshuecoslibres,eliminandolafragmentacinque,
en el caso de tablespaces tradicionales, provoca el borrado de objetos. El espacio libre inicial en los
'tablespaceslocales'esalgomenorqueenlos'tradicionales',yaquesepierdeespacioparaelbitmap.
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

43

AdministracinBsicadeOracle9iPrcticasresueltas

SQL> Create tablespace DATACURSOxy

datafile '/u02/oradata/CURSOxy/datacurso0101.dbf' size 1M


extent management dictionary;
Tablespace creado.
SQL> select tablespace_name,extent_management from dba_tablespaces
where tablespace_name='DATACURSOxy';
TABLESPACE_NAME
EXTENT_MAN
------------------------------ ---------DATACURSOxy
DICTIONARY
SQL> create table TABLA01 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> create table TABLA02 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> create table TABLA03 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> drop table tabla02;
Tabla borrada.
SQL> select bytes from dba_free_space where tablespace_name='DATACURSOxy';
BYTES
---------247808
266240
SQL> create table TABLA02 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 352K minextents 1);


ORA-01658: no se ha podido crear extensin INITIAL para el segmento en el
tablespace DATACURSOxy

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

datafile '/u02/oradata/CURSOxy/datacurso0101.dbf' size 1M

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))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> create table TABLA02 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> create table TABLA03 (C1 VARCHAR2(4000))

tablespace DATACURSOxy storage (initial 256K minextents 1);


Tabla creada.
SQL> drop table tabla02;
Tabla borrada.
SQL> select bytes from dba_free_space where tablespace_name='DATACURSOxy';
BYTES
---------262144
131072
SQL> create table TABLA02 (C1 VARCHAR2(4000))
tablespace DATACURSOxy storage (initial 352K minextents 1);
Tabla creada.
SQL> select bytes from dba_free_space where tablespace_name='DATACURSOxy';
ninguna fila seleccionada

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

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


'/u02/oradata/CURSOxx/indcursoxx01.dbf'.

Muvelo

al

directorio
'/u03/oradata/CURSOxx'.
Paramoverorenombrarunficherodeuntablespace,steltimodebeestarOFFLINE.
SQL> Create tablespace INDCURSOxy

datafile '/u02/oradata/CURSOxy/indcurso0101.dbf' size 1M


reuse
extent management local uniform size 64K;
Tablespace creado.
SQL> alter tablespace indcurso01 offline;
Tablespace modificado.
SQL> !mv /u02/oradata/CURSOxy/indcurso0101.dbf
/u03/oradata/CURSOxy/indcurso0101.dbf
SQL> alter tablespace indcurso01

rename datafile '/u02/oradata/CURSOxy/indcurso0101.dbf' to


'/u03/oradata/CURSOxy/indcurso0101.dbf';
Tablespace modificado.
SQL> alter tablespace indcurso01 online;
Tablespace modificado.
SQL> select file_name from dba_data_files;
FILE_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
/u02/oradata/CURSOxy/datacurso0101.dbf
/u03/oradata/CURSOxy/indcurso0101.dbf
6 rows selected.

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

BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS

------------------------------ ---------- -------------- ----------- ----------MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS

CONTENTS

LOGGING

FOR EXTENT_MAN

----------- ------------ ---------- --------- --------- --------- --- ---------ALLOCATIO PLU SEGMEN
--------- --- -----UNDO_CURSOxy

2048

2147483645
SYSTEM

NO

65536 ONLINE

65536
UNDO

1
LOGGING

NO

LOCAL

MANUAL

SQL> CREATE TABLE TABLA05 (C1 VARCHAR2(2)) TABLESPACE UNDO_CURSOxy;


ORA-30022: Cannot create segments in undo tablespace
SQL> SHOW PARAMETER UNDO_TABLESPACE
NAME

TYPE

VALUE

JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

48

AdministracinBsicadeOracle9iPrcticasresueltas
------------------------------------ ----------- -----------------------------undo_tablespace

string

UNDO_RBS1

SQL> SELECT SEGMENT_NAME,TABLESPACE_NAME,STATUS FROM DBA_ROLLBACK_SEGS;


SEGMENT_NAME

TABLESPACE_NAME

STATUS

------------------------------ ------------------------------ ---------------SYSTEM

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

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.

SQL> select to_char(BEGIN_TIME,'dd/mm/yyyy hh24:mi') BEGIN_TIME,b.name


TABLESPACE,
UNDOBLKS,TXNCOUNT
from V$UNDOSTAT a, v$tablespace b
WHERE A.UNDOTSN=B.TS#
ORDER BY BEGIN_TIME;
BEGIN_TIME

NAME

UNDOBLKS

TXNCOUNT

---------------- ------------------------------ ---------- ---------...

JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

49

AdministracinBsicadeOracle9iPrcticasresueltas
21/02/2005 13:38 UNDO_RBS1

1096

21/02/2005 13:48 UNDO_CURSOxy

1108

21/02/2005 13:58 UNDO_CURSOxy

10

1130

21/02/2005 14:08 UNDO_CURSOxy

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

------------------------------------ ----------- -----------------------------sort_area_size

integer

65536

SQL> create temporary tablespace temp_curso01 tempfile


'/u03/oradata/CURSOxy/temp_curso0101.dbf' size 1M extent management local
uniform size 64K
Tablespace created.
SQL> alter tablespace temp_curso01 read only;
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
SQL> alter tablespace temp_curso01 offline;
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
SQL> alter database default temporary tablespace temp_curso01;
Database altered.
SQL> drop tablespace temp_curso01;
ORA-12906: cannot drop default temporary tablespace
SQL> alter database default temporary tablespace temp;
Database altered.

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.

SQL> select * from dba_sys_privs where privilege ='CREATE


SESSION';
GRANTEE PRIVILEGE
ADM

DBA CREATE SESSION


YES
CONNECT CREATE SESSION
NO
ADMINISTRADOR CREATE SESSION
NO
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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

DBA CREATE ROLE


YES
IMP_FULL_DATABASE CREATE ROLE
NO
21. CrearunrolllamadoADMIN,asignarlelosprivilegioscreatesession,createuseryCREATEROLE.Asignarlo
alusuarioadministrador.

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

ADMINISTRADOR CREATE SESSION


NO
ADMINISTRADOR CREATE USER
NO
SQL>revokecreatesessionfromadministrador;
Revokesucceeded.
SQL>c.session.user.
1*revokecreateuserfromadministrador
SQL>r
1*revokecreateuserfromadministrador
Revokesucceeded.
SQL>grantadmintoadministrador;
Grantsucceeded.
23. Crear,conectadocomoSYSTEM,unusuariollamadoprueba01autenticadoporbasededatosalquenosele
asigne"tablespace"pordefectonitemporal.

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.

SQL> select * from dba_ts_quotas where username in


('PRUEBA01','PRUEBA02');
norowsselected
28. CrearunrolllamadoCONEXINyasignarleelpermisoCREATESESSION.

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.

Editar con vi o ejecutar la sentencia pg sobre el fichero de


parametrosdeinicializacion(init<SID>.ora).
57. Cambialaidentificacindelusuarioprueba01deformaqueseaidentificadoporelsistemaoperativo.

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).

Editar con vi o ejecutar la sentencia pg sobre el fichero de


parametrosdeinicializacion(init<SID>.ora).Indicar:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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.

SQL> select * from dba_sys_privs where privilege='ALTER


PROFILE';
GRANTEE PRIVILEGE
ADM

DBA ALTER PROFILE


YES
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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?.

SQL> select profile, substr(resource_name,1,25) nombre_recurso,


substr(limit,1,20) limite from dba_profiles where profile =
'DESARROLLO';
PROFILENOMBRE_RECURSOLIMITE

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?.

SQL> select * from dba_role_privs where grantee in


('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE
')orderbygrantee,granted_role
GRANTEE GRANTED_ROLE
ADMDEF

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

SQL> select * from dba_sys_privs where grantee in


('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE
')orderbygrantee,privilege;
GRANTEE PRIVILEGE
ADM

CONNECT ALTER SESSION


NO
CONNECT CREATE CLUSTER
NO
CONNECT CREATE DATABASE LINK
NO
CONNECT CREATE SEQUENCE
NO
CONNECT CREATE SESSION
NO
CONNECT CREATE SYNONYM
NO
CONNECT CREATE TABLE
NO
CONNECT CREATE VIEW
NO
DBA ADMINISTER DATABASE TRIGGER
YES
DBA ADMINISTER RESOURCE MANAGER
YES
DBA
...
SQL>selectgrantee,table_name,privilegefromdba_tab_privs
wheregranteein
('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL_DATABASE
')orderbygrantee,table_name,privilege
DBADBMS_DEFER_QUERYEXECUTE
DBADBMS_DEFER_SYSEXECUTE
65. PuedeasignarseelperfilDESARROLLOalrolCONNECT?.YelperfilDEFAULTalperfilDESARROLLO?:

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> select * from dba_sys_privs where privilege='ALTER ANY


ROLE';
DBA ALTER ANY ROLE
YES
71. QuvalortieneenlabasededatoselparmetroMAX_ENABLED_ROLES?.Modificarsuvalorparaque,en
adelante,valga40.Comprobarestamodificacion.

SQL>showparametersmax_enabled_roles
max_enabled_rolesinteger30
72. AveriguarqueusuariosposeenelprivilegioGRANTANYROLE(deformadirectaoatravsderoles).

SQL> select * from dba_sys_privs where privilege='GRANT ANY


ROLE';
DBA GRANT ANY ROLE
YES

73. Comousuarioadministrador,deasignarelrolSECRETOalusuarioprueba04.

SQL>revokesecretofromprueba04;
Revokesucceeded.
74. AsignarelprivilegioGRANTANYROLEalrolADMIN..

JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

112

AdministracinBsicadeOracle9iPrcticasresueltas

SQL>connectsystem
Enterpassword:
Connected.
SQL>grantgrantanyroletoadmin;
Grantsucceeded.
75. Repetirelejercicio66.

SQL> select * from dba_sys_privs where privilege='GRANT ANY


ROLE';
ADMIN GRANT ANY ROLE
NO

DBA GRANT ANY ROLE


YES
76. AveriguarqueusuariosposeenelprivilegioDROPANYROLE(deformadirectaoatravsderoles).

SQL> select * from dba_sys_privs where privilege='DROP ANY


ROLE';
DBA DROP ANY ROLE
YES
IMP_FULL_DATABASE DROP ANY ROLE
NO
77. Asignarpermisodeconexinalusuario"prueba03",asignarelrolSECRETOalmismousuario.Conectarsecomo
esteusuarioeintentarborrarelrol.

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

CONNECT CREATE VIEW


NO
CONNECT CREATE TABLE
NO
CONNECT ALTER SESSION
NO
CONNECT CREATE CLUSTER
NO
CONNECT CREATE SESSION
NO
CONNECT CREATE SYNONYM
NO
CONNECT CREATE SEQUENCE
NO
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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.

SQL> select job,


to_char(next_date, 'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25), failures, broken, what from
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+5/1440
N
SYSTEM.MONITORIZAR_USUARIOS;
13. Repetirelejercicioanteriorparaelusuarioprueba01.

SQL> select job,


to_char(next_date, 'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25), failures, broken, what from
dba_jobswhereschema_user='PRUEBA01';
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB

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.

SQL> select job,


to_char(next_date, 'ddmmyyyy
hh24:mi:ss'),substr(interval,1,25), failures, broken, what from
user_jobs;
JOBTO_CHAR(NEXT_DATE,'SUBSTR(INTERVAL,1,25)
FAILURESB

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

DBA AUDIT ANY


YES
IMP_FULL_DATABASE AUDIT ANY
NO
SQL>select*fromdba_sys_privswhereprivilege='AUDITSYSTEM';
GRANTEE PRIVILEGE
ADM

DBA AUDIT SYSTEM


YES
5. Auditartodaslasconexionesexitosasyfallidasalabasededatos.

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).

SQL> audit select table, delete table, update table, insert


tablebyaccess;
Auditsucceeded.
SQL> select user_name usuario, audit_option opcion, success,
failurefromDBA_STMT_AUDIT_OPTSorderbyuser_name
USUARIOOPCIONSUCCESSFAILURE

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

oracle PRUEBA02 2911004 12:08:54 SYS DUAL


SELECT
oracle PRUEBA02 2911004 12:08:54 SYS DUAL
SELECT
oracle PRUEBA02 2911004 12:08:54 SYS DUAL
SELECT
oraclePRUEBA02291100412:08:54SYSTEMPRODUCT_PRIVS
SELECT
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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.

SQL> select substr(user_name,1,12) usuario, privilege,


success,failure from dba_priv_audit_opts order by user_name,
privilege;
USUARIOPRIVILEGESUCCESS
FAILURE

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> select substr(owner,1,10) prop,substr(table_name,1,8)


tabla,substr(tablespace_name,1,10) espacio, INITIAL_EXTENT,
NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS from dba_tables where
table_name='AUD$';
PROP TABLA ESPACIO INITIAL_EXTENT NEXT_EXTENT
MIN_EXTENTSMAX_EXTENTS

SYS AUD$ SYSTEM 10240 16384


1121
20. Auditarcualquiercambioqueserealiceenelaudittrail.

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

PRUEBA02 CREATESESSION BYACCESS BY


ACCESS
PRUEBA01 CREATESESSION BYACCESS BY
ACCESS
ALTERUSERBYACCESSBY
ACCESS
DROPUSERBYACCESSBY
ACCESS

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

oracle PRUEBA01 2911004 11:53:50 29112004


11:55:37
oracle PRUEBA01 2911004 12:07:32 29112004
12:08:54
curso01 PRUEBA01 0212004 10:37:26 02122004
10:38:25
oraclePRUEBA02291100411:55:37
oracle PRUEBA02 2911004 12:08:54 29112004
12:10:42
curso01 PRUEBA02 0212004 10:38:25 02122004
10:40:03
oracle SYSTEM 2911004 11:53:44 29112004
11:53:50
oracle SYSTEM 2911004 12:10:42 29112004
12:22:42

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;

USUARIO TIEMPO_CONEXION PROPIE OBJETO


ACCION

PRUEBA02 0212004 10:38:35 SCOTT EMP


LOCK
PRUEBA02 0212004 10:38:45 SCOTT EMP
DELETE
PRUEBA02 0212004 10:39:12 SCOTT EMP
DELETE
Debe tenerse en cuenta que la opcin para auditar las
sentencias alter,index,...esposterioralacreacindel
objeto.
Si,explcitamente,seauditalatablaemp.
SQL>auditalter,INDEX,RENAMEONscott.empbysession;
Auditsucceeded.
SQL>connectprueba02
Enterpassword:
Connected.
SQL>
SQL>ALTERTABLEscott.empSTORAGE(NEXT500K);
Tablealtered.
SQL>CREATEINDEXscott.ename_indexONscott.emp(ename);
CREATEINDEXscott.ename_indexONscott.emp(ename)
*
ERRORatline1:
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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

Lanzar la exportacin (se conectara como usuario


"administrador").

/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

En el caso, por ejemplo, del ejercicio 10, el fichero de


parmetrosquedaradeestaforma:
file=/export/CURSO01/scottd_scott03.dmp
log=/export/CURSO01/scottd_scott03.log
owner=(SCOTT)
compress=y
direct=y
RECORDLENGTH=65535
/export/CURSO01(CURSO01)>expparfile=pard_scott03
Export:Release9.2.0.1.0ProductiononJueDic913:39:312004
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
.exportandoaccionesyobjetosdeprocedimientopreesquema
. exportando nombres de biblioteca de funciones ajenas para el
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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.

SQL> select tablespace_name, max_bytes from dba_ts_quotas where


tablespace_name='USERS'andusernamein('PRUEBA01','PRUEBA02');
JuanLuisSerradillaAmarillayFranciscoFernndezMartnez

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

Potrebbero piacerti anche