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!
Comment résoudre les erreurs de connexion courantes pour mon instance Amazon RDS for Oracle ?
Je n’arrive pas à me connecter à mon instance de base de données Amazon Relational Database Service (Amazon RDS).
Brève description
Avant de tenter de résoudre l'erreur de connexion, procédez comme suit :
- Vérifiez l'état de votre instance de base de données Amazon RDS for Oracle. Si l'instance est dans un état autre que Disponible, Optimisation du stockage ou Sauvegarde, vous ne pouvez pas vous connecter à l'instance.
- Vérifiez que vous pouvez vous connecter à l'instance de base de données via le port de la base de données. Par défaut, Oracle utilise le port 1521.
telnet example-endpoint 1521
Si vous ne parvenez pas à établir une connexion à l'aide de Telnet, suivez les instructions de la page Comment résoudre les problèmes de connexion à mon instance de base de données Amazon RDS ? pour résoudre le problème.
Résolution
Vérification de votre connexion
Vérifiez que votre chaîne de connexion est exacte. Voici un exemple de descripteur de connexion typique :
sqlplus admin/xxxx@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myexampledb.xxxx.us-east-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))
Voici un exemple de chaîne de connexion avec Easy Connect :
sqlplus 'admin@myexampledb.xxxx.us-east-1.rds.amazonaws.com:1521/ORCL'
Utilisez les options de dépannage suivantes en fonction du message d'erreur reçu :
ORA-01017: invalid username/password; logon denied
Vérifiez les informations d'identification de l'utilisateur qui sont fournies dans la chaîne de connexion. Assurez-vous que ces informations d'identification sont exactes.
ORA-12545: Connect failed because target host or object does not exist
Utilisez la commande NLSLOOKUP suivante pour vérifier que le nom d'hôte (point de terminaison RDS) est exact :
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
-ou-
ERROR: Connection reset by peer
Voici les causes les plus courantes de ces erreurs :
- Des problèmes sont survenus au niveau du réseau, de l'établissement de la connexion ou du pare-feu.
- La communication avec le client n'a pas pu se terminer dans l'intervalle de temps imparti.
- La base de données est en panne.
- Le paramètre sqlnet.ora n'est pas valide.
Exécutez la commande TNSPING côté client pour vérifier la syntaxe de la chaîne de connexion :
tnsping example-connection-string
Si la syntaxe de la chaîne de connexion est correcte, vous obtiendrez une sortie de ce type :
$ 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)
En cas d'erreur de syntaxe, vous obtiendrez une sortie de ce type :
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
Vous pouvez également exécuter la commande TRCROUTE pour vérifier la syntaxe de la chaîne de connexion :
trcroute example-connection-string
Si la syntaxe de la chaîne de connexion est correcte, vous obtiendrez une sortie de ce type :
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
En cas d'erreur de syntaxe, vous obtiendrez une sortie de ce type :
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
Pour résoudre ces erreurs, procédez comme suit :
-
Vérifiez que le groupe de sécurité de votre instance de base de données RDS autorise le trafic entrant approprié vers votre base de données.
-
Si l'application se connecte depuis un réseau local, vérifiez que les règles de pare-feu autorisent les connexions depuis et vers l'instance.
-
La connexion du pilote JDBC Thin ne passe pas par la couche Oracle Net. Ainsi, si vous utilisez le pilote Oracle JDBC Thin, vous devez effectuer l’équivalent du suivi client SQL*Net avec le pilote Oracle JDBC Thin. Pour en savoir plus, consultez la page How to perform the equivalent of SQL*Net client tracing with Oracle JDBC thin driver releases prior to 11.2 (Doc ID 793415.1) sur le site Web d'Oracle.
-
Si vous utilisez le client JDBC Thick ou OCI, activez le suivi SQLNet côté serveur. Pour activer le suivi côté serveur, modifiez le groupe de paramètres personnalisés associé à l'instance. Dans ce cas, aucun redémarrage n'est nécessaire. Si vous utilisez le groupe de paramètres par défaut, créez un groupe de paramètres personnalisé et modifiez les paramètres suivants. Modifiez ensuite l'instance pour utiliser le groupe de paramètres nouvellement créé. Dans ce cas, un redémarrage est nécessaire.
sqlnetora.trace_level_server=16
sqlnetora.diag_adr_enabled=ON
Important : Lorsque vous activez le suivi au niveau du serveur, un grand nombre de fichiers de suivi peuvent être générés rapidement. Dans de rares cas, il peut être nécessaire de redémarrer le récepteur ou même la base de données pour arrêter le suivi une fois le dépannage terminé. Ce processus nécessite également une surveillance étroite. Il est recommandé d'activer le suivi en dehors des heures de pointe ou dans des conditions isolées lors desquelles aucun autre utilisateur ne se connectera à la base de données. Assurez-vous également que le serveur dispose d'un espace disque suffisant. Les valeurs de paramètres présentées dans cet article ne sont que des exemples. Vous pouvez modifier ces valeurs en fonction de votre cas d'utilisation. Pour en savoir plus, consultez la page Connexion à votre instance de base de données RDS for Oracle.
-
Activez le suivi sqlnet côté client. Reproduisez ensuite l'erreur pour la capturer en détails dans les fichiers de suivi. Créez une sauvegarde du fichier sqlnet.ora, puis modifiez les paramètres suivants dans le fichier :
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
Pour désactiver le suivi, supprimez les paramètres de suivi du fichier sqlnet.ora. Le suivi des sessions déjà connectées côté serveur ne s'interrompt qu'à la fermeture de la session client.
-
Si l'erreur est déclenchée par la lenteur du réseau, configurez les paramètres suivants côté client et côté serveur. Cette modification allongera le délai imparti pour établir la connexion :
Côté client :
SQLNET.INBOUND_CONNECT_TIMEOUT
SQLNET.SEND_TIMEOUT
SQLNET.RECV_TIMEOUT
Côté serveur :
sqlnetora.sqlnet.inbound_connect_timeout
sqlnetora.sqlnet.send_timeout
sqlnetora.sqlnet.recv_timeout
Par exemple, si vous utilisez la valeur 600 pour tous les paramètres, le délai de connexion est défini sur 10 minutes.
ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
Vérifiez que le SID fourni dans la chaîne de connexion correspond bien à la valeur DBNAME qui se trouve sous l'onglet Configuration dans la console Amazon RDS. Par défaut, la valeur SID et DBNAME d'une instance RDS for Oracle est ORCL.
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
Veillez à utiliser la clause SID ou SERVICE_NAME dans la section CONNECT_DATA de la chaîne de connexion. La valeur SERVICE_NAME fournie dans la chaîne de connexion est la même que la valeur DBNAME qui se trouve sous l'onglet Configuration dans la console Amazon RDS. Par défaut, la valeur SERVICE_NAME d'une instance RDS for Oracle est ORCL.
ORA-12538: TNS:no such protocol adapter
Vérifiez que la section PROTOCOL de votre descripteur de connexion est correcte. Par défaut, la valeur pour PROTOCOL est TCP.
ORA-12560: TNS:protocol adaptor error
Cette erreur indique une connexion au mauvais SID ou une base de données inactive. Vérifiez l'état de l'instance de base de données RDS. Exécutez la commande tnsping pour tester la syntaxe et la connectivité de la chaîne de connexion :
tnsping example-connection-string
ORA-00018: maximum number of sessions exceeded
Cette erreur indique qu'un trop grand nombre de sessions sont connectées à la base de données. Pour résoudre cette erreur, procédez comme suit :
-
Si vous avez établi une connexion à la base de données, exécutez la requête suivante pour connaître le nombre de sessions connectées :
SELECT COUNT(*) TOTAL FROM v$session;
Exécutez la requête suivante pour afficher l'utilisation actuelle, l'utilisation maximale et les limites qui sont configurées pour les paramètres de sessions et de processus dans l'instance RDS :
SELECT RESOURCE_NAME, CURRENT_UTILIZATION, MAX_UTILIZATION, LIMIT_VALUE FROM V$RESOURCE_LIMIT WHERE RESOURCE_NAME IN ( 'sessions', 'processes');
-
Mettez fin aux sessions indésirables afin que les autres sessions puissent se connecter à la base de données.
Exécutez la requête suivante pour afficher le SID et le numéro de série des sessions individuelles à arrêter :
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';
Remarque : vous devez modifier la clause WHERE en fonction de votre cas d'utilisation.
Exécutez la commande suivante pour mettre fin aux sessions indésirables dans votre instance RDS for Oracle :
begin rdsadmin.rdsadmin_util.disconnect( sid => example-sid, serial => example-serial_number); end;
-
Pour augmenter la valeur associée aux paramètres de sessions et de processus, modifiez le groupe de paramètres personnalisés, puis modifiez les paramètres. Le paramètre de sessions n'est pas défini dans le groupe de paramètres et utilise les valeurs par défaut du moteur.
Le nombre de sessions par défaut dans Oracle 19c est calculé comme suit :
Nombre de sessions = (1,5 * nombre de processus) + 22.
La valeur par défaut du paramètre de processus est définie sur LEAST({DBInstanceClassMemory/9868951}, 20000). Le nombre de processus correspond à la mémoire totale (Mo) de l'hôte /10 ou 20 000 (la valeur la plus faible étant retenue).
Pour en savoir plus sur la modification d'un groupe de paramètres, consultez la section Groupes de paramètres pour Amazon RDS.
Ces paramètres étant statiques, vous devrez redémarrer votre instance après les avoir mis à jour.
Informations connexes
Pourquoi ne puis-je pas me connecter à mon instance de base de données Amazon RDS for Oracle ?

Contenus pertinents
- demandé il y a un anlg...
- demandé il y a 5 moislg...
- demandé il y a 7 moislg...
- demandé il y a 7 moislg...
- demandé il y a 4 moislg...