jueves, 17 de enero de 2008

ORA-01019

Hemos tenido este error en una instalación, y hacía tiempo que no me encontraba tan perdido. Después de mucho buscar en foros y otras hierbas hemos dado con la solución, pero como nos ha costado tanto he pensado en publicar aquí la solución. No para ayudar a mis lectores -hola a los dos :-) - sino porque con San Google y las búsquedas lo mismo ayuda a alguien.


El entorno

Sistema Operativo: Windows Server 2003 SP2
Versión del cliente Oracle: 10.1 y 10.2
Versión de la base de datos Oracle: Es indiferente. ;-)


El mensaje

Después de instalar el último cliente de Oracle, concretamente las versiones 10.1 y 10.2, y al probar una conexión -tnsnames-, tenemos el críptico error de ([actualizado] también en inglés):

ORA-01019: No se ha podido asignar memoria en el lado del usuario.
ORA-01019: unable to allocate memory in the user side

Me ahorro poner la explicación de Oracle y su solución, porque no sirven para nada.


Los síntomas

Las pruebas que hicimos nos daban el resultado de que si el usuario que ejecuta la conexión tenía privilegios de administrador, todo funcionaba. Si sólo era usuario -incluso usuario avanzado-, teníamos el error ORA-01019.

Después de dar permisos de lectura y escritura a todo Cristo tanto en el árbol de directorios del cliente de Oracle como en System32, seguía sin funcionar para el sufrido usuario.

Como decía, después de buscar en foros encontré un caso de lo más curioso: si un administrador establecía una conexión con ese cliente funcionaba, y si al mismo tiempo lo hacía el usuario, al usuario ¡también le funcionaba! Hicimos la prueba y en nuestro caso también se daba esta situación.


La solución

Buscando buscando, nuestra DBA encontró una solución que explicaba los síntomas: Política de seguridad en Windows Server 2003 donde se establede si los "Objetos globales de Sistema" sólo los pueden crear los administradores -y los servicios- o todos los usuarios. Y efectivamente, cambiado el parámetro el cliente funciona perfectamente también para los usuarios de a pie.


Espero que le sirva a alguien.


[Actualizado 05-04-2008]

La pantalla de configuración debe estar en "Herramientas Administrativas" del "Panel de control", y se llama (en inglés, no me atrevo a traducirlo por no despistar) "Group Policy Object Editor".

Aquí tenemos que desplegar el árbol: "Local Computer Policy" -> "Computer Configuration" -> "Windows Settings" -> "Security Settings" -> "Local Policies" -> "User Rights Assigment".

Y la variable en cuestión (en el panel derecho) se llama "Create Global Objects", que tiene como valores por defecto "Administrarors,SERVICE" y hay que añadirle "Authenticated Users". Con eso, en nuestro caso, desapareció el error y pudimos conectar sin mas problemas.


[Actualizado 15-05-2008]

Gracias a un comentario en esta misma entrada, ahora se que al programa en cuestión se llega fácilmente con gpedit.msc desde la línea de comandos. ¡Gracias!

19 comentarios:

Anónimo dijo...

Juer...

Menos mal que usamos SGBD serios, que si no, no sé qué sería de nosotros.

Cómo te lo diría yo.

Sois unos monstruos/as...
Rafa.

JoseMa Perez dijo...

Serio serio no se, pero se dan una importancia que hay que ver.

Por cierto, ¿sabías curiosidad de lo que dice su nombre (oracle) si lo lees alrevés?

Y por otro lado, agárrate los machos que he creido entender que Sun ha comprado MySQL. :-)

George Bear dijo...

como o mejor dicho en donde puedo cambiar ese parametro para que pueda conectarme a la base de datos es mi caso me intento conectar desde vb .net me sale ese condenado error la primera ves ke hice el intento todo sin problemas despues al reiniciar mi makina oh sorpresa ya no tengo conectividad les agradaceria la ayuda atte un novato muy necio por aprender

JoseMa Perez dijo...

La verdad es que de la configuración de Windows 2003 Server no tengo mucha idea, aunque gracias a nuestro admin (un saludo Eli) tengo un "pantallazo" de la susodicha pantalla.

