Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Consultas utiles en ORACLE

22 septiembre, 2010

Este articulo muestra un resumen de consultas utiles de Oracle que en determinados casos me han parecido muy utiles.

Lista de paquetes UTL y DMBS:

SELECT * FROM ALL_OBJECTS
WHERE OBJECT_NAME LIKE ‘%UTL_%’
AND OBJECT_TYPE = ‘PACKAGE’

SELECT * FROM ALL_OBJECTS
WHERE OBJECT_NAME LIKE ‘%DBMS_%’
AND OBJECT_TYPE = ‘PACKAGE’

Buscar un texto o palabra en una función, procedimiento, trigger…

SELECT NAME
FROM ALL_SOURCE
WHERE OWNER = ‘USUARIO’ AND
TYPE IN (’FUNCTION’, ‘PROCEDURE’) AND
TEXT LIKE ‘%TEXTO%’

Consulta de los tablespace:

select * from V$TABLESPACE

Consulta de las funciones de Oracle:

SELECT distinct object_name
FROM all_arguments
WHERE package_name = ‘STANDARD’
order by object_name

Recuperar la versión de Oracle:

select * from v$version;

Además de la versión nos dirá el nombre de la instancia, el nombre de la máquina, la versión, el estado de la base de datos (open,…), la fecha en la que se arrancó la base de datos:

select * from v$instance

Limpiar la memoria para obtener los tiempos reales de ejecución de una select:

alter system flush buffer_cache;
alter system flush shared_pool;

Genera un for del 1 al 10:

SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=10;

Comparar con un decode una parte del texto de un campo:

SELECT DSERROR, DECODE(DSERROR,
(SELECT DSERROR FROM DUAL WHERE DSERROR LIKE ‘A%’),
‘CAMPO COMIENZA POR A’,
(SELECT DSERROR FROM DUAL WHERE DSERROR LIKE ‘B%’),
‘CAMPO COMIENZA POR B’,
‘NI POR A NI POR B’) FROM TERRORES;

Devolver el valor posterior y anterior de un registro:

SELECT DNI,
LEAD(DNI) OVER (ORDER BY DNI) POSTERIOR,
LAG(DNI) OVER (ORDER BY DNI) ANTERIOR
FROM PRUEBA;

Recuperar una tabla borrada ( sin purge ):

flashback table PRUEBA to before drop;

Crear una tabla a partir de otra, pero vacía:

CREATE TABLE RESTO AS SELECT DNI, DEPARTAMENTO FROM EMPLEADOS WHERE 1=0;

Extraer una o todas las tablas del esquema:

spool tablas.lst
SELECT DBMS_METADATA.GET_DDL(’TABLE’,u.table_name)
   FROM USER_TABLES u
–WHERE table_name like ‘BP%’;
spool off