Fondamenti di Amministrazione Database Oracle: Architettura e Gestione

Classificato in Informatica

Scritto il in italiano con una dimensione di 14,01 KB

Velocità di Accesso: RAM vs. Disco

  • RAM: ~ 10-9 secondi
  • Disco: ~ 10-3 secondi

RMAN: Gestione Backup e Ripristino Database Oracle

RMAN è responsabile della gestione dei backup e del ripristino dei file di dati, dei file di log di archivio e dei file di controllo. Può essere utilizzato per il recupero completo o incompleto di un database.

Comandi GRANT e REVOKE: Gestione dei Privilegi in Oracle

Privilegi di Sistema

Un privilegio di sistema è un privilegio che consente all'utente di eseguire azioni particolari nel database. Ad esempio, creare un tablespace.

Privilegi di Oggetto

I privilegi di oggetto sono i privilegi che consentono all'utente di accedere e manipolare un oggetto specifico.

Per informazioni sui privilegi sono disponibili le seguenti viste:

  • DBA_SYS_PRIVS
  • SESSION_PRIVS
  • DBA_TAB_PRIVS
  • DBA_COL_PRIVS

Viste (Views) in Oracle: Concetti e Utilizzi

  • Una vista (view) è una tabella logica (non fisica) basata su altre tabelle o viste.
  • Funziona come una finestra attraverso la quale visualizzare o modificare i dati nelle tabelle.
  • Una vista non contiene dati in sé.
  • Le tabelle su cui si definisce una vista sono chiamate tabelle di base.
  • La vista è memorizzata come una SELECT nominata nel dizionario dei dati.

Utilizzi delle Viste

  • Ottenere un accesso limitato al database, poiché la vista può visualizzare solo una parte specifica dei dati.
  • Sostituire query complesse con query più semplici. Ad esempio, una selezione su una vista definita su più tabelle sarà più facile da realizzare rispetto all'uso diretto di JOIN tra le tabelle.
  • Fornire l'indipendenza dei dati.
  • Fornire modi diversi di visualizzare gli stessi dati, personalizzati per ogni utente o applicazione.
  • Consentire l'accesso a gruppi di utenti basato su criteri specifici.

Architettura Oracle: Database, Istanza e Proprietà ACID

Cos'è un Database (BD)?

Un database è un archivio che consente di memorizzare grandi quantità di informazioni in modo organizzato, facilitandone la ricerca e l'utilizzo. Dal punto di vista tecnico, un database è un sistema costituito da un insieme di dati memorizzati su dischi che consentono l'accesso diretto e da un insieme di programmi che manipolano tali dati.

Caratteristiche di un RDBMS

Servizi offerti da un DBMS:

  1. Deve consentire agli utenti di leggere e scrivere dati (grazie a SQL).
  2. Deve garantire la sicurezza dei dati.
  3. Deve essere in grado di applicare regole di integrità (PK, FK, CHECK, UK).
  4. Velocità di accesso e facilità d'uso.
  5. Disponibilità.
  6. Backup e ripristino.
  7. Deve essere in grado di gestire la concorrenza.
  8. Indipendenza dei dati.
  9. Essere in grado di implementare transazioni.

Istanza Oracle

Un'istanza di Oracle è composta da più processi e da spazi di memoria condivisa necessari per accedere alle informazioni contenute nel database.

L'istanza è costituita da processi utente, processi in background di Oracle e da uno spazio di memoria condivisa utilizzato da questi processi.

File di Controllo

  • È un piccolo file binario.
  • Definisce lo stato in tempo reale del database fisico.
  • Mantiene l'integrità del database.

È assolutamente necessario per:

  • Il montaggio (mount) del database durante l'avvio.
  • L'utilizzo del database.

È associato a uno e un solo database.

La sua perdita può richiedere il recupero del database.

La sua dimensione iniziale viene impostata durante la CREATE DATABASE.

Datafile (File di Dati)

Un datafile è una rappresentazione fisica di un tablespace. Sono i "file dati" dove le informazioni sono memorizzate fisicamente.

Proprietà ACID

È un insieme di proprietà che una transazione deve soddisfare. Queste proprietà sono: Atomicità, Consistenza, Isolamento e Durabilità.

Atomicità (Atomicity)

Garantisce che una transazione sia completata interamente o non venga eseguita affatto.

Consistenza (Consistency)

Assicura che il database passi da uno stato consistente a un altro stato consistente, rispettando tutte le regole di integrità.

Isolamento (Isolation)

Affinché le transazioni non interferiscano tra loro, è necessario garantire un livello di isolamento tra le stesse. Ci sono diversi livelli di isolamento.

