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: Esaurimento buffers liberi Checkpoint 2. 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 quota tablespacen Schema
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. CLOSED 2. NOMOUNT (creazione di un DB) 3. MOUNT (recovery, passaggio ad ARCHIVELOG, ) 4. 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 TableSpace Users TableSpace. B B B B ext table 1 ext table 1 ext table 2 ext table 2 DataFile1 DataFile2 DataFileN ext table N ext table N
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 a k >.]<colonna i>,,[<alias a l >.]<colonna j> from <tabella 1>[alias a 1 >],, <tabella n>[alias a n >] [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.