Gestione di un db Oracle 12c (ambiente non clusterizzato) su server CentOS 7

Oggi si parlerà di come gestire un db Oracle a livello sistemistico.

Premessa: I comandi utilizzati e gli output mostrati saranno riferiti a un db Oracle di test in un ambiente non clusterizzato su server CentOS Linux release 7.7.1908 (Core). La versione db Oracle installata e usata è: 12c Standard Edition Release 1.

Esistono modi diversi per gestire un db Oracle e vedere le stesse informazioni:

  • dal db server (tramite sqlplus o da linea di comando)
  • dal db Oracle (tramite client tool come Toad for Oracle ad esempio)

E’ importante parlare del file .bash_profile in quanto viene utilizzato per settare le variabili d’ambiente utilizzate per l’istanza db Oracle che si usa.

Tra le variabili settate quelle da tenere in considerazioni sono queste:

ORACLE_BASE: è la variabile che contiene il percorso di default base dove sono contenuti i files del db Oracle (tra cui i files presenti nella ORACLE_HOME, admin, oradata ecc..) relativi all’istanza installata.

ORACLE_HOME: è la variabile che contiene il percorso dove il sw del db Oracle viene installato.

ORACLE_SID: è la variabile che contiene l’identificativo dell’istanza (SID: Oracle System ID) ossia il suo nome che è in uso dal db Oracle.

E’ da indicare come utilità anche lo script oraenv che serve per settare le variabili d’ambiente per una specifica instanza indicata.

Oracle Grid Infrastructure

E’ un insieme di componenti che permette la gestione dei volumi, del filesystem e della gestione automatica per il restart di un db Oracle. In questo caso viene usata per un server singolo in ambiente non clusterizzato. Esiste anche la versione per ambienti cluster.

Esso include Oracle ASM (Automatic Storage Management) e Oracle Restart.

Oracle Restart

E’ la componente che provvede alla gestione di una singola istanza (non clusterizzata) db Oracle e alle altre componenti come Oracle ASM, i servizi, il listener ecc…

Il comando utilizzato per la gestione dei componenti di Oracle Restart è srvctl (Server Control Utility). Mentre per avviare Oracle Restart si può eseguire il seguente comando:

crsctl start has

E si avrà il seguente output d’esempio:

Per stopparlo invece, si esegue il seguente comando:

crsctl stop has

E si avrà il seguente output d’esempio:

Il file utilizzato per configurare il restart automatico dell’istanza db Oracle e delle altre componenti è oratab.

Esso si trova nel percorso /etc, il file viene poi utilizzato dagli scripts:

  • dbstop
  • dbstart

per effettuare lo stop e lo start delle componenti gestite da Oracle Restart che sono state configurate. Essi si trovano nel percorso:

$ORACLE_HOME/bin

Nota: usare questi scripts, impatta tutti i database e quindi tutte le componenti configurate nel file oratab.

Gestione listener

Verifica stato listener

Usando come utenza oracle, per vedere lo stato del listener, si usa il seguente comando:

lsnrctl status

E questo è l’output che si ottiene da un db server d’esempio:

Se è attivo e presente Oracle Restart si può controllare lo stato del listener col seguente comando (se è presente solo il listener di default):

srvctl status listener

Di seguito un output d’esempio:

Nota: Se sono presenti più listener o con nome differente da quello di default, bisogna usare il comando precedente per specificare il listener:

srvctl status listener -listener nome_listener

E’ possibile verificare anche che il listener sia effettivamente attivo e in ascolto sulla porta 1521 (porta di default) eseguendo il seguente comando:

ps -ef | grep tns | grep "nome_listener"

Di seguito un output d’esempio:

E guardando anche le connessioni attive

netstat -na | grep -i 1521|grep -i indirizzo_ip_db_server

Di seguito un output d’esempio:

Stop e start del listener

Invece per avviarlo o fermarlo, si usando i seguenti comandi:

