DBMS ORACLE 9i
I componenti del Database
• Server Oracle :
– Strutture di memoria
– Processi
– File fisici
Directory principali:
– c:\oracle\admin\<nome database>\pfile
– c:\oracle\ora92\database
– c:\oracle\oradata\<nome database>
Strutture di memoria
•
SGA
–
–
–
–
–
•
Redo Log Buffer Cache
Database Buffer Cache
Shared Pool
Large Pool
Java Pool
PGA
•
SGA
Caratteristiche:
– Dimensionamento componenti dinamico in
init.ora
– SGA_MAX_SIZE: estensione massima
Componenti:
–
–
–
–
DB BC: dati elaborati dal sistema
RL BC: modifiche sul database
Large Pool: dati per backup o restore
Java Pool: dati per esecuzione codice java
– Shared Pool Area:
•
•
Data Dictionary: informazioni su utenti, tabelle,
file, permessi; viene usato per i vari controlli.
Library cache:
– Shared Sql Area: query lanciate sul DB e codice
risultante;
– Pl/SQL: codice procedure e funzioni PL/SQL;
– Locks: informazioni sui lock per impedire conflitti.
•
PGA:
Caratteristiche:
– informazioni sui singoli processi (variabili,
ecc.);
– non è condivisa.
Processi
1. DBWn (scrittore database)
Attivazione:
–
–
2.
Esaurimento buffers liberi
Checkpoint
LGWR (scrittore file log)
Attivazione:
–
–
–
–
Commit
1/3 Redo log buffer cache piena
DBWn in scrittura
Timeout ogni 3 secondi
3. Checkpoint
– trasferimento dati sui dischi
– update intestazioni CF e DF
Nota: frequenti checkpoint minor tempo recovery
4. SMON (system monitor)
– recovery istanza dopo crash in base agli RLF
– pulizia segmenti temporanei
5. PMON (process monitor)
– pulizia risorse processi per anomalie
– rilascio locks
6. ARCn (archiver)
– copia RLF prima di riscrittura
– modalità ARCHIVELOG
Processo utente:
Programma applicativo (SQL*Plus, …) che
gira sul server o sul client.
Processo server:
prende le richieste dal client, esegue i comandi
e restituisce i dati all’utente.
File fisici
• CF (CONTROL FILES): informazioni su
DB (nome, dimensione e posizione dei file,
…)
• RLF (REDO LOG FILES): comandi
modifica DB, quindi ~backup DB
• DF (DATA FILES): dati DB
Control File:
–
–
–
–
–
–
nome db
DF: nome, path, stato (online/offline)
RLF: nome, path
informazioni stato archive
nome tablespaces
informazioni Checkpoint più recente
Nota: Unico Control File Mirror
Aggiornamento:
– Processo server per aggiunta Files
– CheckPoint
– ARCn
Redo Log Files:
– comandi di modifica database
Aggiornamento:
– LGWn
Nota: Garanzia coerenza dati in seguito a crash,
possibilità di ricreazione del database
Crash & Recovery:
Situazioni possibili in caso di crash:
•
•
•
•
transazioni in corso, già applicate ai dati.
transazioni in corso, NON ancora eseguite.
transazioni completate, già applicate ai dati.
transazioni completate, NON ancora eseguite.
Recovery:
riportare il DataBase nell’ultimo stato coerente possibile • ripristino transazioni committate al momento del crash
• annullamento transazioni NON committate al momento del
crash
Archivelog:
Modalità archiviazione degli RLF
Attivazione (in qualunque momento) attivazione ARCn
Noarchivelog (default):
Sovrascrittura circolare degli RLF
Data Files:
– dati del DB
Struttura:
segment
extent
blocco
Tablespace:
contenitore logico costituito da uno o più DF memorizzati
anche su dischi diversi
quota tablespace1
quota tablespace2
Utente
Schema
quota tablespaceN
Tablespace
Vantaggi:
• riduzione contese di accesso a disco (DF su dischi diversi).
• gestione quote per singolo utente
• gestione efficiente applicazioni che usano lo stesso database
• gestione operazioni di Back Up e Recovery per singolo tablespace
Tablespace
Creazione:
– allocazione di un unico DF
– modalità:
• dictionary-managed: informazioni spaziali memorizzate nel DD
modifiche accesso al DD
• locally-managed (default): informazioni spaziali memorizzate
nell’header di ogni DF mediante matrice di bit (ogni bit corrisponde a un
blocco del DF e indica se è libero o meno)
nessun aggiornamento sul DD prestazioni superiori
Data Dictionary:
insieme di tabelle e viste contenenti informazioni
su utenti, tabelle, privilegi, …
Viste di Sistema:
query memorizzate nel DB, utili per ricavare
informazioni sul DB poiché le tabelle interne
(accessibili dagli amministratori) memorizzano i
dati in formati di difficile interpretazione.
Viste principali:
• USER_
Contengono informazioni sugli oggetti di proprietà dell’utente che
lancia la query sulla vista.
SQL> select * from user_tables;
• ALL_
Contengono informazioni sugli oggetti sui quali l’utente che lancia la
query ha accesso (o privilegi).
SQL> select * from all_tables;
• DBA_
Contengono informazioni sugli oggetti di tutti gli utenti. Solo gli utenti
privilegiati possono eseguire delle query sulle viste DBA_.
Inoltre alcune di esse contengono informazioni sulle strutture del
DB, come l’elenco dei DF.
Esempio:
- elenco di tutte le viste del DD:
SQL> select * from DICTIONARY;
- informazioni sul contenuto delle colonne:
SQL> select * from DICT_COLUMNS;
Creazione del DB:
– DBCA
– comandi SQL
Directory principali:
C:\oracle\admin\ORCL\bdump
C:\oracle\admin\ORCL\cdump
C:\oracle\admin\ORCL\create
C:\oracle\admin\ORCL\pfile
C:\oracle\admin\ORCL\udump
C:\oracle\database
C:\oracle\oradata\ORCL
Creazione DB
Variabili d’ambiente:
•
ORACLE_BASE indica la directory base dell’installazione. Es: c:\oracle
•
ORACLE_HOME indica la directory contenente il software, ed è relativa alla
oracle_base. Es: ORACLE_HOME=%ORACLE_BASE%\ora92 risolto in
ORACLE_HOME=c:\oracle\ora92
•
ORACLE_SID indica il nome dell’istanza.
•
DBNAME indica il nome del database
Creazione DB
Utenti di default:
• SYS (default password: CHANGE_ON_INSTALL)
•
– proprietario di tutte le tabelle di sistema, compreso DD
SYSTEM (default password: MANAGER)
– amministratore meno “potente” di SYS
Ruoli:
• SYSOPER
–
–
–
–
–
–
STARTUP e SHUTDOWN
ALTER DATABASE [ OPEN / MOUNT ]
ALTER DATABASE ARCHIVELOG
RECOVER DATABASE
CREATE SPFILE
ecc..
• SYSDBA
– tutti i privilegi inclusi in SYSOPER
– CREATE DATABASE
– ecc…
Autenticazione:
-
tramite SO (credenziali di accesso al SO)
tramite username / password
Stati DB:
1.
2.
3.
4.
CLOSED
NOMOUNT (creazione di un DB)
MOUNT (recovery, passaggio ad ARCHIVELOG, …)
OPEN (accesso consentito a utenti normali)
Avvio:
- STARTUP: da Closed a Open
- STARTUP NOMOUNT: da Closed a NoMount
- STARTUP MOUNT: da Closed a Mount
Passaggio di stato:
SQL> alter database mount;
(passaggio umount mount)
SQL> alter database open;
(passaggio mount open)
Arresto:
- SHUTDOWN (impedimento di nuove connessioni e
attesa disconnessione di tutti gli utenti)
- SHUTDOWN IMMEDIATE (disconnessione
immediata di tutti gli utenti, e chiusura del Database)
- SHUTDOWN TRANSACTIONAL (impedimento
nuove connessioni e attesa commit o rollback)
- SHUTDOWN ABORT (in caso di mal funzionamento
degli altri comandi di shutdown; implica recovery al
prossimo avvio)
DATABASE
TableSpace
System
B
B
B
TableSpace
Users
TableSpace
…….
B
ext table 1
ext table 1
ext table N
DataFileN
ext table N
DataFile2
ext table 2
DataFile1
ext table 2
Riepilogo comandi SQL:
-
create table <nomeTabella> (
<colonna1> <tipo di dato> [primary key | unique | not null]
......
<colonnaN> <tipo di dato> [primary key | unique | not null]
[vincoli]
);
vincoli: primary key (<colonna i>,… , <colonna j>);
foreign key (<colonna i>) references <tabella j> (<colonna k>);
tipo di dato:
char(size) stringa di caratteri di dimensione fissa,
varchar2(size) stringa di caratteri di dimensione variabile,
number,
date,
…
Riepilogo comandi SQL:
-
insert into <tabella> [<colonna i,…,colonna j>]
values(<valore i,…,valore j>);
-
update <tabella> set
<colonna i> = <espressione i>,… , <colonna j> = <espressione j>
[ where <condizione> ]
-
delete from <tabella> [where <condizione>]
-
select [distinct] [<alias ak>.]<colonna i>,… ,[<alias al>.]<colonna j>
from <tabella 1>[alias a1>],… , <tabella n>[alias an>]
[where <condizione>]
SQL*PLUS
• Ogni comando deve terminare con ‘;’ oppure
con ‘/’;
• Per uscire: ‘exit’ oppure ‘quit’;
• SQL buffer:
– l: elenca le linee memorizzate nel buffer; la corrente è
identificata da ‘*’;
– l<numero>: imposta la linea corrente alla linea
<numero>;
– c/<vecchia stringa>/<nuova stringa>: rimpiazza la
prima occorrenza della vecchia stringa con la nuova
nel buffer;
– r: esegue il contenuto corrente del buffer.
• Comandi vari:
– desc <nome tabella>: elenca la struttura di
una tabella;
– spool <nome file>: memorizza su un file il
contenuto dello schermo dal momento della
chiamata; percorso del file:C:\oracle\ora92\bin
– spool off;
– @<nome file>: richiama i comandi salvati nel
file <nome file>.sql;
– copy:
Es: copy from scott/tiger create prova using select
* from prova1;
COMANDO DESCRIZIONE
@path (“at”) Esegue lo specifico file di istruzioni indicato nel path
/ (“slash”) Esegue il comando SQL o il blocco PL/SQL precedentemente stilato
ACC[EPT] Legge una riga di input e la memorizza in una variabile
A[PPEND] Aggiunge uno specifico testo alla fine della riga corrente nel buffer
ATTRIBUTE Specifica la caratteristica per un dato attributo della colonna di
Tipo Oggetto e lista la corrente caratteristica per un singolo attributo o per tutti
gli attributi
BRE[AK] Specifica come e dove verranno formattati i cambiamenti in un report
BTI[TLE] Posiziona e formatta uno specifico titolo in fondo ad ogni pagina di
report o lista la corrente definizione di BTITLE.
C[HANGE] Cambia il testo nella corrente linea del buffer
CL[EAR] Resetta o cancella il corrente valore
COL[UMN] Visualizza le caratteristiche di una data colonna
COMP[UTE] Calcola e stampa il totale delle linee, usando diversi standard di
calcolo, su un raggruppamento di righe selezionate
CONN[ECT] Connette un dato utente al database
COPY Copia i dati da una query in una tabella di database locale o remoto
DE[FINE] Definisce una variabile o lista il valore e il tipo di dato di una variabile
DEL Cancella una o più righe nel buffer
DESC[RIBE] Lista le specifiche di una tavola, vista o sinonimo o le specifiche di
una procedura o funzione
•
•
•
•
•
•
•
Il comando column <nome colonna> <opzione 1> <opzione 2> … viene
usato per formattare le colonne del risultato di una query. Le opzioni più
frequentemente usate sono:
format A<n>
Per dati alfanumerici, questa opzione imposta la lunghezza del <nome
colonna> a <n>. Per colonne che hanno tipi di dati number, il comando
format può essere utilizzato per specificare il formato prima e dopo il punto
decimale. Per esempio, format 99,999.99 specifica che se il valore ha più
di tre cifre prima del punto decimale,le cifre verranno separate da una
virgola, e solo due cifre vengono visualizzate dopo il punto decimale.
heading <testo> rinomina <nome colonna> e gli dà una nuova
intestazione.
null <testo> viene usato per specificare l’output dei valori null (tipicamente,
i valori null non sono visualizzati).
column <nome colonna> clear cancella la definizione del formato per
<nome colonna>.
Il comando set linesize <numero> può essere usato per impostare la
massima lunghezza di una singola linea che può essere visualizzata a
schermo.
Set pagesize <numero> imposta il numero totale di linee che SQL*Plus
visualizza prima di visualizzare nuovamente i nomi di colonna e le
intestazioni, rispettivamente, delle righe selezionate.