Showing posts with label oracle. Show all posts
Showing posts with label oracle. Show all posts

05 August 2015

Invalid Column Index while debugging pl/sql function

Durante la depuración de una función de PL/SQL utilizando SQL Developer, se produce la siguiente excepción:
Conectando a la base de datos XXXXXX.
Ejecutando PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
Ejecutando PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( 'XXX.XXX.XXX.XXX', '3580' )
El depurador ha aceptado la conexión de la base de datos en el puerto 3580.
Índice de columna no válido
Ejecutando PL/SQL: CALL DBMS_DEBUG_JDWP.DISCONNECT()
El proceso ha terminado.
Desconectando de la base de datos XXXXXX.
Depurador desconectado de la base de datos.


La solución se puede encontrar en este enlace: https://community.oracle.com/thread/2256447

Básicamente se trata de añadir "v_Return := v_Return;" al snippet generado para lanzar la depuración de la función.

- FIN -

26 January 2012

Cambiar puerto HTTP de Oracle XE

Por defecto cuando se instala Oracle XE, este suele ocupar el puerto http 8080(curiosamente el que ocupa por defecto Tomcat), para ofrecer una consola administrativa via web. Pero hay ocasiones en las que este puerto es necesario para realizar alguna otra prueba.

Para cambiarlo hay que realizar los siguientes pasos:
  1. Conectar con el sqlplus usando el usuario system
  2. Una vez conectado usar el comando EXEC DBMS_XDB.SETHTTPPORT


- FIN -

28 March 2011

Error instalando Oracle XE en una maquina virtual con Ubuntu 10.10

Una de las virtudes que tiene la instalación de Ubuntu Desktop, es que en unos pocos clicks se puede instalar, ya sea en una máquina física, como en una maquina virtual (este es mi caso).

En este caso al ser una maquina virtual, no reparé en configurar la memoria swap ("craso error"), el problema surgió poco después al intentar instalar una Oracle XE en dicha MV.

La primera intentona fue haciendo doble click sobre el fichero oracle-xe_10.2.0.1-1.0_i386.deb tras el cual se abre la ventana de "Ubuntu Software Center" y se inicia el proceso de instalación, pero a mitad de camino da el siguiente mensaje de error:

There seems to be a programming error in aptdaemon, the software that allows you to install/remove software and to perform other package management related tasks.

Desde luego este mensaje no es "friendly" y por el contrario desvia la atención al verdadero problema, así que decidí hacerlo desde línea de comandos y voilá, seguía fallando pero me daba un mensaje de error mas coherente, aquí la traza:

desarrollo@desarrollo-VirtualBox:~/Downloads$ sudo dpkg -i oracle-xe_10.2.0.1-1.0_i386.deb
(Reading database ... 144430 files and directories currently installed.)
Unpacking oracle-xe (from oracle-xe_10.2.0.1-1.0_i386.deb) ...
This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 1024 MB of swap space.
This system has 894 MB
of swap space. Configure more swap space on the system and retry the installation.
dpkg: error processing oracle-xe_10.2.0.1-1.0_i386.deb (--install):
subprocess new pre-installation script returned error exit status 1
Errors were encountered while processing:
oracle-xe_10.2.0.1-1.0_i386.deb

Bueno, el mensaje es claro, me falta memoria swap, así nada, procedí a añadir 1024 MB más de swap, siguiendo los siguientes pasos:

  1. creando un fichero del tamaño deseado y dando permisos de lectura a los usuarios
    sudo dd if=/dev/zero of=/mnt/1024Mb.swap bs=1M count=1024
    sudo chmod 600 /mnt/1024Mb.swap
  2. preparando el fichero para que sea una unidad de swapping
    sudo mkswap /mnt/1024Mb.swap
  3. añadiendo el fichero al sistema
    sudo swapon /mnt/1024Mb.swap
  4. haciendo permanente el cambio editando el fichero /etc/fstab
    gksudo gedit /etc/fstab
  5. Añadiendo como última linea al fichero fstab el texto
    /mnt/1024Mb.swap none swap sw 0 0

Tip:
Para saber cuanta swap tenemos hay que ejecutar el siguiente comando:
cat /proc/meminfo | grep -i swap
Bueno, solo decir que después de esto hubo un final feliz :-)


Enlaces relacionados:

- FIN -

03 February 2011

Oracle WebCenter Portal Framework 11gR1 PS3 sobre VirtualBox

Para aquellos a los que les guste los portales, hace un par de días Oracle ha publicado una maquina virtual VirtualBox, que contiene instalada la última versión de WebCenter con algunas herramientas de desarrollador; una magnífica contribución, la pega es que se necesita una máquina potente para poder utilizarla sin inconvenientes.




Enlaces relacionados:

Pre-built Virtual Machine for Oracle WebCenter Portal Framework 11gR1 PS3 (11.1.1.4.0)


- FIN -

04 January 2011

Esquemas de datos oracle para ejemplos