Durabilità (Durability)

Assicura la persistenza di tutte le modifiche apportate dalla transazione una volta che questa è stata completata. Se il sistema dovesse fallire successivamente, ad esempio a causa di un calo di tensione, le modifiche apportate dalla transazione verranno comunque mantenute nel database al ripristino del sistema.

UNDO, Tablespace, Segmenti di Rollback e Parametri Oracle

Segmento UNDO

Il segmento UNDO viene utilizzato per memorizzare i valori precedenti (dati UNDO) quando un processo modifica informazioni nel database. Memorizza la posizione dei dati modificati e i dati come erano prima di tale modifica.

Tablespace

Tipi di Tablespace

Il DBA crea tablespace per aumentare il controllo e la facilità di manutenzione. Il server Oracle riconosce 2 tipi di tablespace: SYSTEM e tutti gli altri.

Tablespace SYSTEM

  • Creato con il database.
  • Obbligatorio in tutti i database.
  • Contiene il dizionario dei dati, incluse le unità di programma.
  • Contiene il segmento UNDO di sistema.
  • Non dovrebbe contenere dati utente, anche se consentito.

Tablespace Non-SYSTEM

  • Consente una maggiore flessibilità nella gestione dei database.
  • Separa i segmenti UNDO, i dati temporanei e i dati delle applicazioni.
  • Separa i dati in base alle esigenze di backup.
  • Separa i dati dinamici e statici.
  • Controlla la quantità di spazio designato per gli oggetti utente.

Segmenti di Rollback

Sono oggetti interni del database che permettono il ripristino delle transazioni e garantiscono la coerenza nella lettura. La struttura di un record di rollback include:

  • L'ID della transazione.
  • L'indirizzo del blocco della tabella.
  • Il numero di riga.
  • Il numero di colonna.
  • Il valore storico dei dati (prima della modifica).

Parametri di Inizializzazione

Il file init.ora

Come parte della distribuzione del software, Oracle fornisce un file di parametri di inizializzazione chiamato init.ora. Questo file contiene i parametri di sistema Oracle e dovrebbe essere utilizzato dal DBA per configurare il DBMS e renderlo operativo. Oracle legge questo file durante il processo di avvio per determinare la dimensione della SGA e per trovare i file di controllo, tra le altre cose.

Poiché il file init.ora è essenziale per avviare il database, dovrebbe essere copiato regolarmente per proteggerlo.

Tipi di Shutdown (Arresto) del Database Oracle

Shutdown Normale (NORMAL)

Impedisce nuovi accessi al database, attende che tutti gli utenti completino le loro richieste e si disconnettano dal server. L'opzione NORMAL chiude il database, smonta il database e arresta l'istanza in modo pulito ed è l'opzione consigliata per arrestare il database.

Shutdown Immediato (IMMEDIATE)

Occasionalmente, può essere necessario arrestare il DB immediatamente. In questo caso, le istruzioni dei processi vengono immediatamente interrotte, eventuali transazioni non commesse (uncommitted) vengono annullate (rollback) e il database viene arrestato. L'unico svantaggio di questo approccio è che Oracle non attende che gli utenti si disconnettano. Tuttavia, il database sarà coerente e non richiederà un recupero al successivo avvio.

Shutdown Abort (ABORT)

Utilizzando l'opzione ABORT, le istruzioni SQL vengono interrotte in modo anomalo e le operazioni non commesse non vengono annullate. Arrestare il database con l'opzione ABORT richiederà un recupero al successivo avvio del database, e questa opzione dovrebbe essere usata solo quando non ci sono alternative.

Tipi di Avvio (Startup) del Database Oracle

  • NOMOUNT
  • MOUNT
  • OPEN
  • RESTRICT

SQL*Loader: Caricamento Dati in Oracle

SQL*Loader è una utility fornita da Oracle per caricare dati in un database da un file esterno, solitamente un file di testo, ma possono essere anche file binari.

Struttura dei Tablespace e Creazione con DBCA

  • Nei tablespace vengono memorizzati gli oggetti dello schema del database (tabelle, indici, ecc.), potendo essere distribuiti su diversi file.
  • Un database ha diversi tablespace.
  • Un tablespace può avere diversi datafile.
  • Un datafile appartiene a un solo tablespace e un tablespace appartiene a un solo database.

Tablespace Comuni in Oracle: SYSTEM ed Esempio

Tablespace SYSTEM

  • Creato con il database.
  • Obbligatorio in tutti i database.
  • Contiene il dizionario dei dati, incluse le unità di programma memorizzate.
  • Contiene il segmento UNDO di sistema.
  • Non dovrebbe contenere dati utente, anche se consentito.

