Risolvere gli 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 sul file system è insufficiente o l'host del database non può accedere all'area di memorizzazione degli oggetti.

Questo articolo include informazioni che consentono di determinare la causa dell'errore e di 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 consigliata. In caso contrario, utilizzare l'argomento Identifica la causa dell'errore per iniziare.

In questo articolo vengono trattati gli argomenti riportati di seguito.

Suggerimento: è inoltre possibile creare connessioni alla console seriale per risolvere i problemi del sistema in modalità utente singolo. Per informazioni sulla creazione di una connessione console seriale in OCI Console, vedere Gestisci connessione console seriale al sistema DB.

Identificare la causa dell'errore

In OCI Console puoi 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 indicare 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.

Vengono trattati i seguenti argomenti:

Identifica 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 mansione elencato con uno stato diverso da Operazione riuscita.

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

    dbcli describe-job -i <job_ID> -j

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

  4. Se sono necessarie ulteriori informazioni, consultare 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 in un database RAC a 2 nodi, eseguire i passi 3 e 4 su entrambi i nodi.

Problemi dell'agente servizio di database

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

Vengono trattati i seguenti argomenti:

Risolvi errori di aggiornamento causati da un agente arrestato

A volte può essere necessario riavviare il programma dcsagent se il suo stato è stop/in attesa per risolvere un errore di aggiornamento.

Riavvia agente servizio di database

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

    initctl status initdcsagent
  2. Se lo stato dell'agente è arresto/attesa, 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ò inoltre non riuscire se l'agente deve essere aggiornato. 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 questo problema, attenersi alla procedura descritta nella sezione seguente.

Contattare il Supporto Oracle per aggiornare l'agente del servizio di database OCI

  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 seguenti comandi per riavviarli:

    initctl start initdcsagent
    initctl start initdcsadmin
  3. Per raccogliere i file di log dell'agente DCS, seguire le istruzioni riportate in Ottieni assistenza aggiuntiva.
  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.

Vengono trattati i seguenti argomenti:

Assicurati che l'host del database possa connettersi allo storage degli oggetti OCI

  1. Utilizzare il comando seguente per verificare che l'host possa accedere allo storage degli oggetti OCI:

    dbcli describe-latestpatch

    Esempio di output che indica operazione riuscita:

    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

    Esempio di output 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, fare riferimento a 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 sull'host del database possono causare l'errore delle operazioni di aggiornamento:

Vengono trattati i seguenti argomenti:

Nodo database non in esecuzione durante l'operazione di aggiornamento

Tutti i nodi del database devono essere attivi ed 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 è pieno

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

Problemi di Oracle Clusterware

Vengono trattati i seguenti argomenti:

Oracle Clusterware non è in esecuzione

Oracle Clusterware consente ai server di comunicare tra loro in modo che possano funzionare come unità collettiva. Il programma software cluster deve essere attivo e in esecuzione sul sistema DB per il completamento delle operazioni di aggiornamento. Può 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, 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 in linea:

    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 è necessario aggiornare prima 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 disponibili più recenti per il sistema DB, utilizzare il comando seguente:

dbcli describe-component

Problemi relativi al database

Uno stato del database errato può causare errori di aggiornamento.

Vengono trattati i seguenti argomenti:

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 manualmente il task DataPatch.

Controllare che il database sia attivo ed in esecuzione

Utilizzare il comando seguente per controllare lo stato del database e assicurarsi che vengano risolti eventuali problemi che potrebbero aver impostato 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. Lo stato dell'istanza deve essere Aperto affinché l'operazione di aggiornamento riesca.

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

srvctl start database -d <db_unique_name> -o open

Se il database è attivato ma non ha lo stato Apri, utilizzare i comandi riportati di seguito 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 su ogni home del database.

Ottieni ulteriore assistenza

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

Vengono trattati i seguenti argomenti:

Raccogli informazioni diagnostiche sui job non riusciti

  1. Accedere all'host come utente root e passare alla directory /opt/oracle/dcs/bin/.
  2. Eseguire i due comandi riportati di seguito per generare informazioni sul job non riuscito.

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

    <job_ID> nel secondo comando deve essere l'ID dell'ultimo job non riuscito riportato 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

Raccogliere i 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 seguenti posizioni:

Oracle Grid Infrastructure:

$GI_HOME/cfgtoollogs/

Oracle Database:

$ORACLE_HOME/cfgtoollogs/