Normalmente dentro de la instalación de la base de datos, vienen los scripts para crear los esquemas de ejemplo con datos, normalmente esta sería su ubicación:

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/demo/schema/human_resources

Estos esquemas de ejemplo normalmente se suelen utilizar en diversas fusion web applications de ejemplo (valga la redundancia).

Enlaces relacionados:
- FIN -

28 December 2010

ORA-27101: shared memory realm does not exist

Como siempre los mensajes de error de algunas aplicaciones son indecifrables, en este caso durante la inicialización de mi servidor weblogic; pero la traducción de este, fue en mi caso simple, básicamente si el datasource del servidor falla es por que el usuario y la cadena de conexión han cambiado o no son válidos.
...
<Dec 26, 2010 10:02:56 PM CST> <Warning> <JDBC> <BEA-001129> <Received exception while creating connection for pool "PortletDS": ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
> 
...

Una forma rápdida de determinar si los datos del usuario no son válidos es utilizando el sqlplus para conectarnos, utilizando las mismas credenciales del datasource, primero sin utilizar el nombre de la instancia
...
oracle@wc:~$ sqlplus usuario/password
y luego utilizando el nombre de esta, si esta última falla, esta claro, la instancia no esta iniciada.
...
oracle@wc:~$ sqlplus usuario/password@xe


SOLUCIÓN 1: Iniciar manualmente el servicio
...
oracle@wc:~$ sqlplus sys/wc as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sun Dec 26 22:02:55 2010

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup;
ORACLE instance started.
...
SQL> exit
...

SOLUCIÓN 2: Configurar el inicio automáticamente cambiando el valor N por Y e reiniciar el sistema o aplicar la solución 1.
...
oracle@wc:~$ vi /etc/oratab 
xe:/opt/oracle/db/11g/server:Y
...

Ahora solo queda comprobar que la instancia esta activa con lsnrctl STATUS.

...
oracle@wc:~$ lsnrctl STATUS

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26-DEC-2010 22:05:01

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
...
...
Services Summary...
...
  Instance "xe", status READY, has 1 handler(s) for this service...
...
oracle@wc:~$ 
...


- FIN -

27 December 2010

BEA-001129 "The Network Adapter could not establish the connection"

Existen ocasiones en la que el servidor de weblogic no acaba de iniciarse por que no se cargan adecuadamente los recursos JDBC, Oracle en este caso (a continuación pongo un extracto de la traza)

...
<Dec 26, 2010 10:29:24 AM CST> <Warning> <JDBC> <BEA-001129> <Received exception while creating connection for pool "PortletDS": The Network Adapter could not establish the connection>
<Dec 26, 2010 10:29:25 AM CST> <Warning> <JDBC> <BEA-001129> <Received exception while creating connection for pool "PortletDS": The Network Adapter could not establish the connection> 
...

Cuando suceden estos errores normalmente no se puede cambiar los parámetros de estos recursos desde la consola ya que el servidor no se inicializa bien.

Para el caso de los recursos JDBC, normalmente existe un fichero de configuración por cada uno dentro del directorio /opt/oracle/middleware/user_projects/domains/tu-dominio/config/jdbc/conexión-jdbc.xml; pues bien, dentro de cada fichero debemos cerciorarnos que la cadena de conexión coincida exactamente con el HOST, PORT y SID_NAME del fichero listener.ora de la base de datos.

Para saber cual es la ubicación del fichero listener.ora, con el usuario oracle logado hay que ejecutar el comando  lsnrctl STATUS desde consola.

- FIN -

15 September 2010

java.sql.SQLException: Listener refused the connection

Cambiando la base de datos a Liferay de HSQL a Oracle, hace un tiempo me surgio un fallo referente al pool de conexiones. La traza del error es la siguiente.

WARN  [BasicResourcePool:1841] com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1bcf3d -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
localhost:1521:xe

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)

La solución pasa por configurar el pool en el fichero portal-ext.properties:

hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
jdbc.default.acquireIncrement=1
jdbc.default.maxPoolSize=5
jdbc.default.minPoolSize=1
jdbc.default.numHelperThreads=1

- FIN -

28 April 2010

Importar y exportar bases de datos Oracle

Cuando trabajamos con un lenguaje de programación, ineludiblemente trabajamos con algún tipo de fuente de datos, ya sea ficheros, sockets, ... o bases de datos.

He aqui un par de comandos que nos permiten exportar e importar una base de datos oracle.

Exportar una base de datos:
exp userid=miUsuario/miPwd FILE=miSchema.dmp LOG=miSchemaExport.log statistics=none

Importar la base de datos exportada:
imp userid=miUsuarioDestino/miPwdDestino file=miSchema.dmp log=miSchemaImport.log
o
imp userid=system file=miSchema.dmp log=miSchemaImport.log fromuser=miUserSource touser=miUserTarget
Supongo que no esta demás decir, que para importar, deben existir los TABLESPACE de las tablas, el usuario ha de tener los privilegios suficientes para poder crearlas ,.....

- FIN -