Oracle RAC 19c

Parte II

Installazione Database

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, ...

Preparazione

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.

Installazione software Oracle

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:

su - oracle cd $ORACLE_HOME unzip /u01/stage/LINUX.X64_193000_db_home.zip mv OPatch OPatch.old unzip /u01/stage/p6880880_190000_Linux-x86-64.zip unzip /u01/stage/p33515361_190000_Linux-x86-64.zip set DISPLAY=IP_Workstation:0 export CV_ASSUME_DISTID=OEL7.6 ./runInstaller -applyRU 33515361 &

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. Installazione Oracle RAC 19c - Installazione software: scelta configurazione 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: Installazione Oracle RAC 19c - Installazione software: installazione prodotto

L'installazione richiede un certo tempo anche perche' deve essere eseguita su tutti i nodi e finalmente... Installazione Oracle RAC 19c - Installazione software: successo

Abbiamo installato il software Oracle, il prossimo passo sara' creare l'istanza RAC.

Creazione 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].

su - oracle cd $ORACLE_HOME set DISPLAY=IP_Workstation:0 dbca &

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... Installazione Oracle RAC 19c - Creazione RAC: scelta operazione

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. Installazione Oracle RAC 19c - Creazione RAC: SID, Global name e CDB

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].

Installazione Oracle RAC 19c - Creazione RAC: sommario

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. Installazione Oracle RAC 19c - Creazione RAC: sommario

Verificati tutti i prerequisiti e confermate le scelte effettuate, parte la creazione dell'istanza RAC. Installazione Oracle RAC 19c - Creazione RAC: creazione database

Naturalmente l'operazione richiede un po' di tempo...

Abbiamo finito! Installazione Oracle RAC 19c - Creazione RAC: successo!

Buon divertimento! Have a lot of Fun! Que te diviertas! Diverte-te!

Post installazione

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...

$ sqlplus / as sysdba

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:

srvctl [status|start|stop] database -d DB_NAME srvctl [status|start|stop] instance -d DB_NAME -i INSTANCE_NAME [-o option]

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:

[grid@rac1 ~]$ lsnrctl status ... Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.3)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle-scan.acme.com)(PORT=5500))(Security=(.../xdb_wallet))(Presentation=HTTP)(Session=RAW)) ...

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. Installazione Oracle RAC 19c - Enterprise Manager Database Express

Tips & Tricks

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.

ssh oracle@rac2 date RSA key fingerprint is aa:bb:cc:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f. Are you sure you want to continue connecting (yes/no)? yes
Poiche' al primo accesso l'SSH spesso chiede una conferma, per evitare falsi errori e' opportuno accedere manualmente da entrambe i nodi sia sul nodo stesso che sull'altro nodo confermando la connessione.
C'e' un modo piu' fine di risolvere il problema con una configurazione [NdA StrictHostKeyChecking accept-new] ma fare 4 accessi ssh e' semplice e veloce.

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...

ERROR: The home is not clean. This home cannot be used since there was a failed OPatch execution in this home. Use a different home to proceed.
Non provate a aggiustare: la cosa piu' facile e' correggere l'errore e ripartire da zero con l'installazione seguendo la procedura in modo piu' preciso!

Altre informazioni...

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: Installazione Oracle RAC 19c - DBCA: DB Configuration Assistant

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 (2/5)
Data: 14 Febbraio 2021
Versione: 1.0.2 - 1 Aprile 2024
Autore: mail [AT] meo.bogliolo.name