Laboratorio Architettura Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna 1 Oracle SQL Developer - funzionalità Per progettisti integrazione di SQL Developer Data Modeler, per la progettazione e lo sviluppo di modelli dei dati. opzioni di esportazione e importazione dati Per DBA strumenti di scheduling delle operazioni strumenti di gestione dei parametri di configurazione del database, dei profili di sicurezza e auditing e di tutti i file (redo log, control file, archive log, data file) che compongono il database. SQL Tuning Advisor, per il tuning degli statement SQL strumenti a supporto della migrazione Per sviluppatori Query Builder visuale integrato con il corrispondente editor testuale di comandi SQL. 3 1
Oracle SQL Developer Foglio di Lavoro SQL: - + per creare un foglio di lavoro associato ad una determinata connessione Pannello Connessioni: - + per creare una connessione (segue) Pannello DBA: - Visualizza->DBA - Info per amministratori - + per creare una connessione Pannello Output DBMS: - Visualizza->Output DBMS - + per abilitare Output comandi: DBMS_OUTPUT.PUT_LINE() 4 Creare una connessione Nome host: si-oracle-11.csr.unibo.it SID: SISINF Utente: GRUPPO?? Password: GRUPPO 5 2
Esercizi 1. Cambiare la password del proprio utente 2. Quanta RAM è associata all istanza? 3. Quali ruoli sono associati al proprio utente? 4. Quali privilegi prevede il ruolo CONNECT? 5. Quanti tablespace sono presenti nel DB? 6. Qual è il legame utenti tablespace? 7. Che dimensione massima ha il tablespace INDX? 8. Quali sono i datafile presenti nel sistema? 6 Esercizi 9. Creare le seguenti tabelle: FORNITORI(F_CF,F_Nome,F_Indirizzo,F_Prov,F_Nazione) CLIENTI(C_CF,C_Nome,C_Indirizzo,C_Prov,C_Nazione) FATTURE(A_Num,Clienti:A_Cliente,A_Data,A_ModPag,A_Pagato) DETTAGLIO(Fatture:D_NumF,Prodotti:D_CodP,D_Qta,D_Prezzo) PRODOTTI(P_Cod,P_Nome,P_Categoria,P_QtaDisp,P_PrezzoList,Fornitori:P _Fornitore) ORDINI(Prodotti:O_CodP,O_DataOrd,O_Qta) 10. Aggiungere la tupla alla tabella FORNITORI RSSMRC65R15D540P,Rossi Marco,Via dei Filargiti, FC, Italia 11. Creare un indice sull attributo C_Nome della tabella CLIENTI memorizzandolo nel tablespace INDX. 8 3
Esercizi 12. Selezionare il nome di tutte le tabelle presenti nel proprio schema 13. Selezionare nome e tipo delle colonne della tabella Fatture. 14. Selezionare nome utente, nome client, programma utilizzato nelle sessioni attive 10 Creare un altra connessione Nome host: si-oracle-11.csr.unibo.it SID: TPCD Utente: USERSI Password: usersi 12 4
Schema TPC-D 13 Esercizi (TPC-D) 15. Quali vincoli insistono sulla tabella LINEITEM? 16. Che caratteristiche ha il tablespace USERS (max_extent, max_size,.)? 17. Quali sono i privilegi dell utente USERSI? 18. Eseguire le seguenti interrogazioni sul database: a) Totale degli importi trattati dall impiegato Clerk#000000374 nei diversi anni b) Totale delle quantità ordinate per una certa parte c) Numero dei fornitori di ogni regione d) Numero di ordini spediti in ritardo (L_COMMITDATE < L_SHIPDATE) e) Campione dei clienti e dei fornitori (vedi SAMPLE o ROWNUM) f) Elenco dei clienti a cui è stata venduta merce fornita da 'supplier#000005680' 14 5
Select Top K in Oracle Attenzione: TOP K (MSSql) e Limit (MySQL) non esistono in Oracle 11 select a, b from tabella where rownum<k order by b; //non funziona perchè rownum è valutato prima di ordinare 2 Soluzioni: select a, b from ( select a, b from tabella order by b) where rownum<k; select a, b from ( select a, b, rank() over (order by b) r from tabella) where r<k; La funzione RANK restituisce l ordine in un gruppo di valori (vedi anche DENSE_RANK) Esercizi su TPC-D : Seleziona i 10 ordini con valore più alto seleziona i 5 clienti che hanno fatto più ordini 16 Esempio su TCP-D Seleziona i 10 ordini con valore più alto select O_ORDERKEY,O_TOTALPRICE from ( select O_ORDERKEY,O_TOTALPRICE FROM ORDERS order by 2 desc ) where rownum<10; Seleziona i 5 clienti che hanno fatto più ordini select a,b,c,r from ( select C_CUSTKEY a, C_NAME b, count(*) c, rank() over (order by count(*) desc) r from CUSTOMER, ORDERS where C_CUSTKEY=O_CUSTKEY group by C_CUSTKEY, C_NAME having sum(o_totalprice) > 700000) where r<6; 17 6