Publicado el Dejar un comentario

Listar las tablas de un usuario en Oracle

A veces necesitamos saber las tablas pertenecientes a un usuario y/o esquema en Oracle. Si queremos saber las tablas que le pertenecen al usuario con el que cual nos encontramos conectados actualmente a la base de datos, usamos la siguiente instrucción sql:

select table_name from user_tables order by table_name;

La instrucción anterior además ordena la salida por el campo table_name.

Si lo que queremos saber son las tablas de otro usuario o esquema entonces usaríamos la siguiente sentencia sql:

select table_name from all_tables where owner ='JUAN' order by table_name;

Igual que la anterior, el resultado lo ordenamos por table_name.

Espero que les sea útil este post.

¡Saludos!

Publicado el Dejar un comentario

ORA-39070: Unable to open the log file.

Al intentar importar un respaldo de una base de datos en Oracle 11g versión 11.2 sobre windows server  con el comando impdp me mandaba los siguientes errores:

ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at “SYS.UTL_FILE”, line 488
ORA-29283: invalid file operation

Cabe aclarar que el archivo dmp a importar estaba en una unidad de red montada como drive Z: y dicha unidad estaba dado de alta como un Directory de Oracle.

El problema se debe a que al ejecutar el comando impdp lo ejecuta con el usuario que inició el servicio de oracle (usuario del sistema) y no con el usuariode windows que ejecuta el comando,  por lo tanto dicho usuario del sistema no tiene permisos de escritura ni lectura sobre la unidad de red.

La solución es parar el servicio de oracle e iniciarlo con el usuario con el que se autentifica en windows y que tiene permisos tanto de escritura sobre la unidad como de ejecutar el comando impdp:

Inicio -> Ejecutar -> Services.msc -> OracleServiceXXXX -> Propiedades -> Log On

Una vez que termine de importar el respaldo, puede regresar el servicio de oracle a que sea ejecutado por el usuario del sistema.

Espero les sirva este tip.

 

 

Publicado el Dejar un comentario

Dividir (split) el valor de una columna con valores separados por comas en Oracle

Me encontré con este problema, una tabla en oracle contenía un campo con una serie de valores separado por coma como en el siguiente ejemplo:

Id          Campo1

1           a,b,c,d

Necesitaba hacer una consulta que me mostrara los valores de la siguiente forma:

Id          Campo1

1          a
1          b
1          c
1          d

“Googleando” encontré este interesante artículo donde explica como usar los niveles (level) y la orden CONNECT BY LEVEL para lograr el propósito buscado. Espero les sea útil como a mi.

¡Saludos!