Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Error ORA-12518: TNS:listener could not hand off client
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Error ORA-12518: TNS:listener could not hand off client

Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Error ORA-12518: TNS:listener could not hand off client Responder citando

Tengo un equipo con Windows Server 2003 y Oracle Database 10g, anteriormente tenía Oracle 9i. Al pasarlo a Oracle 10g y de Linux a Windows, siguiendo estas instrucciones:

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&p=3165

Me va bien, salvo por el hecho de que en determinados momentos me aparece este error (utilizo una aplicación de contabilidad y otra de facturación que se conectan mediante ODBC):

---------------------------
Testing Connection
---------------------------
Unable to connect
SQLState=S1000
[Oracle][ODBC][Ora]ORA-12518: TNS:listener could not hand off client connection

---------------------------
Aceptar
---------------------------


Además, si intento acceder mediante SQLPlus de Oracle, me da este error:

sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jun 14 09:37:01 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connect system/contraseña@sid_oracle as sysdba;
ORA-12518: TNS:listener could not hand off client connection


¿A qué puede ser debido? he notado que sólo ocurre cuando más usuarios hay conectados.
MensajePublicado:
Lun Jun 14, 2010 7:10 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



Oracle 10g tiene un límite de 150 por defecto en el parámetro PROCESSES.

Comprueba el valor actual de este parámetro y el máximo alcanzado, comprueba si el máximo alcanzado coincide con el límite, de ser así tendrás que ampliarlo. Para consultar estos datos ejecuta la siguiente consulta SQL:

Código:

select * from v$resource_limit
where resource_name = 'processes' or resource_name = 'sessions'


Te devolverá algo así:

RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE

Con sus valores correspondientes, en el parámetro "processes" cada columna quiere decir lo siguiente:

RESOURCE_NAME: nombre del parámetro.
CURRENT_UTILIZATION: número de procesos actualmente abiertos en el servidor de Oracle.
MAX_UTILIZATION: número máximo de procesos abiertos (en cualquier momento).
INITIAL_ALLOCATION: valor que se estableció inicialmente para este parámetro.
LIMIT_VALUE: límite máximo de procesos concurrentes permitido.

Con lo cual, si tu LIMIT_VALUE es igual a tu MAX_UTILIZATION, esto quiere decir que en algún momento se alcanza el máximo de procesos permitidos, por lo que si un usuario intenta abrir una aplicación que acceda a Oracle, en ese momento, no le dejará acceder, dando el error:

ORA-12518: TNS:listener could not hand off client connection
MensajePublicado:
Lun Jun 14, 2010 8:21 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



Efectivamente, la consulta SQL me devuelve:

CURRENT_UTILIZATION = 110
MAX_UTILIZATION = 150
LIMIT_VALUE = 150

¿se puede ampliar el valor de LIMIT_VALUE? ¿cómo se hace?
MensajePublicado:
Lun Jun 14, 2010 8:23 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



varios escribió:
Efectivamente, la consulta SQL me devuelve:

CURRENT_UTILIZATION = 110
MAX_UTILIZATION = 150
LIMIT_VALUE = 150

¿se puede ampliar el valor de LIMIT_VALUE? ¿cómo se hace?


Para cambiar el valor del parámetro PROCESSES, sigue estos pasos:

1. Accede a Oracle mediante SQLPlus, para ello abre una ventana de MS-DOS (si tu equipo es Windows) o una ventana de terminal (si tu equipo es Linux).

2. Ejecuta el siguiente comando (normalmente con el usuario del sistema operativo "oracle", al menos si tu equipo es Linux):

Código:

sqlplus /nolog


Si te dice que no existe el comando, accede a la carpeta BIN de la instalación de Oracle, ahí estará.

3. Conéctate a la base de datos con el comando (una vez que hayas abierto SQLPlus):

Código:

connect / as sysdba;


O bien, si quieres indicar un usuario concreto, una contraseña y un SID de la base de datos (por si tienes varias):

Código:

connect usuario/contraseña@sid as sysdba;


4. Una vez conectado, ejecuta esta consulta para ver el valor actual de los parámetros relacionados con los procesos:

Código:

show parameters process;


Te devolverá algo así;



NAME TYPE VALUE
------------------------------------ ----------- --------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150


5. Una vez verificado el valor actual del parámetro "processes", cámbialo con el comando:

Código:

alter system set processes = 300 SCOPE=SPFILE;


Donde "300" será el nuevo valor, será el nuevo LIMIT_VALUE.

6. Para que los cambios se apliquen tienes que detener e iniciar la base de datos. Este valor no puede modificarse en caliente, no sirve "scope=both".


Una vez que hayas reiniciado Oracle, ve siguiéndole la pista a la select:

Código:

select * from v$resource_limit
where resource_name = 'processes' or resource_name = 'sessions';


Con el MAX_UTILIZATION podrás saber si te has quedado corto o si te has pasado. Si te has pasado puedes reducir el número, si te has quedado corto lo aumentas. Pero no es recomendable aumentarlo en exceso, esto podría provocar que Oracle consuma más memoria.

De paso, si ejecutas:

Código:

select * from v$resource_limit;


Verás el valor actual, máximo y límite de estos otros parámetros, a los cuales debes "seguirles también la pista" (comprobarlos de vez en cuando):

processes
sessions
enqueue_locks
enqueue_resources
ges_procs
ges_ress
ges_locks
ges_cache_ress
ges_reg_msgs
ges_big_msgs
ges_rsv_msgs
gcs_resources
gcs_shadows
dml_locks
temporary_table_locks
transactions
branches
cmtcallbk
sort_segment_locks
max_rollback_segments
max_shared_servers
parallel_max_servers
MensajePublicado:
Lun Jun 14, 2010 8:40 am
Top of PageVer perfil de usuario
bbdd
Usuario


Registrado: Jun 30, 2010
Mensajes: 1

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



Tengo un equipo con Windows Server 2003, con 8GB de memoria RAM, es Windows Server 2003 Enterprise (32 bits). Tengo instalado Oracle Database 10g (con las opciones y parámetros de defecto). A este equipo se conectan unos 400 usuarios, aunque no de forma concurrente, como máximo puede haber concurrentemente unos 150 / 200.

Inicialmente me salía el mismo error que comentáis en este post:

ORA-12518: TNS:listener could not hand off client connection

Que conseguí solucionar gracias a vuestras indicaciones, aumentando los "processes".

Pero tras varios días, he detectado que, a veces, vuelve a dar el mismo error:

ORA-12518: TNS:listener could not hand off client connection

En ese momento ejecuto la select que comentáis y tengo processes suficientes, no llega al límite.

¿Qué otro problema puede causar que se produzca este error?

Lo curioso es que miro en el administrador de tareas de Windows y veo que el equipo está "sobrado", que no hay picos de consumo excesivo del procesador y, lo más curioso, que tengo unas 6GB libres de memoria RAM.

¿Cómo puedo hacer que Oracle utilice más RAM?
MensajePublicado:
Mie Jun 30, 2010 5:36 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



bbdd escribió:
Tengo un equipo con Windows Server 2003, con 8GB de memoria RAM, es Windows Server 2003 Enterprise (32 bits). Tengo instalado Oracle Database 10g (con las opciones y parámetros de defecto). A este equipo se conectan unos 400 usuarios, aunque no de forma concurrente, como máximo puede haber concurrentemente unos 150 / 200.

Inicialmente me salía el mismo error que comentáis en este post:

ORA-12518: TNS:listener could not hand off client connection

Que conseguí solucionar gracias a vuestras indicaciones, aumentando los "processes".

Pero tras varios días, he detectado que, a veces, vuelve a dar el mismo error:

ORA-12518: TNS:listener could not hand off client connection

En ese momento ejecuto la select que comentáis y tengo processes suficientes, no llega al límite.

¿Qué otro problema puede causar que se produzca este error?

