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 :

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.

Identifier la cause première de l'échec de l'opération de mise à jour

  1. Connectez-vous à l'hôte en tant qu'utilisateur racine et accédez au répertoire /opt/oracle/dcs/bin/.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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

  1. À l'invite de commande, vérifiez le statut de l'agent :

    initctl status initdcsagent
  2. Si l'agent est à l'état Arrêter/Attente, essayez de le redémarrer :

    initctl start initdcsagent
  3. 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

  1. 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
  2. Si ces programmes ne sont pas actifs, utilisez les commandes suivantes pour les redémarrer :

    initctl start initdcsagent
    initctl start initdcsadmin
  3. Suivez les instructions sous Obtenir de l'aide supplémentaire pour collecter vos fichiers journaux d'agent DCS.
  4. 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.

Vérifier que l'hôte de base de données peut se connecter au service de stockage d'objets pour OCI

  1. 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
  2. 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 :

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

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

  1. À 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.

  2. Si Oracle Clusterware n'est pas en ligne, redémarrez le programme :

    crsctl start crs
  3. 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.

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.

Collecter des informations de diagnostic sur les tâches ayant échoué

  1. Connectez-vous à l'hôte en tant qu'utilisateur racine et accédez au répertoire /opt/oracle/dcs/bin/.

  2. 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.

  3. 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 :

  1. Connectez-vous en tant qu'utilisateur opc.
  2. Exécutez la commande suivante :

    sudo /opt/oracle/dcs/bin/diagcollector.py
  3. 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/