Está en la página 1de 24

Rigoberto Acifuina

Laboratorio 4 (Tunning) Bases de datos 2

5190-14-207
--PASO 1

Ingresar al command prompt (cmd dos)

--PASO 2

sqlplus /nolog

--PASO 3

connect sys /as sysdba;

--PASO 1

select * from v$sgastat;

Explique qué visualiza cuando ejecuto el script.


Se mostraron más de 1600 líneas de información detallada del sistema global.

¿Para qué sirve la instruccion v$sgastat?


Sirve para visualizar información detallada del sistema global. Indica en que pool reside cada
componente del sistema y el tamaño en BYTES que ocupa en la memoria.

--PASO 2

select namespace, gets, gethits, gethitratio from v$librarycache;

Explique qué visualiza usted en esta consulta


Estadísticas sobre el cache de librerías

¿Para qué sirve la vista v$librarycache?


La vista contiene estadísticas sobre el cache de librerías, rendimiento y actividad.

¿Los datos que le salieron de resultado que le está indican-


do?
Si el valor de la columna GETHITRATIO se acerca a 1 se concluir que está teniendo un

buen rendimiento en el uso de esta área de memoria. La mayoría están por encima del

0.7 pero hay unas que si están muy bajas, por debajo del 0.5

--PASO 3

select parameter, gets, getmisses from v$rowcache;

Explique qué visualiza usted en esta consulta


estadísticas de actividad del diccionario de datos

¿Para qué sirve la vista v$rowcache?


Esta vista muestra estadísticas de actividad del diccionario de datos. Cala línea contie-

ne estadística de una cache de diccionario de datos

¿Los datos que le salieron de resultado que le está indican-


do?
Inidican las veces que se obtuvo algún registro y la cantidad de veces que se tuvo que

leer algun registro del dísco por que no estaba en caché. Es imposible tener un número

de GETMISSES 0 ya que al menos la primera vez que se lee un registro se lee del disco

para luego guardarlo en la memoria CACHE.

--PASO 4

select name, value from v$sysstat where value > 0 order by name;

Explique qué visualiza usted en esta consulta


Visualizo estadísticas del sistema.

¿Para qué sirve la vista v$sysstat?


Sirve para visualizar la información de las estadísticas del sistema.

¿Los datos que le salieron de resultado que le está indican-


do?
Me está indicando el estado del sistema. En este caso como se filtraron las incidencias

mayores a cero, solo podemos ver categorías que si han reportado incidencias.

--PASO 5

SELECT id, name, block_size, resize_state, current_size, buffers FROM v$buffer_pool

where id <> 0;

Explique qué visualiza usted en esta consulta


Visualizo el tamaño de las pools de buffers disponibles, en este caso solo la default

está disponible.

¿Para qué sirve la vista v$buffer_pool?


Sirve para visualizar la infirmación de todos las pools de buffers disponibles para la ins-

tancia

¿Los datos que le salieron de resultado que le está indican-


do?
Que solo la pool DEFAULT está disponible para esta instancia.

--PASO 1

CREATE TABLE temp (N NUMBER) cache;

insert into temp values (1);

insert into temp SELECT * FROM temp;

insert into temp SELECT * FROM temp;

insert into temp SELECT * FROM temp;

insert into temp SELECT * FROM temp;

select * from temp;

---PASO 2

CREATE TABLE temp2 (N NUMBER);

insert into temp2 values (1);

insert into temp2 SELECT * FROM temp;

insert into temp2 SELECT * FROM temp;

insert into temp2 SELECT * FROM temp;

insert into temp2 SELECT * FROM temp;

ALTER TABLE temp2 cache;

select * from temp2;

--PASO 3

CREATE TABLE temp3 (N NUMBER);

insert into temp3 values (1);

insert into temp3 SELECT * FROM temp2;

insert into temp3 SELECT * FROM temp2;

insert into temp3 SELECT * FROM temp2;

insert into temp3 SELECT * FROM temp2;

