Dépanner les échecs de mise à jour
Les opérations de mise à jour peuvent échouer pour diverses raisons. En général, une opération échoue car un noeud de base de données est arrêté, l'espace est insuffisant sur le système de fichiers ou l'hôte de la base de données ne peut pas accéder au magasin d'objets.
Cet article comprend des informations pour vous aider à déterminer la cause de l'échec et à corriger le problème. Les informations sont organisées en plusieurs sections, en fonction de la condition de l'erreur.
Si vous connaissez déjà la cause, vous pouvez passer à la rubrique de la solution suggérée. Sinon, utilisez la rubrique Identifier la cause de la défaillance pour commencer.
Les rubriques suivantes sont décrites dans cet article :
- Identifier la cause de la défaillance
- Problèmes d'agent de service de base de données
- Problèmes liés à la connectivité du magasin d'objets
- Problèmes liés à l'hôte
- Problèmes liés à Oracle Clusterware
- Problèmes liés à la base de données
- Obtenir de l'aide supplémentaire
Conseil :
Vous pouvez également créer des connexions à la console série pour dépanner le système en mode utilisateur unique. Pour plus d'informations sur la création d'une connexion à la console série dans la console OCI, voir Gérer la connexion de la console série au système de base de données.Identifier la cause de la défaillance
Dans la console OCI, vous pouvez identifier une opération de mise à jour qui a échoué en consultant l'historique des mises à jour d'un système de base de données ou d'une base de données individuelle. Une mise à jour qui n'a pas pu être appliquée affiche le statut Échec et présente une brève description de l'erreur à l'origine de l'échec. Si le message d'erreur ne contient pas suffisamment d'informations pour vous orienter vers une solution, vous pouvez utiliser l'interface de ligne de commande et les fichiers journaux de la base de données pour collecter d'autres données. Consultez ensuite la section pertinente de cet article pour trouver la solution.
Les sujets suivants sont abordés :
Identifier la cause première de l'échec de l'opération de mise à jour
-
Connectez-vous à l'hôte en tant qu'utilisateur racine et accédez au répertoire
/opt/oracle/dcs/bin/
. -
Déterminez l'ordre des opérations effectuées sur la base de données.
dbcli list-jobs
Notez le dernier ID tâche indiqué avec un statut autre que Réussite.
-
Avec l'ID tâche que vous avez noté à l'étape précédente, utilisez la commande suivante pour vérifier les détails de cette tâche :
dbcli describe-job -i <job_ID> -j
En général, l'exécution de cette commande est suffisante pour obtenir la cause première de l'échec.
-
Pour plus d'informations, voir le fichier
/opt/oracle/dcs/log/dcs-agent.log
.Vous pouvez trouver l'ID tâche dans ce fichier en utilisant l'horodatage retourné par le rapport sur les tâches à l'étape 2.
- Si la mise à jour a échoué sur une base de données RAC à 2 noeuds, effectuez les étapes 3 et 4 sur les deux noeuds.
Problèmes d'agent de service de base de données
Votre base de données utilise un cadre d'agent pour vous permettre de la gérer au moyen de la plate-forme Oracle Cloud.
Les sujets suivants sont abordés :
Résoudre les échecs de mise à jour causés par un agent arrêté
Pour résoudre un échec de mise à jour, vous aurez parfois besoin de redémarrer le programme dcsagent
si son statut est Arrêter/Attente.
Redémarrer l'agent du service de base de données
-
À l'invite de commande, vérifiez le statut de l'agent :
initctl status initdcsagent
-
Si l'agent est à l'état Arrêter/Attente, essayez de le redémarrer :
initctl start initdcsagent
-
Vérifiez à nouveau le statut de l'agent pour confirmer qu'il a le statut Démarrer/En cours d'exécution :
initctl status initdcsagent
Résoudre les échecs de mise à jour causés par un agent qui doit être mis à jour
L'opération de mise à jour peut également échouer si votre agent doit être mis à jour. Le système présente le message d'erreur suivant pour cet échec :
Current DcsAgent version is less than or equal to minimum required version.
Pour résoudre ce problème, procédez comme suit.
Communiquer avec Oracle Support pour mettre à jour l'agent du service de base de données OCI
-
Confirmez que l'agent (dcsagent) et le programme d'administration DCS (dcsadmin) s'exécutent en utilisant les commandes suivantes :
initctl status initdcsagent
initctl status initdcsadmin
-
Si ces programmes ne sont pas actifs, utilisez les commandes suivantes pour les redémarrer :
initctl start initdcsagent
initctl start initdcsadmin
- Suivez les instructions sous Obtenir de l'aide supplémentaire pour collecter vos fichiers journaux d'agent DCS.
- Communiquez avec Oracle Support pour obtenir de l'aide concernant la mise à jour de l'agent.
Problèmes liés à la connectivité du magasin d'objets
Les mises à jour du système de base de données et de la base de données sont stockées dans le service de stockage d'objets pour OCI. Par conséquent, les opérations de mise à jour réussies requièrent une connectivité entre l'hôte du système de base de données et l'emplacement de stockage d'objets à partir duquel les mises à jour sont téléchargées.
Les sujets suivants sont abordés :
Vérifier que l'hôte de base de données peut se connecter au service de stockage d'objets pour OCI
-
Utilisez la commande suivante pour vérifier si l'hôte peut accéder au service de stockage d'objets pour OCI :
dbcli describe-latestpatch
Exemple de sortie indiquant le succès :
componentType availableVersion -------------- -------------- gi 12.2.0.1.180417 gi 12.1.0.2.180417 db 11.2.0.4.180417 db 12.2.0.1.180417 db 12.1.0.2.180417 oak 12.1.2.11.3 oak 12.2.1.1.0
Exemple de sortie indiquant un échec :
DCS-10032:Resource patch metadata is not found.Failed to download patchmetadata from objectstore
-
Si vous ne pouvez pas vous connecter au service de stockage d'objets, voir Configurer une base de données à l'aide de la console pour plus d'informations sur la configuration de la connectivité au service de stockage d'objets.
Problèmes liés à l'hôte
Une ou plusieurs des conditions suivantes sur l'hôte de la base de données peuvent provoquer l'échec des opérations de mise à jour :
Les sujets suivants sont abordés :
Noeud de base de données non actif pendant l'opération de mise à jour
Tous les noeuds de la base de données doivent être actifs pendant une opération de mise à jour, que vous mettiez à jour le système de base de données ou le répertoire de base de base de données. Utilisez la console OCI pour vérifier que le statut de chaque noeud est Disponible (AVAILABLE) et démarrer le noeud, au besoin.
Le système de fichiers est plein
Les opérations de mise à jour requièrent au moins 15 Go d'espace libre dans le répertoire /u01
sur le système de fichiers hôte. Utilisez la commande df -h
sur l'hôte pour vérifier l'espace disponible. Si l'espace du système de fichiers est insuffisant, vous pouvez supprimer les anciens fichiers journaux ou de suivi afin de libérer de l'espace.
Problèmes liés à Oracle Clusterware
Les sujets suivants sont abordés :
Oracle Clusterware n'est pas en cours d'exécution
Oracle Clusterware permet aux serveurs de communiquer entre eux afin qu'ils puissent fonctionner en tant qu'unité collective. Le programme logiciel de ma grappe doit être fonctionnel sur le système de base de données pour que les opérations de mise à jour aboutissent. Vous aurez parfois besoin de redémarrer Oracle Clusterware pour résoudre un échec de mise à jour.
Redémarrer Oracle Clusterware
-
À l'invite de commande, vérifiez le statut d'Oracle Clusterware :
crsctl check crs
Sortie :
CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online
Pour des informations détaillées sur le statut, vous pouvez exécuter
crsctl stat res -t
. -
Si Oracle Clusterware n'est pas en ligne, redémarrez le programme :
crsctl start crs
-
Vérifiez le statut d'Oracle Clusterware pour confirmer qu'il est en ligne :
crsctl check crs
Oracle Grid Infrastructure (GI) n'est pas à jour
Ce problème survient lorsque vous tentez de mettre à jour une base de données avant de mettre à jour le système de cette base. La description de l'erreur indique qu'il faut d'abord mettre à jour Oracle Grid Infrastructure. Pour résoudre ce problème, mettez à jour le système de base de données à la dernière version disponible. Après avoir mis à jour le système de base de données, vous pouvez réessayer l'opération de mise à jour de la base de données.
Pour obtenir les versions courantes et les dernières versions GI disponibles pour le système de base de données, utilisez la commande suivante :
dbcli describe-component
Problèmes liés à la base de données
Un état incorrect de la base de données peut provoquer l'échec de la mise à jour.
Les sujets suivants sont abordés :
Base de données non active pendant l'opération de mise à jour
La base de données doit être active pour que toutes les tâches de mise à jour s'exécutent. Sinon, vous devez exécuter la tâche datapatch manuellement.
Vérifier que la base de données est active et en cours d'exécution
Vérifiez l'état de la base de données à l'aide de la commande suivante et assurez-vous que les problèmes qui ont pu provoquer un état inapproprié sont résolus :
srvctl status database -d <db_unique_name> -verbose
Le système retourne un message incluant le statut de l'instance de base de données. Le statut de l'instance doit être Ouvert pour que l'opération de mise à jour réussisse.
Si la base de données n'est pas active, utilisez la commande suivante pour la démarrer :
srvctl start database -d <db_unique_name> -o open
Si la base de données est montée, mais n'est pas au statut Ouvert, utilisez les commandes suivantes pour accéder à l'invite de commande SQL*Plus et régler le statut à Ouvert :
sqlplus / as sysdba
alter database open;
Exécuter la tâche datapatch
Avant d'exécuter la commande datapatch
, assurez-vous que toutes les bases de données enfichables sont ouvertes. Pour ouvrir une base de données enfichable, utilisez SQL*Plus pour exécuter ALTER PLUGGABLE DATABASE <pdb_name> OPEN READ WRITE;
sur la base de données enfichable.
$ORACLE_HOME/OPatch/datapatch
La commande datapatch
doit être exécutée sur le répertoire de base de chaque base de données.
Obtenir de l'aide supplémentaire
Si vous ne parvenez pas à résoudre le problème à l'aide des informations de cet article, suivez les procédures ci-dessous pour collecter les informations de base de données et de diagnostic pertinentes. Après avoir collecté ces informations, communiquez avec Oracle Support.
Les sujets suivants sont abordés :
Collecter des informations de diagnostic sur les tâches ayant échoué
-
Connectez-vous à l'hôte en tant qu'utilisateur racine et accédez au répertoire
/opt/oracle/dcs/bin/
. -
Exécutez les deux commandes suivantes pour générer des informations sur la tâche ayant échoué :
dbcli list-jobs | grep -i <dbname>
dbcli describe-job -i <job_ID> -j
La valeur <job_ID> dans la deuxième commande doit être l'ID de la dernière tâche en échec signalée depuis la première commande.
-
Exécutez le script de collecte de diagnostic pour créer un fichier zip contenant les informations de diagnostic pour les services Oracle Support.
diagcollector.py
Cette commande crée un fichier nommé
diagLogs-<timestamp>.zip
dans le répertoire/tmp
.
Collecter des fichiers journaux d'agent DCS
Pour collecter des fichiers journaux d'agent DCS, effectuez les opérations suivantes :
- Connectez-vous en tant qu'utilisateur opc.
-
Exécutez la commande suivante :
sudo /opt/oracle/dcs/bin/diagcollector.py
-
Le système retourne un message indiquant que les journaux d'agent sont disponibles dans un fichier zip du répertoire spécifié. Par exemple :
Log files collected to :/tmp/dcsdiag/diagLogs-1234567890.zip Logs are being collected to: /tmp/dcsdiag/diagLogs-1234567890.zip
Collecter les fichiers journaux Oracle Grid Infrastructure et Oracle Database
Si une mise à jour d'Oracle Grid Infrastructure ou d'Oracle Database a échoué, vous pouvez consulter les fichiers journaux pour ces échecs dans les emplacements suivants :
Oracle Grid Infrastructure
$GI_HOME/cfgtoollogs/
Oracle Database
$ORACLE_HOME/cfgtoollogs/