ࡱ> wrstuvnx1*,~h TPNG  IHDR!sRGB pHYs+PLTE999555333---///000666$$$&&&,,,...OOOSSS___UUUCCCFFFYYY]]]ZZZTTTBBBGGGuuuzzzhhhdddvvv|||ttt~~~lll```bbbfff}}}qqqssspppmmmK[IDATx yǕ64˴{v48K2fʵr6he9#=b^@_*=a 666M%M%MaSIaSIaSIaSTRTR666M%M%M%ma 5ĠTWҏͷVHj2VaxDuUЁ_MYK-Y]aÇYW ¦ [ Tnn϶][I~>#_ϊ1g[ l "D(GGArHck EKs`ښ2v;j66 87pqx =b "\1;s-A_ -ʑ R+,P Kb8 ݮذQ&Bض̋ zmiD(# rbkڴ KvJSdv-Wm ~h͊QVYB,PG,G rHbkڴ:p6]aӒQl8i|?)Ul%MZmiD(#]z9$ mZ syk5l"fQ~tYsbcG`FiiK B906!mhRnhl6|:lq<'.ywA>6~귵be]6ZdYvAahRn=Ukoa sM]Co;yτNDi  UB9ZiC[MKPtg۾l۳!] 6%73guٰUGq+ߓh$ٰO`M^$[[|߳Xڊ0 cYDvɫkH* #,omŷ <ߏC.6@qNӱ%^ ً p9(F"0k`^V#L_V ,ؒXKϏD+\2MV+\]Lp @xv>,ӆ풰ֱOy{G݈W _Q:U}!z.{u2$>Zj;\w{N.@BZ(3=_-n| -?v=@~,zy{^׮؊3mxNMʬl/m[{'!{,UlK03.w縲ˆFlwo^ϲ(8 _<,6c[dNklņ>3mKQ)r'3OH4Ajt;=ƶ Pym`fSw(MFa7m cb۱'VxeG3,s4S|,K=z1mw j|Ѝ=UB-t6e%ֶQ.` b uJR蘘U@vd}ʰ-M!ќz]vq ۀb->\*ߓP,Oyرi;&ycO+l,K{$BKDl6iԨt!DID-A;Y<[ӆUc~6xS#hNi@͌(Șft*F7?⢆d{E6H=y3eal^ lv]؊q^ <`jԍn4c#wA3t7xazAr_.N6:~Dx>gJB@aބޏDl 6_l 5p)00fUWGë^F5O Wq 40K^MؒwƜK!ݘqaC/7'7=74ks EK1+BIZ05E5|Hm|"I&G#/u,|,M@dmTχ.1S d-^Y}ծN8寯euVAi^Q}{C\ WWĵy`n0딒/z`CۗLAl7=v}ӟ(tC/? On4Xl$LF~$ ݓnda\.G[7&%dɹ[}ip jaتx q{u\: FBǭ/y¸ MS?*>*Ny-\v$ب t\6 f\\Q7I𪷎Nl M]lwiCEQI)ldE6*>͂qWPG%>zw6öeMptxnd)lqlDƅ}:.3;T?PJr'6oðstZ&[=Qe,ت]&8Az\ A?, ]%]Z؈ {t\> fX-6~]xQ*L͌NK NNB=U,4%.f`A7ܑw0|Gh56F&-vyƛ$XJl!Ů$WSj2ngd:.$]%&ݑA-l #l6~3`40Ok#?rA NѵЕfFn:O<ͨlۡV`:u\"3w!op'R6F0f 9Qw>66ي Kmp2$ E/w$TGYKHc*I9*EWA6tI49.QxH0YN??~xÈ#`+;6GU8zN¡LG} .7z ذu|ny._7'܋h#l.4-1f Z.TǶQlMC,"_25[.XjBa@H ' z=:G{a,6>b[x"VȘzv`ivs]sa0Ym6KQf}XHf>-H`2͝mhܯ.τ-)φH'Rwnvր1jns߾.z5ckNZ#7ۭ7xl6% z/7w?o؄Poq|a}bñyt7 %$|1drܜ#<|m-nͩCI~|C9`^[z(cr̶HB{#u} ?uFNMpZJJkpwfR\)v= ۵g6JQؒ vtwjă=[vt=90C;_͜ؼaa+74 ˱RFzN?O] L~"-G`hNMbi˟Kb f rI54Yb#3͡Cͩ, mǟk!lcWwCnO4[1 mKpB A6_[ȼE6ylXן>6 l0|vߊd[ד^ _& 5V&"`ݽɀut@[׻&:*ᮣ5S6_K B4֡Ok:t%D7W MMRjLԍb#?ULc:_ZT4h'CC~B %_o_b P+V' 2pfٹ]h tkAk.DG]%c[Ɣ` So'*\4hC5WێAWjf [S8fZ^ Btԡ y÷`+WZ%SI%vLcM٪\8fBt5?~rlu5W;ݤ77<͓^jp}S  Fc&DWB4VסxՄn y|xblx!`&S%D8 1]w 5W }+B `',1-Y;ݤAF] MWa |1lŤ ۝&чĨv/i aM)lc 7ֵQf6AO]^aD!lW0̓Mv.l[I]FF*lm8H^?P b67x9 64Ja[[5oX[nO>lWgN_|A6cZÖaG^My/;ˍq{%kc?6>2ɛxcg}2=Ç_+ l/_||K@ {RFxҽYl}bW{pC |D*l4 Ux m']#YGCgDlSm(%.p?q'aAeD+la_a[g*-yN;Vܝ\|*)l*)l*#l$ۖ ]$uq7xB=l$ЛCWx]`M'{BElسiصSlx7G,3FU`N®9nlhgxPj¶<6t4Y5@B 9& Eò@km*A٪ CmsX. z& Fi2 VWؖF{-l4,ul3VWVvp0-\ev o~m5hX6jsA~mBsxk~faH6he3Qw)nEvrI}uG0PLTE1^ tRNSSOxbKGDޕz cmPPJCmp0712Om IDATxͮ&`#][y,"v6nJy8@Ι5qlmbg(`3'd)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@BJ QAk{QH|W8@ P g<16s :MRQ{|?e; Vc&+LotHV`=m+ħ)ށ8w}v> ךzP7iڲ+%ne$IНB ]*( Є{sg f[19E!̷[u A @ @ @ *ܦp-LX!uoJ<))))))))z= gvwCRl7[ʸ;M )<tF3crzeS:63\n .T\8M ϦaR`WpwPq&Y]̝ºG0HĪ7 j 3_[\&D炰-#.u v} >y0]??DV}1 ?`0{Z6D b˽~f_1W݌AS%=/ R uR==5Y_@GMcL'*⊓ WX>(s4| yE^p\/)zuuvⲵW| \_udZzGAl=%7.sU-x"A g]kb*}_:lw*qkOQ,cM)OQ&R R R 癧|9wLzRhXa" whU!*|hqWS2 pļ&M+AkJ*d(H{N<Os~2P ~d9i] Rq}9Vv@#'g7{ef{Cz2gV2L!B^2ޖ)I[f5iJ4$AP!oT,%N_ƍS7>qKT% Kp%;}w+r@#("EPJ'{|M*)NN 'W!g]E5fEX e BƪV(O[d2NծBd(P0ZR~ȗ+d)aI"咡grRHP,O0KLZG Y[THκ* 3j~ԭKL2RS)q$Cij>6-u*ɥ($jR( +8tyW5UmV!-)#('[mCK 70>V0滶?|9nXJ\>\1 8`q!:XI!Q!3+T0&o@?bS;kT#Z!5o7&êB!`VAUbS(Xĭ KAm]j.D3%Ы DT|L"2)GꭏZW!S2ғ! ҅U%*D14rɂ^g s6bWȅYZXl.X"3'uao(/0&n|OS3Ծ!Uglxx"KP3$V$0xy) A,ĥ+Ғ4C +HT3T`?] ^<@+BD`f@8 +ë+HW 5PrlʳI$s +|oe~2V| ?8wQ*RAySźK@OX:)</'j\w0¾OpݕeIQgR_1u(p+0Bj=|Ϛ̧plqS߰u(l+hu l#tg =bL4\QCd#VPW$s߾G&.tҶGS=%\v/)#N)Q{eq9 er=|v. _#fuۮm -r(`-kRbN]Q֢6pgzgSC__>v۾U`>GQտ}~.Sl|ʢ'm`K(:VنWYG*|F/LqzʇC"ޭ]ū,g(zvմm*8R=q䂫|,i{UU>xWh:rck2k/?SsPOBWYAs4y|Vzך>ϲc␾6㔕D67}񁣊Yv+e6, (s\%,r vZ.Q؞eg|mޢ߾aUpuU9ZG| leْCU>BgS, a,=T:姜SVQ`ȼM,P`ƦZ:Wy:T76U_w)Rf\*]} ?ZO.V?X㼫tW>3NrPx(TSٔY^uI^f !b` .@:0 @:0 @:00 @:0 @:0 x'F]Ed:7 "4tا7#xސtaY1_|t|:@:á#YCU-;a"QT<^U]j@TӺ Sn:agQn@L̋nE/3(d*tGg9hƎGM:K1Y^cpWzń%de*_6m )tT_FvtKXĔ=K0)Q:*VWBQ,m2fR}:҈Is+0#?h؝XJHӄ-;cl1Q` ȁb)$54gA2KN#]V1ekՙo6@aKUcj|t(K Y H'\FBnѴ9io=Fa pȦE|e䓯U* 4XB:kbF:ӎ/8b[Aي,(MeH#Vve1hV 6cƎc`W;*D窨WO|O[_ 2:d1!>-* _d!DV#Ml$͢H]:@RXrbK~b|QE$ K[| K1#~2{Nu1H|BDF]Q#3M† M >ga;cHMi |{vapHRXWN윱#"aYH#YPi[Ϥ3Zy ֡Stxzm=Cs.Qͺ۴r:Ob 1q-f 4l3btJGK.?b맅ȋ,+wz]VH+ђ{$j!f㑐bI\-ס%HJ<%yIc1A oi Ht4Z?> 3Tb' !/DGS.?EtP>#؟,t DVbǎ[}yoЮ]b Qx):jDVbR1t ؟,t DJ.k.w˒J]x:̏[XԎA:>$:ކd;2aA - !% Ɓ֗t a$JitEtH`(T:!aX瀇0}P:OtJǽ"yuڀC wΰCtI<3ݎ>e@:̤c= B:^x{l@Ht$y!D:G3L<#֏r @Uu=D:*򠎘#ӱPt=HtZXtH'GCtH9>*E: f 0qg6&AGƟ|W77 :~sXEtEîɘC蕷(tGg{|ܵXqG3 E&0C2yx8xK|q0|+ bܟ)TD _UnN!twGՆt\D:hHp0ObP X>m%3abayIq0dĬka3h2W!h2G=a p0] Bx޵0Gm@h;I :C9t} cX/9yCG/d 7p :|-LfбtDosr tC;@i~'[S M-~w;e%rs:G* x(UXj:N=q6ЭlXд$'f 2acϳؔ% :2Qk\Tq/UZ`Etd'^An\ T+4^c37 -QN[RQ Um ZП6ZHf,{l†l@Gm7H o*2t넑q:~ϒ$1Ew'ر^Ur|ճؖ*耰!ԍ fRIN,"VN>t!ñ~_g _Y6YZH/Olr@:`ttݸNU!ZakOB3aqJ. {;t#81dCB֫=N-uPYE-#{1xn\ڳ?C3{z!c94w|֙<0d%e6T-/H#hY<c+βl\ъge,s+:NG SH\/tLtL<,QLo!*TqKSƒY;y SXQ-?" :DNqoT&% !Ӯ cG쐎A:㘦.D5#1}zEچIӔ%@"IFc*i:rI@G&rnCUj*VqY~ֻ8o)+[ a{g-Hp ]:XIwpZ7(ɠ(HHG|j(6< Zb:Y;U Xb"\|1qep'[;kɗDs۸T--O/c T,+wz]V1LZdt㑐XxC-+XwBNyQ?X>tmx|h7[Ut+󈓋ԋ(H%|2:2-@5&p4f#KA7, 6X 1r%}zaj߸KE{М /[ҭH/'}H1:xE:P eYď嫢#()D/6G!!%{\=h.$-ֺ1O!g!hvO}<lRg "6(kᰣƎ^{ʎ\򥢽E-݊1.bO}{a:QiO~=vUёY%[Pp0(CwIJ.PITWӡZTH/';9#vOD}GJ Օ-Ah[XUAA\DKr//}Fk|E YMhQI̟%3B64c+TI#O8t ST+*B(OQp ,K]vհ4$Zxs _y_,S>U/&cwW@V2 jWCT> SܒŢmu98CU2 f,$iһxNF:!'*y<ǛҸ=~4HqK0/aeMev.Mc u{C80s\j?6HL3AHH%tDnI"7o@:͘#!BZ+z!LiQ:.4qȯh&cxahYCwshkE;-S!*obA:ݎ!!ѴWZQCZ mC:#cݒheC|5QV EtkH:0KWpsHGrs4͡6P8jIT'!2DjI38r^P̕k+ 1鉐搎* vs,zΉ9aiV'!2D2qJ8䞥@  k+ 1Bz"C9#B9> 气BCIGҪN2H~bdӱ(UP"s=:Ctts4}ͱ iCthwH:E2 ѡm()&L#ImXQ:y:< !ne9Dtte>g-I~X$fIxekH6y] rshkv!;SrHG0%(&8Exq V <Q9Z> ֊66!t}3JEKڃ2b⠼K,I"m A:J@:^@:Htt!]!/Ez@DM!۬C=[m eር۬:%unF:^nN6Y#/B@jɕBވBה:Y#A|@w6AF׾x:BmNq\Qr_6ke莥"Q!۬f*@%Bu^k}JC:^+bBt|tLT萎it Hҁt HǣE14OLott I_x鸄2 @:0 @:0 @:0 @:0w?S1wIENDB`nK ZhGS?V?PNG  IHDRE4PLTEq,tRNSSbKGDhQ cmPPJCmp0712Om IDATx0 д\ޠ w[(8ꪛ}DpDM&jp \m6WMзz+g^E '9& 6)l:^ lk OĮ'_|W]>oy#j%p{+,mknN>J=ƾd*o~r&ck]^Cx j؀vWM&jp \m6WM&jp \mbc*v.˲s^bY-\mMp6&[d WlF"K՝+^x46_銧8ڻ9v =\ x1WU*\eOʰFoLd0gy91./p]D\_}&zQuēƴjtL[-|L0O 'GeNuDyfїCeqy볨O'5h+Dۧjy+u)\>Ձ>>p}e= _j:aHQ s=f+dx }cqtU {6&[d Wlj-\m}WuWp+\5HuUڇ-׹Uwcym.p+dN!Gxzc<#\7dP,5gZGp]&̋L[L6}!.r \qt[owl՟pk -|5PqMeWz1G[t~l-gXt1r#ƚgp GNxĀM&jp#~{`.\up+\ g,9p믻nYGs, Wt ˫{t!=ՅZ[P wjW|uh:w%upyM%ow>k: %Wy@cYP&縌v]崶 cĪǔ/wՏr34喿G\+^roQfɵ|6t7޺=ᣮţ$ulu-KSxw%?wk\o/RݠKt:w7Im)^!SG "3uNN$kWiFۘWSXGfTܰrs{ױW@KxrՇ>Q\S5]:낿y^ט&-韺Vu5EW_M Rb['yX~q&W.: DD.L%E%oHßl\^;G+X^_Xp ׆y9]dsӭsunQu({WX:6BDpZW9tn 5u2ʍx\9ꌮ kZu:͹1Խ<'QgsMr+7fL|.iVn%Uӹ^! W]J %4S"v2Ձ*`{8tu}/% TEayi\Yz{ קCW Wp]:Wp\`X%ں1jp \m6qG#}-uz!\7vчp?}u> Ϻ`\;q"יx-\[>$pm:pz׹>oT^}}up}z[Jurcsr*|Z\~1(CVM`غr{hmkdՃorGesfjYgvAY't\cv,XߒRh@/p\6W8m|՛mjp+\ W1 \_p+\u:2\0'\ Wuq~$N:nӺwȪ[E6tRu5vW.|U+\|WnD(ydnR&WRѧe \\դRrE}j5Jr_i<t?@ABCDHJKLMN 21   () 5   21 () ()  ()       Ob$1*,~h Tb$-S~` b$Olm\^L %b$ZhGS?V?S ,F 0AA@8F=G>wӇ ʚ;&4r8ʚ;g4EdEdD0ppp@  <4ddddp[0<4!d!dp[080___PPT10 ?  %) ProgrammaGDatabase relazionali Architettura Oracle SQL PL/SQL Introduzione a EMC Testi di riferimento@Kevin Loney, George Koch  Oracle 9i. La Guida Completa Ed. Mc Graw-Hill Abbey, Corey, Abramson  Guida a Oracle 9i. I Fondamenti di Oracle 9i Ed. Mc Graw-Hillt4 7 Parte 1Database relazionaliOracleArchitettura indipendente dal sistema Database Relazionale a Oggetti Sistema di Gestione di Database Relazionale (RDBMS), funzioni principali: Inserire dati Reperire dati Mantenere dati Struttura a tabelle Interrogazioni SQL BP+P(P+(TabellaCitta Temperatura Umidita Condizione ATENE 36 89 SOLE CHICAGO 19 88 PIOGGIA LIMA 7 79 PIOGGIA MANCHESTER 19 98 NEBBIA PARIGI 27 62 NUVOLOSO SPARTA 23 63 NUVOLOSO SYDNEY -5 12 NEVE P$ Query SQLLinguaggio per interagire con il database Esempio: select Citta from CLIMA where Umidita = 89; La sintassi SQL semplice e chiara anche per chi non un programmatore. v3,K3 Kb3R Relazioni8Significato di  Relazionale : due o pi tabelle sono relazionate se hanno un tipo di dato in comune. Esempio: Tabella CLIMA Tabella DISLOCAZIONE geografica8o. T.?=Tabelle di esempioNomi delle colonne dati{Utilizzo di codici a struttura predefinita, oppure nomi in lingua corrente. Codice: Esigenza risparmio spazio memoria (ora non pi) Per la categorizzazione di molti articoli non sufficiente la lingua corrente Velocit inserimento (ma lentezza ad addestrare operatori) Abbreviazioni: Riduzione errori inserimento Applicazioni comprensibili Necessita di normalizzazione dei dati TT_T_ NormalizzazioneSeparazione degli elementi dei dati (nomi, indirizzi, ecc& ) in gruppi di affinit Definizione della relazione  normale tra essi ( corretta ) 6U  BibliotecaTabella di partenza: BIBLIOTECA Titolo Editore Autore 1 Autore 2 Autore 3 Categoria 1 Categoria 2 Categoria 3 Classificazione DescrizioneClassificazioneFZ ZyZ y~HD ProblematicheJNumero di autori limitato Numero di categorie limitato Un aggiornamento dei dettagli delle categorie o dell autore porta a un riaggiornamento generale della tabella ~ 1 Forma NormaleSeparazione dei dati in tabelle separate, raggruppando i dati per tipo Esempio: BIBLIOTECA AUTORE AUTORE-BIBLIOTECA Individuazione chiave primaria (etichetta o ID) 6Q%1Q%1@? Biblioteca1 Forma Normale   2 Forma NormaleSelezione dati dipendenti solo da una parte della chiave Spostamento in nuova tabella dei dati indipendenti Esempio: DescrizioneClassificazione non dipende da Titolo, ma da Classificazione&wHwHw.B@ Biblioteca   3 Forma NormaleSpostare tutti gli elementi delle tabelle che non dipendono unicamente dalla chiave primaria Esempio: Categoria Una volta impostati i dati in 3 Forma Normale, sono automaticamente anche in 1 e 26g Vg V Ricerca tra i datiAUTORE NomeAutore Commenti --------------------- ------------------------------------------- DIETRICH BONHOEFFER TEOLOGO TEDESCO, UCCISO IN CAMPO DI CONCENTRAMENTO ROBERT BRETALL STUDIOSO DI KIERKEGAARD ALEXANDRA DAY AUTRICE DI LIBRI ILLUSTRATI PER BAMBINI STEPHEN JAY GOULD GIORNALISTA SCIENTIFICO, PROFESSORE AD HARVARD SOREN KIERKEGAARD FILOSOFO E TEOLOGO DANESE HARPER LEE ROMANZIERE AMERICANO, HA PUBBLICATO UN SOLO ROMANZO LUCY MAUD MONTGOMERY SCRITTRICE CANADESE JOHN ALLEN PAULOS PROFESSORE DI MATEMATICA J. RODALE ESPERTO DI GIARDINAGGIO CLASSIFICAZIONE Classificazione DescrizioneClassificazione --------------- -------------------------- 1 EVASIONE 2 INFORMAZIONI DI BASE 3 CONSIGLIATO 4 VIVAMENTE CONSIGLIATO 5 LETTURA INDISPENSABILE FPP 2   t  +rCARicerca tra i datitCATEGORIA NomeCategoria CategoriaPadre SottoCategoria ------------- -------------- -------------- CONSADULTI ADULTI CONSULTAZIONE NARRADULTI ADULTI NARRATIVA SAGGIADULTI ADULTI SAGGI ILLUSRAGAZZI RAGAZZI ILLUSTRATI NARRRAGAZZI RAGAZZI NARRATIVA SAGGIRAGAZZI RAGAZZI SAGGI AUTORE_BIBLIOTECA Titolo NomeAutore ------------------------------ --------------------- TO KILL A MOCKINGBIRD HARPER LEE WONDERFUL LIFE STEPHEN JAY GOULD INNUMERACY JOHN ALLEN PAULOS KIERKEGAARD ANTHOLOGY ROBERT BRETALL KIERKEGAARD ANTHOLOGY SOREN KIERKEGAARD ANNE OF GREEN GABLES LUCY MAUD MONTGOMERY GOOD DOG, CARL ALEXANDRA DAY LETTERS AND PAPERS FROM& DIETRICH BONHOEFFER :P    DBRicerca tra i dati BIBLIOTECA Titolo Editore NomeCategoria Classificazione ------------------------------ --------------------- ------------- ------ TO KILL A MOCKINGBIRD HARPERCOLLINS NARRADULTI 5 WONDERFUL LIFE W.W.NORTON & CO. SAGGIADULTI 5 INNUMERACY VINTAGE BOOKS SAGGIADULTI 4 KIERKEGAARD ANTHOLOGY PRINCETON UNIV PR CONSADULTI 3 ANNE OF GREEN GABLES GRAMMERCY NARRRAGAZZI 3 GOOD DOG, CARL LITTLE SIMON ILLUSRAGAZZI 1 LETTERS AND PAPERS& SCRIBNER SAGGIADULTI 4 <PP !  G  NormalizzazioneFa parte del processo di analisi, non di progettazione Le tabelle normalizzate non rappresentano il  progetto del database  Assegnare i nomiScegliere nomi per tabelle e colonne No alle abbreviazioni incongruenti o arbitrarie Scopo e significato di una tabella devono risultare evidenti Attenzione all uso del plurale Attenzione agli underscore Case-insensitive nei nomi di tabella e colonna &%%!Codici4Nomi abbreviati e codificati: BIBLIOTECA A_L AUT CATEGORIE ------------- -------- ------------ -------------- titolo titolo autn cat ed autn comm cat_p cat cat_s clas Difficile lettura Necessita di addestramento operatori Difficile anche per il programmatore riprenderla dopo molto tempoDPPyPy+   {ECRisultato Query SQLPselect Titolo, NomeAutore from AUTORE_BIBLIOTECA; Titolo NomeAutore ------------------------------ --------------------- TO KILL A MOCKINGBIRD HARPER LEE WONDERFUL LIFE STEPHEN JAY GOULD INNUMERACY JOHN ALLEN PAULOS KIERKEGAARD ANTHOLOGY ROBERT BRETALL KIERKEGAARD ANTHOLOGY SOREN KIERKEGAARD ANNE OF GREEN GABLES LUCY MAUD MONTGOMERY GOOD DOG, CARL ALEXANDRA DAY LETTERS AND PAPERS& DIETRICH BONHOEFFER L2ww   Comprensione dei compitivQuali compiti deve agevolare l applicazione? Quali dati servono? Quali dati devono essere elaborati? Quali dati devono essere restituiti? Documentazione da produrre: dei compiti dei dati 6Chiavi intelligentitDette anche  chiavi sovraccariche Esempio di descrizione di una chiave sovraccarica:  L12348I: Il primo carattere rappresenta il codice della regione. I successivi quattro caratteri rappresentano il numero del catalogo. La cifra finale il codice del costo centrale, a meno che questo non sia una parte importata, nel qual caso una  I viene accodata al numero, o a meno che si tratti di un elemento voluminoso, per esempio viti, in cui vengono utilizzate solo tre cifre per il numero del catalogo e il codice della regione HD Scomporre in chiavi primarie o esterneXVZZ'ZV' RiepilogoFar partecipare gli utenti alla progettazione: nomi, dati, chiavi. Utilizzare nomi comprensibili e facili da memorizzare, in lingua corrente. Non usare codici e abbreviazioni. Utilizzare chiavi significative. Scomporre le chiavi sovraccariche. Analisi e progettazione vanno svolte in funzione sia dei dati sia dei compiti. Spostare le operazioni da svolgere dagli utenti al sistema. Dedicare tempo e attenzione ad analisi, progettazione, test e tuning. P96Parte 2Architettura Oracle:7 Panoramica&Oracle pu essere inserito in architetture a diversi livelli: 2 livelli: Client  Server 3 livelli: Client  Application Server  Database Server v>  .>  . m  Server OracleUn Server Oracle costituito da tre componenti: Le strutture di memoria I processi I file fisici In genere con il termine database si fa riferimento esclusivamente ai file fisici, mentre processi e strutture di memoria costituiscono l istanza. R1414t InstallazioneSupponiamo di aver installato il software in una directory chiamata c:\oracle e di aver creato un database chiamato ORCL. La directory c:\oracle viene chiamata ORACLE_HOME, e contiene: c:\oracle\admin\ORCL\pfile c:\oracle\database c:\oracle\oradata\ORCL Le prime due contengono il file di inizializzazione, ad esempio init.ora o spfileORCL.ora, cio il file necessario per informare il sistema della quantit di RAM da allocare ,e quali processi lanciare. Tutte queste informazioni sono memorizzate nel file sotto forma di parametri cui viene assegnato un valore. La directory c:\oracle\oradata\ORCL conterr invece i files che costituiscono il database ORCL. XPEPPD lEtF< &IstanzaPer utilizzare il database occorre allocare una struttura che possa interagire con essi. Tale struttura prende il nome di Istanza o Server, ed costituita da strutture di memoria e processi che lavorano con essa. 6zMStrutture di memoriaIl sistema legge il file di inizializzazione (parameter file) e richiede al sistema operativo una certa quantit di RAM. All interno della RAM vengono create due tipi di strutture di memoria: La SGA. La PGA. 8.. SGASystem Global Area E costituita da diverse aree di memoria: Redo Log Buffer Cache Database Buffer Cache Shared Pool Large Pool Java Pool Tutti i singoli componenti possono essere dimensionati in maniera opportuna usando i parametri presenti nel file di inizializzazione, ad esempio nell'init.ora. La dimensione totale della SGA data dalla somma delle dimensioni dei singoli componenti. d>PRPP*R^>l ]SchemaSGA: RL BC4RL BC (Redo Log Buffer Cache) E quella parte della memoria in cui vengono registrati tutti i comandi di modifica che vengono lanciati sul database. Lo scopo principale di garantire la consistenza del database, permettendo al sistema di ripristinare i dati in seguito a crash improvvisi. Se si salva su file tutti i comandi che sono transitati in quest area, si pu ricreare l intero Db su altre macchine. :P|P|DB BC2DB BC (Data Base Buffer Cache) Quest area viene utilizzata per memorizzare tutti i dati elaborati dal sistema. Se viene lanciata una query: il sistema accede ai file di pertinenza prende i dati li porta nella DB BC li elabora li restituisce all utente che ne ha fatto richiesta. HZnZZnShared Pool Area >Shared Pool Area un area condivisa, all interno della quale possiamo distinguere tre sotto aree: Data Dictionary (DD) Library Cache Strutture di controllo R<R  6b !Shared Pool Area 0Il Data Dictionary il contenitore delle informazioni di sistema: Utenti, le tabelle, le viste, i file, i permessi. Quando viene lanciata una query il sistema controlla se gli oggetti indicati nella query esistono, se l utente ha i permessi per eseguire quell operazione, ecc& 6CC, Shared Pool Area La Library Cache invece costituita dalla: Shared Sql Area Pl/Sql procedure e package Locks ed altre strutture La Shared Sql Area e un area particolare che contiene le query lanciate sul db, ed il loro codice risultante (non il risultato), il sistema esegue i seguenti passi: Controllo sintassi query SQL Controllo esistenza oggetti Controllo privilegi Controllo indici per velocizzare la query Elaborazione risultato e generazione codice risultante. t,PEPPPP,E"IShared Pool Area Large Pool Area di memoria opzionale. Puo essere configurata per fornire memoria aggiuntiva per alcune particolari operazioni sul database, come il backup od il restore. Se quest area non configurata, viene utilizzata la database buffer cache, cosa che potrebbe provocare contese con i dati degli utenti. Java Pool Area opzionale, usata per eseguire al suo interno codice java h Z,Z Z@Z , @6#xPGAPGA Program Global Area Contiene informazioni su ogni singolo processo Non condivisa come la SGA, nel senso che ogni singolo processo di Oracle ha la sua area privata nella quale vengono memorizzate i valori delle variabili, informazioni sulle connessioni, ecc& E costituita da 3 aree: stack space informazioni sulla sessione area di ordinamento `P P=PP =  ,9ProcessiI processi sono componenti che mettono in relazione tra di loro i vari elementi del server. Ad esempio si occupano di caricare in memoria i dati presenti sui files, elaborano le istruzioni inviate dagli utenti, salvano su file le modifiche ai dati. Ogni database ha un certo numero di processi sempre attivi, mentre altri possono essere attivati solo in particolari configurazioni. Alcuni processi, quelli che hanno una  n nella loro sigla, possono essere lanciati pi volte. Ad esempio il DBWn. ,Z,IDBWn Database Writer$ Ogni volta che viene modificato un dato, esso viene dapprima modificato in memoria, e poi la modifica viene salvata su file dal DBWn. Il primo DBWn attivato il DBW0, e si pu attivarne altri 9 utilizzando il parametro DB_WRITER_PROCESSES presente nel file di inizializzazione. E necessario un hardware adeguato. Quando viene eseguita una modifica ad un dato, viene inizialmente fatta in memoria, in un buffer adeguato. I buffers che sono stati modificati e non ancora salvati su file vengono chiamati Dirty Buffers. Il DBWn scrive i Dirty Buffers sui DF (Data Files). La scrittura avviene in blocco, per ridurre le contese di accesso a disco, e la quantit di blocchi scritti in unica operazione di I/O dipende dal SO.  P I LGWR Log Writer Questo processo si occupa di scrivere sugli RLF (Redo Log Files), in maniera circolare, i buffers della Redo Log Buffer Cache. In pratica si occupa di registrare su file tutti i comandi di modifica che sono transitati nella rispettiva area di memoria. ,:CKPT Chekpoint  un evento che scarica tutti i dati modificati nella buffer cache sui dischi, ed esegue l'update dei CF (file di controllo del database) e dei DF (data files). Pi spesso si verifica il Checkpoint, minore sar il tempo necessario a fare il recovery.,SSMON System MonitorSi occupa di fare il recovery dell'istanza dopo crash, e controlla il Db all'avvio, appoggiandosi al contenuto dei RLF. Esegue la pulizia dei segmenti temporanei non pi usati. In fase di recovery se alcune transazioni vengono saltate, perch i file corrispondenti sono off-line, SMON esegue il recovery di tali transazioni quando i file tornano on-line. SMON saltuariamente si attiva per eseguire controlli, ma pu anche essere attivato da altri processi. P>cPMON Process Monitor 6Esegue la pulizia di tutte le risorse usate dai processi nel caso essi terminino in maniera anomala. Esegue il Reset sulla tabella delle transazioni attive, e rimuove il Process Id dalla lista dei processi attivi. Rilascia tutte le risorse bloccate dall'utente, e tutti i suoi locks. Si attiva periodicamente. 7Z7>a ARCn Archiver$Si occupa di eseguire copia dei RLF prima che vengano sovrascritti. Se ne possono avere fino a 10, da ARC0 fino ad ARC9. il LGWR che lancia nuovi ARCn se il loro numero insufficiente a gestire il carico di lavoro. DRECO Recoverer Viene usato per gestire le transazioni distribuite. Il suo scopo quindi gestire le transazioni "in-doubt", cio quelle che coinvolgono pi Db in contemporanea e che falliscono (problemi di rete o crash di server) prima di salvare le modifiche. bAltri processiLCKn (Lock) Sono usati in configurazione RAC, quando pi istanze montano lo stesso Db. QMNn (Queue Monitor) Esegue monitoraggio delle code messaggi.I messaggi vengono salvati in code, e permettono ai server di processarli in "differita". Dnnn (Dispatcher) Si hanno in configurazione Shared Server, per gestire pi utenti usando un numero limitato di processi server. Snnn (Shared Server) Hanno stesse identiche funzionalita' dei processi server dedicati.dP LpDM) Y N Tipi di processiProcesso Utente Programma applicativo (o Tool Oracle come sql*plus), che genera, quando viene lanciato, un processo utente. Tale processo pu girare sul Server o su un qualunque Client. Processo Server Prende le richieste dal processo Client, ed interagisce con l'istanza per soddisfare la richiesta. Esso pertanto si occupa di: Eseguire il parsing e l'esecuzione dei comandi SQL. Accedere ai DF e portare i blocchi dati richiesti nella Buffer Cache Restituire i dati al processo utente che ne ha fatto richiesta ZZZZZ  >*  File FisiciI file fisici possono essere divisi in tre categorie principali: DF: DATA FILES Fisicamente contengono i dati del DB. Sono organizzati logicamente in Tablespaces. RLF: REDO LOG FILES Gli RLF sono invece  la parte fisica della Redo Log Buffer Cache, e memorizzano quindi tutti i comandi di modifica lanciati sul Db. Lo scopo quello di limitare od eliminare del tutto la perdita di dati in caso di crash o failure del sistema. CF: CONTROL FILES Contiene informazioni sul Db come il nome, su tutti i file che lo costituiscono, sulla loro dimensione e posizione, e su alcuni eventi particolari del Db stesso. APPSPPPPPAS  , Schema\La figura mostra la relazione tra blocchi, extent, segment, datafile, tablespace e database:]]>+ TablespaceSono dei contenitori logici, riconosciuti solo da Oracle e non dal sistema operativo, fisicamente formati da uno o pi DF. Ogni Db Oracle ha almeno un tablespace: SYSTEM, il quale fisicamente costituito da uno o pi DF. Quando un utente di crea degli oggetti deve specificare su quale tablespace devono essere memorizzati. L oggetto sar memorizzato in uno dei file che costituiscono quel tablespace. Se lo spazio all interno del tablespace finisce, si pu aggiungere un altro file al tablespace, oppure si pu aumentare la dimensione di uno dei file esistenti. Il vantaggio che per l utente queste modifiche sono trasparenti: l utente sa solamente che i suoi dati sono memorizzati in un dato tablespace, e non su quale file specifico risiedono.,PELa creazione del Database Costruzione del PFILE (parameter file). Il file contiene una serie di parametri necessari per attivare l istanza (SGA + processi). Dopo aver avviato l istanza, si crea il database mediante il comando  CREATE DATABASE . Infine si configura e personalizza il sistema. *(ZZ( PFileContiene al suo interno una serie di parametri necessari per attivare e configurare l istanza. l istanza che permette di accedere ad un database e lavorare con esso. I parametri di inizializzazione sono generalmente distinti in espliciti ed impliciti: espliciti sono quelli presenti nel parameter file. Impliciti sono quelli non esplicitamente valorizzati, che assumeranno un valore di default. .ZZ" ePFileParametri principali: CONTROL_FILES indica la path completa dei CF utilizzati dal database. Il control file unico, ma si possono avere dei mirror. Esempio: control_files=("c:\oracle\oradata\ORCL\control01.ctl ) DB_BLOCK_SIZE indica la dimensione del blocco Oracle. Non pu pi essere modificato dopo la creazione del database. Default a 4 Kb, compreso tra 2 Kb e 32 Kb. BZ_ZZ_t  [PFileDB_NAME indica il nome del Db, che pu essere lungo fino ad 8 caratteri, di cui il primo deve essere alfabetico, e pu contenere solamente i caratteri speciali : #, _ , e $. Il nome del database potrebbe essere cambiato dopo la sua creazione, ma si deve ricreare il CF. LOG_BUFFER indica la dimensione in Bytes della Redo log Buffer Cache. Il parametro non dinamico. SHARED_POOL_SIZE indica la dimensione, in bytes, della Shared Pool. Il default 16 Mb, ed il parametro dinamico.ZZ  e7PFile'LARGE_POOL_SIZE indica la dimensione, in bytes, della Large Pool. Il default 0, ed il parametro dinamico. JAVA_POOL_SIZE indica la dimensione, in bytes, della Java Pool. Il default 20.000 Kb. Se non si usa Java si pu impostare 0. SGA_MAX_SIZE indica la dimensione massima che pu avere la SGA. Imposta il limite massimo che Oracle pu usare per evitare lo swap. Si consiglia di impostare un valore inferiore, rispetto alla ram fisicamente installata sul server, di almeno 300 Mb, a seconda del sistema operativo e delle applicazioni installate..-PP-P)['dPFilePROCESSES indica il numero massimo di processi, inclusi quelli in background, che possono connettersi all istanza. BACKGROUND_DUMP_DEST indica la directory di Dump dei processi in caso di crash. Nella directory viene anche salvato il file Alert.log. CORE_DUMP_DEST indica la directory di Dump del Core. Tale parametro non viene usato in Windows. USER_DUMP_DEST indica directory di Dump dei processi degli utenti. REMOTE_LOGIN_PASSWORDFILE indica il metodo di autenticazione.PPL 'YZPFileCOMPATIBLE indica la release di compatibilit. Utile in caso di migrazione da un vecchio database, e si vogliono disattivare per problemi di compatibilit alcune funzionalit. UNDO_MANAGEMENT indica se la gestione dei Segmenti di Rollback deve essere effettuata in modalit automatica. SORT_AREA_SIZE indica la dimensione dell area di memoria da utilizzare per gli ordinamenti temporanei (Temporary sorts). In generale pi grande questo valore e pi veloci sono le operazioni di sort o join. B/ZZ?Z/?t' M (Variabili d ambienteOltre ai parametri indicati nel PFILE si devono considerare le variabili d ambiente del sistema operativo, soprattutto in ambito Unix. Tali variabili permettono di individuare correttamente il software oracle necessario al corretto funzionamento. Variabili principali: ORACLE_BASE La directory alla base dell installazione. Tutte le versioni di Oracle presenti su una macchina devono essere installate sotto questa directory. ORACLE_HOME indica la directory contenente il software, ed relativa alla oracle_base. ORACLE_SID indica il nome dell istanza. PATH indica la directory contente gli eseguibili, in genere $ORACLE_HOME/bin . PkP kt=  @  gCreazione del DBNCreazione del file di autenticazione per utenze amministrative. Utilizzo di sql*plus e connessione come utente SYS. Attivazione dell istanza (startup) Create database ,L:Data Dictionary ( l insieme delle tabelle e viste contenenti informazioni sui metadata del Db, come gli utenti, le tabelle, i privilegi, ecc& Le informazioni in esso contenute sono vitali per il corretto funzionamento del database. Tuttavia le tabelle contengono informazioni codificate e di non semplice lettura, mentre le viste decodificano tali informazioni rendendole disponibili agli utenti abilitati. Dopo la creazione del database importante creare le viste, al fine di poter interrogare il sistema chiedendo ad esempio quanti e quali sono i tablespaces. Le viste vengono create dagli script lanciati dopo creazione del Db, che si trovano in $ORACLE_HOME/rdbms/admin Pb>3 fViste di sistemaLe viste sono query memorizzate nel database. Gli script permettono di creare le cosiddette  viste di sistema , molto utili per ricavare informazioni sul database, in quanto le tabelle interne, comunque accessibili dai SYSDBA, memorizzano i dati in un formato spesso numerico e di difficile interpretazione. Le viste di sistema sono classificate in base al prefisso: USER_ Contengono informazioni sugli oggetti di propriet dell utente che lancia la query sulla vista. ALL_Contengono informazioni sugli oggetti sui quali l utente che lancia la query ha accesso o privilegi. DBA_ Contengono informazioni sugli oggetti di tutti gli utenti. Solo gli utenti privilegiati (aventi il ruolo SELECT_CATALOG_ROLE come SYSTEM o SYS) possono eseguire delle query sulle viste DBA_. Alcune di esse contengono informazioni sulle strutture del DB, come l elenco dei DF. .oPPoPoa[XViste di sistemadV$ Dynamic Performance Views, in quanto il loro contenuto strettamente legato alle performance e perch i dati su cui si appoggiano vengono aggiornati continuamente. GV$ Perr la quasi totalit delle V$, Oracle ha un corrispondente GV$. Sono Dynamic Performance Views Globali. La GV$ corrispondente ha una colonna in pi, INST_ID, che identifica il numero dell istanza. Osservazione: le viste USER_ ed ALL_ hanno le stesse informazioni, differiscono per la presenza o meno della colonna OWNER, mentre le viste DBA_ hanno in genere qualche informazione in pi. 3P3 (  '@h0VisteEsempi di vista con informazioni sulle tabelle: USER_TABLES USER_TAB_COLUMNS ALL_TABLES ALL_TAB_COLUMNS DBA_TABLES DBA_TAB_COLUMNS *0ZTZ0T>0   Esempi di vistePer ottenere un elenco di tutte le viste del Data Dictionary, si possono lanciare le query: SQL> select * from DICTIONARY; Se si vogliono informazioni sul contenuto delle singole colonne lanciare la query: SQL> select * from DICT_COLUMNS; meglio far precedere, per visualizzare meglio l output a video, da: SQL> set linesize 1500 SQL> COL TABLE_NAME FORMAT A25 SQL> COL COMMENTS FORMAT A40 .\P/P\/2 %f R *UtentiDurante la creazione del database vengono creati di default due utenti: SYS (default password: CHANGE_ON_INSTALL) SYSTEM (default password: MANAGER) SYS il proprietario di tutte le tabelle di sistema. SYSTEM un amministratore meno  potente di SYS, ma sufficiente per svolgere la maggior parte dei compiti tipici dell amministratore del database. BHPMPPHMRuoliiDue ruoli di default: SYSOPER e SYSDBA. SYSOPER STARTUP e SHUTDOWN ALTER DATABASE [ OPEN / MOUNT ] ALTER DATABASE BACKUP ALTER DATABASE ARCHIVELOG RECOVER DATABASE CREATE SPFILE RESTRICTED SESSION SYSDBA Tutti i privilegi inclusi in SYSOPER con ADMIN OPTION CREATE DATABASE ALTER DATABASE [ BEGIN / END ] BACKUP RECOVER DATABASE UNTIL (Time-based Recovery) 2PPPPP),S SPFileL SPFILE non altro che un file avente lo stesso contenuto del PFILE (in formato binario e quindi non pi editabile direttamente), ma aggiornato direttamente dal database. I parametri di inizializzazione possono essere statici o dinamici: Quelli statici sono cos definiti perch, affinch la modifica abbia effetto, necessario riavviare il database. Quelli dinamici possono essere modificati senza essere costretti a riavviare il database. Per modificare il valore di un parametro, si utilizza il comando: ALTER SYSTEM SET nome_parametro=nuovo_valore; Se ho un database avviato con PFILE e modifico un parametro dinamicamente con ALTER SYSTEM, devo ricordarmi di modificare il valore corrispondente nel PFILE, altrimenti al successivo riavvio del database, il sistema legger il PFILE, impostando il parametro al valore in esso indicato. VPPPSPFileSi pu creare (con privilegi SYSOPER o SYSDBA) utilizzando il comando: SQL> CREATE SPFILE='C:\ora_cle\database\SPFILEORCL.ORA FROM PFILE='C:\oracle\admin\ORCL\pfile\init.ora'; A questo punto, tutte le modifiche apportate con il comando: ALTER SYSTEM SET nome_parametro=nuovo_valore; verranno salvate in automatico nell SPFILE, e non andranno perdute in caso di riavvio del database. .ZZSPFileIl comando ha una clausola SCOPE che pu assumere tre valori: SPFILE: le modifiche apportate da ALTER SYSTEM verranno salvate solo nell'SPFILE. Affinch diventino attive occorre eseguire uno shutdown e startup. Questo l'unico mezzo per modificare i parametri statici. MEMORY: le modifiche all'istanza verranno subito attivate, ma non verranno salvate sul file. Pertanto dopo lo startup e shutdown queste modifiche verranno perse. Non si pu usare questa clausola con i parametri statici. BOTH: il valore di default della clausola SCOPE si sta utilizzando un SPFILE, le modifiche apportate da ALTER SYSTEM verranno subito applicate all'instanza e saranno anche salvate nello SPFILE. Non si pu usare questa clausola con i parametri statici. .>PP>bb Control FileIl Control File (CF) il file di controllo dell intero database. Il CF unico, ma possibile avere dei mirror, fino a un massimo di 8. Se si danneggiano tutti i CF, il database non sar pi funzionante, ed occorrer ricrearlo.jv Control FileNome DB Timestamp di creazione del DB DF: nome, path, stato (online/offline) RLF: nome, path Informazioni sullo stato archive Nome tablespaces LSN (Log Sequence number) corrente Info sul Checkpoint pi recente Inizio e fine degli Undo segments Informazioni di BackUp di RMAN La dimensione del CF legata al valore dei seguenti parametri: MAXLOGFILES MAXLOGMEMBERS MAXLOGHISTORY MAXDATAFILES MAXINSTANCES BTPGPPTG $  ? TablespaceIl Tablespace un contenitore logico, visibile solo da Oracle, costituito fisicamente da uno o pi files chiamati DATA-FILES (DF). Il Sistema Operativo vede solamente i Data Files, mentre Oracle gestisce sia i data files che il loro raggruppamento logico.Z>dF$$ TablespacemIl Tablespace pu essere visto come un sottoinsieme dell'intero database. Il database pi piccolo pu essere costituito da un solo tablespace, SYSTEM, che l'unico sempre presente in qualunque database Oracle in quanto il contenitore fisico del Data Dictionary (DD), che contiene di tutti gli oggetti del database necessari al funzionamento del DB: contiene la tabella degli utenti, con tutte le informazioni relative quali login e password, contiene la tabella con l'elenco di tutti i files del database la tabella con l'elenco di tutti gli oggetti del database la tabella con tutti i privilegi assegnati agli utenti.`PP`,  TablespacetGeneralmente un database Oracle costituito anche da altri tablespaces che permettono di suddividere fisicamente gli oggetti in esso memorizzati,ad esempio: un tablespace che contiene gli oggetti degli utenti (USERS) un tablespace che contiene gli indici (INDX) un tablespace che contiene gli oggetti temporanei (TEMP) un tablespace che contiene RollBack Segments (UNDO) .PP><   TablespaceA livello funzionale, la presenza di pi tablespace importante: Permette di suddividere il DB in pi unit, ognuna della quale contiene solo elementi tra loro correlati. Poich ogni tablespace fisicamente costituita da almeno un DF, c la possibilit di appoggiarsi fisicamente a files diversi, che si possono memorizzare su dischi differenti al fine di migliorare le prestazioni complessive del database. Per ogni utente si pu stabilire su quale tablespace potr creare oggetti, e quanto spazio massimo utilizzare, permettendo un controllo globale preciso delle quote. Tali impostazioni sono trasparenti per gli utenti..BZ1ZB1QVantaggi Vantaggi di avere pi tablespace : Separazione del DD dagli altri dati, e quindi riduzione delle contese di accesso a disco (se i DF che costituiscono i vari tablespaces sono su dischi diversi). Gestione delle quote per singolo utente. Gestione pi efficiente degli oggetti temporanei (ad esempio per le operazioni di Sort) che vengono trattati solo su uno specifico tablespace, in genere TEMP. Gestione pi efficiente dei Segmenti di Roll Back (tablespace UNDO), che sono i dati necessari a permettere l'utilizzo del comando "RollBack" Gestione pi efficiente delle applicazioni che usano lo stesso database: se infatti raggruppo le applicazioni usando un tablespace diverso per ognuna, in caso di manutenzione, una parte delle applicazioni potrebbero non funzionare (quelle che si appoggiano ai tablespaces in manutenzione o recovery) mentre le altre non risentono del disservizio. Si possono gestire le operazioni di Back Up e Recovery per singolo tablespace..$PP$ qX _Tablespace e DFkAl momento della creazione di un tablespace viene fisicamente allocato sul filesytem un DF, avente la dimensione specificata. Il DF sar inizialmente vuoto, ma verr strutturato in modo da ospitare i futuri oggetti che verranno creati in esso. Oracle ha due modalit per gestire lo spazio interno: Memorizzando le informazioni nel DD. All'interno del tablespace..+PAP+AK  TablespaceIn funzione della modalit scelta si suddividono i tablespaces in: DICTIONARY-MANAGED: Le informazioni necessarie per la gestione dello spazio sono memorizzate nel DD. Implica che ad ogni modifica dello stato di un blocco viene eseguito un update su una specifica tabella del DD. Ad ogni modifica dello stato di un blocco avviene la creazione di una informazione di UNDO, necessaria per un eventuale Rollback. LOCALLY-MANAGED: Le informazioni necessarie per la gestione dello spazio sono memorizzate nel tablespace, in genere nell'header di ogni singolo DF. Se un blocco cambia il suo stato, la modifica non genera informazioni di UNDO, in quanto non viene eseguito nessun update su tabelle del DD. Questo tipo di tablespace permette di avere prestazioni superiori.vDPePPPPDe  >3 S{Temp Tablespace AServe per permettere ad Oracle di memorizzare dati od oggetti temporaneamente, facendo una sorta di SWAP ogni qual volta la Ram a disposizione non sufficiente. L'utilizzo pi frequente avviene durante le operazioni di ordinamento (SORT). All'interno del tablespace viene creato un Segment particolare, chiamato SORT SEGMENT: Condiviso da tutti gli utenti del DB Costituito da un certo numero di extents (ogni transazione user un extent in maniera esclusiva). Allocato nel momento della prima operazione di sort. Non possibile creare esplicitamente oggetti al suo interno. .GPPGPkGAUndo Tablespace Questo tipo di tablespace viene utilizzato internamente per consentire l'operazione di ROLLBACK. Oracle memorizza temporaneamente nel tablespace i dati che vengono modificati, permettendo di annullare le transazioni terminate erroneamente od esplicitamente dagli utenti.ZAlter TablespaceDopo aver creato un tablespace, si possono modificarne alcune caratteristiche utilizzando il comando ALTER TABLESPACE, tra cui: aggiungere nuovi DF o TF (Temporary files). rinominare i files. modificare i parametri di storage dei tablespace dictionary-managed. modificare l'allocazione degli extents. modificare disponibilit del tablespace (ONLINE - OFFLINE). passare da READ-ONLY a READ-WRITE e viceversa. passare da PERMANENT a TEMPORARY e viceversa..ZIZIt !Parte 3SQLSQLNStructured Query Language Operazioni fondamentali: SELECT INSERT UPDATE DELETE&33$ 6SintassiQuery case insensitive: SeLeCt argoMENTO, sezione, PAGINA FROM gioRNAle; select Argomento, Sezione, Pagina from GIORNALE; Case sensitive solo nelle verifiche: Sezione =  f Sezione =  F Le due clausole precedenti sono differenti. b%Hb%H t  |TabelleCreazione di una tabella di esempio: create table GIORNALE ( Argomento VARCHAR2(15) not null, Sezione CHAR(1), Pagina NUMBER );  Not null impedisce l inserimento della riga se il campo vuoto R%^C%RCb,$':Tabella GIORNALE8Argomento Sezione Pagina ---------------------------------------------------------- Notizie A 1 Sport D 1 Editoriali A 12 Economia E 1 Meteo C 2 Televisione B 7 Nascite F 7 Annunci F 8 Salute F 6 Vita moderna B 1 Fumetti C 4 Film B 4 Bridge B 2 Necrologi F 6 $8PP9: Queryselect Argomento, Sezione, Pagina from GIORNALE; ARGOMENTO S PAGINA ------------------- - ----------- Notizie A 1 Sport D 1 Editoriali A 12 Economia E 1 Meteo C 2 Televisione B 7 Nascite F 7 Annunci F 8 [& ] 2PPPPPP H" ! RisultatiI nomi di colonna sono visualizzati in maiuscolo La query effettivamente case-insensitive L ampiezza delle colonne prefissata da Oracle ( Sezione viene abbreviata) Per avere informazioni usiamo il comando DESCRIBEKDESCRIBEdescribe GIORNALE Name Null? Type ------------------------------- -------- ------- ARGOMENTO NOT NULL VARCHAR2(15) SEZIONE CHAR(1) PAGINA NUMBER 2~ L"SELECTjComando per selezionare informazioni dalle tabelle 4 parole chiave principali: SELECT FROM WHERE ORDER BY &OO# ORDER BYEsempio: select Argomento, Sezione, Pagina from GIORNALE where Sezione =  F order by Argomento; ARGOMENTO S PAGINA --------------- - ------ Annunci F 8 Nascite F 7 Necrologi F 6 Salute F 6  Xk   k  "=%"ORDER BYEsempio su pi campi: select Argomento, Sezione, Pagina from GIORNALE where Sezione =  F order by Pagina, Argomento; ARGOMENTO S PAGINA --------------- - ------ Necrologi F 6 Salute F 6 Nascite F 7 Annunci F 8 `l k *=&#DESCOrdinamento decrescente: select Argomento, Sezione, Pagina from GIORNALE where Sezione =  F order by Pagina desc; ARGOMENTO S PAGINA --------------- - ------ Annunci F 8 Nascite F 7 Necrologi F 6 Salute F 6 Zp o B$!WHEREdParola chiave per verificare un singolo valore. Uso degli operatori logici: Uguaglianza  = Maggiore  > Maggiore o uguale  >= Minore  < Minore o uguale  <= Diverso  !=  <> LZgZL    '$LIKEOperatore logico per verificare similitudini. % : carattere jolly _ : marcatore di posizione Sintassi di esempio: Argomento LIKE  CIA%  Argomento inizia con le lettere CIA Argomento LIKE  %IAO  Argomento finisce con le lettere IAO Argomento LIKE  __A%  Argomento ha una  A in terza posizione Argomento LIKE  %0%0%  Argomento contiene due  0 "rPP&PP'PP*PPPP./ & '              *   ,8(%NULLOperatore logico per verificare se una riga vuota (priva di dati). Sintassi di esempio: Argomento IS NULL Argomento IS NOT NULL Z)Z  )&Queryselect Argomento, Sezione, Pagina from GIORNALE where Pagina > 4; ARGOMENTO S PAGINA --------------- - ------ Editoriali A 12 Televisione B 7 Nascite F 7 Annunci F 8 Necrologi F 6 Salute F 6 rE Z #c*'Queryvselect Argomento, Sezione, Pagina from GIORNALE where Argomento LIKE  N% ; ARGOMENTO S PAGINA --------------- - ------ Nascite F 7 Necrologi F 6 select Argomento, Sezione, Pagina from GIORNALE where Argomento LIKE  __i% ; ARGOMENTO S PAGINA --------------- - ------ Editoriali A 12 Bridge B 2 KPQPNPPPP  /  1  " .$+(Verifica di valorixOperatori logici per verificare pi valori: Pagina IN (1,2,3) Pagina nell elenco (1,2,3). Pagina NOT IN (1,2,3) Pagina non nell elenco (1,2,3). Sezione BETWEEN  B AND  D Sezione uguale a un carattere compreso tra  B e  D . Pagina NOT BETWEEN 6 AND 10 Pagina strettamente minore di 6 o maggiore di 10. ,"84,  "          8  4,)Logica della combinazioneGli operatori logici AND e OR si usano per combinare le espressioni logiche: AND: visualizza le righe che soddisfano entrambe le condizioni logiche OR: visualizza le righe che soddisfano almeno una delle due condizioni logiche.DMMEN-*Queryselect Argomento, Sezione, Pagina from GIORNALE where Sezione =  F OR Pagina > 7; ARGOMENTO S PAGINA --------------- - ------- Editoriali A 12 Nascite F 7 Annunci F 8 Necrologi F 6 Salute F 6 U  Z 4S.+Precedenza operazioniStabilire le priorit di combinazione usando le parentesi: select Argomento, Sezione, Pagina from GIORNALE where Pagina > 2 and ( Sezione =  A or Sezione =  B ); AND ha precedenza su OR, in assenza di parentesi. ;i2;  2>; g0.SubqueryPu essere utile inserire delle query in altre query. La subquery va racchiusa tra parentesi Se la subquery ha come risultato valori multipli (pi righe), si possono usare solo operatori per valori multipli,9"d/,Subquery (1-SubqueryLselect ARGOMENTO from GIORNALE where Sezione = (select Sezione from GIORNALE where Argomento =  Salute ); ARGOMENTO --------------- Nascite Annunci Necrologi Salute k;       <~     ##41Combinazione di tabelle\E possibile combinare pi tabelle se hanno un dato in comune. Esempio: tabella CLIMA: condizioni meteo attuali per citt select Citta, Condizione, Temperatura from CLIMA; tabella DISLOCAZIONE: coordinate geografiche per citt select Citta, Longitudine, EstOvest, Latitudine, NordSud from LOCAZIONE; I227JI2 73 {?30Tabelle di esempio52Unione dei risultatiLe tabelle dell esempio possono essere unite Bisogna indicare nella query il dato in comune Esempio: select CLIMA.Citta, Condizione, Temperatura, Latitudine, NordSud, Longitudine, EastOvest from CLIMA, LOCAZIONE where CLIMA.Citta = LOCAZIONE.Citta; eZZZe G e '  63 RisultatiCITTA CONDIZIONE TEMPERATURA LATITUDINE N LONGITUDINE E ----------- ----------- ----------- ---------- - ----------- - ATENE SOLE 36 37.58 N 23.43 E CHICAGO PIOGGIA 19 41.53 N 87.38 O LIMA PIOGGIA 7 12.03 S 77.03 O MANCHESTER NEBBIA 19 53.3 N 2.15 O PARIGI NUVOLOSO 27 48.52 N 2.2 E SPARTA NUVOLOSO 23 37.05 N 22.27 E SYDNEY NEVE -2 33.52 S 151.1 E $PPb<     74Viste0Il risultato della combinazione di pi tabelle pu ricevere un nome ed essere utilizzato come una tabella (vista). Esempio: create view INVASIONE AS select CLIMA.Citta, Condizione, Temperatura, Latitudine, NordSud, Longitudine, EstOvest from CLIMA, DISLOCAZIONE where CLIMA.Citta = DISLOCAZIONE.Citta; |ZqZCZZ|  S  ' IE Tipi di datizServono per tipizzare i dati Oracle usa diversi tipi di dati: NUMBER CHAR DATE VARCHAR2 LONG RAW LONG RAW BLOB CLOB BFILE .>P=P>=JFStringhevCHAR: Lunghezza prefissata Vengono inseriti spazi vuoti per raggiungere la dimensione VARCHAR2: Lunghezza variabile `P P KGFunzioni per stringheSintassi: FUNZIONE(stringa [,opzione]) Funzioni principali: Concat, || Lenght Lower, Upper LPad, RPad Trim, LTrim, RTrim Substr, Instr r ZZZLZ  L=LHEsempio: LOWER7select Citta, LOWER(Citta), LOWER('Citta') from CLIMA; CITTA LOWER(CITTA) LOWER('CITTA') ----------- ----------- ------------- LIMA lima citta PARIGI parigi citta MANCHESTER manchester citta ATENE atene citta CHICAGO chicago citta SYDNEY sydney citta SPARTA sparta citta V7% .         MIEsempio: concatenazione-select Citta||Paese from DISLOCAZIONE; CITTA || PAESE -------------------------------------------------- ATENEGRECIA CHICAGOSTATI UNITI CONAKRYGUINEA LIMAPERU MADRASINDIA MANCHESTERINGHILTERRA MOSCARUSSIA PARIGIFRANCIA SHENYANGCINA ROMAITALIA TOKYOGIAPPONE SYDNEYAUSTRALIA SPARTAGRECIA MADRIDSPAGNA \'PPP 6 2NJ Esempio: RPADRPAD RPAD(stringa,lunghezza [,'car']) Riempie con il carattere  car fino a che la stringa ha lunghezza  lunghezza , partendo da destra select RPAD(Citta,35,'.'), Temperatura from CLIMA; RPAD(CITTA,35,'.') TEMPERATURA ----------------------------------- ----------- LIMA................................ 7 PARIGI............................. 27 MANCHESTER................ 19 P!PPPPP!& !   & *# qOKEsempio: LTrim (LTrim LTrim(stringa [.'car']) Elimina le occorrenze del carattere  car select RTRIM(Titolo,'. ') From RIVISTA TITOLO: THE BARBERS WHO SHAVE THEMSELVES."HUNTING THOREAU IN NEW HAMPSHIRE RTRIM(TITOLO,'. '): THE BARBERS WHO SHAVE THEMSELVES "HUNTING THOREAU IN NEW HAMPSHIRE ZZQZZZZ%      "   !    !  l )PLLenght e Substr$Lenght: restituisce lunghezza di una stringa Non funziona sui dati di tipo LONG Substr: restituisce una sottostringa SUBSTR(stringa,inizio [,conta]) `-#%!-#%$J@QMFunzioni numericheFunzioni a valore singolo Operazioni fondamentali + - * / Cos, Sin, Exp, Abs, Trunc (val, precis), Round Trunc (val, precis) Funzioni di gruppo Max, Min (su gruppi di righe) Avg, CountZZZCZZ)ZC)D RNGestione delle dateRFormato DATE Gg mm aa hh mm ss Le colonne di tipo DATE sono gestite con l aritmetica delle date da SQL SYSDATE restituisce la data del sistema su cui installato Oracle select SysDate from DUAL; CURRENT_DATE restituisce l ora di sessione, con fuso orario select Current_Date from DUAL; 15-MAR-02 SYSTIMESTAMP restituisce la data di sistema in timestamp select SysTimeStamp from DUAL; 15-MAR-02 02.41.31.000000 PM -05:00  PPP<P*P9PCPPP <*9  C    0 A  /SOFunzioni per le dateMADDMONTHS: Aggiungere mesi select ADD_MONTHS(Celebrata,6) GiornoFesta from FESTA LEAST: Data che viene per prima in un elenco select Festa, LEAST(Dataeff,Celebrata) Primo, Dataeff,Celebrata GREATEST: Data pi recente in un elenco FESTA PRIMO DATAEFF CELEBRATA ------------------------- --------- --------- --------- MARTIN LUTHER KING, JR. 15-JAN-02 15-JAN-02 17-JAN-02 LINCOLNS BIRTHDAY 12-FEB-02 12-FEB-02 18-FEB-02 WASHINGTONS BIRTHDAY 18-FEB-02 22-FEB-02 18-FEB-02 MEMORIAL DAY 27-MAY-02 30-MAY-02 27-MAY-02 COLUMBUS DAY 12-OCT-02 12-OCT-02 14-OCT-02 P6P-P@P)PePP6-@)g  4W   % *  TPConversione in data}Le funzioni che operano sulle date sono delicate perch hanno bisogno di operare su valori in formato DATE select LEAST('20-JAN-02','20-DEC-02') from DUAL; Restituisce risultato errato, perch considera le stringhe come letterali select LEAST( TO_DATE('20-JAN-02'),TO_DATE('20-DEC-02') ) from DUAL; Restituisce il risultato corretto, utilizzando la funzione di conversione TO_DATE ZJZEZRZZJJk QQUQConversione da data Per convertire una data in una stringa si usa TO_CHAR TO_CHAR(data[,'formato'[,'NLSparametri']]) Formato predefinito delle date: DD-MON-YY Usando vari parametri si possono ottenere le formattazioni desiderate: select DataNascita, TO_CHAR(DataNascita,'Month, ddth, YyyY') Formattato from COMPLEANNO; DATANASCITA FORMATTATO ----------- ------------------------------ 12-MAY-46 May , 12th, 1946 23-AUG-37 August , 23rd, 1937 02-FEB-47 February , 02nd, 1947 20-MAY-49 May , 20th, 1949 11-NOV-42 November , 11th, 1942 6PUPGPYPP6UGY. v   & H5VRFunzioni di conversione7Oracle mette a disposizione molte funzioni di conversione tra diversi tipi di dato TO_CHAR: converte DATE o NUMBER TO_DATE: converte NUMBER, CHAR, VARCHAR2 TO_NUMBER: converte CHAR, VARCHAR2 Esistono delle conversioni automatiche a livello di codice Intervengono soprattutto nei parametri passati alle funzioni \SZlZ;Z>ZSl;>>S" WSRaggruppamento di righe{HAVING e GROUP BY Sono clausole che funzionano su gruppi di righe e non su singole righe Sono parallele a WHERE e ORDER BY &jjXTEsempio Group Byselect NomeCategoria, COUNT(*) from BIBLIOTECA group by NomeCategoria; NOMECATEGORIA COUNT(*) -------------------- ---------- NARRAADULTI 6 SAGGIAADULTI 10 CONSADULTI 6 NARRRAGAZZI 5 SAGGIRAGAZZI 1 ILLUSRAGAZZI 3 >HH     eYUEsempio Havingselect NomeCategoria, COUNT(*) from BIBLIOTECA group by NomeCategoria having COUNT(*) 5; NOMECATEGORIA COUNT(*) -------------------- ---------- NARRADULTI 6 SAGGIADULTI 10 CONSADULTI 6 \PePP  (f    & .ZVFunzioni combinate su gruppiselect NomeCategoria, COUNT(*), AVG(Valutazione) from BIBLIOTECA where Valutazione > 1 group by Nomecategoria having Nomecategoria like  A% order by COUNT(*) desc; NOMECATEGORIA COUNT(*) AVG(VALUTAZIONE) -------------------- ---------- ---------------- SAGGIADULTI 10 4.2 NARRADULTI 6 3.66666667 CONSADULTI 6 3.16666667 PPP+ 2     - R[W Outer Join<Serve per restituire dei risultati anche se non ci sono corrispondenze in una delle 2 tabelle coinvolte da un join L outer join pu essere left, right, o full,u\X Esempio: joinBJoin: elenco libri ed elenco prestiti in una biblioteca select distinct B.Titolo from BIBLIOTECA_PRESTITO BC, BIBLIOTECA B where BC.Titolo = B.Titolo; TITOLO ---------------------------------------- ANNE OF GREEN GABLES EITHER/OR GOOD DOG, CARL HARRY POTTER AND THE GOBLET OF FIRE INNUMERACY JOHN ADAMS MIDNIGHT MAGIC 9PaPPP9 '  9  (z]YEsempio: outer join Si vogliono ora visualizzare tutti i titoli, anche quelli non presi in prestito. Si utilizza il segno  + sul lato del join che deve restituire le righe senza corrispondenze. select B.Titolo, MAX(BC.DataRestituzione - BC.DataPrestito)  MAX GIORNI PRESTITO! from BIBLIOTECA_PRESTITO BC, BIBLIOTECA B where BC.Titolo (+) = B.Titolo group by B.Titolo; `ZM&    ^ZEsempio: risultatoTITOLO Max Giorni Prestito ---------------------------------------- ------------------- ANNE OF GREEN GABLES 18 BOX SOCIALS CHARLOTTE'S WEB EITHER/OR 8 EMMA WHO SAVED MY LIFE GOOD DOG, CARL 14 $PP,(r_[ Outer JoinJDa Oracle 9i si pu usare la sintassi ANSI SQL: Left outer join& on Right outer join& on Full outer join & on select B.Titolo, MAX(BC.DataRestituzione - BC.DataPrestito) "Max Giorni Prestito from BIBLIOTECA_PRESTITO BC left outer join BIBLIOTECA B on BC.Titolo = B.Titolo group by B.Titolo; 0P?PP0?L ^0    `\Gestione dei datiFunzioni principali INSERT Inserisce dati direttamente in una tabella Inserisce dati indirettamente tramite una vista UPDATE Modifica i dati presenti in una o pi righe della tabella DELETE Cancella una o pi righeZZ[ZZ:ZZZ[: b^Tabella di esempioTabella COMFORT: registra dati meteo di alcune citt describe COMFORT Nome Null? Type ------------------------------- -------- ---- CITTA NOT NULL VARCHAR2(13) DATACAMPIONE NOT NULL DATE MEZZOGIORNO NUMBER(3,1) MEZZANOTTE NUMBER(3,1) PRECIPITAZIONE NUMBER D6ZZZ6t6a]InsertInserisce una nuova riga Sintassi: insert into COMFORT values ( WALPOLE', '21-MAR-01'). 13.8, 6.6, 0); Il punto a fine riga della query precedente serve per andare a capo concatenando, analogo a: values ( WALPOLE', '21-MAR-01 ,13.8, 6.6, 0); p$/$  )P$ )c_ Insert e datePer inserire le date necessario utilizzare la funzione di conversione TO_DATE e specificare il formato: insert into COMFORT values ( WALPOLE', TO_DATE('06/22/2001 1:35', MM/DD/YYYY HH24:MI'), 13.8, 6.6, 0); bjhj   (bH  :d`Delete6Elimina righe Bisogna indicare quali con la clausola WHERE, altrimenti la tabella viene interamente svuotata: delete from COMFORT where Citta =  WALPOLE'; Rn-n  Pn eaUpdateAggiorna i dati di una colonna del database, per una o pi righe a seconda della clausola WHERE. update COMFORT set Precipitazione = .5, Mezzanotte = 73.1 where Citta =  KEENE and DataCampione = '22-DEC-2001'; vara (> ;9Gestione delle tabelleSi usa il comando CREATE TABLE Bisogna definire le colonne create table STRANO ( Citta VARCHAR2(13) NOT NULL, DataCampione DATE NOT NULL, Mezzogiorno NUMBER(3,1), Mezzanotte NUMBER(3,1), Precipitazione NUMBER ); F;ZZZ; >B  \fb Create tableRequisiti: I nomi delle tabelle e delle colonne devono iniziare con una lettera Nomi lunghi da 1 a 30 caratteri Se i nomi non sono inseriti tra virgolette, non si distingue tra maiuscole e minuscole I tipi di dati CHAR e VARCHAR devono specificare la lunghezza* ZZ gcChiaviHCandidata E una combinazione di una o pi colonne, i cui valori identificano univocamente ogni riga di una tabella. Primaria E una chiave candidata speciale, pu esisterne solo una e una colonna di tale chiave non pu essere NULL. Creano degli indici per mantenere l integrit del database. ZkZ ZkZ<Z k K<hdEsempio: chiave candidataChiave candidata STRANO_UQ: create table STRANO ( Citta VARCHAR2(13) NOT NULL, DataCampione DATE NOT NULL, Mezzogiorno NUMBER(4,1), Mezzanotte NUMBER(4,1), Precipitazione NUMBER, constraint STRANO_UQ UNIQUE (Citta, DataCampione) ); h      X    ieEsempio: chiave primariaChiave primaria STRANO_PK: create table STRANO ( Citta VARCHAR2(13), DataCampione DATE, Mezzogiorno NUMBER(4,1), Mezzanotte NUMBER(4,1), Precipitazione NUMBER, constraint STRANO_PK PRIMARY KEY (Citta, DataCampione) ); xZZZZ       O   Esempio: chiave primariaSi pu inserire un vincolo di chiave primaria anche successivamente: alter table STRANO add constraint STRANO_PK PRIMARY KEY (Citta);EAE    dE       jfChiave esternaE una combinazione di colonne con valori basati su quelli di una chiave primaria esterna. I valori della chiave esterna corrispondono ai valori effettivi della chiave primaria nell altra tabella. kgEsempio: chiave esternacNella tabella BIBLIOTECA, la colonna NomeCategoria fa riferimento ai valori della colonna NomeCategoria nella tabella CATEGORIA: create table BIBLIOTECA ( Titolo VARCHAR2(100) primary key, Editore VARCHAR2(20), NomeCategoria VARCHAR2(20), Valutazione VARCHAR2(2), constraint CATFK foreign key (NomeCategoria) references CATEGORIA(NomeCategoria) ); ZZZ % Q   % ( !% *    lhEliminazione di tabelleDROP: rimozione di una tabella drop table STRANO; TRUNCATE: svuota una tabella, eliminando tutte le righe truncate table STRANO; `8  8 >$A miModifica di tabellevComando ALTER: Aggiunta di colonne Modifica di colonne Rimozione di colonne Regole: Si pu aggiungere o modificare una colonna in qualsiasi momento, purch non sia NOT NULL Si pu aggiungere una colonna NOT NULL eseguendo 3 passaggi Aggiunta nuova colonna (senza specificare NOT NULL) Riempimento della nuova colonna con valori predefiniti Modifica della colonna in NOT NULLtP=PPPP=  njEsempio: aggiunta colonnerAggiunta di 2 colonne alla tabella STRANO: alter table STRANO add ( Condizione VARCHAR2(9), Vento NUMBER(3) ); R+G+ 1,12okEsempio: modifica colonneoModifica di una colonna: alter table STRANO modify ( Condizione VARCHAR2(9) NOT NULL, Citta VARCHAR2(17) ); RV =>%plEsempio: eliminazioneCEliminazione di una colonna: alter table STRANO drop column Vento; D'   ,#  <8Parte 4PL/SQLqmSicurezza e accessoUtenti Ogni utente ha nome, password, e possiede tabelle, viste e risorse da lui create Ruoli Sono serie di privilegi I privilegi si associano ai ruoli, e i ruoli si associano agli utenti Privilegi Sono regole che consentono di eseguire determinate operazioni sul databasePQPP^P PKPQ^ K  rnUtentiCreazione di un utente Esistono utenti predefiniti SYS: possiede le tabelle principali del database SYSTEM: possiede altre tabelle e viste L utente SYSTEM pu creare altri utenti create user utente identified {by password | externally}; XcX( P  soEsempio: nuovo utenteCreo un nuovo utente Dora con password avocado: create user Dora identified by avocado; Modifico la password: alter user Dora identified by psyche; Assegnazione privilegi: grant CREATE SESSION to Dora; 0(& 0     7 &  tpRuoli4Sono raccolte di privilegi di sistema che consentono agli utenti di effettuare operazioni: CONNECT: consente accesso a funzioni base RESOURCE: per utenti pi avanzati, possono creare procedure, trigger, tipi di dati DBA: per l amministratore di sistema, accesso e privilegi completi*[ZZ[uq PrivilegiGRANT: assegna privilegi grant {privilegio sistema | ruolo | all [privileges] } [. {privilegio sistema | ruolo | all [privileges]} to {utente | ruolo} [. {utente | ruolo}] [identified by password ] [with admin option] Esempio: grant CONNECT to Judy; T   % (     vrRevocaREVOKE: revoca i privilegi di un utente revoke {privilegio sistema | ruolo | all [privileges]} [, {privilegio sistema | ruolo | all [privileges]}, from {utente | ruolo} [, {utente | ruolo}]. &((t( $ )wsPrivilegi per tabelleTabelle e viste: INSERT UPDATE SELECT DELETE ALTER INDEX & ALL (tutti i precedenti).ZCZCxtAltri privilegiProcedure, funzioni, package: EXECUTE Sequenze ALTER, SELECT Directory READ WRITE &      yuEsempio: privilegiL utente corrente concede l accesso alla tabella COMFORT all utente Bob: grant select on COMFORT to Bob; XI!I >I zvRuoli personalizzatiCreo un ruolo IMPIEGATO: create role IMPIEGATO; Do il privilegio di effettuare delle Select: grant select on COMFORT to IMPIEGATO; Do il privilegio di collegarsi al database: grant CREATE SESSION to IMPIEGATO; Assegno i privilegi di un ruolo a un altro: grant IMPIEGATO to MANAGER; -&,#,  -  , ,               1 88 {wIndici.Elenco di parole chiave contenente la posizione delle informazioni relative a un argomento. Esempio: indice analitico dei libri Non sono necessari, ma velocizzano le prestazioni Si creano con il comando CREATE INDEX: create [bitmap | unique] index indice on tabella(colonna [,colonna]. . .) [reverse]; fV.>|xIndici e chiaviE una tecnica per garantire l unicit delle chiavi. Esempio: create unique index BA$TITOLO_AUTORE on BIBLIOTECA_AUTORE(Titolo, NomeAutore); Sono molto utili in tabelle grandi, in cui una (o pi) colonne sono utilizzate spesso in clausole where con uguaglianza. Lo svantaggio un inserimento pi lento delle righe nel database. >ZOZZZZ>(bE eW}yTriggerE un azione che il database deve intraprendere quando si verifica un evento legato al database stesso. Tecnica utilizzata in particolare per revisioni sui dati. In genere sono legati alle operazioni fondamentali Insert, Delete e Update (DML) Per utilizzare i trigger bisogna: Possedere la tabella Avere i privilegi di Alter sulla tabella .P?P?,q~zTipi di triggerI tipi di trigger sono definiti da: Tipo di transazione che li attiva Livello cui eseguito il trigger Livello di riga Livello di istruzione Livello di database N$D:$D: {Livello di rigaTTrigger a livello di riga: Vengono eseguiti una sola volta per ogni riga su cui agisce un istruzione. Parola chiave: for each row Utili per la sincronizzazione dei dati Z - (>u*|Livello di istruzioneTrigger a livello di istruzione: Sono eseguiti una solta volta per ogni istruzione. Se aggiungo 500 righe con una sola istruzione INSERT, il trigger viene eseguito 1 sola volta Non vengono usati in genere sui dati, ma sul controllo delle istruzioni eseguite. N!3]T!3]T3}Livello di database|Trigger a livello di database: Si attivano su eventi legati al database, come connessioni, collegamenti, chiusure, avvii, ecc& Serve per automatizzare le operazioni di gestione del database &zA Altri triggerBEFORE / AFTER: Vengono eseguiti prima o dopo determinati eventi All interno del trigger si pu fare riferimento a valori vecchi e nuovi nel database. INSTEAD OF: Rimpiazza determinate azioni. In genere si usano sulle viste, per far operare invece sulle tabelle che compongono la vista. Trigger di schema: Operano su istruzioni che lavorano sugli schemi (create, alter, truncate, ecc& )ZZ Z|ZZPZ |P  ,r~Sintassi2Sintassi: create [or replace] trigger [schema .] trigger { before | after | instead of } { clausola_evento_dml | { evento_ddl [or evento_ddl ]... | evento_database [or evento_database ]... } on { [schema .] schema | database } } [when ( condizione ) ] { blocco_pl/sql| istruzione_procedura_chiamata }  Z)Z  m "   1 "Esempio: TriggerSi vogliono registrare in una tabella AUDIT_BIBLIOTECA tutte le modifiche che vengono effettuate sulla colonna Classificazione di BIBLIOTECA. La tabella AUDIT_BIBLIOTECA riceve una INSERT con i valori del dato che si sta cambiando (UPDATE) su BIBLIOTECA. La clausola WHERE viene usata in modo particolare per indicare che utilizzeremo dati vecchi e nuovi. SQL nella slide seguente& BPT>&c Esempio: Trigger beforecreate or replace trigger BIBLIOTECA_BEF_UPD_ROW before update on BIBLIOTECA for each row when (nuova.Classificazione != vecchia.Classificazione) begin insert into AUDIT_BIBLIOTECA (Titolo, Editore, NomeCategoria, Vecchia_Classificazione, Nuova_Classificazione, Data_Audit) values (:old.Titolo, :old.Editore, :old.NomeCategoria, :old.Classificazione, :new.Classificazione, Sysdate); end; ZZ  7x !     85 Procedure Procedure: Stored procedure: gruppi di istruzioni SQL memorizzate nel sistema Si possono riutilizzare pi volte Funzioni: Procedure che possono restituire valori agli utenti Packages: Raggruppamenti di procedure e comandi SQL Sono compilati in automatico, ma possono essere ricompilati  PeP P4P PgPP U 4 g, k ProcedureUna volta memorizzata, pu essere eseguita Bisogna dare i permessi di esecuzione agli utenti: grant execute on MIA_PROCEDURA to Dora; In assenza dell assegnazione diretta del privilegio precedente, gli utenti dovranno avere il privilegio generico EXECUTE ANY PROCEDURE per eseguire la procedura. Sintassi: execute NUOVO_LIBRO( TITOLO'); Il comando execute non serve se si : All interno di un altra procedura o funzione In un trigger In un package ^PP PEPJPP^ *J^  aSintassiSintassi: create [or replace] procedure [schema .] procedura [( argomento [ in | out | in out ] [nocopy] tipodati [, argomento [ in | out | in out ] [nocopy] tipodati]... )] [authid { current_user | definer }] { is | as } { corpo_sottoprogramma_sql | language { java name 'stringa'| c [name nome] library nome_lib [agent in ( argomento )] [with context] [parameters ( parametri )] }};  Z3ZPZZ    P  ^F&  " EsempioProcedura per inserire un nuovo libro in BIBLIOTECA e cancellare il titolo da una lista ordini LIBRO_ORDINE: create or replace procedure NUOVO_LIBRO (aTitolo IN VARCHAR2, aEditore IN VARCHAR2, aNomeCategoria IN VARCHAR2) as begin insert into BIBLIOTECA (Titolo, Editore, NomeCategoria, Classificazione) values (aTitolo, aEditore, aNomeCategoria, NULL); delete from LIBRO_ORDINE where Titolo = aTitolo; end; mPpPPPmU?, p_        EsecuzioneEsempio di esecuzione della procedura di prima: execute NUOVO_LIBRO( TITOLO','SANCTUARY PUB','SAGGIADULTI'); D0>0%,0 +FunzioneLE una procedura che restituisce un valore. Sintassi: create [or replace] function [schema .] funzione [( argomento [ in | out | in out ] [nocopy] tipodati [, argomento [ in | out | in out ] [nocopy] tipodati]... )] return tipodati [{ clausola_privilegi_utentechiamante | deterministic | clausola_abilitazione_parallela } [clausola_privilegi_utentechiamante | deterministic | clausola_abilitazione_parallela]... ] { { aggregate | pipelined } using [schema .] tipo_implementazione | [pipelined] { is | as } { corpo_funzione_pl/sql | spec_chiamata }}; `6PPP6:A9%) K 9    EsempioLSi crea una funzione che restituisce la spesa dovuta ai ritardi nella riconsegna dei libri: create or replace function SPESE_RITARDO (aNome IN VARCHAR2) return NUMBER is saldo NUMBER(10,2); begin select SUM(((DataRestituzione-DataPrestito) -14)*0.20) into saldo from BIBLIOTECA_PRESTITO where Nome = aNome; RETURN(saldo); end; *\PP\#2  f PackageSpecifica e corpo del package sono creati separatamente: Create Package Create Package Body Richiedono il privilegio CREATE ANY PROCEDURE&9Q9QSintassiPackage: create [or replace] package [utente.] package [authid {definer | current_user} ] {is | as} specifica package; Package body: create [or replace] package body [utente,] corpo package {is | as} corpo package;  P.PCPP9PPPP  0        /)Esempio specifica8Si crea un package che mette a disposizione dei suoi utenti alcune funzioni e procedure: create or replace package GESTIONE_LIBRO as function SPESE_RITARDO(aNome IN VARCHAR2) return NUMBER; procedure NUOVO_LIBRO (aTitolo IN VARCHAR2, aEditore IN VARCHAR2, aNomeCategoria IN VARCHAR2); end GESTIONE_LIBRO; YP)PPPY 2 X  c  ) Esempio Body 1/2Kcreate or replace package body GESTIONE_LIBRO as function SPESE_RITARDO (aNome IN VARCHAR2) return NUMBER is saldo NUMBER(10,2); begin select SUM(((DataRestituzione-DataPrestito) -14)*0.20) into saldo from BIBLIOTECA_PRESTITO where Nome = aNome and (DataRestituzione-DataPrestito) 14; RETURN(saldo); end SPESE_RITARDO; Pagina 1/2(PPP #1% L    Esempio Body 2/2Eprocedure NUOVO_LIBRO (aTitolo IN VARCHAR2, aEditore IN VARCHAR2, aNomeCategoria IN VARCHAR2) is begin insert into BIBLIOTECA (Titolo, Editore, NomeCategoria, Classificazione) values (aTitolo, aEditore, aNomeCategoria, NULL); delete from LIBRO_ORDINE where Titolo = aTitolo; end NUOVO_LIBRO; end GESTIONE_LIBRO; Pagina 2/2 gPPP PP U  p p      Inizializzazione&I package possono includere comandi da eseguire ogniqualvolta il package viene chiamato, a prescindere dalla procedura o funzione chiamata all interno del package. I package consentono di eseguire comandi che non siano specifici delle procedure raggruppate. Nell esempio seguente, il corpo del package GESTIONE_LIBRO viene modificato in modo da includere un istruzione SQL che registra il nome dell utente corrente e l indicatore orario per la prima volta in cui un componente del package viene eseguito all interno della sessione.P.Esempio: inizializzazione\Si aggiunge in fondo al package l inizializzazione: [& ] //codice esempio precedente begin select Utente, SysDate into Nome_Utente, Data_Voce from DUAL; end GESTIONE_LIBRO; 4 >4   U    =:Parte 5 Introduzione a EMCEMCEnterprise Manager Console SQL*Plus Worksheet Introduzione all uso attraverso esercizi in aula6  2LICENZAQuesta produzione regolata da Licenza Creative Commons: Tu sei libero: di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera di modificare quest'opera Alle seguenti condizioni: Attribuzione. Devi attribuire la paternit dell'opera nei modi indicati dall'autore o da chi ti ha dato l'opera in licenza e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera. Non commerciale. Non puoi usare quest'opera per fini commerciali. Condividi allo stesso modo. Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa. nP;&4t1~!"Oy ` fff33` 3KI3ff` 33ff` /p` 3%*3|` Jy3fff3f` 3ff3̙` 33ff33` DDyq3f` ̙3n` w3ff` }ff>?" dd@,?nKd@ P nA@F`d n?" dd@   @@``PR"   @ ` `2p>>   @- (  @ @ 6 #" ``   Z*  @ 6 #" `` `  \* T X @ "X @ N$d#" `P D0  @ 6؟d#" `U B0  @ S 8"UY <  @ c $"YW <   @ c $"YU <   @ c $X" <   @ S #" `SV B0   @ S "Y <   @ c $x"X <  @ <غ #" `  `  `,Fare clic per modificare lo stile del titolo- -G @ 0 " `p  uFare clic per modificare gli stili del testo dello schema Secondo livello Terzo livello Quarto livello Quinto livello: v @ 6 #" `^ `  X* H @ 0޽h ? ̙3n80___PPT10. 07  Pixel< = D<(  D: T  D " D TpBrd #"   D0  D c $Er "9)e  B0 6b e  D# "e  D S "ie  B0  D S or"9) B0  D S sr"0 B0   D S vr"?e  B0   D S $zr") B0   D S |}r"?G B0   D S Ԁr"oG B0   D S ,r"9G B0  D S r"iA B0  D S ܊r"A? B0  D 6Tr #" `` ` r X*  D 6r #" ``  r Z*  D 6Lr #" `` ` r \*  D 0r "P   r `,Fare clic per modificare lo stile del titolo- - D 0 r " P  r r>Fare clic per modificare lo stile del sottotitolo dello schema? ?H D 0޽h ? ̙3n80___PPT10. 07 =L0 @X0(  Xx X c $m@  `  m x X c $m@ `p m H X 0޽h ? 33___PPT10i.j+D=' = @B + =L0 0T0(  Tx T c $Mr@  `  r x T c $,ar@ `p r H T 0޽h ? 33___PPT10i.006+D=' = @B +T>L0 l<(  l~ l s *rDP   r ~ l s *rD P  r H l 0޽h ? 3380___PPT10.x$sN =L0 06(  x  c $Ьr@  `  r ~  s *r @ `p r H  0޽h ? 3380___PPT10.ypOgN =L0 @56(  x  c $ r@  `  r ~  s *r @ `p r H  0޽h ? 3380___PPT10.yQH =L0 P0(  x  c $hr@  `  r x  c $6 ((  (~ ( s *X@  `   |  `S ( #" `  `S  ( <r?@ `S *CITTA LONGITUDINE E LATITUDINE N ------------------------- ----------- - ---------- - ATENE 23.43 E 37.58 N CHICAGO 87.38 O 41.53 N CONAKRY 13.43 O 9.31 N LIMA 77.03 O 12.03 S MADRAS 80.17 E 13.05 N MANCHESTER 2.15 O 53.3 N MOSCA 37.35 E 55.45 N PARIGI 2.2 E 48.52 N SHENYANG 123.3 E 41.48 N ROMA 12.29 E 41.54 N TOKYO 139.5 E 35.42 N SYDNEY 151.1 E 33.52 S SPARTA 22.27 E 37.05 N MADRID 3.14 O 40.24 N "! @` ( <9? @ S hCITTA CONDIZIONE TEMPERATURA ----------- ----------- ----------- LIMA PIOGGIA 7 PARIGI NUVOLOSO 27 MANCHESTER NEBBIA 19 ATENE SOLE 36 CHICAGO PIOGGIA 19 SYDNEY NEVE -2 SPARTA NUVOLOSO 23 ">    @``B ( 0o ? ``B ( 0o ? S`S`B ( 0o ?  SZB  ( s *1 ?@ @ S`B  ( 0o ?``SH ( 0޽h ? 3380___PPT10.4H =L0 p$0(  $x $ c $$3@  `   x $ c $)@ `p  H $ 0޽h ? 3380___PPT10. VH =L0 (0(  (x ( c $(I@  `   x ( c $O@ `p  H ( 0޽h ? 3380___PPT10. 3H =L0 ,0(  ,x , c $G@  `   x , c $̙@ `p  H , 0޽h ? 3380___PPT10.z K$ =  H$(  Hr H S  @  `   r H S @ `p  H H 0޽h ? ̙3n80___PPT10.%H =L0 00(  0x 0 c $(@  `   x 0 c $Q@ `p  H 0 0޽h ? 3380___PPT10.R =L0 0(  0~ 0 s *x@  `   ~ 0 s *8@ `p  R 0 C *AImmagine ] H 0 0޽h ? 3380___PPT10.z KH =L0 40(  4x 4 c $@  `   x 4 c $^@ `p  H 4 0޽h ? 3380___PPT10.0x =L0 4`(  4~ 4 s *Ń@  `    4 bA@Immagine1*v  H 4 0޽h ? 3380___PPT10. H =L0 80(  8x 8 c $Lʃ@  `   x 8 c $ ˃@ `p  H 8 0޽h ? 3380___PPT10.3H =L0 <0(  <x < c $ Ѓ@  `   x < c $Ѓ@ `p  H < 0޽h ? 3380___PPT10.H =L0 80(  8x 8 c $ @  `   x 8 c $@ `p  H 8 0޽h ? 3380___PPT10.P&H =L0 <0(  <x < c $@  `   x < c $x@ `p  H < 0޽h ? 3380___PPT10.m H =L0 @0(  @x @ c $|@  `   x @ c $@ `p  H @ 0޽h ? 3380___PPT10.pH =L0 D0(  Dx D c $k@  `  k x D c $xk@ `p k H D 0޽h ? 3380___PPT10.P=jH =L0 H0(  Hx H c $k@  `  k x H c $xk@ `p k H H 0޽h ? 3380___PPT10.e|H =L0 @0(  @x @ c $*k@  `  k x @ c $\+k@ `p k H @ 0޽h ? 3380___PPT10.@QH =L0  P0(  Px P c $9k@  `  k x P c $:k@ `p k H P 0޽h ? 3380___PPT10.@ H =L0 P\0(  \x \ c $t?k@  `  k x \ c $H@k@ `p k H \ 0޽h ? 3380___PPT10.@huH =L0 ``0(  `x ` c $`Pk@  `  k x ` c $ Qk@ `p k H ` 0޽h ? 3380___PPT10.@/T>L0 <(  ~  s *(_kDP   k ~  s *$kD P  k H  0޽h ? 3380___PPT10.x$sH =L0  0(   x   c $dk@  `  k x   c $\ek@ `p k H   0޽h ? 3380___PPT10.P7 $ =  $(  r  S $jk@  `  k r  S jk@ `p k H  0޽h ? ̙3n80___PPT10.2O}$ = 0$(  r  S vk@  `  k r  S @{k@ `p k H  0޽h ? ̙3n80___PPT10.27$ = @$(  r  S k@  `  k r  S Љk@ `p k H  0޽h ? ̙3n80___PPT10.3e$ = P$(  r  S k@  `  k r  S lk@ `p k H  0޽h ? ̙3n80___PPT10.3Pgq: = `:(  r  S |k@  `  k   S k@ `p k "p`PpH  0޽h ? ̙3n80___PPT10.3`ۅ =  T(  Tr T S Dk@  `  k r T S a$ = <$(  <r < S @  `   r < S g@ `p  H < 0޽h ? ̙3n80___PPT10.5@d$ = @$(  @r @ S @  `   r @ S @ `p  H @ 0޽h ? ̙3n80___PPT10.50'h$ = $(  r  S -@  `   r  S .@ `p  H  0޽h ? ̙3n80___PPT10.)ʀ$ = D$(  Dr D S H9@  `   r D S :@ `p  H D 0޽h ? ̙3n80___PPT10.5@wr$ = H$(  Hr H S ,H@  `   r H S L@ `p  H H 0޽h ? ̙3n80___PPT10.5n$ = L$(  Lr L S W@  `   r L S tX@ `p  H L 0޽h ? ̙3n80___PPT10.5`T>L0 p<(  p~ p s *bDP    ~ p s *cD P   H p 0޽h ? 3380___PPT10.x$sH =L0 t0(  tx t c $l@  `   x t c $l@ `p  H t 0޽h ? 3380___PPT10.0H =L0 x0(  xx x c $\s@  `   x x c $0t@ `p  H x 0޽h ? 3380___PPT10.`IH =L0 |0(  |x | c $ @  `   x | c $@ `p  H | 0޽h ? 3380___PPT10.H =L0 0(  x  c $̇@  `   x  c $@ `p  H  0޽h ? 3380___PPT10.`xH =L0 0(  x  c $@  `   x  c $@ `p  H  0޽h ? 3380___PPT10.@<H =L0 00(  x  c $@  `   x  c $<@ `p  H  0޽h ? 3380___PPT10.(1H =L0 0(  x  c $@  `   x  c $Ȳ@ `p  H  0޽h ? 3380___PPT10.}mH =L0 @0(  x  c $D@  `   x  c $X@ `p  H  0޽h ? 3380___PPT10.д*H =L0 P0(  x  c $L@  `   x  c $ @ `p  H  0޽h ? 3380___PPT10.!H =L0 p0(  x  c $@  `   x  c $@ `p  H  0޽h ? 3380___PPT10.@oH =L0 0(  x  c $@  `   x  c $X@ `p  H  0޽h ? 3380___PPT10.׾H =L0 `0(  x  c $`@  `   x  c $4@ `p  H  0޽h ? 3380___PPT10.PFH =L0 0(  x  c $@  `   x  c $X@ `p  H  0޽h ? 3380___PPT10.  H =L0 0(  x  c $X@  `   x  c $,@ `p  H  0޽h ? 3380___PPT10.@(H =L0 0(  x  c $ @  `   x  c $ @ `p  H  0޽h ? 3380___PPT10.hH =L0 0(  x  c $@  `   x  c $@ `p  H  0޽h ? 3380___PPT10.0] H =L0 0(  x  c $)@  `   x  c $*@ `p  H  0޽h ? 3380___PPT10.@XH =L0 0(  x  c $\=@  `   x  c $>@ `p  H  0޽h ? 3380___PPT10.$H =L0 0(  x  c $C@  `   x  c $`D@ `p  H  0޽h ? 3380___PPT10.@WH =L0 0(  x  c $    @``B  0o ? ``B  0o ? S`S`B   0o ?  SZB   s *1 ?@ @ S`B   0o ?``SH  0޽h ? 3380___PPT10.4H =L0 0(  x  c $x@  `   x  c $th@ `p  H  0޽h ? 3380___PPT10.ot1H =L0 0(  x  c $@  `   x  c $@ `p  H  0޽h ? 3380___PPT10.ٮH =L0 0(  x  c $@  `   x  c $ @ `p  H  0޽h ? 3380___PPT10.}&$ =  L$(  Lr L S |@  `   r L S P@ `p  H L 0޽h ? ̙3n80___PPT10.`b$ =  P$(  Pr P S  @  `   r P S  @ `p  H P 0޽h ? ̙3n80___PPT10.C$ = 0 T$(  Tr T S @  `   r T S t@ `p  H T 0޽h ? ̙3n80___PPT10.^~$ = P \$(  \r \ S @  `   r \ S @ `p  H \ 0޽h ? ̙3n80___PPT10.$ = ` `$(  `r ` S <-@  `   r ` S .@ `p  H ` 0޽h ? ̙3n80___PPT10.f$ = p d$(  dr d S h=@  `   r d S <>@ `p  H d 0޽h ? ̙3n80___PPT10.a>$ =  h$(  hr h S (L@  `   r h S L@ `p  H h 0޽h ? ̙3n80___PPT10.`Vr$ =  p$(  pr p S lY@  `   r p S @Z@ `p  H p 0޽h ? ̙3n80___PPT10.f$ =  t$(  tr t S b@  `   r t S c@ `p  H t 0޽h ? ̙3n80___PPT10._$ =  x$(  xr x S q@  `   r x S Hr@ `p  H x 0޽h ? ̙3n80___PPT10.04$ =  |$(  |r | S d@  `   r | S @ `p  H | 0޽h ? ̙3n80___PPT10.&']$ =  $(  r  S 8i@  `   r  S @ `p i H  0޽h ? ̙3n80___PPT10.'g$ =  $(  r  S $@  `   r  S ȝ@ `p  H  0޽h ? ̙3n80___PPT10.'`=P$ =  $(  r  S (@  `   r  S @ `p  H  0޽h ? ̙3n80___PPT10.(P;e$ =  $(  r  S P@  `   r  S @ `p  H  0޽h ? ̙3n80___PPT10.("$ =  $(  r  S @  `   r  S \@ `p  H  0޽h ? ̙3n80___PPT10.)<,$ = 0 $(  r  S hj@  `   r  S L0  <(  ~  s *XDP    ~  s *,D P   H  0޽h ? 3380___PPT10.x$s$ =  $(  r  S @  `   r  S @ `p  H  0޽h ? ̙3n80___PPT10. N…$ =  $(  r  S |@  `   r  S P@ `p  H  0޽h ? ̙3n80___PPT10.P$ =  $(  r  S @  `   r  S @ `p  H  0޽h ? ̙3n80___PPT10.L$ =  $(  r  S  @  `   r  S  @ `p  H  0޽h ? ̙3n80___PPT10.0w$ =  $(  r  S k@  `   r  S /@ `p k H  0޽h ? ̙3n80___PPT10.2E$ =   $(   r   S <@  `   r   S x=@ `p  H   0޽h ? ̙3n80___PPT10._B$ =  $(  r  S @B@  `   r  S C@ `p  H  0޽h ? ̙3n80___PPT10.i$ = 0 $(  r  S 0Q@  `   r  S R@ `p  H  0޽h ? ̙3n80___PPT10.!$ = @ $(  r  S \^@  `   r  S 0_@ `p  H  0޽h ? ̙3n80___PPT10.fGF$ = P $(  r  S d@  `   r  S d@ `p  H  0޽h ? ̙3n80___PPT10. æ$ = `  $(   r   S |s@  `   r   S Pt@ `p  H   0޽h ? ̙3n80___PPT10. f$ = p $$(  $r $ S @  `   r $ S ā@ `p  H $ 0޽h ? ̙3n80___PPT10.3,$ =  ($(  (r ( S @  `   r ( S @ `p  H ( 0޽h ? ̙3n80___PPT10.`w&$ =  ,$(  ,r , S @  `   r , S @ `p  H , 0޽h ? ̙3n80___PPT10.4$ =  0$(  0r 0 S @@  `   r 0 S @ `p  H 0 0޽h ? ̙3n80___PPT10.8$ =  4$(  4r 4 S ܪ@  `   r 4 S @ `p  H 4 0޽h ? ̙3n80___PPT10.p$ =  8$(  8r 8 S L@  `   r 8 S  @ `p  H 8 0޽h ? ̙3n80___PPT10.>$ =  D$(  Dr D S h@  `   r D S  @ `p  H D 0޽h ? ̙3n80___PPT10. xd$ =  <$(  <r < S ,@  `   r < S @ `p  H < 0޽h ? ̙3n80___PPT10. )p$ =  @$(  @r @ S p@  `   r @ S 0@ `p  H @ 0޽h ? ̙3n80___PPT10.  A$ = $(  r  S @  `   r  S @ `p  H  0޽h ? ̙3n80___PPT10.0H =L0 0(  x  c $@  `   x  c $\@ `p  H  0޽h ? 3380___PPT10.Y$ =  H$(  Hr H S  @  `   r H S  @ `p  H H 0޽h ? ̙3n80___PPT10. $ =  L$(  Lr L S 4@  `   r L S @ `p  H L 0޽h ? ̙3n80___PPT10. V$ =  P$(  Pr P S !@  `   r P S "@ `p  H P 0޽h ? ̙3n80___PPT10.0$ = 0 T$(  Tr T S 0@  `   r T S 1@ `p  H T 0޽h ? ̙3n80___PPT10.By$ = @ X$(  Xr X S L6@  `   r X S  7@ `p  H X 0޽h ? ̙3n80___PPT10.@OE$ = P \$(  \r \ S F@  `   r \ S G@ `p  H \ 0޽h ? ̙3n80___PPT10.$ = ` `$(  `r ` S Q@  `   r ` S R@ `p  H ` 0޽h ? ̙3n80___PPT10.@+p$ = p d$(  dr d S ]@  `   r d S p^@ `p  H d 0޽h ? ̙3n80___PPT10.u$ =  h$(  hr h S  l@  `   r h S l@ `p  H h 0޽h ? ̙3n80___PPT10.P$ =  l$(  lr l S 4w@  `   r l S x@ `p  H l 0޽h ? ̙3n80___PPT10._$ =  p$(  pr p S @  `   r p S @ `p  H p 0޽h ? ̙3n80___PPT10. @J$ =  t$(  tr t S ܘ@  `   r t S @ `p  H t 0޽h ? ̙3n80___PPT10.m$ =  x$(  xr x S  @  `   r x S @ `p  H x 0޽h ? ̙3n80___PPT10.T>L0 @<(  ~  s *̬DP    ~  s *D P   H  0޽h ? 3380___PPT10.x$s$ = $(  r  S @  `   r  S `@ `p  H  0޽h ? ̙3n80___PPT10.@  =L0 $(  r  S m@  `  m r  S m@ `p m H  0޽h ? ̙3n___PPT10i. +D=' = @B +rD`cfegrDuw|6&vƓPf[ Y^^&(A+-6/124!9q;aB=@DGQIKMAPRTY1Wd3hbfiqs vVkO"? j`~Bf֌G8IyYxz|~ 5a=iEqߣ 7c??Gs'S/[ 7c?k?k  Gs# p.Zܵ`<hDp,X&0:D 5a ="i$4N pX $k&t)Oh+'0> px    (0PowerPoint PresentationPixelSimone Zanella238Microsoft PowerPoint@P0)S@@@K"GT=g  %  --$--'-q--$;;--s--$;;--w--$;;--z--$;;----$;;--̄--$;;--Ή--$;;--Ϗ--$;;--Җ--$; ; --՞--$ ; ; --ץ--$ ; ; --ڬ--$ ; ; --ݴ--$ ; ; ----$ ;; ----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$;;----$; ; ---'---$,,,-,-,----$--,.,.-----$..,/,/.----$//,0,0/-- --$00,2,20-- --$22,4,42----$44,6,64----$66,8,86----$88,;,;8----$;;,>,>;----$>>,B,B>----$BB,H,HB----$HH,K,KH----$KK,O,OK----$OO,S,SO--!--$SS,X,XS--#--$XX,^,^X--%--$^^,`,`^--'--$``,f,f`--)--$ff,j,jf--+--$jj,o,oj-----$oo,v,vo--/--$vv,|,|v--1--$||,,|--3--$,,--5--$,,--7--$,,--9--$,,--;--$,,--=--$,,--?--$,,--A--$,,--C--$,,--E--$,,--G--$,,--I--$,,--K--$,,--M--$,,--O--$,,--Q--$,,--S--$,,--U--$,,--W--$,,--Y--$,,--[--$,,--]--$,,--_--$,,--a--$, , --c--$  ,, --e--$,,--g--$,,--i--$,,--k--$,%,%--m--$%%,+,+%--o--$++,0,0+--q--$00,5,50--s--$55,;,;5--u--$;;,B,B;--w--$BB,F,FB--y--$FF,K,KF--{--$KK,Q,QK--}--$QQ,V,VQ----$VV,],]V----$]],c,c]----$cc,h,hc----$hh,n,nh----$nn,s,sn----$ss,z,zs----$zz,~,~z----$~~,,~----$,,----$,,----$,,----$,,----$,,----$,,--Û--$,,--Ý--$,,--ğ--$,,--ơ--$,,--ƣ--$,,--ȥ--$,,--ȧ--$,,--ʩ--$,,--˫--$,,--̭--$,,--ͯ--$,,--α--$,,--г--$,,--е--$,,--ҷ--$,,--ӹ--$, , --Ի--$  ,, --ս--$,,--ֿ--$,,----$,&,&----$&&,.,.&----$..,5,5.----$55,<,<5----$<<,D,D<----$DD,K,KD----$KK,W,WK----$WW,^,^W----$^^,e,e^----$ee,m,me----$mm,x,xm----$xx,,x----$,,----$,,----$,,----$,,----$,,----$,,----$,,----$,,----$,,----$,,----$,,----$, , ----$  ,, ----$,','----$'',:,:'----$::,I,I:----$II,_,_I----$__,},}_----$}},,}----$,,----$,,---'n--$,,;;,--'--$;;KK;--'--$;;KK;--'n--$------'--$--'--$,,,;,;,--'--$,;-;-,,--'@Arial-. 2 < Programma)"""33"."System-@Wingdings-.  2 <nr.-@Arial-. %2 bDatabase relazionali      .-@Wingdings-.  2 I<nr.-@Arial-. $2 IbArchitettura Oraclei   " .-@Wingdings-.  2 <nr.-@Arial-.  2 bSQL#.-@Wingdings-.  2 <nr.-@Arial-. 2 bPL/SQL #.-@Wingdings-.  2 <nr.-@Arial-. "2 bIntroduzione a EMC     % .-՜.+,D՜.+,    Presentazione su schermoc ArialTimes New Roman Wingdings Arial BlackPixel ProgrammaTesti di riferimentoParte 1OracleTabella Query SQL RelazioniTabelle di esempioNomi delle colonne datiNormalizzazione BibliotecaProblematiche1 Forma Normale Biblioteca2 Forma Normale Biblioteca3 Forma NormaleRicerca tra i datiRicerca tra i datiRicerca tra i datiNormalizzazioneAssegnare i nomiCodiciRisultato Query SQLComprensione dei compitiChiavi intelligenti RiepilogoParte 2 PanoramicaServer OracleInstallazioneIstanzaStrutture di memoriaSGASchemaRL BCDB BCShared Pool AreaShared Pool AreaShared Pool AreaShared Pool AreaPGA ProcessiDBWn Database WriterLGWR Log WriterCKPT ChekpointSMON System MonitorPMON Process MonitorARCn ArchiverRECO RecovererAltri processiTipi di processi File FisiciSchema TablespaceLa creazione del Database PFilePFilePFilePFilePFilePFileVariabili dambienteCreazione del DBData DictionaryViste di sistemaViste di sistemaVisteEsempi di visteUtentiRuoliSPFileSPFileSPFile Control File Control File Tablespace Tablespace Tablespace Tablespace VantaggiTablespace e DF TablespaceTemp TablespaceUndo TablespaceAlter TablespaceParte 3SQL SintassiTabelleTabella GIORNALEQuery Risultati DESCRIBESELECT ORDER BY ORDER BYDESCWHERELIKENULLQueryQueryVerifica di valoriLogica della combinazioneQueryPrecedenza operazioni Subquery Subquery SubqueryCombinazione di tabelleTabelle di esempioUnione dei risultati RisultatiViste Tipi di dati StringheFunzioni per stringheEsempio: LOWEREsempio: concatenazioneEsempio: RPADEsempio: LTrimLenght e SubstrFunzioni numericheGestione delle dateFunzioni per le dateConversione in dataConversione da dataFunzioni di conversioneRaggruppamento di righeEsempio Group ByEsempio HavingFunzioni combinate su gruppi Outer JoinEsempio: joinEsempio: outer joinEsempio: risultato Outer JoinGestione dei datiTabella di esempioInsertInsert e dateDeleteUpdateGestione delle tabelle Create tableChiaviEsempio: chiave candidataEsempio: chiave primariaEsempio: chiave primariaChiave esternaEsempio: chiave esternaEliminazione di tabelleModifica di tabelleEsempio: aggiunta colonneEsempio: modifica colonneEsempio: eliminazioneParte 4Sicurezza e accessoUtentiEsempio: nuovo utenteRuoli PrivilegiRevocaPrivilegi per tabelleAltri privilegiEsempio: privilegiRuoli personalizzatiIndiciIndici e chiaviTriggerTipi di triggerLivello di rigaLivello di istruzioneLivello di databaseAltri trigger SintassiEsempio: TriggerEsempio: Trigger before Procedure Procedure SintassiEsempio Esecuzione FunzioneEsempioPackage SintassiEsempio specificaEsempio Body 1/2Esempio Body 2/2InizializzazioneEsempio: inizializzazione Parte 5 EMCLICENZA Caratteri utilizzatiModello strutturaTitoli diapositiveD 4<Version&_,Simone ZanellaSimone Zanella  !"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bcdefghiklmnopqxRoot EntrydO)PicturesRCurrent UserjSummaryInformation(A>PowerPoint Document(*,DocumentSummaryInformation8a