Me das poca información... pero intentaré darte algunas pistas para encontrar la/s causa/s.
Si sabes que todo ha empezado desde una fecha concreta lo primero de todo sería intentar averiguar qué ha cambiado desde entonces porque puede ser la causa: ¿Nuevos procesos? ¿Nuevo hardware? ¿Nuevo software? ¿Nuevos cambios en la BD?. Para eso te aconsejo que mires el fichero alert*. Ora para buscar errores o avisos a partir de la fecha en la que empezó a ir más lenta. También mira los posibles ficheros de trazas que se hayan podido generar. Si no sabes donde están, ejecuta esta sql:
SQL> select name,value from v$parameter where upper(name) like '%DUMP_DEST%';
Una BD puede ir lenta por múltiples motivos:
- Poca memoria (si estás en Unix ejecuta un "top" y mira los procesos y la memoria que usan y la memoria libre)
- El tiempo "se va" en operaciones I/O. Entonces debemos buscar causas en el acceso a disco, problemas con la red, mucha fragmentación,
Etc.
- Mucha fragmentación de los tablespaces; es decir, que los objetos de la BD tengan muchas extensiones. Para eso ejecuta la siguiente sql:
SQL> select segment_name Nombre,
segment_type tipo,
extents extensiones,
max_extents max_extenciones
from user_segments seg
where extents > 10
order by extents;
Este script muestra los segmentos con más de 10 extensiones. A más extensiones más lentitud.
- Bloqueos en la BD.
- Poco tablespace temporal.
- Estadísticas erróneas en consultas con CBO (optimización por costes)
- Indices inválidos que necesitan ser reconstruidos.
- Indices incorrectos o que han desaparecido por lo que no se usan en las queries.
- ¿Tienes objetos inválidos? Ejecuta como usuario "system" lo siguiente:
SQL> select substr(object_name,1,50) object_name, object_type, status from dba_objects where status != 'VALID';
- Etc.
Además de todo esto, también está el código de las sql. Pero en teoría, si no se ha tocado nada del código, no habría que hacer tuning de
Las sql, solo hacer un explain plan de algunas de las consultas que más tardan para intentar averiguar si hacen full scan de tablas cuando
Deberían ir por índice.
Si quieres que te ayude un poco más debo tener ciertos datos:
- Sistema Operativo
- Fecha desde que se notó un cambio en la velocidad de la BD
- Contenido del fichero alert*. Ora
- Los ficheros *. Trc que se han creado desde que notaste que la BD iba lenta
- Contenido del fichero init*. Ora
- Resultado del comando "top" si estás en entornos unix.
- ¿Tienes objetos inválidos? (S/N)
- ¿La conexión es local o remota?
- Los discos donde se almacenan los datafiles:
+ ¿son locales o remotos?
+ ¿Almacenan más archivos diferentes a la BD (gráficos, mp3, etc)? ¿Tienen muchos accesos o muy continuados (descargas, etc)?
- El resultado de esta sql:
SQL>select owner, substr(object_name,1,50) object_name, object_type, status, CREATED,LAST_DDL_TIME
from dba_objects
where owner not in ('SYS', 'SYSTEM')
order by LAST_DDL_TIME,CREATED,owner,object_name;
- El explain plan de alguna de las sql que ahora tardan más que antes.
Puedes enviarme toda esta información a la dirección:
[email protected]