Publicado el Dejar un comentario

Sql Developer: Cómo cargar todos los registros resultantes de una consulta SQL.

Por defecto y debido a cuestiones de rendimiento, SQL Developer de Oracle, sólo muestra 200 filas en el área de resultados después de ejecutar una consulta SQL. A medida que avanzamos con la barra de desplazamiento, va mostrando los resultados en conjuntos de 200 filas hasta llegar al fin.

SQL Developer no muestra todos los resultados de una sola vez, como a veces lo necesitamos. El estar desplazándonos por la barra de desplazamiento de la ventana de resultados es tardado y tedioso. Sin embargo, existe un pequeño truco para hacer que muestre los resultados completos una vez que hayamos  ejecutado la consulta SQL y nos muestre los primeros registros:

Nos ubicarnos en la ventana o área de resultados de la consulta y oprimimos las teclas Ctrl-Fin al mismo tiempo.

Esto nos llevará al última fila de la consulta y por ende cargará todas las filas de la consulta. La próxima vez que quieras que SQL Developer muestra todas las filas resultantes, aplica este truco.

¡Saludos!

Publicado el Dejar un comentario

Quitar acentos mediante una consulta SQL en Oracle

Supongamos que queremos crear “slugs” para nuestras URLs con los nombres de productos que contienen acentos. Pero ¿que es un slug? Bueno, un slug es colocar el titulo de una página en una URL válida para que de el usuario con sólo verla se de una idea de el contenido que puede encontrar en esa página.

Supongamos que la página anuncia nuestro producto “Computadora Portátil Lenovo X72”; el slug para está página sería “computadora-portatil-lenovo-x72”. Por lo general los “slugs” no llevan acentos, por lo tanto necesitamos reemplazarlos por su vocal base (á por a en el ejemplo anterior) y los espacios por los guiones.

Para específicamente el ejemplo anterior, utilizaríamos una combinación de las funciones TRANSLATE para reemplazar los espacios y acentos y la función LOWER para convertir el texto a minúsculas así:  

select Lower(Translate(‘Computadora Portátil Lenovo X72’,’á ‘,’a-‘)) from SYS.Dual;

Daría como resultado:

computadora-portatil-lenovo-x72

La función TRANSLATE trabaja parecido a la función REPLACE con la diferencia que la primera, permite reemplazar distintos caracteres a la vez como se puede observar en el ejemplo anterior (los caracteres ‘á’ fueron reemplazados por ‘a’  y los espacios por guiones ‘-‘).

Si lo que queremos es hacer una consulta más general para reemplazar los acentos en cualquier cadena de caracteres, emplearíamos una consulta SQL como esta:

select Translate(‘José Ángel Méndez Zúñiga’,’ÁáÉéÍíÓóÚú’,’AaEeIiOoUu’) from Dual;

Lo que daría como resultado:

Jose Angel Mendez Zuñiga

Espero y les sea útil.

¡Hasta la próxima!

 

 

Publicado el Dejar un comentario

Error ORA-30036 al ejecutar SHRINK sobre una tabla

Después de borrar millones de registros de una gran tabla en Oracle y tratar de reclamar espacio de dicha tabla, el comando SHRINK SPACE no terminaba y marcaba el error:

ORA-30036: unable to extend segment by 8 in undo tablespace ‘UNDO’.

El tamaño de la tabla no era tan grande como el espacio reservado para el tablespace UNDO (aquí se almacenan los registros para hacer un rollback de una transacción), sin embargo se llenaba y marcaba el error mencionado.

Cuando se ejecuta la sentencia ALTER TABLE … SHRINK SPACE es necesario también tomar en cuenta el tamaño de los índices de la tabla. Así que la suma del tamaño de la tabla de la cual necesitaba reclamar espacio y el tamaño de todos sus índices, si que superaba el espacio del tablespace UNDO por eso lanzaba el error.

La solución, borrar todos los índices (DROP INDEX) de la tabla, reclamar el espacio (SHRINK SPACE) de la tabla y volver a crear los índices.

Espero y les sirva mi experiencia.

¡Saludos!