Lo curioso es que miro en el administrador de tareas de Windows y veo que el equipo está "sobrado", que no hay picos de consumo excesivo del procesador y, lo más curioso, que tengo unas 6GB libres de memoria RAM.

¿Cómo puedo hacer que Oracle utilice más RAM?


En primer lugar, asegúrate de que el error que nos comentas, el:

ORA-12518: TNS:listener could not hand off client connection

Te aparece justo cuando Oracle no admite más conexiones, para ello, accede al equipo con Windows Server 2003 y Oracle 10g, abre una ventana de MS-DOS y ejecuta:

sqlplus system/contraseña

Ejecútalo todas las veces que haga falta, verás en el administrador de tareas que por cada conexión que hagas con sqlplus a Oracle, consume unas 18MB.

En algún momento te dará el error:

ORA-12518: TNS:listener could not hand off client connection

Y no te dejará hacer más conexiones. Si esto es así, en ese momento, observa en el administrador de tareas cuánta RAM se está usando y cuánta hay libre. Comprueba también la "Carga de transacciones" (que aparece en la barra de estado del Administrador de tareas). Si no supera los 2000M (la carga de transacciones), esto es debido a que no tienes configurado el sistema operativo para que utilice más de 2GB de RAM.

Te explicamos cómo solucionarlo:

1. Abre con el Notepad el archivo "boot.ini" que se encuentra en la raíz de la unidad C:\ (o donde tengas instalado Windows Server 2003). Si no te aparece tendrás que acceder a las opciones de carpeta del Explorador de Windows e indicar que te muestre los archivos ocultos y de sistema, pues este archivo tiene estos atributos: SH (sistema y oculto).

2. Verás algo así en su contenido:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect


Pues para que Windows pueda trabajar con procesos de más de 2GB tienes que modificar el archivo anterior y añadir "/3GB" al final de la última línea, quedaría algo así:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /3GB


3. Guarda los cambios realizado en el fichero boot.ini. Haz una copia de seguridad de la base de datos (siempre por si acaso) y reinicia el equipo.

Con lo anterior indicarás a Windows que use más de 2GB.

Motivo de esta limitación: el problema son los 32bits, esta arquitectura está bastante más limitada que la de 64bits, con la que no tendrías este problema.

El espacio de direcciones virtuales de procesos y aplicaciones, en sistema de 32btis, está limitado a 2 GB. Por lo que, aunque tengas más de 2GB de RAM, no será usada, a menos que se lo indiques con el parámetro que te hemos comentado anteriormente "/3GB".
MensajePublicado:
Mie Jun 30, 2010 7:51 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Error ORA-12518: TNS:listener could not hand off client Responder citando



Anuncios



Por supuesto, lo explicado anteriormente hace que el sistema operativo utilice más de 2GB, pero si quieres que el servicio de Oracle utilice más RAM de la que actualmente esté utilizando sigue estos pasos:

1. Abre una ventana de MS-DOS en el servidor Windows 2003, escribe:

Código:

sqlplus /nolog


2. Conéctate a Oracle con un usuario DBA con:

Código:

connect system/contraseña as sysdba;


3. A continuación es recomendable que detengas la base de datos (hazlo cuando te sea posible pues los usuarios no podrán conectarse mientras haces esto) y la inicies en modo nomount con:

Código:

shutdown immediate;
startup nomount;


Código:

alter system set SGA_MAX_SIZE=2GB scope=SPFILE;
alter system set SGA_TARGET=2GB scope=SPFILE;


Con los comandos anteriores indicarías a Oracle que utilice 2GB, para que se apliquen los cambios tienes que detener la bd y volverla a iniciar con:

Código:

shutdown immediate;


Tendrás que volver a conectarte para hacer el:

Código:

startup;


Además del SGA_MAX_SIZE y el SGA_TARGET, hay otros parámetros que afectan a la memoria, échales un vistazo, pero estos son los más importantes.
MensajePublicado:
Mie Jun 30, 2010 11:04 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+