
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!
| |||
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! |
| |||
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. |
| ||||
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:
Despues hay que ver que datafiles pertenecen a ese tablespace.oracle@10G> show parameter undo_tablespace NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_tablespace string UNDOTBS1
Código:
Finalmente decidir hacer un resize o bien agregar otro datafile, en el ejemplo hago un resize.oracle@10G> select file_name, bytes/1024/1024 oracle@10G> from dba_data_files where tablespace_name = 'UNDOTBS1'; FILE_NAME BYTES/1024/1024 ------------------------------------------------------------ --------------- C:\ORACLE\ORADATA\10G\UNDOTBS01.DBF 925
Código:
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.oracle@10G> alter database oracle@10G> datafile 'C:\ORACLE\ORADATA\10G\UNDOTBS01.DBF' resize 1024M; Base de datos modificada. 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 |
| |||
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. |
| ||||
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
__________________ |
| |||
Respuesta: Error segmento rollback pequeño! (foto) Cita: 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 |
| |||
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. |