ADOP
Oracle EBS R12.2 online patching

ADOP e' il comando per installare le patch su Oracle Enterprise Business Suite (eBS) introdotto nella versione R12.2.

L'applicazione delle patch e' un'attivita' frequente e importante su EBS. Con ADOP il processo di applicazione delle patch risulta piu' gestibile e viene minimizzato il disservizio agli utenti finali.
In questo documento descriviamo ADOP con semplici comandi ed esempi.

Ho fretta!

Ecco i passi da eseguire per applicare una patch su EBS R12.2:

adop phase=prepare adop phase=apply patches=666 workers=1 # Attenzione questo passo riavvia gli Application Server adop phase=cutover workers=1

Quello presentato e' il caso piu' semplice (non necessariamente il piu' veloce) e le variazioni sul tema sono parecchie, ma prima di vederle dobbiamo presentare in maggior dettaglio i componenti di EBS.

Introduzione

Oracle Enterprise Business Suite (eBS) e' l'ERP (Enterprise Resource Planning) sviluppato e mantenuto dalla Oracle Corporation.
Oracle eBusiness Suite si basa sui due principali prodotti tecnologici di Oracle: il database Oracle RDBMS e l'application server Oracle WebLogic sfruttandone appieno le funzionalita' (eg. PL/SQL, Forms). Dal punto di vista funzionale EBS contiene centinaia di moduli (eg. GL: General Ledger, PER: Human Resources, BOM: Bill of Materials, ...) tipici di tutti gli ambienti ERP. Sono presenti centinaia di Package PL/SQL, applicazioni Java, Forms, script, ... molti dei quali differenti per ciascuno dei linguaggi supportati.

L'applicazione delle patch e' un'attivita' frequente e che deve essere svolta con attenzione. Il sito ufficiale su cui tutte le patch sono rese disponibili, per gli utenti con un contratto di supporto attivo, e' Oracle MOS (My Oracle Support).
Prima dell'applicazione di una patch e' molto importante verificare tutti i prerequisiti. Per le patch significative e' opportuno effettuare un clone dell'ambiente di produzione, applicare la patch sul clone e, solo terminata positivamente un'ampia serie di test su tale ambiente, si puo' pianificare l'applicazione della patch in produzione. Nel caso di versioni nazionalizzate, ovviamente normale per i clienti italiani, dopo avere effettuato la patch per la lingua inglese, va effettuata quella per la lingua italiana. Se sono presenti piu' lingue, la patch va applicatata per ogni lingua.
L'applicazione di patch in eBS e' sempre stato un processo complesso e potenzialmente di lunga durata. Dalla versione R12.2 e' stata introdotta una nuova modalita' di applicazione online delle patch: ADOP.

ADOP

Con la versione R12.2 di EBS vengono mantenuti due file system: run e patch. I due file system sono utilizzati rispettivamente per la normale attivita' del sistema e per le attivita' di patch. Al termine dell'applicazione positiva di una patch i file system vengono scambiati riducendo al minimo i tempi di disservizio per l'applicazione delle patch.
A livello di database vengono mantenute diverse edition che contengono gli oggetti della base dati: tabelle, indici, packages, ... Una edition e' quella corrente a cui si collegano le applicazioni del file system in run. Nell'edition di patch vengono invece aggiornati gli oggetti che sono modificati dalla patch.
Con questa separazione tra ambienti presente nello stesso sistema e' possibile applicare tutte le patch in modalita' online senza presentare disservizi all'utente finale. Nella fase finale della patch (cutover) vengono invertiti i ruoli dei file system ed attivata l'edition corretta con un riavvio degli ambienti: questa fase richiede un riavvio ma e' limitata nel tempo.
Il comando utilizzato per tutto il ciclo della gestione delle patch e' adop.

I passi previsti per l'applicazione di una patch sono:

Nel seguito vengono descritti singolarmente.

Prepare

Dopo aver impostato l'ambiente, scaricato e decompresso le patch nella directory $PATCH_TOP si inizia il ciclo di applicazione delle patch con:

adop phase=prepare

Il comando effettua tutti i controlli necessari e prepara il sistema per l'applicazione delle patch.

Apply

Con il comando:

adop phase=apply patches=123,456 workers=8

Vengono applicate le patch 123 e 456 al file system ed alla db edition di patch. Poiche' il numero di oggetti da trattare e' potenzialmente molto elevato e' possibile eseguire piu' task in parallelo. Naturalmente un numero elevato di task rende piu' veloce l'applicazione della patch ma rallenta le altre attivita' presenti sul sistema.
La fase di Apply ha una durata molto variabile a secondo della complessita' delle patch installate, dalla quantita' di oggetti modificati, dalla durata delle ricompilazioni, ...

Nel caso di patch NLS (versioni nazionalizzate) e' consigliabile prima eseguire il patching della versione in inglese e quindi applicare le patch specifiche a tutti i linguaggi configurati. Le patch nazionalizzate vanno sempre poste nella directory $PATCH_TOP con nome xxx_I (per l'italiano). La fase di apply sara' poi eseguita con il comando:

