Quali fattori dovrei considerare quando eseguo un aggiornamento della versione principale in Amazon RDS for Oracle?

Ultimo aggiornamento: 28/09/2021

Questo gruppo si connette a un'istanza DB Amazon Relational Database Service (Amazon RDS). Voglio conoscere i fattori che devo considerare quando eseguo un aggiornamento della versione principale.

Breve descrizione

Quando Amazon RDS inizia a supportare una nuova versione del database Oracle, è possibile aggiornare la versione esistente del database Oracle scegliendo una versione superiore e quindi eseguendo un aggiornamento della versione principale. Una versione principale potrebbe includere aggiornamenti, nuove funzionalità, correzioni riguardo la sicurezza, miglioramenti dell'ottimizzatore e delle prestazioni. Come da best practice, è consigliabile testare la funzionalità, la compatibilità e le prestazioni dell'applicazione rispetto alla nuova versione del database Oracle in ambienti non di produzione prima di aggiornare il database di produzione.

Nota: se si riceve un messaggio di errore durante l’esecuzione dei comandi AWS CLI, assicurarsi di utilizzare la versione più recente di AWS CLI.

Risoluzione

Prima dell'aggiornamento

Ecco alcune cose da tenere a mente prima di eseguire l'aggiornamento della versione principale:

Percorso di aggiornamento: verificare il percorso di aggiornamento supportato dalla versione corrente del database Oracle alla versione principale desiderata del database Oracle. È possibile controllare i percorsi di aggiornamento validi eseguendo il seguente comando AWS Command Line Interface (AWS CLI).

Per Windows:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Per Linux, macOS o Unix:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

Assicurarsi di sostituire i seguenti valori nei comandi precedenti:

  • engine-edition con l'edizione del motore di database.
  • current-engine-version con la versione corrente del motore di database.

Supponiamo di avere un'istanza Amazon RDS for Oracle 12.1.0.2.v10. Per informazioni su tutte le versioni principali valide per cui è possibile aggiornare le istanze di RDS per Oracle, eseguire il comando seguente.

Per Windows:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Per Linux, macOS o Unix:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

Classe di istanza: verificare che la classe di istanza corrente sia supportata per la versione principale che si intende aggiornare. Per informazioni sulle classi di istanza supportate da RDS per Oracle, vedere Classi di istanza DB Oracle supportate. È anche possibile controllare la classe di istanza supportata eseguendo il seguente comando AWS CLI.

Per Windows:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query "OrderableDBInstanceOptions[*].DBInstanceClass"

Per Linux, macOS o Unix:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query 'OrderableDBInstanceOptions[*].DBInstanceClass'

Assicurarsi di sostituire i seguenti valori nei comandi precedenti:

  • engine-edition con l'edizione del motore di database.
  • new-engine-version con la nuova versione a cui si prevede di eseguire l'aggiornamento.
  • example-region con la regione che si sta utilizzando.

Ad esempio, supponiamo di voler eseguire l'aggiornamento a un'istanza RDS per Oracle 12.2.0.1.ru-2020-10.r1. Per informazioni sulle classi di istanza che supportano la versione principale in una regione specifica, eseguire il seguente comando:

aws rds describe-orderable-db-instance-options --engine oracle-ee --engine-version 12.2.0.1.ru-2020-10.rur-2020-10.r1 --region us-east-1 --query "OrderableDBInstanceOptions[*].DBInstanceClass"

Assicurarsi di sostituire us-east-1 nel comando con la regione scelta.

Compatibilità del client: verificare che le versioni client/driver Oracle siano compatibili con la nuova versione principale. Verificare se i driver devono essere aggiornati con l'aggiornamento della versione principale. Per informazioni sull'interoperabilità, vedere la documentazione Oracle per Oracle Database Client e Oracle Database Interoperability.

Metodo di aggiornamento: è possibile eseguire l'aggiornamento della versione principale in uno dei seguenti modi:

  • Modificare l'istanza RDS e applicare la nuova versione principale.
    Nota: questo metodo comporta alcuni tempi di inattività.
  • Creare una nuova istanza RDS con la versione principale e migrare i dati utilizzando AWS Data Migration Service (AWS DMS).
    Nota: AWS DMS utilizza un approccio minimalista per migrare i dati e crea solo gli oggetti necessari per eseguire la migrazione efficiente dei dati. AWS DMS crea tabelle, chiavi primarie e, in alcuni casi, indici univoci, ma non crea altri oggetti non necessari a migrare in modo efficiente i dati dall'origine. Ad esempio, AWS DMS non crea indici secondari, vincoli di chiave non primaria o impostazioni predefinite dei dati. Per ulteriori informazioni, consultareVisualizzazione di alto livello di AWS DMS.

Scegliere uno di questi metodi per eseguire l'aggiornamento in base al proprio caso d'uso.

