PRACTICAS TEMA 1.

Transcripción

PRACTICAS TEMA 1.
Administración Básica de Oracle9i
PRACTICAS TEMA 1. ARQUITECTURA DE LA BASE DE DATOS.
1.1. Comprobar las variables de entorno necesarias para conectarnos a la BD.
1.2. Identificar los procesos que componen instancia.
1.3. Ver el tamaño de la SGA de la BD.
1.4. Comprobar valores de parámetros del init relacionados con el tamaño de la SGA.
1.5. Comprobar ficheros que componen la BD y ubicarlos en la estructura OFA.
1.6. Identificar la estructura lógica de la BD: tablespaces, segmentos, extensiones.
1.7. Consultar información sobre la base de datos (v$database) y la instancia (v$instance).
1.8. Localizar el proceso “servidor” asociado a mi sesión (v$process y v$session). ¿Es un servidor dedicado o compartido?
1.9. ¿Cuanto ocupa la Dictionary cache y la Library cache en tu BD? (v$sgastat)
1.10. Ver la actividad de la Library Cache (v$librarycache).
1.11. Ver las sentencias SQL que guarda la Shared­Pool (v$sqlarea).
1.12. Crear un fichero de autenticación y activar su uso.
1.13. ¿Qué ocurre si “quitamos” la variable LD_LIBRARY_PATH?
1.14. Asignar la variable NLS_LANG para nuestro país y comprobar el cambio en las respuestas de Oracle desde sqlplus.
1.15. Subir el tamaño de la shared­pool de 12 a 14M y comprobar cómo aumenta el espacio libre.
1.16. Comprobar el funcionamiento de la caché de redolog, como protectora del contenido de la caché de datos. 1.17. Comprobar el funcionamiento de la caché de datos, en lo que se refiere a la mejora del rendimiento cuando se repite una consulta.
Recursos.
­ Máquina: cursos.atica.um.es
­ Usuario unix: curso51 a curso70
­ Conexión máquina unix: ssh con Secure Shell
­ Bases de datos: CURSO51 a CURSO70
­ Conexión a bd: sqlplus desde sesión unix, usuario “/ as sysdba”
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
1
Administración Básica de Oracle9i
En primer lugar, si ya no lo está, hay que arrancar la base de datos. En el ejemplo vemos el arranque de la base de datos CURSOxy, desde el usuario curso01 de Linux:
/home/CURSO/curso01 (CURSOxy)> sqlplus
SQL*Plus: Release 9.2.0.1.0 ­ Production on Wed Oct 20 12:39:05 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter user­name: / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 34148352 bytes
Fixed Size 450560 bytes
Variable Size 29360128 bytes
Database Buffers 4194304 bytes
Redo Buffers 143360 bytes
Database mounted.
Database opened.
1.1. Comprobar la asignación de variables de entorno necesarias para conectarnos a la BD.
Se trata de las variables $ORACLE_HOME, $ORACLE_SID, $LD_LIBRARY_PATH y $PATH.
Nota: si no asignamos LD_LIBRARY_PATH en Linux, es posible que no podamos ejecutar sqlplus, obteniendo un error similar a:
sqlplus: error while loading shared libraries: libclntsh.so: cannot open shared
object file: No such file or directory
Si no sucede el error es posible que no se haya compilado con librerías compartidas, o que el sistema tenga acceso a dichas librerías de otro modo, como /etc/ld.so.conf o un enlace en /usr/lib, etc.
Solución:
/home/CURSO/curso01 (CURSOxy)> echo $ORACLE_HOME
/u01/app/oracle/product/9.2.0.1.0
/home/CURSO/curso01 (CURSOxy)> echo $ORACLE_SID
CURSO01
/home/CURSO/curso01 (CURSOxy)> echo $PATH
/u01/app/oracle/product/9.2.0.1.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:
/usr/X11R6/bin:/home/CURSO/curso02/bin
/home/CURSO/curso01 (CURSOxy)> echo $LD_LIBRARY_PATH
/u01/app/oracle/product/9.2.0.1.0/lib
1.2. Identificar los procesos que componen instancia.
Los podemos identificar desde el S.O., por ejemplo, en Unix con el comando "ps ­ef" que permite ver todos los procesos en ejecución en el sistema, filtrando por el nombre de la instancia de BD:
ps ­ef|grep curso01
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
2
Administración Básica de Oracle9i
También lo podemos hacer consultando la vista dinámica V$PROCESS (o directamente en V$BGPROCESS), en la BD en cuestión:
select * from v$process where background is not null;
o bien
select * from v$process a, v$bgprocess b where a.ADDR=b.PADDR;
Solución:
/home/CURSO/curso01 (CURSOxy)> ps ­ef|grep CURSOxy
oracle 30205 1 0 09:32 ? 00:00:00 ora_pmon_CURSOxy
oracle 30207 1 0 09:32 ? 00:00:00 ora_dbw0_CURSOxy
oracle 30209 1 0 09:32 ? 00:00:00 ora_lgwr_CURSOxy
oracle 30211 1 0 09:32 ? 00:00:00 ora_ckpt_CURSOxy
oracle 30213 1 0 09:32 ? 00:00:00 ora_smon_CURSOxy
oracle 30215 1 0 09:32 ? 00:00:00 ora_reco_CURSOxy
curso01 30528 30492 0 12:58 pts/11 00:00:00 grep CURSOxy
SQL> select username,program from v$process
where background is not null;
USERNAME PROGRAM
­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
curso01 [email protected] (PMON)
curso01 [email protected] (DBW0)
curso01 [email protected] (LGWR)
curso01 [email protected] (CKPT)
curso01 [email protected] (SMON)
curso01 [email protected] (RECO)
6 rows selected.
SQL> select name,description from v$process a, v$bgprocess b where a.ADDR=b.PADDR;
NAME DESCRIPTION
­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
PMON process cleanup
DBW0 db writer process 0
LGWR Redo etc.
CKPT checkpoint
SMON System Monitor Process
RECO distributed recovery
6 rows selected.
1.3. Ver el tamaño de la SGA de la BD.
Hay dos vistas dinámicas de la BD que nos dan información sobre el tamaño y la estructura de la SGA: V$SGA y V$SGASTAT.
select * from v$sga;
select * from v$sgastat;
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
3
Administración Básica de Oracle9i
Solución:
SQL> select * from v$sga;
NAME VALUE
­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­
Fixed Size 450560
Variable Size 29360128
Database Buffers 4194304
Redo Buffers 143360
SQL> select * from v$sgastat;
POOL NAME BYTES
­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­
fixed_sga 450560
buffer_cache 4194304
log_buffer 133120
...
shared pool sql area 2343928
...
shared pool free memory 5534064
shared pool PL/SQL DIANA 406632
shared pool PL/SQL MPCODE 43652
shared pool library cache 1834420
...
shared pool dictionary cache 1610880
...
41 rows selected.
SQL> select * from v$sgastat where name in ('library cache','dictionary cache','sql area',
'buffer_cache','log_buffer');
POOL NAME BYTES
­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­
buffer_cache 4194304
log_buffer 133120
shared pool sql area 2343928
shared pool library cache 1834420
shared pool dictionary cache 1610880
1.4. Comprobar valores de parámetros del init relacionados con el tamaño de la SGA.
Los parámetros de inicialización más importantes que afectan al tamaño de la SGA son: shared_pool_size, db_cache_size, db_block_size, log_buffer, large_pool_size y java_pool_size.
Solución:
SQL> show parameter shared_pool_size
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
shared_pool_size big integer 12582912
SQL> show parameter db_cache_size
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
4
Administración Básica de Oracle9i
db_cache_size big integer 4194304
SQL> show parameter db_block_size
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
db_block_size integer 2048
SQL> show parameter log_buffer
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
log_buffer integer 1048576
SQL> show parameter large_pool_size
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
large_pool_size big integer 0
SQL> show parameter java_pool_size
NAME TYPE VALUE
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
java_pool_size big integer 0
1.5. Comprobar ficheros que componen la BD y ubicarlos en la estructura OFA.
Los ficheros que componen la BD los podemos consultar desde el propio S.O. o desde la BD. Desde el S.O., y teniendo en cuenta la estructura OFA los encontraremos en /u0?/oradata/CURSOxy, dado que nuestros puntos de montaje son /u01, /u02, /u03 y /u04:
ls ­l /u0?/oradata/CURSOxy
Podemos localizar cada tipo de fichero (datafile, control y redolog) por la extensión; por ejemplo: dbf, ctl y log.
¡¡¡ Ojo !!!, ésto no es más que una convención, las extensiones pueden ser otras, o incluso no existir.
Otra opción es acceder a la información de los ficheros de control desde la propia BD, consultando las vistas dinámicas V$DATAFILE, V$TEMPFILE, V$CONTROLFILE y V$LOGFILE:
select * from v$datafile;
select * from v$tempfile;
select * from v$logfile;
select * from v$controlfile;
Solución:
/home/CURSO/curso01 (CURSOxy)> ls ­l /u0?/oradata/$ORACLE_SID
/u02/oradata/CURSOxy:
total 269892
­rw­rw­­­­ 1 oracle9 dba 3459072 sep 19 13:44 control1.ctl
­rw­rw­­­­ 1 oracle9 dba 272631808 sep 19 13:16 system01.dbf
/u03/oradata/CURSOxy:
total 23968
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
5
Administración Básica de Oracle9i
­rw­rw­­­­ 1 oracle9 dba 3459072 sep 19 13:44 control2.ctl
­rw­rw­­­­ 1 oracle9 dba 10487808 sep 11 12:51 temp01.dbf
­rw­rw­­­­ 1 oracle9 dba 20973568 sep 19 13:36 undo_rbs01.dbf
/u04/oradata/CURSOxy:
total 30780
­rw­rw­­­­ 1 oracle9 dba 10486272 sep 19 13:41 redo01.log
­rw­rw­­­­ 1 oracle9 dba 10486272 sep 19 10:58 redo02.log
­rw­rw­­­­ 1 oracle9 dba 10486272 sep 19 10:58 redo03.log
SQL> select name from v$datafile;
NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
/u02/oradata/CURSOxy/system01.dbf
/u03/oradata/CURSOxy/undo_rbs01.dbf
SQL> select name from v$tempfile;
NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
/u03/oradata/CURSOxy/temp01.dbf
SQL> select member from v$logfile;
MEMBER
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
/u04/oradata/CURSOxy/redo01.log
/u04/oradata/CURSOxy/redo02.log
/u04/oradata/CURSOxy/redo03.log
SQL> select name from v$controlfile;
NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
/u02/oradata/CURSOxy/control1.ctl
/u03/oradata/CURSOxy/control2.ctl
1.6. Identificar la estructura lógica de la BD: tablespaces, segmentos, extensiones.
En el DD de la BD tenemos vistas que nos permiten comprobar la estructura lógica de la BD: DBA_TABLESPACES, DBA_DATA_FILES, DBA_SEGMENTS y DBA_EXTENTS.
select * from dba_tablespaces;
select * from dba_datafiles;
select * from dba_tempfiles;
select * from dba_segments;
select * from dba_extents;
Solución: SQL> select tablespace_name from dba_tablespaces order by tablespace_name;
TABLESPACE_NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
SYSTEM
TEMP
UNDO_RBS
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
6
Administración Básica de Oracle9i
SQL> select tablespace_name,file_name from dba_data_files order by tablespace_name, file_name;
TABLESPACE_NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
FILE_NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
SYSTEM
/u02/oradata/CURSOxy/system01.dbf
UNDO_RBS
/u03/oradata/CURSOxy/undo_rbs01.dbf
SQL> select tablespace_name,file_name from dba_temp_files
order by tablespace_name, file_name;
TABLESPACE_NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
FILE_NAME
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
TEMP
/u03/oradata/CURSOxy/temp01.dbf
SQL> select tablespace_name,segment_type,count(*) segmentos
from dba_segments
group by tablespace_name,segment_type;
TABLESPACE_NAME SEGMENT_TYPE SEGMENTOS
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­
SYSTEM CACHE 1
SYSTEM INDEX 442
SYSTEM TABLE 369
SYSTEM CLUSTER 10
SYSTEM LOBINDEX 49
SYSTEM ROLLBACK 1
SYSTEM LOBSEGMENT 49
SYSTEM INDEX PARTITION 24
SYSTEM TABLE PARTITION 27
UNDO_RBS TYPE2 UNDO 5
10 rows selected.
SQL> select tablespace_name,segment_type,count(*)
from dba_extents
group by tablespace_name,segment_type;
TABLESPACE_NAME SEGMENT_TYPE EXTENSIONES
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­
SYSTEM CACHE 1
SYSTEM INDEX 605
SYSTEM TABLE 750
SYSTEM CLUSTER 51
SYSTEM LOBINDEX 49
SYSTEM ROLLBACK 27
SYSTEM LOBSEGMENT 60
SYSTEM INDEX PARTITION 24
SYSTEM TABLE PARTITION 27
UNDO_RBS TYPE2 UNDO 10
10 rows selected.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
7
Administración Básica de Oracle9i
1.7. Consultar información sobre la base de datos (v$database) y la instancia (v$instance).
Podemos obtener información de la base de datos y de la instancia, de las vistas V$DATABASE y V$INSTANCE, respectivamente.
Solución: 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.6.0
20-OCT-04 OPEN
STOPPED ALLOWED
ACTIVE
1.8. Localizar el proceso “servidor” asociado a mi sesión (v$process y v$session). ¿Es un servidor dedicado o compartido?
Toda sesión tiene dos vertientes: cliente y servidor. En el cliente tenemos el proceso de usuario que inicia la sesión y en el servidor de base de datos tendremos el proceso que sirve las peticiones de dicha sesión; que puede ser un servidor dedicado o compartido. En las vistas V$SESSION y V$PROCESS tenemos toda la información relativa a sesiones y procesos, respectivamente.
Solución: 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
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
8
Administración Básica de Oracle9i
30580
pts/11
30581
cursos.atica.um.es
[email protected] (TNS V1-V3)
[email protected] (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))
El proceso servidor asociado a mi sesión es un servidor DEDICADO.
1.9. ¿Cuanto ocupa la Dictionary cache y la Library cache en tu BD? (v$sgastat)
En la vista V$SGASTAT hay información detallada sobre las partes de la SGA.
Solución: 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
1.10. Ver la actividad de la Library Cache (v$librarycache).
En la vista V$LIBRARYCACHE podemos ver los ratios (en “tantos por uno”).
Solución: 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.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
9
Administración Básica de Oracle9i
1.11. Ver las sentencias SQL que guarda la Shared­Pool (v$sqlarea).
En la vista V$SQLAREA tenemos el contenido del “área SQL” de la sharedpool.
Solución: 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. Crear el fichero de autenticación y activarlo (orapwd).
Los pasos a seguir son:
• Crear fichero en $ORACLE_HOME/dbs con la utilidad orapwd (si ya existe y queremos volver a crearlo, le cambiamos el nombre).
• Añadir el parámetro remote_login_passwordfile al init.ora.
• Parar y arrancar la BD.
Solución: $ orapwd file=$ORACLE_HOME/dbs/orapwCURSOxy password=miclave entries=5
$ chmod g+w $ORACLE_HOME/dbs/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
SQL> connect sys@curso70 as sysdba
Enter password:
Connected.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
10
Administración Básica de Oracle9i
1.13. ¿Qué ocurre si “quitamos” la variable LD_LIBRARY_PATH?
•
•
•
Comprobar su valor y dejarla en blanco.
Ejecutar sqlplus.
Volver a asignar el valor original y ejecutar de nuevo sqlplus.
Solución: $ 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. Asignar la variable NLS_LANG para nuestro país y comprobar el cambio en las respuestas de Oracle desde sqlplus.
•
•
•
•
Comprobar el valor de NLS_LANG y ver la fecha del sistema desde sqlplus.
Salir de sqlplus y asignar spanish_spain a NLS _LANG.
Ejecutar sqlplus y comprobar que pide “usuario” y no “username”.
Comprobar de nuevo la fecha del sistema desde sqlplus y verificar el cambio de formato.
Solución: $ echo $NLS_LANG
$ sqlplus
Enter user-name: / as sysdba
SQL> select sysdate from dual;
SYSDATE
--------02-FEB-05
SQL> exit
$ export NLS_LANG=spanish_spain
$ sqlplus
Introduzca el nombre de usuario: / as sysdba
SQL> select sysdate from dual;
SYSDATE
-------02/02/05
SQL> exit
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
11
Administración Básica de Oracle9i
1.15. Subir el tamaño de la shared­pool de 12 a 14M y comprobar cómo aumenta el espacio libre.
•
•
•
Comprobar el valor de shared_pool_size, así como el espacio libre en la shared_pool.
Asignarle 14M y volver a comprobar el valor del parámetro, así como el espacio libre que tiene ahora la shared­
pool.
Finalmente, volver a dejar la shared­pool con 12M y comprobar de nuevo los valores anteriores.
Solución: SQL> show parameter shared_pool_size
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------shared_pool_size
big integer 12582912
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
---------10592332
SQL> alter system set shared_pool_size=14M;
System altered.
SQL> show parameter shared_pool_size
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------shared_pool_size
big integer 16777216
SQL> select sum(bytes) from v$sgastat where pool='shared pool' and name like
'%free%';
SUM(BYTES)
---------14739172
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)
---------10544868
1.16. Comprobar el funcionamiento de la caché de redolog, como protectora del contenido de la caché de datos. Para ello iniciaremos una transacción y provocaremos una caída de la BD, comprobando que al arrancarla de nuevo, se mantendrá la integridad de la misma.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
12
Administración Básica de Oracle9i
•
•
•
•
•
Consultar el contenido y la estructura de la tabla BORRAME del usuario SYSTEM.
Insertar una fila sin hacer commit y forzar la caída de la BD.
Arrancar de nuevo la BD y comprobar que la fila insertada no está (pues no se hizo commit).
Repetir la inserción de la fila, esta vez haciendo commit; y forzar la caída de la BD otra vez.
Arrancar la BD una vez más y comprobar que ahora la fila si está (ya que se validó la transacción con commit).
Solución: SQL> connect system
Enter password:
Connected.
SQL> create tablespace users datafile '/u02/oradata/CURSOxy/users01.dbf' size 1M
autoextend on next 1M maxsize 4M;
Tablespace created.
SQL> create table system.borrame (c1 varchar2(10)) tablespace users;
Table created.
SQL> insert into
1 row created.
system.borrame values ('Primera');
SQL> commit;
Commit complete.
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
...
Database opened.
SQL> select * from system.borrame;
C1
---------Primera
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
13
Administración Básica de Oracle9i
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
...
Database opened.
SQL> select * from system.borrame;
C1
---------Primera
Segunda
1.17. Comprobar el funcionamiento de la caché de datos, en lo que se refiere a la mejora del rendimiento cuando se repite una consulta. ¿Por qué la segunda vez que se lanza la misma consulta tarda menos?
•
•
•
•
Activar la medición de tiempos en sqlplus con SET TIMING ON.
Lanzar la consulta SELECT COUNT(*) FROM IDL_UB1$.
Volver a lanzar la misma consulta.
Comprobar que la segunda ejecución tarda mucho menos, ya que los datos ya se cargaron en la caché de datos al lanzarla la primera vez; y por tanto se acceden directamente en memoria y no en disco.
Solución: SQL> set timing on
SQL> select count(*) from IDL_UB1$;
COUNT(*)
---------3798
Elapsed: 00:00:02.65
SQL> r
COUNT(*)
---------3798
Elapsed: 00:00:00.05
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
14

Documentos relacionados