Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
¿Cómo soluciono los errores de conexión habituales de mi instancia de Amazon RDS para Oracle?
No puedo conectarme a mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS).
Descripción breve
Antes de solucionar el error de conexión, haga lo siguiente:
- Compruebe el estado de su instancia de base de datos de Amazon RDS para Oracle. Si la instancia se encuentra en un estado que no sea available, storage optimization o backing-up, no podrá conectarse a la instancia.
- Compruebe que puede conectarse a la instancia de la base de datos a través del puerto de la base de datos. De forma predeterminada, Oracle usa el puerto 1521.
telnet example-endpoint 1521
Si no puede establecer una conexión mediante telnet, solucione el problema según las instrucciones que se indican en ¿Cómo puedo solucionar los problemas de conexión con la instancia de base de datos de Amazon RDS?
Resolución
Comprobación de la conexión
Compruebe que la cadena de conexión sea correcta. Un descriptor de conexión típico tiene un aspecto similar al siguiente:
sqlplus admin/xxxx@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myexampledb.xxxx.us-east-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))
Con Easy Connect, la cadena de conexión es similar a la siguiente:
sqlplus 'admin@myexampledb.xxxx.us-east-1.rds.amazonaws.com:1521/ORCL'
Utilice las siguientes opciones de solución de problemas según el mensaje de error que se muestre:
ORA-01017: invalid username/password; logon denied
Compruebe las credenciales de usuario proporcionadas en la cadena de conexión. Asegúrese de que estas credenciales sean correctas.
ORA-12545: Connect failed because target host or object does not exist
Utilice el siguiente comando NLSLOOKUP para comprobar que el nombre de host (punto final de RDS) sea correcto:
nslookup example-database.xxxx.us-east-1.rds.amazonaws.com Server: xx.xx.xx.xx Address: xx.xx.xx.xx#53
ORA-12170: TNS:Connect timeout occurred
-o-
ERROR: Connection reset by peer
Los motivos más habituales de estos errores son los siguientes:
- Hay problemas con la red, el establecimiento de la conexión o el firewall.
- La comunicación con el cliente no se completó dentro del intervalo de tiempo asignado.
- La base de datos no funciona.
- El parámetro sqlnet.ora no es válido.
Ejecute el comando TNSPING en el lado del cliente para verificar la sintaxis de la cadena de conexión:
tnsping example-connection-string
Si la sintaxis de la cadena de conexión es correcta, el resultado será similar al siguiente:
$ cat $ORACLE_HOME/network/admin/tnsnames.ora Output : ORCL=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= example-database.xxxx.us-east-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) $ tnsping ORCL TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 16-NOV-2021 09:16:04 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=example-database.xxxx.us-east-1.rds.amazonaws.com)(PORT=1521)) CONNECT_DATA=(SERVICE_NAME=ORCL))) OK (20 msec)
Si hay un error con la sintaxis, el resultado será similar al siguiente:
tnsping ORCL TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 16-NOV-2021 09:23:47 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: TNS-03505: Failed to resolve name
También puede ejecutar el comando TRCROUTE para comprobar la sintaxis de la cadena de conexión:
trcroute example-connection-string
Si la sintaxis de la cadena de conexión es correcta, el resultado será similar al siguiente:
Trace Route Utility for Linux: Version 12.1.0.2.0 - Production on 16-NOV-2021 09:16:25 Copyright (c) 1995, 2014, Oracle. All rights reserved. Route of TrcRoute: ------------------ Node: Client Time and address of entry into node: ------------------------------------------------------------- 16-NOV-2021 09:16:25 ADDRESS= PROTOCOL=TCP HOST=example-database.xxxx.us-east-1.rds.amazonaws.com PORT=1521 Node: Server Time and address of entry into node: ------------------------------------------------------------- 16-NOV-2021 14:16:25 ADDRESS= PROTOCOL=TCP HOST=example-database.xxxx.us-east-1.rds.amazonaws.com PORT=1521
Si hay un error con la sintaxis, el resultado será similar al siguiente:
trcroute ORCL Trace Route Utility for Linux: Version 12.1.0.2.0 - Production on 16-NOV-2021 09:25:06 Copyright (c) 1995, 2014, Oracle. All rights reserved. TNS-03505: Failed to resolve name
Para seguir solucionando estos errores, haga lo siguiente:
-
Confirme que el grupo de seguridad de la instancia de base de datos de RDS permita el tráfico entrante adecuado a la base de datos.
-
Si la aplicación se conecta desde una red local, confirme que las reglas del firewall permiten las conexiones hacia la instancia y desde esta.
-
La conexión del controlador JDBC Thin no pasa por la capa Oracle Net. Por lo tanto, si utiliza el controlador Oracle JDBC Thin, lleve a cabo lo equivalente a SQL*Net Client Tracing con el controlador Oracle JDBC Thin. Para obtener más información, consulte How to perform the equivalent of SQL*Net client tracing with Oracle JDBC thin driver releases prior to 11.2 (Doc ID 793415.1) en el sitio web de Oracle.
-
Si usa el cliente JDBC Thick u OCI, active el rastreo de sqlnet en el lado del servidor. Para activar el rastreo en el servidor, modifique el grupo de parámetros personalizados adjunto a la instancia. En este caso, no es necesario reiniciar. Si usa el grupo de parámetros predeterminado, cree un grupo de parámetros personalizado y modifique los siguientes parámetros. A continuación, modifique la instancia para usar el grupo de parámetros recién creado. En este caso, es necesario reiniciar.
sqlnetora.trace_level_server=16
sqlnetora.diag_adr_enabled=ON
Importante: Al activar el seguimiento a nivel de servidor, se puede generar rápidamente una gran cantidad de archivos de seguimiento. En raras ocasiones, es posible que sea necesario reiniciar el agente de escucha o incluso la base de datos para detener el seguimiento una vez finalizada la solución de problemas. El proceso también requiere una estrecha supervisión. Se recomienda activar el rastreo durante las horas no pico de trabajo o en condiciones aisladas cuando ningún otro usuario se conecte a la base de datos. Además, asegúrese de que el servidor disponga de suficiente espacio en disco. Los valores de los parámetros mencionados en este artículo son ejemplos. Puede modificar estos valores según su caso de uso. Para obtener más información, consulte Conexión a la instancia de base de datos de RDS para Oracle.
-
Active el rastreo de sqlnet en el lado del cliente. A continuación, reproduzca el error y capture los detalles de los archivos de rastreo. Cree una copia de seguridad del archivo sqlnet.ora y, a continuación, modifique los siguientes parámetros del archivo:
TRACE_LEVEL_CLIENT = 16
TRACE_FILE_CLIENT = client.trc
TRACE_DIRECTORY_CLIENT = /var/log/sqlnet
TRACE_TIMESTAMP_CLIENT = ON
TRACE_UNIQUE_CLIENT = ON
DIAG_ADR_ENABLED= OFF
Para desactivar el rastreo, elimine los parámetros de rastreo del archivo sqlnet.ora. El seguimiento de las sesiones ya conectadas en el servidor no se detiene hasta que no se cierre la sesión del cliente.
-
Si se muestra el error debido a una red lenta, configure los siguientes parámetros en los lados del cliente y del servidor. Esto permite disponer de más tiempo para establecer la conexión:
Lado del cliente:
SQLNET.INBOUND_CONNECT_TIMEOUT
SQLNET.SEND_TIMEOUT
SQLNET.RECV_TIMEOUT
Lado del servidor:
sqlnetora.sqlnet.inbound_connect_timeout
sqlnetora.sqlnet.send_timeout
sqlnetora.sqlnet.recv_timeout
Por ejemplo, si usa el valor 600 para todos los parámetros, el tiempo de conexión se establece en 10 minutos.
ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
Confirme que el SID proporcionado en la cadena de conexión coincida con el valor de DBNAME que se encuentra en la pestaña Configuración de la consola de Amazon RDS. De forma predeterminada, el SID y el DBNAME de una instancia de RDS para Oracle es ORCL.
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
Asegúrese de usar la cláusula SID o SERVICE_NAME en la sección CONNECT_DATA de la cadena de conexión. El valor de SERVICE_NAME proporcionado en la cadena de conexión es el mismo que el valor de DBNAME que se encuentra en la pestaña Configuración de la consola de Amazon RDS. De forma predeterminada, el valor SERVICE_NAME de una instancia de RDS para Oracle es ORCL.
ORA-12538: TNS:no such protocol adapter
Asegúrese de que la sección PROTOCOL de su descriptor de conexión sea correcta. De forma predeterminada, el valor de PROTOCOL es TCP.
ORA-12560: TNS:protocol adaptor error
Este error indica una conexión al SID incorrecto o a una base de datos que no está activa. Compruebe el estado de la instancia de base de datos de RDS. Ejecute el comando tnsping para probar la sintaxis y la conectividad de la cadena de conexión:
tnsping example-connection-string
ORA-00018: maximum number of sessions exceeded
Este error indica que hay demasiadas sesiones conectadas a la base de datos. Para solucionar este error, haga lo siguiente:
-
Si se ha conectado a la base de datos, ejecute la siguiente consulta para encontrar el número de sesiones conectadas:
SELECT COUNT(*) TOTAL FROM v$session;
Ejecute la siguiente consulta para ver la utilización actual, la utilización máxima y los límites configurados para los parámetros de sesiones y procesos en la instancia de RDS:
SELECT RESOURCE_NAME, CURRENT_UTILIZATION, MAX_UTILIZATION, LIMIT_VALUE FROM V$RESOURCE_LIMIT WHERE RESOURCE_NAME IN ( 'sessions', 'processes');
-
Finalice las sesiones no deseadas para que las demás sesiones puedan conectarse a la base de datos.
Ejecute la siguiente consulta para ver el SID y el número de serie de las sesiones individuales que se van a detener:
col username format a15 col osuser format a15 col program format a40 col machine format a40 SELECT s.osuser, s.sid, s.serial#, p.spid "RDS OS PID", s.program, s.machine, s.process "CLIENT OS PID", s.STATUS, s.SQL_ID, s.CURRENT_QUEUE_DURATION FROM v$session s, v$process p WHERE s.paddr = p.addr AND s.machine LIKE '%<client machine>%' AND s.STATUS='ACTIVE';
Nota: Modifique la cláusula WHERE según su caso de uso.
Ejecute el siguiente comando para finalizar las sesiones no deseadas en su instancia de RDS para Oracle:
begin rdsadmin.rdsadmin_util.disconnect( sid => example-sid, serial => example-serial_number); end;
-
Para aumentar el valor de los parámetros de las sesiones y procesos, edite el grupo de parámetros personalizado y modifique los parámetros. El parámetro sessions no está definido en el grupo de parámetros y usa los valores predeterminados del motor.
El número predeterminado de sesiones en Oracle 19c se calcula de la siguiente manera:
Número de sesiones = (1,5 * número de procesos) + 22.
El valor predeterminado del parámetro processes se define como LEAST({DBInstanceClassMemory/9868951}, 20000). El número de procesos se calcula como la memoria total (MB) en el host /10 o 20 000, lo que sea menor.
Para obtener más información sobre la modificación de un grupo de parámetros, consulte Grupos de parámetros para Amazon RDS.
Como estos parámetros son estáticos, debe reiniciar la instancia después de actualizarlos.
Información relacionada
¿Por qué no puedo conectarme a mi instancia de base de datos de Amazon RDS para Oracle?

Contenido relevante
- preguntada hace 21 horaslg...
- preguntada hace 4 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace 2 meseslg...
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace 4 meseslg...