Tablespace Esempio (DEMO)

Contiene tutti gli oggetti per le forme di demo.

Gestione dei File di Parametri Oracle: PFILE e SPFILE

Esistono due tipi di file di parametri:

PFILE (File di Parametri Statici)

Il file di parametri statici (PFILE), comunemente indicato come init%SID%.ora. Questo file può essere modificato con qualsiasi editor di testo del sistema operativo.

SPFILE (File di Parametri Persistenti)

Il file di parametri persistenti (binario), SPFILE, comunemente denominato spfile%SID%.ora. Questo file dovrebbe essere modificato utilizzando i comandi Oracle.

Creazione Manuale di un Database Oracle: Passaggi e Comandi

È possibile creare un database manualmente seguendo questi passaggi:

  1. Decidere un nome univoco per l'istanza (SID), ad esempio: test.
  2. Impostare la variabile d'ambiente ORACLE_SID, ad esempio in Linux:
    $ ORACLE_SID = test; export ORACLE_SID
  3. Creare il file di parametri init%SID%.ora, ad esempio inittest.ora.
  4. Nel file di parametri, definire la dimensione del blocco dati, ad esempio: db_block_size = 8192.
  5. Determinare la struttura delle directory necessarie per i file del database (datafile, file di trace, file di alert, ecc.).
  6. Creare il file di password per l'amministrazione remota, ad esempio orapwtest.
  7. Avviare l'istanza in modalità NOMOUNT.
  8. Preparare il comando CREATE DATABASE.
  9. Da SQL*Plus, connettersi come utente SYS con il ruolo SYSDBA ed eseguire il comando CREATE DATABASE.
  10. Creare le viste del catalogo (DBA_, ALL_, USER_ e le viste dinamiche V$) con i loro sinonimi (eseguendo lo script catalog.sql).
  11. Installare l'opzione procedurale PL/SQL (eseguendo lo script catproc.sql).
  12. Aggiungere file di log o di controllo aggiuntivi, qualora fosse necessario.
  13. Dettagliare la struttura del database, se necessario.

Gestione delle Estensioni e Dimensioni dei Segmenti Oracle

Per impostare le dimensioni delle future estensioni che verranno allocate a un segmento, si utilizzano diversi parametri a cui si deve attribuire un valore al momento della creazione di una tabella, indice o segmento di rollback. Questi parametri sono specificati nella clausola STORAGE del comando che crea il segmento e sono:

  • INITIAL: indica la dimensione in byte della prima estensione da allocare al segmento.
  • NEXT: indica la dimensione della successiva estensione che verrà creata quando non c'è più spazio nelle estensioni già assegnate al segmento.
  • PCTINCREASE: Quando viene assegnata una nuova estensione al segmento, il valore di NEXT viene ricalcolato e le dimensioni della nuova estensione (che sarà la successiva) vengono aumentate della percentuale indicata da PCTINCREASE.
  • MINEXTENTS: Indica il numero minimo di estensioni che devono essere allocate contemporaneamente per un determinato segmento al momento della sua creazione.
  • MAXEXTENTS: Indica il numero massimo di estensioni che possono essere create per l'oggetto, inclusa la prima.

Clausola STORAGE

Qualsiasi oggetto che abbia un'occupazione fisica nel database avrà una clausola STORAGE nella sua sintassi di creazione. Lo scopo di questa clausola è definire alcune proprietà di archiviazione per l'oggetto creato, come la dimensione iniziale e la dimensione delle estensioni successive.

Viste del Dizionario Dati e Viste Dinamiche Oracle

  • V$LOG: Mostra i file di redo log attivi.
  • V$LOGFILE: Mostra i gruppi di redo log e i file appartenenti a tali gruppi.
  • V$DATAFILE: Visualizza i datafile che compongono il database.
  • V$CONTROLFILE: Mostra la posizione corrente dei controlfile.
  • DBA_USERS: Visualizza le informazioni relative agli utenti del database.
  • DBA_PROFILES: Visualizza tutti i profili e i loro limiti.
  • DBA_TABLESPACES: Contiene una descrizione di tutti i tablespace.
  • DBA_TABLES: Contiene la descrizione di tutte le tabelle relazionali nel database.
  • DBA_SYS_PRIVS: Mostra i privilegi di sistema concessi a utenti e ruoli.
  • DBA_ROLE_PRIVS: Elenca i ruoli concessi ad altri ruoli e agli utenti.

Voci correlate: