Parte II
Questa e' una guida, la piu' semplice possibile ed in italiano, per installare il
database Oracle con l'opzione RAC nella versione 19c
su sistemi Oracle Linux on-premise.
In realta' una configurazione RAC non e' proprio facile...
ma cercheremo di semplificare evitando le molte alternative possibili
e concentrandoci sui punti essenziali.
L'installazione e la configurazione del RAC (Real Application Clusters) ha caratteristiche particolari e richiede la Oracle GI (Grid Infrastructure) che contiene i componenti Clusterware e l'ASM (Automatic Storage Management). Naturalmente un'installazione in cluster prevede piu' nodi ed e' piu' complessa di un'installazione singola. Anche dal punto di vista dei requisiti si tratta di un'installazione particolare perche' vi sono vincoli precisi e molto stretti sulle componenti Hardware e Software.
Per rendere piu' leggibili i contenuti abbiamo separato in passi dell'installazione in due pagine web. Il documento Installazione Oracle RAC 19c - Grid Infrastructure contiene i dettagli della preparazione dell'ambiente e dell'installazione della componente Grid. Questo documento descrive l'installazione del software Oracle e la creazione dell'instanza RAC. Per l'installazione utilizzeremo il sistema operativo Oracle Linux 8.5 e la versione Oracle 19.3 aggiornandola all'ultimo livello di patch disponibili [NdA 19.14]. Dal punto di vista tecnico vi sono diverse scelte che e' necessario effettuare installando il RAC 19c: nel seguito utilizzeremo la configurazione non-CDB, la configurazione automatica delle aree di memoria, ...
Queste pagine sono volutamente incomplete ma vogliono riportare gli elementi essenziali della configurazione in modo sintetico, semplice, chiaro e, non ultimo, in italiano! Per maggiori dettagli fate riferimento alla documentazione ufficiale.
Poiche' l'installazione e' un poco complessa abbiamo preferito dividere il documento in due parti. La prima parte descrive l'installazione della componente di insfrastruttura mentre la seconda parte, che e' questa paginetta, descrive l'installazione del database e contiene: Preparazione, Installazione Oracle, Creazione istanza RAC, Dopo l'Installazione, Suggerimenti e trucchi, Varie ed eventuali, ...
La parte di preparazione e' stata eseguita con l'installazione Grid quindi dovrebbe essere tutto pronto per l'installazione.
In particolare sono gia' stati scaricati il software Oracle 19c (19.3) per Linux 64bit (ovvero il file LINUX.X64_193000_db_home di circa di 3.0 GB), l'OPatch e l'ultima RU. Le directory per la configurazione di Oracle sono stati scaricati e l'utenza oracle configurata con questo .bash_profile:
vi ~oracle/.bash_profile ... ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=/u01/app/oracle/product/19.3.0.0/dbhome_1; export ORACLE_HOME PATH=$PATH:$ORACLE_HOME/bin #umask 022 #TMP=/u01/bigtmp; export TMP #TMPDIR=$TMP; export TMPDIR
L'infrastruttura Grid e' gia' funzionante quindi possiamo iniziare ad installare il software del database!
Con un'instanza singola e' possibile installare il software e creare contestualmente l'istanza;
con il RAC non e' possibile quindi prima bisognera' prima installare il software Oracle
e quindi creare l'istanza RAC.
Importante: da eseguire come utente oracle!
L'installazione va eseguita nella ORACLE_HOME dove con l'unzip si decomprime il SW Oracle, l'OPatch e l'ultima RU (Release Update); bisogna abilitare X sulla workstation, impostare il DISPLAY ed infine lanciare il programma di installazione con:
Parte il wizard!
L'installazione del software Oracle e' guidata dal wizard dell'applicazione grafica. Vi sono diversi passi, in generale bisogna rispondere confermando il default a tutte le domande e proseguire con Next. Nel seguito sono riportati momenti principali dell'installazione e le eventuali eccezioni. Dobbiamo configurare un RAC quindi scegliamo "Set Up Software Only" e quindi "Oracle Real Application Clusters database installation". La creazione dell'istanza RAC potremo farla con il prossimo passaggio.
Seguono parecchie pagine di configurazione, vanno indicati i nodi del grid, quindi bisogna scegliere l'Enterprise Edition [NdA dalla versione 19c il RAC e' disponibile solo con l'Enterprise Edition], confermare l'ORACLE_HOME, i gruppi di sistema, il lancio di script come root, ... Il wizard permette diverse semplificazioni della procedura di installazione: per procedere velocemente conviene far eseguire l'installazione in automatico su tutti i nodi, far configurare l'SSH, far eseguire gli script di root fornendo la password, ...
Vengono quindi controllati i prerequisiti e fornito il sommario delle configurazioni scelte. Proseguendo si avvia l'installazione:
L'installazione richiede un certo tempo anche perche' deve essere eseguita su tutti i nodi e finalmente...
Abbiamo installato il software Oracle, il prossimo passo sara' creare l'istanza RAC.
Finalmente possiamo creare l'istanza RAC. Per farlo bisogna utilizzare l'utility dbca (DataBase Configuration Assistant).
Importante: da eseguire come utente oracle direttamente nella ORACLE_HOME [NdA come sempre].
Appare la finestra del programma di configurazione con i passi da seguire. Anche in questo caso riportiamo solo i passaggi piu' significativi della creazione del database.
Naturalmente dobbiamo creare un nuovo database...
Va scelta la configurazione avanzata, un database di tipo RAC, gestito da Admin, con un template General Purpose.
Quindi vanno scelti il SID e il Global database name.
E' una scelta semplice ma importante!
Altra scelta importante e' quella di creare un Container Database oppure no.
L'utilizzo dei PDB diverra' obbligatorio in futuro,
ma per semplificare, sopratutto con un RAC,
preferiamo non utilizzare il multitenant.
Per lo storage utilizzeremo l'ASM configurato con il Grid ed il relativo disk group; la Fast Recovery Area viene generalmente appoggiata sul disk group +REDO ma e' opzionale come l'archiving.
Evitiamo la prigione del Vault e lasciamo scegliere la configurazione ottimale ad Oracle (Automatic Shared Memory Management) senza modificare le impostazioni degli altri tab opzionali [NdA se non abbiamo requisiti specifici].
Confermiamo la gestione standard senza registrarci sull'Enterprise Manager, definiamo le utenze amministrative e le password [NdA da ricordare!] e facciamo creare il direttamente database.
Verificati tutti i prerequisiti e confermate le scelte effettuate, parte la creazione dell'istanza RAC.
Naturalmente l'operazione richiede un po' di tempo...
Abbiamo finito!
Buon divertimento! Have a lot of Fun! Que te diviertas! Diverte-te!
Non e' obbligatorio... ma e' molto comodo impostare l'ORACLE_SID aggiungendo le seguenti righe nel file .bash_profile dell'utente oracle [NdA attenzione: l'ORACLE_SID ha un suffisso differente per ogni nodo]:
ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/19/dbhome_1 ORACLE_SID=testrac1 export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH=$PATH:$ORACLE_HOME/bin
Bisogna controllare che Oracle funzioni!
Collegarsi e' semplice...
Con la Grid Infrastracture ed il RAC la gestione delle istanze Oracle e' molto diversa rispetto alla configurazione Single Instance.
La procedura ha installato anche i comandi Clusterware Control (CRSCTL) e Server Control Utility (SRVCTL). I database e le istanze sono gestiti dall'utente grid con i comandi:
Le start/stop option sono le normali opzioni di Oracle, rispettivamente: open, mount, nomount; normal, immediate, transactional, abort. I comandi si lanciano come utente grid ma i processi unix del database sono dell'utente oracle.
A differenza della configurazione in single instance il listener non e' gestito con l'utente oracle ma viene configurato e gestito dall'utente grid; in questo caso anche i processi girano come utente grid. Questa e' la configurazione del listener (utente grid):
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))) # line added by Agent LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))) # line added by Agent LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent ASMNET1LSNR_ASM=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=ASMNET1LSNR_ASM)))) # line added by Agent ... ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent VALID_NODE_CHECKING_REGISTRATION_LISTENER=SUBNET # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_ASMNET1LSNR_ASM=ON # line added by Agent VALID_NODE_CHECKING_REGISTRATION_ASMNET1LSNR_ASM=SUBNET # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=OFF # line added by Agent - Disabled by Agent because... ...
In pratica nella configurazione e' presente un listener generale, un listener per i tre indirizzi di SCAN ed un listerner per l'ASM. Quindi la registrazione dei servizi provvede a pubblicare tutte le entry sui due nodi ed a mantenerle in caso di disservizi:
Quella che segue e' invece la configurazione del tnsnames (utente oracle) che serve per connettersi alla base dati.
TESTRAC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-scan.acme.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = testrac.acme.com) ) )
Questa e' la configurazione piu' semplice che effettua il bilanciamento del carico sui nodi del cluster e garantisce l'HA, ma sono possibili configurazioni piu' sofisticate per esigenze piu' complesse [NdA e' possibile dare un peso diverso ai singoli nodi, utilizzare un fallback su un sito di DR, ...].
E' possibile connettersi con sqlplus o con SQLcl sia in locale che da un client remoto.
Infine e' possibile accedere con un browser sull'URL dell'Enterprise Manager Database Express https://oracle01.acme.com:5500/em.
Non sempre tutto funziona come dovrebbe.
Questo succede anche con l'installazione di un Oracle RAC.
Un DBA lo sa.
Chi e' esperto puo' saltare questo breve capitolo.
Perche' la soluzione e' gia' dentro di te... ma e' sbagliata!
Il primo consiglio e' il piu' semplice: utilizzare sempre le versioni piu' recenti del software.
La procedura d'installazione si blocca se il sistema operativo
ospite non e' supportato. E' corretto ma a volte, anche con
l'applicazione delle patch piu' recenti, le procedure tardano
a riconoscere le versioni piu' recenti dei sistemi operativi.
Si risolve facilmente con l'impostazione prima di lanciare il wizard di installazione:
export CV_ASSUME_DISTID=OEL7.6
La procedura di installazione su piu' nodi
richiede, sia per la parte Grid che per la parte Database,
la configurazione di utenze equivalenti in connessione SSH.
Con la versione 19c la configurazione puo' essere svolta in automatico
da wizard.
Questa parte funziona bene... quello che non sempre funziona e' la verifica!
Il controllo delle utenze viene eseguito dal wizard lanciando un comando,
ma se le stringhe ricevute come risposta
non sono quelle attese viene segnalato un errore.
La seconda verifica sull'SSH che puo' fallire nel wizard e' la copia di un file. Su alcuni sistemi operativi ospite la copia avviene correttamente ma su una directory sbagliata per l'assenza di un'opzione. Anche questo problema si aggira facilmente: basta modificare il comando scp!
# SSH setup bug WA mv /usr/bin/scp /usr/bin/scp.bak echo '/usr/bin/scp.bak -T $*' > /usr/bin/scp chmod a+rx /usr/bin/scp ... make install # Restore original rm /usr/bin/scp mv /usr/bin/scp.bak /usr/bin/scp
SELINUX? E' un'altre fonte di problemi con le chiavi per l'SSH!
Oltre alle permission dei file vanno controllati anche gli attributi nascosti
(si vedono con ls -laZ). Se manca l'attributo ssh_home_t si puo' ripristinare
con il comando
restorecon -r -vv /home/oracle/.ssh
Terminata l'installazione del RAC l'Enterprise Manager Express funziona perfettamente...
ma nessun browser riesce a raggiungerlo!
La causa e' la numero 10 del documento MOS
"Troubleshooting Why EM Express is not Working (Doc ID 1604062.1)".
In pratica il wallet con il certificato e' generato correttamente dall'utente oracle
ma con il RAC il listener gira come utente grid e quindi non riesce a leggerlo.
La soluzione e' molto semplice:
chmod 640 $ORACLE_HOME/admin/database_name/xdb_wallet/*
Teoricamente funziona tutto... ma non ci si collega!
Se la base dati viene utilizzata da applicazioni recenti
in ambienti certificati, se non ci sono relazioni con altri database,
se le utenze e le password rispettano tutte le caratteristiche di sicurezza previste,
se e' tutto aggiornato all'ultimo livello di patch, se... allora dovrebbe funzionare.
Pero' nel probabile caso in cui non tutte queste condizioni siano rispettate
ci sono un paio di consigli utili.
Le versioni supportate dagli hash delle password si controllano con:
SELECT password_versions FROM dba_users WHERE username='Utente';
Per abbassare la versione di hash e' sufficiente inserire il parametro
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10 nei file sqlnet.ora dei server RAC.
Una volta abbassato il requisito sulla tipologia di hash basta impostare
una password con qualche lettera maiuscola con:
ALTER USER Utente IDENTIFIED BY Password;
Naturalmente la documentazione ufficiale riporta tutti i dettagli
sull'uso delle maiuscole nelle password
e sui formati di hash
ma queste indicazioni in genere sono sufficienti.
Un ultimo suggerimento...
I passi di configurazione vanno eseguiti con attenzione, nell'ordine corretto,
con le utenze giuste, con le versioni giuste (sempre le ultime), ...
insomma seguite le procedure
[NdA quella Oracle ufficiale o una di cui vi fidate] !
Avete commesso un errore? Si e' bloccato qualcosa durante l'applicazione di una patch? Capita...
Per la creazione di un'ulteriore istanza Oracle RAC si utilizza sempre l'utility dbca; tutti gli altri componenti sono gia' installati ed attivi e quindi serve solo ripetere questa parte. Come abbiamo visto con la versione 19c l'utility dbca e' ancora piu' completa e consente diverse possibilita' di creazione e modifica delle istanze Oracle:
Ovviamente il software va sempre tenuto aggiornato. La versione 19c e' una LTS e quindi verra' mantenuta a lungo, nella procedura descritta abbiamo gia' installato l'ultima RU disponibile. Le novita' introdotte nella versione 12c, su cui la 19c si basa, sono notevoli. Gli aspetti fondamentali sono riportati nei documenti: architettura Oracle versione 12c, aggiornamenti della versione 12c R2 ed infine C'era una volta...
Sul sito ufficiale Oracle e' disponibile un'ampia documentazione ufficiale tra cui la RAC Installation Guide.
Titolo: Installazione di Oracle RAC 19c su OL - Database
Livello: Medio
Data: 14 Febbraio 2021
Versione: 1.0.2 - 1 Aprile 2024
Autore: mail [AT] meo.bogliolo.name