select /*+ CACHE (emp3) */ * from temp3;

Explique qué visualiza usted en esta consulta


Visualizo los registros que están en caché de la tabla temp3

Para qué sirve el comando CACHE


al usar el comando CACHE se le ordena a la base de datos que guarde el contenido de

la tabla en caché para que su lectura sea más rápida.

--PASO 4

select sum(pins) Ejecuciones, sum(reloads) Fallos_cache,

trunc(sum(reloads)/sum(pins)*100,2) Porcentaje_aciertos

from v$librarycache

where namespace in ('TABLE/PROCEDURE','SQL AREA','BODY','TRIGGER');

Explique qué visualiza usted en esta consulta


Veo la cantidad de pineos que se han realizado al namespace y estadisticas de aciertos

al usar la cache

¿Los datos que le salieron de resultado que le está indican-


do?
Que se ha tenido un acierto del 39% al obtener datos desde la caché, lo que me indica

que no hay suficientes datos en cache y esto ralentiza el sistema.

--Paso 1

SELECT sql_text, executions FROM v$sql WHERE cpu_time > 20000;

Explique qué visualiza usted en esta consulta


Todas las transacciones ejecutadas en las que el tiempo de cpu es mayor a 20000.

¿Para qué sirve la vista v$sql?


Sirve para visualizar las estadisticas del area compartida de SQL. Contiene una linea por cada
hijo del texto sql ingresado originalmente.

¿Los datos que le salieron de resultado que le está indican-


do?
Que 455 sentencias de SQL que han consumido bastante tiempo de CPU.

--Paso 2

SELECT sid, ctime FROM V$LOCK where block >0;

Explique qué visualiza usted en esta consulta


No se retornaron resultados

¿Para qué sirve la vista v$LOCK?


Para visualizar los bloqueos activos por la base de datos de oracle

¿Los datos que le salieron de resultado que le está indican-


do?
Que actualmente no hay bloqueos activos.

--Paso 3

SELECT * FROM v$session WHERE logon_time > sysdate -1;

Explique qué visualiza usted en esta consulta


Información de las sesiones de la base de datos

¿Para qué sirve la vista v$session?


Para visualizar información de las sesiones por cada sesión

¿Los datos que le salieron de resultado que le está indican-


do?
Me indica que hay 48 sesiones en la base de datos.

--Paso 4

select distinct vs.sql_text, vs.sharable_mem, vs.persistent_mem, vs.runtime_mem, vs.-

sorts, vs.executions, vs.parse_calls, vs.buffer_gets, vs.disk_reads,

to_char(to_date(vs.first_load_time, 'YYYY-MM-DD/HH24:MI:SS'),'MM/DD

HH24:MI:SS') first_load_time, rows_processed , vs.command_type, OPTIMIZER_MO-

DE , au.USERNAME parseuser from v$sqlarea vs , all_users au where (parsing_user_id !

= 0) AND (au.user_id(+)=vs.parsing_user_id) and (executions >= 1) order by buffer_gets/

executions desc ;

Explique qué visualiza usted en esta consulta


la información acerca de todos los cursores que están en cache.

¿Para qué sirve la vista v$sqlarea?


La vista V$SQLAREA almacena información acerca de todos los cursores que están en

cache.

¿Los datos que le salieron de resultado que le está indican-


do?
Me indica que hay 50 cursores distintos en caché.

--Paso 5

select sql_text, executions, to_char((((disk_reads+buffer_gets)/executions) * 8192)/

1048576, '9,999,999,990.00') as total_gets_per_exec_mb, to_char((( disk_reads /execu-

tions) * 8192)/1048576, '9,999,999,990.00') as disk_reads_per_exec_mb, to_char((( buf-

fer_gets /executions) * 8192)/1048576, '9,999,999,990.00') as buffer_gets_per_exe-

c_mb, parsing_user_id from v$sqlarea where executions > 0 order by 6 desc;

Explique qué visualiza usted en esta consulta


Estadísticas de lecturas de disco por ejecución de SQL.

¿Los datos que le salieron de resultado que le está indican-


do?
Solo me muestra información general de las ejecuciones de SQL.

--Paso 6

select sql_text, (100/executions)*parse_calls parse_ratio, parse_calls, executions, par-

sing_user_id from v$sqlarea where parse_calls > 1 and executions > 0

Explique qué visualiza usted en esta consulta


Las sentencias SQL y sus estadísticas de ejecución

¿Los datos que le salieron de resultado que le está indican-


do?
Me indica las veces que se han ejecutado las sentencias SQL

--Paso 0

create table items (

id number primary key,

name varchar2(20),

price number(7,2)

);

insert into items values ( 1, 'cup', 1.20);

insert into items values ( 2, 'book', 49.99);

insert into items values ( 3, 'mobile', 89.99);

insert into items values ( 4, 'coke', 0.78);

insert into items values ( 5, 'pencil', 1.35);

insert into items values ( 6, 'dollar', 1.00);

insert into items values ( 7, 'door', 150.00);

insert into items values ( 8, 'oracle', 19999.00);

insert into items values ( 9, 'carpet', 122.40);

insert into items values (10, 'apple', 1.05);

insert into items values (11, 'table', 198.00);

insert into items values (12, 'cd/r', 1.20);

insert into items values (13, 'back pack', 21.53);

insert into items values (14, 'laptop', 999.50);

insert into items values (15, 'air', 0.00);

insert into items values (16, 'tv', 310.00);

insert into items values (17, 'color', 2.22);

insert into items values (18, 'bun', 2.50);

insert into items values (19, 'egg', 0.80);

insert into items values (20, 'bike', 1250.00);

--Paso 1

SELECT /*+ FIRST_ROWS */ * FROM ITEMS;

SELECT /*+ ALL_ROWS */ * FROM ITEMS;

SELECT /*+ RULE */ * FROM ITEMS;

SELECT /*+ FULL */ * FROM ITEMS;

Explique qué visualiza usted en esta consulta


Me muestra los registros almacenados en la tabla ITEMS.

¿Los datos que le salieron de resultado que le está indican-


do?
Me indica el contenido de la tabla ITEMS.

--Paso 2

EXPLAIN PLAN FOR SELECT * FROM ITEMS;

Explique qué visualiza usted en esta consulta


Visualizo el plan de trabajo para resolver el texto sql que se ingresó.

¿Para qué sirve la función EXPLAIN PLAN FOR?


Sirve para que el dbms nos explique el plan de trabajo que usará para mostrar los da-

tos que le estamos pidiendo

¿Los datos que le salieron de resultado que le está indican-


do?
Me indica el plan de trabajo que usará el DBMS. En este caso al no existir indices ni

una sentencia WHERE va a realizar un FULL SCAN a la tabla para obtener los resulta-

dos.

SELECT id, operation, object_name, position from plan_table;

Explique qué visualiza usted en esta consulta


Visualizo el plan de trabajo para resolver el texto sql que se ingresó.

¿Los datos que le salieron de resultado que le está indican-


do?

Me indica el plan de trabajo que usará el DBMS. En este caso al no existir indices ni

una sentencia WHERE va a realizar un FULL SCAN a la tabla para obtener los resulta-

dos.

--Paso 3

SELECT COUNT(*) FROM ITEMS;

SELECT num_rows FROM dba_tables WHERE owner='SYS' AND table_name='ITEMS';

EXEC dbms_stats.gather_table_stats('SYS','ITEMS');

SELECT num_rows FROM dba_tables WHERE owner='SYS' AND table_name='ITEMS';

Explique qué visualiza usted en estas consultas, cada una


Me muestra la cantidad de registros en la tabla ITEMS.

¿Los datos que le salieron de resultado que le está indican-


do? En cada una
Me indica la cantidad de registros que existen en la tabla ITEMS.

También podría gustarte