adop phase=apply patches=123_I:u123.drv

L'installazione come hotpatch era molto diffusa con le versioni precedenti di EBS perche' era l'unica che non prevedeva disservizi. Con la versione R12.2 l'esigenza e' meno sentita ma e' comunque possibile utilizzare l'opzione apply_mode=hotpatch.
E' possibile installare le patch alla vecchia maniera utilizzando l'opzione apply_mode=downtime.
Queste due modalita' non sono molto utilizzate ed e' quindi sconsigliabile richiamarle a meno che non siano esplicitamente riportate nelle note della patch o siano consigliate dal supporto Oracle.

Finalize

Questa fase non e' strettamente necessaria poiche' i passi corrispondenti verrebbero comunque eseguiti nella fase successiva. Tuttavia e' consigliabile eseguirla in modo esplicito poiche' rende la fase di cutover piu' rapida:

adop phase=finalize

Con questo comando vengono eseguite tutte le DDL e le ricompilazioni di packages necessari.

Cutover

Questa fase esegue la transizione dall'ambiente corrente al nuovo ambiente con le patch. Questa e' l'unica fase che effettua un riavvio degli application server e presenta un disservizio. Per eseguirla:

adop phase=cutover

Al termine del cutover le patch sono state installate ed il sistema e' nuovamente disponibile per gli utenti. La durata della fase di cutover generalmente e' piuttosto ridotta e non dipende molto dalla complessita' delle patch applicate; dipende piuttosto dalle prestazioni del sistema e della configurazione.

Cleanup

Anche questa fase non e' obbligatoria... viene automaticamente eseguita all'avvio della prossima patch. Tuttavia e' possibile richiamarla esplicitamente per rimuovere le vecchie edition dalla base dati:

adop phase=cleanup

E' possibile passare al cleanup l'opzione cleanup_mode=full. Con tale opzione vengono eliminati il maggior numero di oggetti dalle edition del database liberando la massima quantita' di spazio; tuttavia richiede molto piu' tempo rispetto alla modalita' standard.

Abort

ADOP ha un'ulteriore possibile opzione che puo' essere utilizzata per cancellare l'applicazione di una patch: abort!
Puo' essere richiamata in qualsiasi punto della fase di patch prima del cutover e, poiche' e' fortemente consigliato eseguire successivamente un cleanup completo, il comando e':

adop phase=abort,cleanup cleanup_mode=full

Common problems and workaround

Problemi? Mai nessuno!
Beh se insistete...

Il problema piu' comune e' quello della mancanza di spazio. Puo' verificarsi sia a livello di database che di file systems. Nel primo caso e' utile abortire le patch in corso ed effettuare un cleanup full ma se non basta... liberare spazio e/o allargare il DB. Nel secondo caso... liberare spazio e/o allargare i FS!

Quando si verifica un errore tipicamente lo si analizza, lo si risolve e si prosegue. Certo e' piu' facile a dirsi che a farsi... pero' questo fa parte del mestiere di vivere.

Nel caso in cui si siano creati disallineamenti tra il file system run e patch (magari provocati appunto da molteplici ripartenze) e' necessario utilizzare adop phase=fs_clone. fs_clone richiede molto spazio libero, e' di lunga durata e, naturalmente, anch'esso puo' fallire. Se fallisce fs_clone si puo' riparire dallo stesso punto o dall'inizio [NdE force=yes] ...

L'installazione delle patch e' tipicamente suggerita dal supporto in seguito all'apertura di un SR (Service Request). Se una patch non puo' essere installata, e sono stati esclusi tutti i problemi di tipo sistemistico, tipicamente si aggiorna la SR o se ne apre una.

/etc

Documentazione? Link utili? Nulla di tecnico in italiano tranne... questo documento!

Sono fondamentali i documenti contenuti su Metalink/My Oracle Support. E' impossibile elencarli tutti, quello che segue e' una prima guida (sono riportati solo i titoli dei documenti poiche' l'accesso al MOS richiede un'utenza autorizzata):

I seguenti link sono molto utili come riferimento sulle le ultime versioni disponibili di eBS e lo stack tecnologico: Your server stinks! Steven Chan Blog

Un'ultima cosa importante proposito di eBS: Buona fortuna!


Titolo: ADOP: Oracle EBS R12.2 online patching
Livello: Avanzato (3/5)
Data: 1 Aprile 2016
Versione: 1.0.1 - 1 Aprile 2017
Autore: mail [AT] meo.bogliolo.name