lsnrctl start 
lsnrctl stop

Di seguito un esempio di output per l’avvio del listener:

Se presente Oracle Restart si può avviare o fermare il listener con i seguenti comandi:

srvctl start listener -listener nome_listener
srvctl stop listener -listener nome_listener

Gestione istanza

Verifica stato di un istanza db Oracle

Sempre con utenza oracle, per vedere lo stato di un’istanza specifica legata al db, si può eseguire il seguente comando:

lsnrctl services

oppure tramite Oracle Restart, usare il seguente comando:

srvctl status database -d nome_database

In alternativa, infine si può visualizzare le informazioni sull’ istanza corrente dal db Oracle eseguendo la seguente query:

SELECT * FROM V$INSTANCE;

Avvio di un’istanza db Oracle

Accedendo con utenza oracle per avviare un’istanza si può accedere al db Oracle con sqlplus come segue:

sqlplus "/as sysdba"

E poi da qui eseguire il seguente comando:

STARTUP

E si avrà il seguente output d’esempio:

Stop di un istanza db Oracle

Per fermarlo invece si usa il seguente comando da sqlplus:

SHUTDOWN

Avvio del db Oracle

Per avviare il db Oracle (comprese tutte le componenti), se è attivo Oracle Restart, si esegue il seguente comando:

srvctl start database -d nome_database

E usando il seguente comando:

srvctl status database -d nome_database

si avrà il seguente output:

Stop del db Oracle

Per fermare invece il db Oracle con Oracle Restart si usa il seguente comando:

srvctl stop database -d nome_database

e usando il comando precedentemente usato con l’opzione status si avrà il seguente output:

Nota importante: utilizzare il comando srvctl o eseguire le query tramite sqlplus per gestire il listener e le istanze è diverso. Con srvctl vengono avviate o fermate automaticamente tutte le componenti dipendenti dalle altre e nell’ordine corretto, mentre usando sqlplus questo non avviene ed è necessario controllare che tutte le componenti dipendenti siano gestite nell’ordine corretto.

Recupero informazioni utili

  1. Versione db Oracle

Per visualizzare la versione attuale di db Oracle si può eseguire la seguente query su db:

SELECT * FROM PRODUCT_COMPONENT_VERSION

Di seguito l’output di esempio:

oppure in alternativa si può eseguire sulla vista $VERSION:

SELECT * FROM V$VERSION

Di seguito l’output di esempio:

2. Visualizzazione parametri di configurazione db Oracle

select * from v$parameter
where name like '%dump%'

Di seguito un esempio di output:

Oppure tramite sqlplus:

show parameter

Di seguito un esempio di output:

Riferimenti:

Verifica dell’istanza se è in running: https://docs.oracle.com/database/121/RACAD/GUID-7232DA64-5C34-4BD6-BBAD-A8A1782408B1.htm#RACAD8915

Stop e avvio db con Sqlplus: https://docs.oracle.com/database/121/ADMQS/GUID-CE7EF896-BB8A-4D4F-869C-BF4FE0D85470.htm#ADMQS12037

Variabili Oracle: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/unxar/administering-oracle-database.html#GUID-F71197C7-3B59-4DA1-99DC-3E33BC037ABF

Oracle Grid Infrastructure per un server singolo: https://docs.oracle.com/cd/E11882_01/install.112/e47689/oraclerestart.htm#LADBI999

Oracle Restart: https://docs.oracle.com/database/121/OSTMG/GUID-742EE243-14E1-45E2-9651-B40DEA4A5A2A.htm#OSTMG94086

https://docs.oracle.com/database/121/ADMIN/restart.htm#ADMIN12711

Stop e Avvio Oracle sw: https://docs.oracle.com/database/121/UNXAR/strt_stp.htm#UNXAR002

Scripts dbstart e dbstop: http://www.dba-oracle.com/t_linux_dbstart_dbshut.htm

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.