2010-03-02 15 views
5

Recientemente, hemos migrado nuestra base de datos de producción de Oracle 9.2.0.6 de Windows 32bit RAC (2 nodos) a un entorno Linux de 64 bits. El entorno Linux de 64 bits tiene 8 veces más memoria que el entorno Windows 32 bit y Linux 64 bit tiene un disco más veloz (RAID 10 se compara con RAID 5 de Windows).Tiempo de apertura de la conexión SQL muy largo

Sin embargo, después de esta migración, hemos notado que el tiempo de conexión sql se ha incrementado significativamente. En algún momento, tomará 16 segundos abrir una conexión. Hemos utilizado diferentes controladores (JDBC, ODBC, OCI) y SQLPlus. Pero, no hemos notado ninguna diferencia en el tiempo de conexión sql. Hemos investigado la red, pero notamos que no hay problema con la red.

En algún momento, se tarda unos 16 segundos en abrir una única conexión. Esta base de datos tiene alrededor de 50000 esquemas de usuario.

¿Alguien puede decirme qué se puede hacer para reducir el tiempo de apertura de la conexión? Tu ayuda será apreciada.

+0

serverfault.com sería un mejor lugar para preguntar, y un mejor lugar para encontrar una respuesta – skaffman

+0

Tengo un problema similar y encuentro una solución [http://oracleprof.blogspot.com/2009/08/slow-network- connection-w-11g.html] (http://oracleprof.blogspot.com/2009/08/slow-network-connection-w-11g.html) n en –

Respuesta

2

Hay muchas razones posibles para esto, y sin más información es difícil determinar la causa raíz.

Dicho esto, compruebe su archivo sqlnet.ora encuentra en la máquina de su conexión (es decir <oracle_home> /network/admin/sqlnet.ora) y ver si tiene una línea como:

SQLNET.AUTHENTICATION_SERVICES= (NTS) 

Si es así, pruebe a cambiar a:

SQLNET.AUTHENTICATION_SERVICES= (NONE) 

Guardar y vuelva a intentar la conexión a través de SQLPlus.

Además, verifique el valor que ha establecido para NAMES.DIRECTORY_PATH. Asegúrese de que el método que está utilizando para conectarse a su instancia sea el primero en la lista. Por ejemplo, utilizamos TNSNAMES y lee lo nuestro:

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) 

Espero que esto ayude.

+2

Para conexiones TCP con Net * 8, el servidor necesita ser capaz de resolver nombres de host y direcciones IP. La resolución de nombre más rápida es una búsqueda en el archivo/etc/hosts en el servidor. (La resolución de nombres está influenciado por /etc/resolv.conf) – spencer7593

+0

sqlnet.ora tiene la configuración de SQLNET.AUTHENTICATION_SERVICES = (ninguno) NAMES.DIRECTORY_PATH = (TNSNAMES) Somos capaces de reproducir con problema desde diferentes máquina con conductor diferente También podemos reproducir desde SQLPLUS. Latencia de red no es un problema. Esta lentitud ocurre al azar. Sin embargo, podríamos correlacionar esta lentitud con picos de CPU. En el momento de la conexión lenta, la CPU aumenta al 100%. También hemos notado que el valor R del sistema cruza el número de CPU. Lo que indica un cuello de botella en la CPU. – user284534

1

cosas que podrían indicar las áreas problemáticas:

Desde el cliente:

  • son todos los clientes que presentan el problema?
  • es ping servidor razonablemente rápido?
  • es tnsping dbname lento?
  • ¿Se puede conectar normalmente con telnet?

Desde el servidor:

  • es de ping cliente razonablemente rápido?
  • es nslookup del cliente por nombre e IP rápido?
  • es tnsping dbname lento?
  • ¿es sqlplus user @ dbname rápido o lento?
  • es una conexión directa en el servidor rápido? ES DECIR., Exportación ORACLE_SID = db, el usuario sqlplus/PW
+0

Sí, todos los tipos de clientes presentan el problema. Ping es muy rápido. tnsping no es lento. Sí, normalmente podemos conectarnos usando telnet. Ping para el cliente también es muy rápido La lentitud se produce al azar. De alguna manera, hemos notado que cuando se conectan entre 30 y 40 conexiones simultáneamente, la CPU de la base de datos se dispara al 100% y las conexiones se ralentizan. – user284534

2

si de repente la tnsping ha venido a ser muy lento (significa que es un sistema bien antes), pero ping para el mismo servidor de base de datos es rápido, la mayor parte posible razón es el archivo listener.log es demasiado grande:

$ORACLE_HOME/network/log/listener.log

Algunos OS (SunOS en mi experiencia) se reunirá escrito a un problema de rendimiento archivo de texto muy grande (superior a 4G?), así que la cola/limpiar el archivo de registro resolver de inmediato el tnsping lleva mucho tiempo problema.

2

DNS en nuestro caso. Después de que nuestro administrador comentó todas las entradas de DNS en el lado del servidor, el sistema comenzó a responder sin demora.

2

También experimenté establecimientos de conexión muy lentos con SQL Developer 4.1.5.21 en Mac OS frente a Oracle 12.1.0.2.0.

Para analizar esto instalé Oracle Instant Client para verificar la conectividad directamente con sqlplus. Cuando intenté conectar con sqlplus me dio el siguiente error:

$ sqlplus <USER>/<PASSWORD>@<HOST>:<PORT>/<SERVICE> 
SQL*Plus: Release 12.1.0.2.0 Production on Thu Mar 16 10:50:44 2017 

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

ERROR: 
ORA-21561: OID generation failed 

entonces encontré entrada de blog Oracle ORA-21561 : OID generation failed y añadió el nombre de host (tal como lo devuelve el comando hostname) a la 127.0.0.1 -line en /etc/hosts:

127.0.0.1 localhost MacBook-Pro.local 

Esto corrigió el error ORA-21561 en sqlplus, así como el establecimiento de conexión lenta en SQL Developer.

Cuestiones relacionadas