Risoluzione degli errori di aggiornamento

Le operazioni di aggiornamento possono non riuscire per vari motivi. In genere, un'operazione non riesce perché un nodo del database è inattivo, lo spazio disponibile nel file system è insufficiente oppure l'host del database non può accedere all'area di memorizzazione degli oggetti.

Questo articolo include informazioni utili per determinare la causa dell'errore e risolvere il problema. Le informazioni sono organizzate in diverse sezioni, in base alla condizione di errore.

Se si conosce già la causa, è possibile passare all'argomento con la soluzione suggerita. In caso contrario, utilizzare l'argomento Identifica la causa dell'errore per iniziare.

In questo articolo vengono trattati i seguenti argomenti:

Suggerimento

È anche possibile creare connessioni alla console seriale per risolvere i problemi del sistema in modalità monoutente. Per informazioni sulla creazione di una connessione console seriale nella console OCI, vedere Gestire la connessione della console seriale al sistema DB.

Identificare la causa dell'errore

Nella console OCI è possibile identificare un'operazione di aggiornamento non riuscita visualizzando la cronologia degli aggiornamenti di un sistema DB o di un singolo database. Un aggiornamento non applicato correttamente visualizza lo stato Non riuscito e include una breve descrizione dell'errore che ha causato l'errore. Se il messaggio di errore non contiene informazioni sufficienti per indirizzare l'utente a una soluzione, è possibile utilizzare l'interfaccia CLI del database e i file di log per raccogliere più dati. Quindi, fare riferimento alla sezione applicabile in questo articolo per una soluzione.

Identificare la causa principale dell'errore dell'operazione di aggiornamento

  1. Accedere all'host come utente root e passare alla directory /opt/oracle/dcs/bin/.

  2. Determinare la sequenza delle operazioni eseguite sul database.

    dbcli list-jobs

    Prendere nota dell'ultimo ID job elencato con uno stato diverso da Operazione riuscita.

  3. Con l'ID job indicato dal passo precedente, utilizzare il comando seguente per controllare i dettagli di tale job:

    dbcli describe-job -i <job_ID> -j

    In genere, l'esecuzione di questo comando è sufficiente per rivelare la causa principale dell'errore.

  4. Per ulteriori informazioni, vedere il file /opt/oracle/dcs/log/dcs-agent.log.

    È possibile trovare l'ID job in questo file utilizzando l'indicatore orario restituito dal report job nel passo 2.

  5. Se l'errore di aggiornamento si trova su un database RAC a 2 nodi, eseguire i passi 3 e 4 su entrambi i nodi.

Problemi relativi all'agente del servizio di database

Il database utilizza un framework agente per consentirti di gestirlo tramite la piattaforma Oracle Cloud.

Risolvi errori di aggiornamento causati da un agente arrestato

A volte potrebbe essere necessario riavviare il programma dcsagent se il relativo stato è stop/waiting per risolvere un errore di aggiornamento.

Riavviare l'agente del servizio di database

  1. Da un prompt dei comandi, controllare lo stato dell'agente:

    initctl status initdcsagent
  2. Se lo stato dell'agente è stop/waiting, provare a riavviare l'agente:

    initctl start initdcsagent
  3. Controllare di nuovo lo stato dell'agente per verificare che abbia lo stato avvio/esecuzione:

    initctl status initdcsagent

Risolvi errori di aggiornamento causati da un agente che deve essere aggiornato

L'operazione di aggiornamento può anche non riuscire se è necessario aggiornare l'agente. Il sistema visualizza il seguente messaggio di errore per questo errore:

Current DcsAgent version is less than or equal to minimum required version.

Per risolvere il problema, attenersi alla procedura descritta nella sezione seguente.

Contattare il Supporto Oracle per aggiornare l'agente di OCI Database Service

  1. Verificare che l'agente (dcsagent) e il programma di amministrazione DCS (dcsadmin) siano in esecuzione utilizzando i comandi seguenti:

    initctl status initdcsagent
    initctl status initdcsadmin
  2. Se questi programmi non sono in esecuzione, utilizzare i comandi seguenti per riavviarli:

    initctl start initdcsagent
    initctl start initdcsadmin
  3. Seguire le istruzioni in Ottieni ulteriore Guida per raccogliere i file di log dell'agente DCS.
  4. Contattare il Supporto Oracle per assistenza sull'aggiornamento dell'agente.

Problemi di connettività dell'area di memorizzazione degli oggetti

Gli aggiornamenti del sistema DB e del database vengono memorizzati nello storage degli oggetti OCI. Pertanto, le operazioni di aggiornamento riuscite richiedono la connettività tra l'host del sistema DB e la posizione di storage degli oggetti da cui vengono scaricati gli aggiornamenti.

Assicurarsi che l'host del database possa connettersi a OCI Object Storage

  1. Utilizzare il comando riportato di seguito per verificare che l'host possa accedere a OCI Object Storage:

    dbcli describe-latestpatch

    Output di esempio che indica l'esito positivo:

    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

    Output di esempio che indica un errore:

    DCS-10032:Resource patch metadata is not found.Failed to download patchmetadata from objectstore
  2. Se non è possibile connettersi all'area di memorizzazione degli oggetti, vedere Eseguire il backup di un database mediante la console per informazioni su come configurare la connettività dell'area di memorizzazione degli oggetti.

Problemi dell'host

Una o più delle seguenti condizioni nell'host del database possono causare l'errore delle operazioni di aggiornamento:

Nodo di database non in esecuzione durante l'operazione di aggiornamento