Gruppo di parametri personalizzato: se l'istanza dispone di un gruppo di parametri personalizzato, creare un nuovo gruppo di parametri per la nuova versione principale e impostare i parametri personalizzati in modo appropriato. Per identificare i parametri personalizzati attualmente in uso, confrontare il gruppo di parametri personalizzati esistente con il gruppo di parametri predefinito della versione corrente.

Gruppo di opzioni personalizzato: se l'istanza dispone di un gruppo di opzioni personalizzato, creare un nuovo gruppo di opzioni personalizzato per la versione principale. Se nel gruppo di opzioni sono presenti opzioni persistenti o permanenti, come il fuso orario o Oracle Transparent Data Encryption, le stesse opzioni persistenti o permanenti devono essere incluse nel nuovo gruppo di opzioni personalizzato. Per aggiornare la versione del file del fuso orario all'ultima versione disponibile nell'istanza del database insieme all'aggiornamento della versione principale, aggiungere l'opzione TIMEZONE_FILE_AUTOUPGRADE al nuovo gruppo di opzioni personalizzato.

Statistiche del dizionario: la raccolta delle statistiche del dizionario e delle statistiche sugli oggetti fissi può ridurre i tempi di inattività delle istanze durante l'aggiornamento. È possibile raccogliere le statistiche eseguendo le seguenti query:

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

Oggetti non validi: verificare e assicurarsi che il database non contenga oggetti non validi. È possibile eseguire questa operazione eseguendo la seguente query:

SQL> SELECT OWNER, STATUS, COUNT (*) FROM DBA_OBJECTS GROUP BY OWNER, STATUS;

Se vengono trovati oggetti non validi, verificare quali tra essi non sono validi eseguendo la seguente query:

SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS != 'VALID';

È possibile compilare tutti gli oggetti non validi nello schema eseguendo la seguente query:

SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);

Assicurarsi di sostituireADMIN nella query con il nome dello schema.

Audit trail: assicurarsi che gli audit trail non siano lunghi. I controlli e gli aggiornamenti precedenti all'aggiornamento potrebbero richiedere più tempo con lunghi audit trail. Per troncare un audit trail, consultare Come posso troncare la tabella sys.aud$ sull'istanza database di Amazon RDS in esecuzione Oracle? È inoltre possibile utilizzare la procedura DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL per eliminare gli audit trail.

Password: verificare di non utilizzare una versione precedente delle password eseguendo la seguente query:

SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

Dai risultati della query, se si nota che un utente utilizza solo la versione 10g delle password, verificare se l'utente può essere ricreato con una versione più recente della password. Se non è possibile correggere la versione della password utente, impostare il parametro SQLNET.ALLOWED_LOGON_VERSION_SERVER in modo appropriato per evitare errori di connessione.

Quando il parametro sqlnetora.sqlnet.allowed_logon_version_server è definito in un'istanza RDS per Oracle, il parametro indica la versione minima del protocollo di autenticazione consentita durante la connessione al server database. Un'impostazione di 8 consente la maggior parte delle versioni di password e consente qualsiasi combinazione dei valori DBA_USERS.PASSWORD_VERSIONS 10G, 11G e 12C.

Quando il parametro sqlnetora.sqlnet.allowed_logon_version_client è definito in un'istanza RDS per Oracle, il parametro indica il protocollo di autenticazione minimo da utilizzare quando il database funge da client.

Per ulteriori informazioni, vedere la documentazione Oracle per il controllo degli account utilizzando la versione della password senza distinzione tra maiuscole e minuscole.

DBMS_JOB: il pacchetto DBMS_JOB viene interrotto con l'aggiornamento del database Oracle 12c Release 2. Se si esegue l'aggiornamento alla versione 19c, è consigliabile come best practice convertire tutti i processi DBMS_JOB in processi DBMS_SCHEDULER prima dell'aggiornamento. Durante l'aggiornamento, Oracle converte i processi DBMS_JOB in processi DBMS_SCHEDULER. Per ulteriori informazioni, consultare la documentazione Oracle per il supporto per DBMS_JOB. Se si dispone di un numero elevato di voci DBMS_JOB, l'aggiornamento potrebbe richiedere più tempo.

FreeStorageSpace: verificare che l'istanza non raggiunga il limite della sua capacità di archiviazione. Assicurarsi di avere abbastanza spazio di archiviazione disponibile per il completamento dell'aggiornamento controllando il parametro CloudWatch di FreeStorageSpace. Per maggiori informazioni, consultare In che modo è possibile creare avvisi CloudWatch per monitorare lo spazio di archiviazione gratuito di Amazon RDS e prevenire problemi legati all'archiviazione completa?

Azioni di manutenzione: controllare se nell'istanza sono presenti azioni di manutenzione in sospeso nella console Amazon RDS. Queste azioni vengono applicate durante la finestra di aggiornamento. Per le istanze Multi-AZ, se non sono necessari aggiornamenti del sistema operativo, l'aggiornamento primario e quello in standby si verificano contemporaneamente. Se sono necessari aggiornamenti del sistema operativo, Amazon RDS applica l'aggiornamento come indicato negli aggiornamenti Oracle in un'implementazione Multi-AZ.