La pantalla de configuración debe estar en "Herramientas Administrativas" del "Panel de control", y se llama (en inglés, no me atrevo a traducirlo por no despistar) "Group Policy Object Editor".

Aquí, tenemos que desplegar el árbol: "Local Computer Policy" -> "Computer Configuration" -> "Windows Settings" -> "Security Settings" -> "Local Policies" -> "User Rights Assigment".

Y la variable en cuestión (en el panel derecho) se llama "Create Global Objects", que tiene como valores por defecto "Administrarors,SERVICE" y hay que añadirle "Authenticated Users". Con eso, en nuestro caso, desapareció el error y pudimos conectar sin mas problemas.

Espero que le sirva, porque me temo que no voy a poder ayudar mucho mas, ya que como digo yo ni siquiera tengo acceso de administrador a los servidores.

George Bear dijo...

muchas gracias me fue de gran utilidad solo que de todos modos lo tuve que traducir ya que mi windows esta en español se los agradesco y gracias una ves mas por sacarme del apuro ah y si pueden dense una vuelta por mi blog aqui les dejo la direccion http://kuevadeloso.blogspot.com/ salu2

Anónimo dijo...

Hola,

Tenia el mismo problema y era una tonteria, se habia eliminado la llave HKLM\software\oracle (esto por que estabamos haciendo pruebas por otro problema "error al ejecutar optimizador de consultas" y ese me tiene loco.)



Saludos
jroa.mu@gmail.com

Anónimo dijo...

Muy bueno tu cometario, lo hemos solucinado a la priemra. Gracias
Por cierto para llegar hasta el programa que dices solo hay que ejecutar gpedit.msc

Saludos a todos

JoseMa Perez dijo...

Me alegro un montón a quién os ha servido, de verdad, esa es la finalidad de la entrada. :-)

Y a los que no, pues ya lo siento y mucha suerte en la búsqueda! :-D

Anónimo dijo...

Mil gracias maestro. La solucion ha resulto mi problema.

Si puedo aportar en algo, el group policy editor se puede invocar desde la linea de comando ingresando:

gpedit.msc

Gracias, y hasta la vista!

Anónimo dijo...

¡Muchas gracias!

Gracias a tu artículo me he ahorrado unas cuantas horas de infructuosa búsqueda.

¡Saludos!

JoseMa Perez dijo...

De verdad que me alegro! Con esa intención puse la entrada. :-)

Unknown dijo...

Excelente trabajo, algunos compañeros tuvieron que instalar una nueva version de oracle, pero con la información que compartiste me ahorre un buen gasto de instalación. Gracias

Javier Perera dijo...

Muchas gracias!!!. Me ha sido de mucha utilidad.

Saludos.

Anónimo dijo...

madre mía, sólo 2 resultados en Google y en este post encuentro la solución que necesitaba.

Hoy has salvado mi cuello!

gracias!

xavi

Anónimo dijo...

Hola Muchas Gracias
Fue de Gran Ayuda ...

Anónimo dijo...

Muchas gracias, me ha sido de gran ayuda tu articulo, gracias a ti me he ganado un punto en el curro :-).

Saludos.

dardo dijo...

La solución a este error no es la que has puesto. Este es un error genérico de falta de memoria desde el lado del cliente.

Puede pasar cualquier en cualquier sistema operativo, por lo que la solución no es aplicable. La solución es liberar memoria o permitir que el cliente oracle consiga memoria.

Me ha pasado esto mismo en una máquina HP-UX 11.30 hoy mismo.

Saludos.

JoseMa Perez dijo...

Lo primero, gracias por el comentario Dardo. :)

Luego, te aseguro que en nuestro caso eso solucionó el problema (y a algunos de los que han dejado comentarios tambien) . Lo que no quita para que en vuestro caso haya sido otra cosa.

Un saludo.

Anónimo dijo...

En mi caso el problema se debía a que existían dos versiones de cliente Oracle instaladas en el mismo cliente, en el PATH se encontraba la ruta al cliente 9 y la configuración se estaba tomando del cliente 10.
La solución fué en este caso quitar del PATH la ruta al cliente 9.
Saludos.