Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error segmento rollback pequeño! (foto)

Estas en el tema de Error segmento rollback pequeño! (foto) en el foro de Oracle en Foros del Web. Amigos, esto me sale luego de un proceso largo desde una aplicación. Como puedo solucionarlo? Favor si me ayudan de la forma más facil, no ...
  #1 (permalink)  
Antiguo 25/09/2008, 15:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 59
Antigüedad: 12 años, 11 meses
Puntos: 0
Error segmento rollback pequeño! (foto)

Amigos, esto me sale luego de un proceso largo desde una aplicación.



Como puedo solucionarlo? Favor si me ayudan de la forma más facil, no manejo mucho el tema de Oracle.

Por las dudas, tengo acceso DBA a la base y puedo insertar comandos SQL que me proporcionen para solucionar..

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 25/09/2008, 21:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 59
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Error segmento rollback pequeño! (foto)

Up.................
  #3 (permalink)  
Antiguo 26/09/2008, 00:11
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 13 años, 8 meses
Puntos: 85
Respuesta: Error segmento rollback pequeño! (foto)

Hola,

Por el nombre _SYSxxx diria que estas usando segmentos de undo, no de rollback. En este caso la forma mas facil para intentar evitar este problema es agrandar el tamaño del tablespace de UNDO.

Saludos
  #4 (permalink)  
Antiguo 26/09/2008, 06:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 59
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Error segmento rollback pequeño! (foto)

Ah..ok matanga..
Decime, cual es la manera más fácil de realizar ese cambio de tamaño?
Si me lo puedes decir por favor..
Utilizo el Oracle 10g.
Gracias.
  #5 (permalink)  
Antiguo 26/09/2008, 07:43
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 13 años, 8 meses
Puntos: 85
Respuesta: Error segmento rollback pequeño! (foto)

Hola,

Primero hay que identificar cual es el tablespace de UNDO de la base de datos

Código:
[email protected]> show parameter undo_tablespace

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace                      string      UNDOTBS1
Despues hay que ver que datafiles pertenecen a ese tablespace.

Código:
[email protected]> select file_name, bytes/1024/1024 
[email protected]> from dba_data_files where tablespace_name = 'UNDOTBS1';

FILE_NAME                                                    BYTES/1024/1024
------------------------------------------------------------ ---------------
C:\ORACLE\ORADATA\10G\UNDOTBS01.DBF                                      925
Finalmente decidir hacer un resize o bien agregar otro datafile, en el ejemplo hago un resize.

Código:
[email protected]> alter database 
[email protected]> datafile 'C:\ORACLE\ORADATA\10G\UNDOTBS01.DBF' resize 1024M;

Base de datos modificada.
Nota1: El valor del resize es el tamaño final que tendra el datafile y se lo puede especificar en K|M|G, en el ejemplo sera de 1G.

Nota2: No hay garantias que el problema se resuelva haciendo un resize, dado que a veces este error aparece por un bloque de codigo con una mala administracion de transacciones.

Saludos

Última edición por matanga; 26/09/2008 a las 07:54
  #6 (permalink)  
Antiguo 26/09/2008, 10:34
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 14 años, 1 mes
Puntos: 43
Respuesta: Error segmento rollback pequeño! (foto)

Ese es el famoso error " snapshot too old ".
Suele dar porque esta trabajando un proceso largo y se esta escribiendo en el segmento de rollback. Durante ese proceso, otro proceso escribe en el mismo bloque que el primero y oracle al no poder salvaguardar la consistencia de datos, casca el proceso y suelta el ORA-01555.

Si no lo puedes optimizar, debes obligar a oracle a que durante tu proceso escriba en un segmento de rollback especifico ( y por supuesto, grande ), para ello debes utilizar la sentencia SET TRANSACTION USE ROLLBACK_SEGMENT NOMBRE_DEL_SEGMENTO_DE_ROLLBACK

Esto no es la panacea, pero te puede evitar algunos errores de este tipo. La 10g ya gestiona mucho mejor estas situaciones y el ORA-01555 se dá mucho menos.
  #7 (permalink)  
Antiguo 26/09/2008, 13:26
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 17 años, 4 meses
Puntos: 7
Respuesta: Error segmento rollback pequeño! (foto)

y llendonos un poco mas lejos igual tambien trabajar en optimizar los tiempos del proceso, seguramente se podrian tocar algunos selects para bajarle el tiempo al proceso
__________________
Blogzote.com :-) Mi blog
  #8 (permalink)  
Antiguo 26/09/2008, 16:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 59
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Error segmento rollback pequeño! (foto)

buenísimas respuestas!
gracias a todos! enserio...
estaré probando...
  #9 (permalink)  
Antiguo 28/09/2008, 05:25
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 14 años, 1 mes
Puntos: 43
Respuesta: Error segmento rollback pequeño! (foto)

Cita:
Iniciado por kikolice Ver Mensaje
y llendonos un poco mas lejos igual tambien trabajar en optimizar los tiempos del proceso, seguramente se podrian tocar algunos selects para bajarle el tiempo al proceso
Totalmente de acuerdo. El principal causante de ese error ( al menos las experiencias que he tenido yo ) ha sido la mala programación de cursores o select mal montadas que se han tirado dos horas para devolver un par de cientos de filas.

Recuerdo un marrón que tuve que solucionar hace ya algunos años. Habia un proceso de facturación que se lanzaba desde una pantalla de Forms y tardaba mas de 15 horas en finalizar. Me llamaron para arreglarlo y al final lo dejé en menos de una hora. ¿ motivo ?, habia un cursor principal que hacía una join de nosecuantas tablas y que tardaba en abrirse algunas horas y en el plan de ejecución solo veia FULL ACCESS por todos lados. ¿ como lo solucioné ? desglosé ese cursor en dos o tres y con el resultado del primero parametrizaba el resto y me entraban por PK o por indices.


También tuve otro caso, que en un proceso bastante largo el cursor principal tardaba hora y media en abrirse y al final saltaba el ORA-01555.Como no había forma de optimizar el cursor ese problema lo solucione de otra manera. Con el resultado del cursor ( unas 350 filas ) cargué una tabla pl-sql, cerraba el cursor y utilizaba la tabla pl para todo el proceso. A partir de ahí nunca mas volvió a dar ese error.

Como ves hay muchas formas de atajar ese problema, solo tienes que elegir el que mejor te vaya para tu caso en particular.

Saludos
  #10 (permalink)  
Antiguo 12/08/2009, 16:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 59
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Error segmento rollback pequeño! (foto)

Hola, les cuento que hace una semana recien pude solucionar definitivamente este error.

No pude realizar lo que propuso matanga porque la BD siempre estaba en producción.

Lo que me soluciono es desinstalar el oracle odbc 8 que tenia, y le puse el odbc 11.

Con esto ya no me salio mas el error, eso si, para ciertos procesos fue un poco mas lento, pero seteando algunas opciones en el odbc ahora quedo estupendo!

Gracias a todos, pueden cerrar el caso.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.