Tutti i nodi del database devono essere attivi e in esecuzione mentre è in corso un'operazione di aggiornamento, indipendentemente dal fatto che si stia aggiornando il sistema DB o la home del database. Utilizzare OCI Console per verificare che lo stato di ogni nodo sia DISPONIBILE e avviare il nodo, se necessario.

Il file system è completo

Le operazioni di aggiornamento richiedono almeno 15 GB di spazio libero nella directory /u01 del file system host. Utilizzare il comando df -h sull'host per controllare lo spazio disponibile. Se lo spazio disponibile nel file system è insufficiente, è possibile rimuovere i vecchi file di log o di trace per liberare spazio.

Problemi con Oracle Clusterware

Oracle Clusterware non è in esecuzione

Oracle Clusterware consente ai server di comunicare tra loro in modo da poter funzionare come unità collettiva. Per completare le operazioni di aggiornamento, è necessario che il programma software cluster sia attivo e in esecuzione nel sistema DB. A volte potrebbe essere necessario riavviare Oracle Clusterware per risolvere un errore di aggiornamento.

Riavviare Oracle Clusterware

  1. Dal prompt dei comandi, controllare lo stato di Oracle Clusterware:

    crsctl check crs

    Output:

    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

    Per informazioni più dettagliate sullo stato, è possibile eseguire crsctl stat res -t.

  2. Se Oracle Clusterware non è in linea, provare a riavviare il programma:

    crsctl start crs
  3. Controllare lo stato di Oracle Clusterware per verificare che sia online:

    crsctl check crs

Oracle Grid Infrastructure (GI) non aggiornato

Questo problema si verifica quando si tenta di aggiornare un database prima di aggiornare il sistema DB di tale database. La descrizione dell'errore indica che prima è necessario aggiornare Oracle Grid Infrastructure. Per risolvere questo problema, aggiornare il sistema DB alla versione più recente disponibile. Dopo aver aggiornato il sistema DB, è possibile riprovare l'operazione di aggiornamento del database.

Per ottenere le versioni GI correnti e più recenti disponibili per il sistema DB, utilizzare il comando seguente:

dbcli describe-component

Problemi relativi al database

Uno stato del database non corretto può causare errori di aggiornamento.

Database non in esecuzione durante l'operazione di aggiornamento

Il database deve essere attivo e in esecuzione per il completamento di tutti i task di aggiornamento. In caso contrario, è necessario eseguire il task DataPatch manualmente.

Verificare che il database sia attivo e in esecuzione

Utilizzare il seguente comando per controllare lo stato del database e assicurarsi che vengano risolti eventuali problemi che potrebbero aver messo il database in uno stato non corretto:

srvctl status database -d <db_unique_name> -verbose

Il sistema restituisce un messaggio che include lo stato dell'istanza di database. Affinché l'operazione di aggiornamento riesca, lo stato dell'istanza deve essere Aperto.

Se il database non è in esecuzione, utilizzare il seguente comando per avviarlo:

srvctl start database -d <db_unique_name> -o open

Se il database è installato ma non ha lo stato Apri, utilizzare i seguenti comandi per accedere al prompt dei comandi di SQL*Plus e impostare lo stato su Apri:

sqlplus / as sysdba
alter database open;

Eseguire il task datapatch

Prima di eseguire il comando datapatch, assicurarsi che tutti i pluggable database (PDB) siano aperti. Per aprire un PDB, è possibile utilizzare SQL*Plus per eseguire ALTER PLUGGABLE DATABASE <pdb_name> OPEN READ WRITE; nel PDB.

$ORACLE_HOME/OPatch/datapatch

Il comando datapatch deve essere eseguito in ogni home del database.

Guida aggiuntiva

Se non è stato possibile risolvere il problema utilizzando le informazioni contenute in questo articolo, attenersi alle procedure riportate di seguito per raccogliere le informazioni relative al database e alla diagnostica. Dopo aver raccolto queste informazioni, contattare il Supporto Oracle.

Raccogliere informazioni di diagnostica sui job non riusciti

  1. Accedere all'host come utente root e passare alla directory /opt/oracle/dcs/bin/.

  2. Eseguire i due comandi seguenti per generare informazioni sul job non riuscito:

    dbcli list-jobs | grep -i <dbname>
    dbcli describe-job -i <job_ID> -j

    Il <job_ID> nel secondo comando deve essere l'ID dell'ultimo job non riuscito segnalato dal primo comando.

  3. Eseguire lo script di raccolta diagnostica per creare un file zip con le informazioni di diagnostica per Oracle Support Services.

    diagcollector.py

    Questo comando crea un file denominato diagLogs-<timestamp>.zip nella directory /tmp.

Raccogli file di log agente DCS

Per raccogliere i file di log dell'agente DCS, effettuare le operazioni riportate di seguito.

  1. Eseguire il login come utente opc.
  2. Eseguire il comando riportato di seguito:

    sudo /opt/oracle/dcs/bin/diagcollector.py
  3. Il sistema restituisce un messaggio che indica che i log dell'agente sono disponibili in un file zip in una directory specificata. Ad esempio:

    Log files collected to :/tmp/dcsdiag/diagLogs-1234567890.zip
    Logs are being collected to:
    /tmp/dcsdiag/diagLogs-1234567890.zip

Raccolta dei file di log di Oracle Grid Infrastructure e del database

Se un aggiornamento di Oracle Grid Infrastructure o Oracle Database non è riuscito, è possibile trovare i file di log per questi errori nelle posizioni riportate di seguito.

Oracle Grid Infrastructure

$GI_HOME/cfgtoollogs/

Oracle Database

$ORACLE_HOME/cfgtoollogs/