jueves, 25 de octubre de 2012

Como salimos de: Import file: expdat.dmp >


Hoy quería compartir con ustedes el hecho de que cuando escribimos mal el path del archivo .dmp para realizar el import, como sabrán nos aparece en nuestro prompt lo siguiente:

IMP-00002: failed to open /prueba.dmp for read
Import file: expdat.dmp >

Imagino que todos probamos con “quit”, “exit”, Ctrl+C, etc…
Pues bien, la respuesta para salir de dicho prompt no es ninguna de esas alternativas sino que, salimos del mismo con Ctrl D.

Espero les haya servido.

Saludos!
Gondalf

jueves, 17 de mayo de 2012

String de conexión JDBC para Oracle RAC


Quizás varios de uds conocen la clásica conexión por JDBC a una single instance de Oracle, pues bien, si necesitamos conectarnos a un RAC con x cantidad de nodos dicho string de conexión sufre algunas modificaciones.

La clásica conexión a una single instance es

jdbc:oracle:thin:@:1521:

La conexión a un RAC presenta las siguientes diferencias:

jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
 (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
 (ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))
 (CONNECT_DATA=(SERVICE_NAME=service)
   (FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC))))

Espero les haya servido.

Saludos!
Gondalf.

jueves, 26 de abril de 2012

Empezando a trabajar con Fechas

Seguramente tuvimos varios problemas al tratar con fechas en Oracle. Se nos complico en sumar o restar horas, o cambiar los días.

Lo que vamos a tratar ahora es de dar unos ejemplos para que no vuelva a suceder. Antes de empezar, tengamos en cuenta que Oracle trabaja con la aritmética en función de un 1 día.

Teniendo entendido este concepto nos va a resultar más fácil la explicación.
Veamos algunos ejemplos:

        - Sumar días:
        'fecha' + 'días a sumar'
        Ejemplo: select sysdate + 1 from dual;
        - Sumar horas:
         'fecha' + 'horas a sumar / 24'
        Ejemplo: select sysdate + 3/24 from dual;
       - Sumar minutos:
         'fecha' + 'minutos a sumar / 1440'  
        Ejemplo: select sysdate + 25/1440 from dual;
      Sumar segundos:
         'fecha' + 'minutos a sumar / 86400' 
        Ejemplo: select sysdate + 1/86400 from dual;

Espero les haya servido.

Saludos!
Gondalf.


Pd: En el próximo post trabajaremos más a fondo con las fechas viendo algunas funciones que nos facilitaran mucho trabajo.

miércoles, 18 de enero de 2012

ORA-02287: sequence number not allowed here

Comencemos por la causa del mismo., curre cuando intentamos utilizar una secuencia donde no está permitido hacerlo.

Para ser un poco más explícitos, NO podemos utilizar secuencias en los siguientes casos:

- Dentro de una sentencias SELECT:

* En la claúsula WHERE

* En las claúsulas GROUP BY u ORDER BY
* En una claúsula DISTINCT
* Utilizando UNION o INTERSECT o MINUS
* En un Sub-Query

- En una VISTA o SNAPSHOT
- En una condición de DEFAULT o CHECK de una tabla

(Cabe aclarar que existen más excepciones pero que estas son las mas representativas)

Algunas posibles soluciones para nuestro problema serian:

- Si necesitamos utilizar nuestra secuencia en un WHERE o bien un ORDER BY o un Sub-Query, lo que hacemos es asignarla a una variable previa y dicha variable es la que podemos utilizar en los caso mencionados.

- Si necesitamos utilizar la secuencia para ser insertada tras la creación de las filas de una tabla lo que podemos hacer es utilizar un trigger "before insert" para que realice el trabajo.

- Si quisiéramos una secuencia en una vista podríamos crear la mismas sin la secuencia y luego al momento de llamarla utilizarla (ej: select a, b, "secuencia" from "nuestra vista").

- Si quisiéramos usar la secuencia en un query con una DISTINCT lo que podemos hacer es utilizar este en un Sub-Query y la secuencia en el query principal

Espero que les haya servido

Saludos!
Gondalf.