Laboratorio Architettura Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna 1 Laboratorio da PC portatile Installare Vmware Horizon View Client Add server: vdi-connection.polocesena.unibo.it (accessibile solo in rete universitaria) Inserire le credenziali d’ateneo Selezionare la macchina virtuale Lab-3 2 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 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.polocesena.dir.unibo.it SID: SISINF Utente: GRUPPO?? Password: GRUPPO 5 Esercizi 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? 1. 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 Soluzioni create table Fornitori ( F_CF char(16), F_NOME varchar2(50), F_INDIRIZZO varchar2(50), F_PROVINCIA varchar2(4), F_NAZIONE varchar2(50), primary key (F_CF)); 10. create table Prodotti ( P_COD varchar2(25), P_NOME varchar(30), …. P_FORNITORE char(16), primary key (P_COD), foreign key (P_FORNITORE) references Fornitori (F_CF)); 9. insert into fornitori Values ('RSSMRC65R15D540P','Rossi Marco','Via dei Filargiti','FC','Italia'); 10. CREATE INDEX MyID ON CLIENTI(C_Nome) tablespace INDX 9. 9 Esercizi 12. 13. 14. Selezionare il nome di tutte le tabelle presenti nel proprio schema Selezionare nome e tipo delle colonne della tabella Fatture. Selezionare nome utente, nome client, programma utilizzato nelle sessioni attive 10 Soluzioni select * from user_tables; SELECT object_name FROM USER_OBJECTS WHERE object_type='TABLE'; 13. SELECT COLUMN_NAME,DATA_TYPE FROM USER_TAB_COLUMNS WHERE TABLE_NAME='FATTURE’; 14. select USERNAME,MACHINE,PROGRAM from V$SESSION Oppure Strumentimonitoraggio sessioni 12. 11 Creare un’altra connessione Nome host: si-oracle-11.polocesena.dir.unibo.it SID: TPCD Utente: USERSI Password: usersi 12 Schema TPC-D 13 Esercizi (TPC-D) 15. 16. 17. 18. Quali vincoli insistono sulla tabella LINEITEM ? Che caratteristiche ha il tablespace USERS (max_extent, max_size, ….) ? Quali sono i privilegi dell’utente USERSI ? Eseguire le seguenti interrogazioni sul database: a) b) c) d) e) f) Totale degli importi trattati dall’impiegato ‘Clerk#000000374’ nei diversi anni Totale delle quantità ordinate per una certa parte Numero dei fornitori di ogni regione Numero di ordini spediti in ritardo (L_COMMITDATE < L_SHIPDATE) Campione dei clienti e dei fornitori (vedi SAMPLE o ROWNUM) Elenco dei clienti a cui è stata venduta merce fornita da 'supplier#000005680' 14 Soluzioni SQL Developer > apri tabella > scheda Vincoli 16. SELECT * FROM USER_TABLESPACES WHERE tablespace_name='USERS' 17. SELECT * FROM user_sys_privs; 18. Query: 15. a) b) c) d) e) f) select T_YEAR,sum(O_TOTALPRICE) from ORDERS,TIME where O_ORDERDATE=T_TIMEKEY and O_CLERK='Clerk#000000374' group by T_YEAR; select P_NAME from PART WHERE ROWNUM <10; select sum(L_QUANTITY) from LINEITEM,PART where L_PARTKEY=P_PARTKEY and P_NAME='goldenrod lace spring chartreuse ivory'; select R_NAME, count(*) from SUPPLIER,NATION,REGION where S_NATIONKEY=N_NATIONKEY and N_REGIONKEY=R_REGIONKEY group by R_NAME; select count(distinct L_ORDERKEY)as INRITARDO from LINEITEM where L_COMMITDATE < L_SHIPDATE; select C_NAME FROM CUSTOMER SAMPLE(5); -- il 5% a campione select S_NAME FROM SUPPLIER where ROWNUM< 100; -- i primi 100; select distinct(C_NAME) from LINEITEM,ORDERS,CUSTOMER,SUPPLIER where L_ORDERKEY=O_ORDERKEY and O_CUSTKEY=C_CUSTKEY and 15 L_SUPPKEY=S_SUPPKEY and S_NAME='Supplier#000005680'; 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
© Copyright 2024 Paperzz