Snapshot manuale: creare uno snapshot manuale dell'istanza di database RDS per Oracle per i seguenti motivi:

  • Lo snapshot può essere utilizzato per ripristinare la versione precedente, purché la versione sia supportata da Amazon RDS.
  • Di solito viene creata uno snapshot automatico come parte del processo di aggiornamento della versione principale. Poiché gli snapshot di Amazon Elastic Block Store (Amazon EBS) sono incrementali, il nuovo snapshot ha meno modifiche al backup. Pertanto, la creazione di uno snapshot manuale potrebbe ridurre il tempo necessario per creare lo snapshot automatico e il tempo totale impiegato per completare l'aggiornamento.

Configurazione corrente: eseguire la seguente query per visualizzare la configurazione corrente dell'istanza e salvare l'output. L'output fornisce informazioni sul gruppo di opzioni, sul gruppo di parametri, sui gruppi di sicurezza e sui tag associati all'istanza RDS per Oracle corrente. Per effettuare il ripristino dello stato precedente ed eseguire un ripristino dello snapshot o eseguire il ripristino point-in-time, utilizzare le informazioni recuperate da questo comando:

> aws rds describe-db-instances --db-instance-identifier example-instance-name --region example-region

Assicurarsi di sostituire i seguenti valori nella query:

  • example-instance-name con il nome dell'istanza di RDS per Oracle.
  • example-region con la regione scelta.

Undo tablespace: assicurarsi che la Undo Tablespace sia impostata sulle dimensioni corrette per evitare operazioni di ridimensionamento durante l'aggiornamento.

Trigger: eseguire la seguente query per elencare i trigger di accesso, disconnessione e startup

SQL> SELECT OWNER, TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_OWNER, STATUS, ACTION_TYPE, TRIGGER_BODY FROM DBA_TRIGGERS WHERE TRIGGERING_EVENT LIKE '%LOGO%' or TRIGGERING_EVENT LIKE '%STARTUP%';

Controllare se i trigger sono validi e funzionanti. Sebbene il trigger sia valido e venga compilato correttamente, il trigger potrebbe generare un errore in fase di esecuzione e interferire con il riavvio del database. Controllare se sono presenti trigger di accesso, disconnessione o startup che generano un errore durante l'esecuzione. È possibile disattivare questi trigger eseguendo le seguenti query:

SQL> ALTER TRIGGER EXAMPLE-OWNER.EXAMPLE-TRIGGER DISABLE;

Assicurarsi di sostituire i seguenti valori nella query:

  • EXAMPLE-OWNER con il nome dello schema in cui è stato creato il trigger.
  • EXAMPLE-TRIGGER con il nome del trigger.

Ad esempio:

--To disable AUDIT_USERS trigger in MYADMIN schema
SQL> ALTER TRIGGER MYADMIN.AUDIT_USERS DISABLE;

Durante l'aggiornamento

Dopo aver avviato l'aggiornamento, è possibile monitorare lo stato di avanzamento dell'aggiornamento verificando quanto segue nella console di Amazon RDS:

  • Registro avvisi situato nella scheda Registri ed eventi dell'istanza
  • Eventi recenti situati nella scheda Registri ed eventi della tua istanza

Dopo l'aggiornamento

  • Eseguire le seguenti query per verificare la versione della patch dopo la connessione al database:
SQL> SELECT * FROM sys.registry$history;
SQL> SELECT INSTALL_ID,PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION FROM DBA_REGISTRY_SQLPATCH;
  • Amazon RDS aggiorna i file lsinventory-dbv.txt entro un'ora dall'applicazione della patch. È possibile scaricare questo file dalla scheda Registri ed eventi della tua istanza nella console Amazon RDS. Verificare le patch applicate leggendo il file Isinventory-dbv.txt.
  • Eseguire le seguenti query per raccogliere le statistiche del dizionario e le statistiche sugli oggetti fissi:
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
  • Eseguire la seguente query per verificare che il numero di oggetti validi e non validi corrisponda a quelli precedenti l'aggiornamento:
SQL> SELECT OWNER, STATUS, COUNT(*) from DBA_OBJECTS GROUP BY OWNER, STATUS;
  • Eseguire la seguente query per compilare tutti gli oggetti non validi nello schema:
SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);
  • Se si verificano problemi di prestazioni delle query dopo l'aggiornamento a causa delle funzionalità di ottimizzazione della nuova versione principale, prendere in considerazione l'utilizzo del parametro OPTIMIZER_FEATURES_ENABLE. È possibile modificare questo parametro a livello di sessione e di sistema. Ad esempio, se si aggiorna il database dal rilascio 18.1 al rilascio 19.1, ma si desidera mantenere il comportamento dell'ottimizzatore del rilascio 18.1, è possibile farlo impostando il valore del parametro OPTIMIZER_FEATURES_ENABLE su 18.1.0.

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?