• Non ci sono risultati.

$6"

<-:-3'5)$"%$102$'%*F1*"&"($'

Per Database si indicano tutti i file fisici in cui vengono memorizzati i dati. Ha il compito di controllare un’enorme quantità di dati in un ambiente multiutente, in modo da permettere l’accesso contemporaneo agli stessi dati da parte di più utenti provvedendo anche a fornire soluzioni efficienti per il recovery. Il database è formato da strutture di memorizzazione, logiche e fisiche. Le prime vengono utilizzate per immagazzinare, attraverso Tablespace, Block, Extent e Segment, e gestire (tabelle, indici, etc.) i dati, le seconde invece contengono le strutture fisiche (data file, redo log file, control file). I servizi offerti dalle strutture logiche del server sono indipendenti dalle strutture fisiche che le contengono, perché le strutture logiche possono essere progettate nello stesso modo, indipendentemente dall'hardware e dal sistema operativo impiegati.

Per Istanza si intendono l'insieme delle aree di memoria (System Global Area) e dei processi di background necessari ad accedere ai dati. Tali aree sono allocate nell'istanza Oracle ogni volta che viene fatta partire e rilasciate quando l’istanza viene terminata. Le aree di memoria di un server Oracle sono usate per contenere i dati, le informazioni del dizionario dei dati, i comandi SQL, il codice PL/SQL ecc. Ogni database deve obbligatoriamente fare riferimento almeno ad un'istanza. Le due maggiori strutture di memoria sono la System Global Area (SGA) e la Program Global Area (PGA). La PGA è un'area di memoria che contiene i dati di un singolo processo utente ed è allocata da Oracle quando un utente si collega al database e una sessione viene creata.

Un tablespace è una suddivisione logica del database, costituito fisicamente da uno o più files chiamati DATA-FILES (DF). Tutti gli oggetti del database vengono logicamente memorizzati in tablespace. Ogni database ha almeno un tablespace, il tablespace SYSTEM, che contiene il data dictionary. Altri tablespace possono essere creati e usati per differenti applicazioni o compiti o per semplificare e migliorare l’efficienza. Ad esempio si può creare un tablespace USERS di utilizzo generale e un tablespace UNDO per i segmenti di rollback. Un tablespace può appartenere ad un solo database.

La SGA è l'area di memoria assegnata all'avvio da Oracle, contiene le strutture della memoria per memorizzare i dati e controllare le informazioni. Gli utenti che si connetteranno al database condivideranno le informazioni nella stessa SGA. Le informazioni memorizzate nella System Global Area sono divise in diversi tipi di buffer: Database Buffer, Redo Log Buffer, Shared Pool,

Large Pool e Java Pool.

Redo log file, registrano tutte le modifiche occorse ai dati. Ogni DB possiede almeno due file di redo log, perché Oracle scrive in questi file in maniera circolare: quando un file di redo log è pieno allora Oracle scrive in quello successivo, quando l'ultimo file di redo log è pieno allora Oracle ricomincia dal primo, assicurandosi però di memorizzare le informazioni nei data file prima di sovrascriverle. Se una qualsiasi anomalia non permette la scrittura delle modifiche occorse al database nei rispettivi data file, allora possiamo tranquillamente ottenere tali modifiche dai redo log file. Le modifiche ai dati, pertanto, non sono mai perse. I redo log file rappresentano la cronologia delle modifiche ai dati e sono di vitale importanza per l'integrità del DB. Oracle permette di avere più di una copia per ciascun redo log file: questa importante caratteristica è denominata multiplexing dei redo log file.

Ogni database ha almeno un control file che contiene informazioni circa la struttura fisica del DB, ovvero il nome, la data e l'ora di creazione e il percorso completo di ciascun data file e redo log file. È di vitale importanza e si consiglia di configurarne più di una copia: anche in questo caso parleremo di multiplexing di control file.

$!" The shared pool è usata per memorizzare gli statement SQL recentemente utilizzati, questo consente ad un eventuale processo oracle, di reperire informazioni in maniera più veloce.

The database buffer è usata per memorizzare dati recentemente trattati. Tali dati sono letti e/o scritti nei data file (trattati successivamente).

Data and Library caches. Sono aree di cache utilizzate per contenere i dati in transito da e verso il database (data) e le istruzioni SQL e PL/SQL in esecuzione (library).

I processi di background, in una istanza oracle, eseguono funzioni comuni in relazione alla richiesta di un processo utente. Oltre ad effettuare tali richieste, i processi di background eseguono anche operazioni di input/output. Il numero ed il tipo di processi che vengono eseguiti dipendono dalla particolare configurazione di oracle, ma quelli elencati nel seguito sono sempre presenti.

• Database writer (DBW0) responsabile della scrittura dei dati dal database buffer (memoria) nei datafile (disco).

• Log writer (LGWR) responsabile della scrittura, degli eventi che si susseguono in una sessione di lavoro, dal log buffer (memoria) nel log file (disco).

• System monitor (SMON) responsabile del controllo della consistenza del database, se necessario inizia un recovery del database, quando esso è attivo.

• Process monitor (PMON) responsabile del rilascio delle risorse allocate da un eventuale processo utente fallito. In altri termini esso esegue le operazioni di “pulizia” deallocando le risorse inutilizzate.

• The checkpoint process (CKPT) responsabile dell’aggiornamento dello status del database, per quanto concerne i datafile, ogni volta che viene memorizzato permanentemente un record nel database (garantisce la sincronizzazione dei dati).

• The recoverer process (REC0) responsabile della risoluzione delle transazioni fallite in ambiente distribuito.

• The archiver process (ARC0) responsabile del salvataggio automatico delle copie dei redo log in un’area di memoria stabile specificata dall’amministratore del database. Tale processo risulta attivo se è impostata a “true” la proprietà di “log_archive”.

• The dispatcher process (D000) responsabile della gestione in termini di scheduling delle richieste utente.

• The lock process (LMS) responsabile della gestione dei lock sulle transazioni in ambiente distribuito.

Un processo listener è il processo che si occupa di gestire la comunicazione frai processi client e un’istanza oracle. Un processo listener è caratterizzato da un nome, del database oracle che serve e da una porta di ascolto. E’ possibile definire un processo listener per ogni oracle database, o, più listener sullo stesso database.

Un’ oracle database viene poi univocamente determinato, in ambito distribuito, da un nome o SID, dall’indirizzo IP o nome a dominio dell’host che la ospita e dalla porta di accesso su cui è in ascolto il processo listener. Tutte le impostazioni che determinano il funzionamento dell’ambiente runtime del database Oracle 10g sono contenute nel file init.ora che viene letto all’atto di avvio di un’istanza Oracle. In esso si ritrovano informazioni relative alla posizione su file system di tutti i file di sistema, le informazioni relative al dimensionamento della SGA e quelle relative alle funzionalità abilitate. Riassumendo quindi possiamo affermare che l’architettura oracle si compone di uno o più processi utente, che rappresentano gli utilizzatori finali del DB (utilizzatori umani o entità software), e di un processo server, il cui compito è quello di accettare richieste da parte dei processi utente, e smistare poi tali richieste all’istanza oracle e così via.

$#"

<-:-:''A"02$6$'#&2'1)*%&66*'#$'&6&%+,$*"&'#$'+"'$6()+,$*"&'8UB'

Nella parte seguente analizzeremo sommariamente come viene processata un’istruzione SQL dal server Oracle e come i processi e i buffer sono coinvolti.

• Si assuma che un utente (lavorando con SQL*Plus) esegua un’istruzione update nella tabella TAB in modo che più di una tupla venga interessata dall’aggiornamento. L’istruzione viene passata al server dal processo USER. Quindi il server (o più raramente il processore di query) controlla se l’istruzione è già contenuta nella library cache, in modo che le corrispondenti informazioni (albero di decodifica, piano di esecuzione) possano essere riutilizzate. Se l’istruzione non viene trovata, viene decodificata e dopo aver verificato l’istruzione (privilegi utente, tabelle e colonne interessate) utilizzando i dati dalla cache del data dictionary, viene generato un piano di esecuzione della query dall’ottimizzatore di query. Insieme all’albero di decodifica, questo piano viene memorizzato nella library cache.

• Per gli oggetti interessati dall’istruzione (in questo caso la tabella TAB) viene controllato se i corrispondenti blocchi di dati esistono nel buffer del database. In caso negativo, il processo USER legge i blocchi di dati dai files fisici al buffer del database. Se non c’è abbastanza spazio nel buffer, i blocchi di altri oggetti utilizzati meno recentemente vengono scritti su disco dal processo DBWR.

• Le modifiche delle tuple interessate dall’update avvengono nel buffer del database. Prima che i blocchi di dati vengano modificati, una “immagine” delle tuple viene scritta sui segmenti di rollback dal processo DBWR.

• Mentre il buffer redo-log viene riempito a causa delle modifiche ai blocchi, il processo LGWR scrive sui file di redo-log le voci presenti nel redo-log buffer.

• Dopo che tutte le tuple (o i corrispondenti blocchi di dati) sono state modificate nel buffer del database, le modifiche possono essere confermate dall’utente attraverso un comando commit.

• Finchè il comando commit non è stato inviato dall’utente, le modifiche possono essere annullate utilizzando il commando rollback. In questo caso, i blocchi modificati nel buffer del database vengono sovrascritti dai blocchi originali memorizzati nei segmenti di rollback. • Se l’utente invia un comando commit, lo spazio allocato per i blocchi nel segmento di

rollback può essere liberato e reso quindi disponibile per altre transazioni. Inoltre, i blocchi modificati nel buffer del database vengono sbloccati in modo che gli altri utenti possano ora leggere e modificare quei blocchi. La fine della transazione (più precisamente il commit) viene registrato nei files redo-log. I blocchi modificati vengono scritti su disco solo se si rende necessario altro spazio per altre transazioni.

/"/#7458+1#I>O%P>#M1C1+'B14Q#I>O%P>#

SQL è un linguaggio utilizzato per effettuare interrogazioni su database relazionali. Esso possiede caratteristiche complesse che consentono di estrapolare i dati in diverse forme in base alle nostre esigenze, tuttavia, essendo un linguaggio non procedurale, non è possibile interrogare i dati e al contempo eseguire operazioni su questi utilizzando esclusivamente il linguaggio SQL.!"#!$%&'())#! *&!+))'&,+-&#.&!*&!*+/+0+$1!2&,3&1*1!/&)&,+41./1!,#$/2(//&!*&!'&.5(+55&#!$&4&'&!+!6(1''&!

$$" $#.#! .1,1$$+2&! )12! ';&4)'141./+-&#.1! *&! ,#4)'1$$1! $/2(//(21! *&! *+/&! 1! +'5#2&/4&9! <.+! *1''1! 4+55&#2&! 21$/2&-&#.&! *1'! '&.5(+55&#! *&! *+/+0+$1! =:"! >! 6(1''+! *&! .#.! )#/12! ,#4)&121! *&%12$&! ,#4)&/&! ($+.*#! $#'#! 5'&! 1'141./&! ?#2.&/&! ,#.! 6(1$/#! '&.5(+55&#! @,31! >! $/+/#! )1.$+/#! 1$)21$$+41./1! )12! '1! ! &./122#5+-&#.&! *&! *+/+0+$1A9! B"C=:"! @B2#,1*(2+'! "+.5(+51! C=:"A! >! (.;1$/1.$&#.1! )2#,1*(2+'1! *1'';D2+,'1E=:"! ,31! #??21! ,#$/2(//&! *&! '&.5(+55&#! *1'! /(//#! $&4&'&! +! 6(1''&!*1&!'&.5(+55&!*&!)2#52+44+-&#.1!)12!1,,1''1.-+9 PL / SQL Developer è un ambiente di sviluppo integrato per lo sviluppo, il test, il debug e l’ottimizzazione per unità di programma memorizzato Oracle PL / SQL come i packages e trigger. Il programma dispone di guida sensibile al contesto e le descrizioni degli oggetti del database. Inoltre è incluso un completo debugger integrato, una multi-sessione o ambiente multi-threaded, un assistente di codice, un modello di libreria, una libreria macro, e una finestra di comando.!!

B"C=:"! )1241//1! +5'&! (/1./&! 1! +&! *1$&5.12! *&! $%&'())+21! ,#4)'1$$1! +))'&,+-&#.&! *&! *+/+0+$1! ,31!2&,3&1*#.#!';($#!*&!$/2(//(21!*&!,#./2#''#!1!1'141./&!)2#,1*(2+'&!,#41!)2#,1*(21F!?(.-&#.&! 1! 4#*('&9! G'! ,#$/2(//#! *&! 0+$1! &.! B"C=:"! >! &'! !"#$%& @0'#,,#A9! G! 0'#,,3&! )1241//#.#! +&! )2#52+44+/#2&! *&! ,#40&.+21! '#5&,+41./1! &! ,#4+.*&! =:"! &.! (.&/H9! G.! (.! 0'#,,#F! ,#$/+./&! 1! %+2&+0&'&! )#$$#.#! 1$$121! *&,3&+2+/1F! 1! '1! %+2&+0&'&! )#$$#.#! )#$$#.#! 1$$121! (/&'&--+/1! )12! 414#2&--+21!&!2&$('/+/&!*&!(.+!6(12I9!"1!&$/2(-&#.&!&.!(.!0'#,,#!B"C=:"!&.,'(*#.#!&$/2(-&#.&! =:"F!$/2(//(21!*&!,#./2#''#!@'##)AF!&$/2(-&#.&!*&!,#.*&-&#.1!@&?E/31.E1'$1AF!4+.&)#'+-&#.1!*1''1! 1,,1-&#.&! @,#./2#''#! 122#2&AF! 1! ,3&+4+/1! +*! +'/2&! 0'#,,3&! B"C=:"9! G! 0'#,,3&! B"C=:"! ,31! $)1,&?&,+.#! )2#,1*(21! 1! ?(.-&#.&! )#$$#.#! 1$$121! 2+552())+/&! &.! '($%()*+! @)+,,31//&A9! <.! )+,J+51!>!$&4&'1!+!(.!4#*('#!1!3+!(.;&./12?+,,&+!1!(.;&4)'141./+-&#.1!+!)+2/19!D2+,'1!#??21! *&%12$&! )+,J+51$! )21*1?&.&/&F! )12! 1$14)&#F! 2#(/&.1$! *&! &.)(/C#(/)(/F! 4+.&)#'+-&#.1! *&! ?&'1$F! )&+.&?&,+-&#.1!*&!K#0$F!1,,9!

!

<.;+'/2+! &4)#2/+./1! ,+2+//12&$/&,+! *&! B"C=:"! >! ,31! #??21! (.! 41,,+.&$4#! )12! )2#,1$$+21! &! 2&$('/+/&!*1''1!6(12I!&.!(.!4#*#!L#2&1./+/#!+''1!/()'1MF!&'!,31!%(#'!*&21F!(.+!/()'+!+''+!%#'/+9!N! 6(1$/#! $,#)#F! %1.5#.#! (/&'&--+/&! &! $,-+#-.9! <.! ,(2$#21! >! ?#.*+41./+'41./1! (.! )(./+/#21! +'! 2&$('/+/#!*&!(.+!6(12I!1*!>!&4)&15+/#!)12!'155121!&!%+'#2&!*15'&!+//2&0(/&!*1''1!/()'1!$1'1-&#.+/1F! &.$121.*#'&!&.!%+2&+0&'&9!<.!,(2$#21!>!/&)&,+41./1!($+/#!&.!,#40&.+-&#.1!,#.!(.!,#$/2(//#!'##)! /+'1! ,31! #5.&! /()'+! '1//+! *+'! ,(2$#21! )(O! 1$$121! )2#,1$$+/+! &.*&%&*(+'41./19! P&+$$(41.*#F! &! )&Q!&4)#2/+./&!#0&1//&%&!*1'!B"C=:"!$#.#R! ! • G.,2141./+21!'1!)#$$&0&'&/H!*1''1!1$)21$$&#.&!&.!=:"9! • B2#,1$$+21!&!2&$('/+/&!*1''1!6(12I!L#2&1./+.*#$&!+''1!/()'1M9! • D//&4&--+21!&!,#4+.*&!=:"!,#40&.+/&9! • =%&'())+21!+))'&,+-&#.&!4#*('+2&!)12!*+/+0+$19! • P&(/&'&--+21!&'!,#*&,1!*&!)2#52+44+9! • P&*(221!&!,#$/&!)12!'+!4+.(/1.-&#.1!1!'+!4#*&?&,+!*1''1!+))'&,+-&#.&9!

<-<-3'8()+((+)0'#&$'G2*%%;$'5BV8UB'

B"C=:"!>!(.!'&.5(+55&#!$/2(//(2+/#!&.!0'#,,3&9!D5.&!0'#,,#!,#$/&/(&$,1!(.+!*1.#4&.+/+!(.&/H!*&! )2#52+44+F!&.!)&Q!&!0'#,,3&!)#$$#.#!1$$121!.&*&?&,+/&9!G!0'#,,3&!,31!,#$/&/(&$,#.#!)2#,1*(21F! ?(.-&#.&!#!)+,J+51!*1%#.#!+%121!(.!.#419!<.!0'#,,#!B"C=:"!)(O!+%121!(.+!$1-&#.1!*&! *&,3&+2+-&#.1!#)-&#.+'1F!(.+!)+2/1!,#./1.1./1!&$/2(-&#.&!B"C=:"!1!(.+!)+2/1!#)-&#.+'&!)12!'+! 51$/&#.1!*1''1!1,,1-&#.&!@122#2&A9!:(&.*&!'+!$/2(//(2+!*&!(.!)2#52+44+!B"C=:"!+))+21!,#41! $15(1! @'1!)+21./1$&!ST!2+,,3&(*#.#!)+2/&!#)-&#.+'&AR! !

$%" SUV'#,J!W1+*12XT! ! S?18+541# !!!!!U7#$/+./&X! !!!!!UY+2&+0&'&X! !!!!!U7(2$#2&X! !!!!!UZ,,1-&#.&!*1?&.&/1!*+'';(/1./1XT! N1.-(# !!!!!UG$/2(-&#.&!B"C=:"X! ! S1R81B,-'(!U51$/&#.1!1,,1-&#.&XT! 1(?[!

";&./1$/+-&#.1! *1'! 0'#,,#! $)1,&?&,+! $1! >! (.+! )2#,1*(2+F! (.+! ?(.-&#.1F! #! (.! )+,J+519! =1! .#.! %&1.1! $)1,&?&,+/+! .1$$(.+! &./1$/+-&#.1F! &'! 0'#,,#! %&1.1! *1//#! (/#/.0#9! D5.&! 0'#,,#! B"C=:"! >! ,#$/&/(&/#!+.,#2+!*+!&$/2(-&#.&!B"C=:"9!:(&.*&!&'!0'#,,#!)(O!1$$121!.&*&?&,+/#!,#41!&!0'#,,3&! .1&! '&.5(+55&! *&! )2#52+44+-&#.1! ,'+$$&,&9! "#! $,#)#! *1''1! %+2&+0&'&! *&,3&+2+/1! @)12! 1$9F! .1''+! )+2/1!*&!)2#52+44+!.1'!6(+'1!$&!)(O!?+21!2&?12&41./#!+''+!%+2&+0&'1A!>!+.+'#5#!+''#!$,#)#!*1''1! %+2&+0&'&!.1&!'&.5(+55&!*&!)2#52+44+-&#.1!,#41!7!#!B+$,+'9!

M-8;-545A-'(-#

7#$/+./&F! %+2&+0&'&F! ,(2$#2&! 1*! 1,,1-&#.&! ($+/1! &.! (.! 0'#,,#! B"C=:"! *1%#.#! 1$$121! *&,3&+2+/&! .1''+! $1-&#.1! *&! *&,3&+2+-&#.1! *&! 6(1'! 0'#,,#9! Y+2&+0&'&! 1! ,#$/+./&! )#$$#.#! 1$$121! *&,3&+2+/1! ,#41!$15(1R! ! U.#41!%+2&+0&'1X!S8'),5(,T!U/&)#!*&!*+/&X!S(',#(*++T!S:= U1$)21$$&#.1XT[! ! \&)&!*&!*+/&!%+'&*&!$#.#!&!/&)&!*&!*+/&!=:"!1!&'!/&)#!N''+15(9!G'!/&)#!0##'1+.!)(O!1$$121!$#'+41./1! 1*-#F!2("+#&#!/,""9!"+!,'+($#'+!(',#(*++#2&,3&1*1!,31!'+!%+2&+0&'1!*&,3&+2+/+!*100+!$14)21!+%121! (.! %+'#21! *&%12$#! *+! /,""9! U1$)21$$&#.1X! >! ($+/+! )12! &.&-&+'&--+21! '+! %+2&+0&'19! =1! .#.! %&1.1! $)1,&?&,+/+!.1$$(.+!1$)21$$&#.1F!&'!%+'#21!/,""&%&1.1!+$$15.+/#!+(/#4+/&,+41./19!!

"+!,'+($#'+!8'(),5(,#&.*&,+! #

N'! )#$/#! *&! (.#! $)1,&?&,#! /&)#! *&! *+/&F! $&! )(O! ?+21! +.,31! 2&?12&41./#! +'! /&)#! *&! *+/#! *&! (.+! ,#'#..+! *&! /+01''+! @3.$4.(-(5.#/*& (/$#-(6(A9! B12! 1$14)&#F! EMP.Empno%TYPE $&! 2&?12&$,1! +'! /&)#!*&!*+/#!*1''+!,#'#..+!Empno .1''+!21'+-&#.1!EMP9!N'!)#$/#!*&!(.+!$&.5#'+!%+2&+0&'1F!)(O! 1$$121! *&,3&+2+/#! (.! 21,#2*! ,31! )(O! 414#2&--+21! (.+! /()'+! ,#4)'1/+! *&! (.+! *1/124&.+/+! /+01''+! @#! 2&$('/+/#! *&! 6(12IA9! B12! 1$14)&#F! &'! /&)#! *&! *+/&! DEPT%ROWTYPE $)1,&?&,+! (.+! 21,#2*! +*+//#! +! 414#2&--+21! /(//&! &! %+'#2&! *15'&! +//2&0(/&! *&! (.+! 2&5+! ,#4)'1/+! *+''+! /+01''+! DEPT9!\+'&!21,#2*!$#.#!/&)&,+41./1!($+/&!&.!,#40&.+-&#.1!,#.!(.!,(2$#219!=&!)(O!+,,1*121!+! (.!,+4)#!*&!(.!21,#2*!(/&'&--+.*#!'+!$&./+$$&!

U.#41! 21,#2*X.U.#41! ,#'#..+XF! )12! 1$14)&#F! DEPT.Deptno9! "+! *&,3&+2+-&#.1! *&! (.! ,(2$#21!$)1,&?&,+!(.!&.$&141!*&!/()'1!@,#41!2&$('/+/#!*&!(.+!6(12IA!&.!4#*#!

*&,3&+2+-&#.1!*&!(.!,(2$#21!3+!'+!$&./+$$&R!

$&" G.! B"C=:"! (.! )+2+41/2#! 3+! '+! ?#24+! U.#41! )+2+41/2#X! U/&)#! )+2+41/2#X9! G! )#$$&0&'&! )+2+41/2&! $#.#! 8;54F! C548;54&F! (*2N14F! ?5,1# 1! N''+15(# 1! /(//&! &! ,#22&$)#.*1./&! $#//#E/&)&! ,#41!-(,1.149!G!)+2+41/2&!$#.#!(/&'&--+/&!)12!+$$15.+21!%+'#2&!+''1!%+2&+0&'&!,31!$#.#!*+/1!&.! (.;&$/2(-&#.1!)1+18,9!

=1! '1! /()'1! $1'1-&#.+/1! *+'! ,(2$#21! *1%#.#! 1$$121! 4#*&?&,+/1! +'';&./12.#! *1'! 0'#,,#! B"C=:"F! *1%1!1$$121!+55&(./+!'+!,'+($#'+!@'4#*B?5,1#S@U,#'#..+@1AXAT!+''+!?&.1!*1''+!*&,3&+2+-&#.1!*1'! ,(2$#219! G.! 6(1$/#! ,+$#! '1! /()'1! %1.5#.#! 0'#,,+/1! 1! 5'&! +'/2&! (/1./&!.#.! %&! )#$$#.#! +,,1*121! ?&.,3]! .#.! >! $/+/#! 1$15(&/#! (.! ,#4+.*#! 8'22-,9! B2&4+! ,31! (.! ,(2$#21! *&,3&+2+/#! )#$$+! 1$$121!(/&'&--+/#!&.!&$/2(-&#.&!B"C=:"F!&'!,(2$#21!*1%1!1$$121!+)12/#F!1!*#)#!+%12!)2#,1$$+/#!'1! /()'1!$1'1-&#.+/1!&'!,(2$#21!*1%1!1$$121!,3&($#9!!

"1! 1,,1-&#.&! %1.5#.#! ($+/1! )12! )2#,1$$+21! 122#2&! 1! +%%&$&! ,31! $&! &.,#./2+.#! *(2+./1! ';1$1,(-&#.1!,#./2#''+/+!*1''1!&$/2(-&#.&!B"C=:"9!N',(.1!1,,1-&#.&!$#.#!*1?&.&/1!&./12.+41./1F! ,#41! ^ZPD_`GYG`Z! @*&%&$&#.1! )12! aA9! N'/21! 1,,1-&#.&! )#$$#.#! 1$$121! $)1,&?&,+/1! *+'';(/1./1! +''+! ?&.1! *&! (.! 0'#,,#! B"C=:"9! "1! 1,,1-&#.&! *1?&.&/1! *+'';(/1./1! *1%#.#! 1$$121! *&,3&+2+/1! ($+.*#!U.#41!1,,1-&#.1X!1R81B,-'(9!

<-<-:'@2&F&"($'#$'2$"E+0EE$*'

G.!+55&(./+!+''+!*&,3&+2+-&#.1!*1''1!%+2&+0&'&F!,#$/+./&!1!,(2$#2&F!B"C=:"!#??21!*&%12$&!,#$/2(//&! *&! '&.5(+55&#! ,#41! +$$15.+-&#.1! *&! %+2&+0&'&F! $/2(//(21! *&! ,#./2#''#! @'##)F! &?E/31.E1'$1AF! ,3&+4+/1!+!)2#,1*(21!1!?(.-&#.&F!1,,9!7#4(.6(1F!B"C=:"!.#.!,#.$1./1!';(/&'&--#!*&!,#4+.*&!*&! *1?&.&-&#.1! *+/&! =:"F! ,#41! ';&$/2(-&#.1! 8415,1# ,5N+19! B12! 6(1$/#F! B"C=:"! ?#2.&$,1! $)1,&+'&! )+,J+519! G.#'/21F! B"C=:"! ($+! (.;&$/2(-&#.1! )1+18,# 4#*&?&,+/+! ,31! 2&,3&1*1! ,31! #5.&! /()'+! $1'1-&#.+/+!$&+!+$$15.+/+!+!(.!21,#2*!@#!+!(.+!'&$/+!*&!%+2&+0&'&A9!7&!$#.#!*&%12$1!+'/12.+/&%1!&.! B"C=:"!)12!+$$15.+21!(.!%+'#21!+!(.+!%+2&+0&'19!G'!4#*#!)&Q!$14)'&,1!>R! # ?18+541# counter -(,1.14#:= a; b! N1.-(# counter := counter 8!c[! G!%+'#2&!*+!+$$15.+21!+!(.+!%+2&+0&'1!)#$$#.#!+.,31!1$$121!21,()12+/&!*+!(.!*+/+0+$1!($+.*#! (.;&$/2(-&#.1!)1+18,S# )1+18,#U,#'#..+@1AX!-(,'#U'&$/+!*&!%+2&+0&'&!,#22&$)#.*1./&X! @4'2#U/+01''+@1AX!T;141#U,#.*&-&#.1X; Z;!&4)#2/+./1!+$$&,(2+2$&!,31!';&$/2(-&#.1!)1+18,#21,()12&!+'41.#!(.+!/()'+d!N'/2&41./&!.#.!>! )#$$&0&'1! +$$15.+21! &! %+'#2&! *15'&! +//2&0(/&! +''+! '&$/+! *&! %+2&+0&'&! $)1,&?&,+/+F! ,31! ,+($12H! (.! 122#21! 2(./&419! =1! ';&$/2(-&#.1! 21,()12+! )&Q! *&! (.+! /()'+F! +''#2+! *1%1! 1$$121! (/&'&--+/#! (.! ,(2$#219!G.#'/21F!&'!/&)#!*&!*+/&!*1''1!%+2&+0&'&!$)1,&?&,+/1!*1%1!,#&.,&*121!,#.!6(1''#!*1&!%+'#2&! *15'&! +//2&0(/&! 21,()12+/&9! B12! 4#'/&! /&)&! *&! *+/&F! B"C=:"! 1$15(1! (.+! ,#.%12$&#.1! *1&! /&)&! +(/#4+/&,+! @)12! 1$14)&#F! *+! -(,1.14# +! 415+A9! N'! )#$/#! *&! (.+! $&.5#'+! '&$/+! *&! %+2&+0&'&F! )(O! 1$$121!*+/#!(.!21,#2*!*#)#!'+!)+2#'+!,3&+%1!-(,'9! N.,31!&.!6(1$/#!,+$#F!';&$/2(-&#.1!)1+18,#*1%1!21,()12+21!+'41.#!(.+!/()'+d! B"C=:"!?#2.&$,1!'##)!T;-+1F!*(1!/&)&!*&!'##)!@'4#1!'##)!,#./&.(&9!:(1$/&!('/&4&!$#.#!(/&'&--+/&!&.! ,#40&.+-&#.1!,#.!&!,(2$#2&9!\(//&!&!/&)&!*&!'##)!$#.#!(/&'&--+/&!&.!(.+!$16(1.-+!*&!&$/2(-&#.&!)&Q! %#'/19!"+!$)1,&?&,+-&#.1!*&!(.!'##)!+%%&1.1!.1''#!$/1$$#!4#*#!*1&!'&.5(+55&!*&!)2#52+44+-&#.1! ,#41!7!#!B+$,+'9!<.!'##)!e3&'1!3+!'+!?#24+! !

$'" SUU!U.#41!1/&,31//+X!XXT! T;-+1#U,#.*&-&#.1X!+''B# !!!!!U$16(1.-+!*&!&$/2(-&#.&X; 1(?#+''B#SU.#41!1/&,31//+XT; <.!'##)!)(O!+%121!(.!.#419!`+21!(.!.#41!+!(.!'##)!>!(/&'1!6(+.*#!&!'##)!$#.#!.&*&?&,+/&!1!&! )2&4&! %1.5#.#! ,#4)'1/+/&! &.,#.*&-&#.+/+41./1! (/&'&--+.*#! ';&$/2(-&#.1! 1R-,# U.#41! 1/&,31//+X9!f1./21!&'!.(412#!*&!&/12+-&#.&!*&!(.!'##)!T;-+1#>!$,#.#$,&(/#!?&.#!+'!4#41./#!&.! ,(&! &'! '##)! %&1.1! ,#4)'1/+/#F! &'! .(412#! *&! &/12+-&#.&! *&! (.! '##)! @'4# )(O! 1$$121! $)1,&?&,+/#! ($+.*#!*(1!&./12&9! ! SUU!U.#41!1/&,31//+X!XXT! @'4#U&.*&,1X!-(#S41C14)1T!U1$/214#!&.?12&#21X99U1$/214#!$()12&#21X!+''B# !!!!!U$16(1.-+!*&!&$/2(-&#.&X! 1(?#+''B#SU.#41!1/&,31//+XT; G'!,#./+/#21!*1'!'##)!U&.*&,1X!%&1.1!*&,3&+2+/#!&4)'&,&/+41./19!"#!$,#)#!*1'!,#./+/#21!*1'!'##)! >!$#'#!)12!&'!'##)!@'49!Z$$#!$#%2+$,2&%1!'#!$,#)#!*&!#5.&!%+2&+0&'1!,31!3+!'#!$/1$$#!.#41!+'!*&! ?(#2&!*1'!'##)9!N'';&./12.#!*1'!'##)!@'4F!U&.*&,1X!)(O!1$$121!(/&'&--+/#!,#41!2&?12&41./#!,#41! $1!?#$$1!(.+!,#$/+./19!U&.*&,1X!)(O!,#4)+2&21!&.!1$)21$$&#.&F!4+!.#.!5'&!)#$$#.#!1$$121!?+//1! +$$15.+-&#.&9!</&'&--+.*#!'+!)+2#'+!,3&+%1!41C14)1#$&!?+!&.!4#*#!,31!&'!)2#,1$$#!*&!&/12+-&#.1! )+2/+!*+'';1$/214#!$()12&#21!?&.#!+!6(1''#!&.?12&#21!.1'';&.$&141!$)1,&?&,+/#9! U+5N'45A-'(1# ?-# 8*4)'4-R! )2&4+! ,31! (.! ,(2$#21! )#$$+! 1$$121! ($+/#F! *1%1! 1$$121! +)12/#! (/&'&--+.*#!';&$/2(-&#.1!'B1(# 'B1(#U.#41!,(2$#21X!S@U'&$/+!*&!)+2+41/2&XAT;

";&$/2(-&#.1! )1+18,# +$$#,&+/+! %&1.1! 6(&.*&! )2#,1$$+/+! 1! &'! ,(2$#21! )(./+! +''+! )2&4+! /()'+! $1'1-&#.+/+9! "1! /()'1! $1'1-&#.+/1! )#$$#.#! 1$$121! )2#,1$$+/1! (.+! +''+! %#'/+! (/&'&--+.*#! &'! ,#4+.*#!@1,8;#

@1,8;#U.#41!,(2$#21X!S@U'&$/+!*&!%+2&+0&'&XAT;

G'! ,#4+.*#! @1,8;# +$$15.+! &! %+'#2&! *15'&! +//2&0(/&! $1'1-&#.+/&! *+''+! /()'+! ,#221./1! +''+! '&$/+! *&! %+2&+0&'&9! `#)#! (.! ,#4+.*#! @1,8;F! &'! ,(2$#21! +%+.-+! +''+! $(,,1$$&%+! /()'+! .1'';&.$&141! *1'! 2&$('/+/#!*1'';&$/2(-&#.1!)1+18,##//1.(/#!,#.!&'!,#4+.*#!'B1(9!

`+!.#/+21!,31!'1!%+2&+0&'&!.1''+!'&$/+!*1%#.#!+%121!'#!$/1$$#!/&)#!*&!*+/&!*1&!%+'#2&!*1''1!/()'1! $1'1-&#.+/19! `#)#! ,31! /(//1! '1! /()'1! $#.#! $/+/1! )2#,1$$+/1F! $&! (/&'&--+! &'! ,#4+.*#! 8+')1# )12! ,3&(*121!1!*&$+0&'&/+21!&'!,(2$#219! 8+')1#U.#41!,(2$#21X; D5.&!'##)!)(O!1$$121!,#4)'1/+/#!&.,#.*&-&#.+/+41./1!($+.*#!'+!,'+($#'+!1R-,R! 1R-,#SU1/&,31//+!0'#,,#XT!ST;1(#U,#.*&-&#.1XT[! <$+.*#!1R-,#$1.-+!(.;1/&,31//+!*&!0'#,,#!$&!)2#%#,+!&'!,#4)'1/+41./#!*1'!'##)!,31!,#./&1.1! ';&$/2(-&#.1!1R-,9!<.+!,#.*&-&#.1!)(O!1$$121!(.!$14)'&,1!)+2+5#.1!*&!%+'#2&9!G.!4#'/&!,+$&F! ,#4(.6(1F!'+!,#.*&-&#.1!?+!2&?12&41./#!+!(.!,(2$#219!g1'';1$14)&#!$#)2+, %NOTFOUND >!(.! )21*&,+/#!,31!21$/&/(&$,1!2("+*&$1!&'!,#4+.*#!@1,8;#)&Q!21,1./1!3+!'1//#!(.+!/()'+9!G'!%+'#21!*&!!! U.#41,(2$#21>%NOTFOUND >! /,""& )2&4+! ,31! '+! )2&4+! /()'+! %1.5+! '1//+9! G'! )21*&,+/#! 21$/&/(&$,1! 6-,*& $1! &'! ,#4+.*#! @1,8;# )&Q! 21,1./1! ?+''&$,1! .1'! 21$/&/(&21! (.+! /()'+F! .1'! ,+$#! ,#./2+2&#!21$/&/(&$,1!2("+*9!%FOUND >!';#))#$/#!'#5&,#!*&!%NOTFOUND9!

G!'##)!@'4#*&!,(2$#21!%1.5#.#!(/&'&--+/&!)12!$14)'&?&,+21!';(/&'&--#!*&!(.!,(2$#21R! !

$P" SUU!U.#41!1/&,31//+X!XXT!

####@'4#U.#41!21,#2*X!-(#U.#41!,(2$#21X!S@'&$/+!*&!)+2+41/2&XAT!+''B# U$16(1.-+!*&!&$/2(-&#.&X!

1(?#+''B;

<.! 21,#2*! (/&'&--+0&'1! )12! 414#2&--+21! (.+! /()'+! 21,()12+/+! *+! (.! ,(2$#21! %&1.1! &4)'&,&/+41./1! *&,3&+2+/#9! G.#'/21F! 6(1$/#! '##)! &4)'&,&/+41./1! 1$15(1! (.! @1,8;# +*! #5.&! &/12+-&#.1F!(.!'B1(#)2&4+!*1'';&.521$$#!.1'!'##)!1!(.!8+')1#*#)#!,31!&'!'##)!>!/124&.+/#9!=1!+*! (.;&/12+-&#.1!.1$$(.+!/()'+!%&1.1!21,()12+/+F!&'!'##)!%&1.1!+(/#4+/&,+41./1!/124&.+/#!$1.-+! (.!1R-,9!Z;!+.,31!)#$$&0&'1!$)1,&?&,+21!(.+!6(12I!+'!)#$/#!*&!U.#41!,(2$#21X!&.!(.!'##)!?#2R! ! @'4#U.#41!21,#2*X!-(#@U&$/2(-&#.1!$1'1,/XA!+''B# U$16(1.-+!*&!&$/2(-&#.&X! 1(?#+''B; `(.6(1F!(.!,(2$#21!.#.!*1%1!1$$121!$)1,&?&,+/#!)2&4+!*1'';&.521$$#!.1'!'##)F!4+!>!*1?&.&/#! .1'';&$/2(-&#.1!)1+18,9!! B12!&'!,#./2#''#!,#.*&-&#.+'1F!B"C=:"!#??21!,#$/2(//&!-@V,;1(V1+)1#.1''+!?#24+R! ! -@#U,#.*&-&#.1X!,;1(#U$16(1.-+!*&!&$/2(-&#.&X! !!!S1+)-@T!U,#.*&-&#.1X!,;1(#U$16(1.-+!*&!&$/2(-&#.&X! b! S1+)1T!U$16(1.-+!*&!&$/2(-&#.&X!1(?#-@;

B+2/1.*#! ,#.! '+! )2&4+! ,#.*&-&#.1F! $1! 2&$('/+! 6-,*F! '+! ,#22&$)#.*1./1! $16(1.-+! *&! &$/2(-&#.&! %&1.1!1$15(&/+F!+'/2&41./&!&'!,#./2#''#!%&1.1!)+$$+/#!+''+!$(,,1$$&%+!,#.*&-&#.19!:(&.*&F!6(1''#! ,31!$/+!*&1/2#!+!6(1$/#!/&)#!*&!&$/2(-&#.1!B"C=:"!>!*1'!/(//#!$&4&'1!+''1!&$/2(-&#.&!&?E/31.E1'$1! *1&! '&.5(+55&! *&! )2#52+44+-&#.1! ,'+$$&,&9! N*! 1,,1-&#.1! *1&! ,#4+.*&! *&! *1?&.&-&#.1! *1&! *+/&! ,#41! ,21+/1! /+0'1F! /(//&! &! /&)&! *&! &$/2(-&#.1! =:"! )(O! 1$$121! ($+/+! .1&! 0'#,,3&! B"C=:"F! &.! )+2/&,#'+21!*#'1/1F!&.$12/F!()*+/1!1!,#44&/9!`+!.#/+21!,31!&.!B"C=:"!$#'#!';&$/2(-&#.1!)1+18,# *1'!/&)#!)1+18,#U,#'#..+@1AX!-(,'#>!)1241$$+F!,&#>F!&!%+'#2&!*15'&!+//2&0(/&!$1'1-&#.+/&!)#$$#.#! $#'#! 1$$121! +$$15.+/&! +! %+2&+0&'&! @?&.,3>! ';&$/2(-&#.1! $1'1,/! %&1.1! (/&'&--+/+! &.! (.+! $(06(12IA9! ";(/&'&--#!*1'';&$/2(-&#.1!)1+18,#,#41!.1'';=:"!,+($+!(.!122#21!*&!$&./+$$&!@+7/6(8&*--#-A9!=1!'1! &$/2(-&#.&! *B?5,1# #! ?1+1,1# %1.5#.#! (/&'&--+/1! &.! ,#.,#4&/+.-+! ,#.! (.! ,(2$#21F! 6(1$/&! ,#4+.*&!)#$$#.#!1$$121!2&$/21//&!+''+!/()'+!+//(+'41./1!21,()12+/+9!!

'

<-<-<'J&6($*"&'@%%&,$*"$'

#

<.! 0'#,,#! B"C=:"! )(O! ,#./1.121! &$/2(-&#.&! ,31! $)1,&?&,+.#! 2#(/&.1$! *&! 51$/&#.1! *1''1! 1,,1-&#.&9!D5.&!122#21!#!+%%&$#!*(2+./1!';1$1,(-&#.1!*&!(.!0'#,,#!B"C=:"!,+($+!(.+!1,,1-&#.19! =&!)(O!*&$/&.5(121!/2+!*(1!/&)&!*&!1,,1-&#.&R!

Z,,1-&#.&! *1?&.&/1! *+'! $&$/14+9! Z,,1-&#.&! *1?&.&/1! *+'';(/1./1! @,31! *1%1! 1$$121! *&,3&+2+/+! *+'';(/1./1! .1''+! )+2/1! *&! *&,3&+2+-&#.1! *&! (.! 0'#,,#! *#%1! ';1,,1-&#.1! >! (/&'&--+/+C&4)'141./+/+A9! G'! $&$/14+! *1?&.&$,1! 1,,1-&#.&! ,31! %1.5#.#! +(/#4+/&,+41./1! +//&%+/1! 6(+.*#! &! ,#22&$)#.*1./&! 122#2&! #! +%%&$&! %1.5#.#! &.,#./2+/&9! "1! 1,,1-&#.&! *1?&.&/1!

$N" *+'';(/1./1F! ,#./2+2&+41./1F! *1%#.#! 1$$121! +//&%+/1! 1$)'&,&/+41./1! &.! (.+! $16(1.-+! *&! &$/2(-&#.&!(/&'&--+.*#!! 45-)1#U.#41!1,,1-&#.1X9!! `#)#!'+!)+2#'+!,3&+%1!1R81B,-'(#+''+!?&.1!*&!(.!0'#,,#F!'1!2#(/&.1$!*&!51$/&#.1!*1''1!1,,1-&#.&! *1?&.&/1!*+'';(/1./1!%1.5#.#!&4)'141./+/19!<.;&4)'141./+-&#.1!3+!'+!?#24+R! T;1(#U.#41!1,,1-&#.1X!,;1(#U$16(1.-+!*&!&$/2(-&#.&X; `#)#!(.+!)+2#'+!,3&+%1!T;1(#(.+!'&$/+!*&!.#4&!*&!1,,1-&#.&!@&4)'&,&/+41./1!,#..1$$1!,#.!(.! #)12+/#21!'4A!)(O!1$$121!$)1,&?&,+/+9!";('/&4+!,'+($#'+!T;1(#.1'';1,,1-&#.1!)(O!,#./1.121!&'! .#41!*&!1,,1-&#.1!',;14)9!:(1$/#!&./2#*(,1!'+!2#(/&.1!*&!51$/&#.1!*1''1!1,,1-&#.&!*&!*1?+('/F! )12!1$14)&#F!(.!4'++N58W9! =1!(.!)2#52+44+!B"C=:"!%&1.1!1$15(&/#!*+!(.+!$31''!=:"hB'($F!'1!2#(/&.1!*&!51$/&#.1!*1''1! 1,,1-&#.&!)#$$#.#!,#./1.121!&$/2(-&#.&!,31!%&$(+'&--+.#!';122#21!#!';+%%&$#!$(''#!$,3124#9!! N! 6(1$/#! $,#)#F! )(O! 1$$121! (/&'&--+/+! '+! )2#,1*(2+! 45-)1X5BB+-85,-'(X144'49! :(1$/+! )2#,1*(2+!3+!*(1!)+2+41/2&!U.(412#!122#21X!1!U41$$+55&#!122#21X9!U.(412#!122#21X!>!(.! .(412#! &./12#! .15+/&%#! *1?&.&/#! *+'';(/1./1! 1! *1%1! 1$$121! ,#4)21$#! /2+! Eiaaaa! 1! Eiajjj9! U41$$+55&#! 122#21X! >! (.+! $/2&.5+! ,#.! (.+! '(.531--+! ?&.#! +! iakl! ,+2+//12&9! ";#)12+/#21! *&! ,#.,+/1.+-&#.1!LmmM!)(O!1$$121!(/&'&--+/#!)12!,#.,+/1.+21!$&.5#'1!$/2&.531!&.!(.;(.&,+!$/2&.5+9! N''#! $,#)#! *&! %&$(+'&--+21! %+2&+0&'&! .(412&,31F! 6(1$/1! %+2&+0&'&! *1%#.#! 1$$121! ,#.%12/&/1! &.! $/2&.531!($+.*#!'+!?(.-&#.1!,'X8;549!=1!'+!)2#,1*(2+!45-)1X5BB+-85,-'(X144'4#%&1.1!,3&+4+/+! *+! (.! 0'#,,#! B"C=:"F! ';1'+0#2+-&#.1! *1'! 0'#,,#! /124&.+! 1! /(//1! '1! 4#*&?&,31! +&! *+/+0+$1! %1.5#.#!+..(''+/1F!,&#>F!%&1.1!1$15(&/#!(.!&4)'&,&/#!4'++N58W#&.!+55&(./+!+''+!%&$(+'&--+-&#.1! *1'!41$$+55&#!*&!122#219! ! 9+*0'.#:& -@#emp_sal*c9an!X!kaaa! ,;1(#45-)1X5BB+-85,-'(X144'4@EiaacaF;N(41./#!*&!$/&)1.*&#!)12!&4)&15+/#!&*!o! mm,'X8;54@emp_noAmm;!>!/2#))#!+'/#;A;

<-<-.'5)*%&#+)&'&'M+",$*"$'

#

B"C=:"! ?#2.&$,1! $#?&$/&,+/&! ,#$/2(//&! *&! '&.5(+55&#! )12! )2#52+44+21! )2#,1*(21! 1! ?(.-&#.&! ,#41! 0'#,,3&! B"C=:"! $1)+2+/&9! Z$$&! )#$$#.#! 1$$121! 2&,3&+4+/&! *+! +'/2&! 0'#,,3&! B"C=:"F! +'/21! )2#,1*(21!1!+'/21!?(.-&#.&9!"+!$&./+$$&!)12!'+!*1?&.&-&#.1!*&!(.+!)2#,1*(2+!>! 8415,1#S'4#41B+581T!B4'81?*41#U.#41!)2#,1*(2+X!S@U'&$/+!*&!)+2+41/2&XAT!-)# U*&,3&+2+-&#.1X! N1.-(# U$16(1.-+!*&!&$/2(-&#.&X! S1R81B,-'(# U2#(/&.1!*&!51$/&#.1!*1'';1,,1-&#.1XT! 1(?#SU.#41!)2#,1*(2+XT; <.+!?(.-&#.1!)(O!1$$121!$)1,&?&,+/+!&.!4#*#!+.+'#5#! 8415,1#S'4#41B+581T!@*(8,-'(#U.#41!?(.-&#.1X!S@U'&$/+!*&!)+2+41/2&XAT! 41,*4(#U/&)#!*&!*+/&X!-)# b! ! !

$+" "+!,'+($#'+!#)-&#.+'1!'4#41B+581#2&E,21+!'+!)2#,1*(2+C?(.-&#.19!<.+!)2#,1*(2+!)(O!1$$121! ,+.,1''+/+! (/&'&--+.*#! &'! ,#4+.*#! ?4'B# B4'81?*41# U.#41! )2#,1*(2+X! @?4'B# @*(8,-'(#### U.#41?(.-&#.1XA9!

7#./2+2&+41./1!+&!0'#,,3&!B"C=:"!+.#.&4&F!'+!,'+($#'+!?18+541#.#.!)(O!1$$121!($+/+!.1''+! *1?&.&-&#.1!*&!)2#,1*(21C?(.-&#.&9!

G! /&)&! *&! *+/&! %+'&*&! &.,'(*#.#! /(//&! &! /&)&! *&! *+/&9! 7#4(.6(1F! )12! 8;54F! C548;54&# 1! (*2N14# $1.-+!'(.531--+!1!)21,&$&#.1C$,+'+F!2&$)1//&%+41./1F!)#$$#.#!1$$121!$)1,&?&,+/&9!N'!)#$/#!*&! 1$)'&,&/&!/&)&!*&!*+/&F!&4)'&,&/&!/&)&!.1''+!?#24+!%TYPE 1!%ROWTYPE )#$$#.#!1$$121!(/&'&--+/&! +.,31!$1!%&1.1!?+//#!2&?12&41./#!+!*&,3&+2+-&#.&!,#.!%&.,#'&9!<.!)+2+41/2#!>!$)1,&?&,+/#!,#41! $15(1R!

U.#41!)+2+41/2#X!SIN m!OUT m!IN OUTT!U/&)#!*&!*+/#X!S{:= m!DEFAULT} U1$)21$$&#.1XT! "+!,'+($#'+!#)-&#.+'1!INF!OUTF!1!IN OUT $)1,&?&,+!&'!4#*#!.1'!6(+'1!&'!)+2+41/2#!>!(/&'&--+/#9! G'!4#*#!*&!*1?+('/!*&!(/&'&--#!*&!(.!)+2+41/2#!>!IN9!IN $&5.&?&,+!,31!+'!)+2+41/2#!$&!)(O!?+21! 2&?12&41./#! +'';&./12.#! *1'! ,#2)#! *1''+! )2#,1*(2+F! 4+! .#.! )(O! 1$$121! 4#*&?&,+/#9! OUT $&5.&?&,+!,31!(.!%+'#21!)(O!1$$121!+$$15.+/#!+'!)+2+41/2#!.1'!,#2)#!*1''+!)2#,1*(2+F!4+!.#.! $&! )(O! ?+21! 2&?12&41./#! +'! %+'#21! *1'! )+2+41/2#9!IN OUT )1241//1!$&+!*&!?+2!2&?12&41./#!+'! )+2+41/2#!,31!';+$$15.+-&#.1!*&!%+'#2&!+!6(1$/;('/&4#9!\&)&,+41./1F!>!$(??&,&1./1!($+21!&'!4#*#! *&!*1?+('/!*1&!)+2+41/2&9!

!

<-<->'50%W0E&6'

#

Z;! 1$$1.-&+'1! )12! (.! 0(#.! $/&'1! *&! )2#52+44+-&#.1! ,31! &! 0'#,,3&F! )2#,1*(21! 1! ?(.-&#.&! '#5&,+41./1!,#221'+/&!%1.5+.#!,#40&.+/&!&.!4#*('&F!1!,31!#5.&!4#*('#!?#2.&$,+!(.;&./12?+,,&+! ,31! )1241//+! +5'&! (/1./&! 1! $%&'())+/#2&! *&! (/&'&--+2.1! '1! ?(.-&#.+'&/H9! B"C=:"! $())#2/+! &'! ,#.,1//#! *&! 4#*('+2&--+-&#.1! 52+-&1! +'! 6(+'1! &! 4#*('&! 1! +'/2&! ,#$/2(//&! )#$$#.#! 1$$121! #25+.&--+/&!&.!'($%()*+9!<.!)+,J+51!>!,#$/&/(&/#!*+!(.+!*&,3&+2+-&#.1!*&!)+,J+51!1!*+!(.!,#2)#! *&!)+,J+519!"+!*&,3&+2+-&#.1!*1'!)+,J+51!*1?&.&$,1!';&./12?+,,&+!,31!>!%&$&0&'1!+&!)2#52+44+/#2&! *&! +))'&,+-&#.1F! 1! &'! ,#2)#! *1'! )+,J+51! &4)'141./+! '+! *&,3&+2+-&#.1! *1'! )+,J+51! @$&4&'1! +'';31+*12! 1! $#(2,1! ?&'1$! .1'! '&.5(+55&#! *&! )2#52+44+-&#.1! 7A9! <.+! )2#,1*(2+! #! ?(.-&#.1! &4)'141./+/+!&.!(.!)+,J+51!)(O!1$$121!2&,3&+4+/+!*+!+'/21!)2#,1*(21!1!?(.-&#.&!(/&'&--+.*#! ';&$/2(-&#.1!U.#41!)+,J+51X.U.#41!)2#,1*(2+XS@U'&$/+!*&!)+2+41/2&XAT9!

/"6##7458+1#:'42)#Y*-+?14#

Oracle Forms è un prodotto software per la creazione, la messa in rete e l’esecuzione di “maschere” che interagiscono con un database Oracle. La creazione avviene utilizzando un IDE Forms Builder che fa parte della suite di applicazioni correlate Forms Developer (10gRel.2). La suite, a sua volta, è uno dei componenti dell’Oracle Fusion Middleware Forms Services (App. Server + servizi associati). Questi componenti forniscono in definitiva un completo framework per lo sviluppo rapido di applicazioni (RAD) web-deployed e database-oriented. In particolare, gli aspetti caratteristici dell’ambiente di sviluppo sono:

• Dichiaratività • Metadata* driven

• Event handling programming (triggers)

%6" • Aspetto caratteristico dell’ambiente di esecuzione:

• Event driven execution

%!"

/"9#7458+1#=1B'4,#Y*-+?14#

Report Builder è il report-building componente di Oracle Reports Developer ( un componente della Oracle Developer Suite), un potente strumento di reportistica enterprise che consente di sviluppare e implementare rapidamente sofisticati report Web e di carta da qualsiasi fonte di dati (tra cui un database Oracle, JDBC, XML, file di testo, e Oracle OLAP). Sfruttando le ultime tecnologie J2EE come JSP e XML, è possibile pubblicare i report in diversi formati (tra cui HTML, XML, PDF, testo delimitato, PostScript, PCL, e RTF) a qualsiasi destinazione (compresi e-mail, browser Web, OracleAS Portal, e il file system) in una soluzione scalabile, efficiente.

Riconoscere le differenze tra la pubblicazione Web e pubblicazioni cartacee, Report Builder offre la possibilità di sviluppare le produzioni di alta qualità per i requisiti di Web e e-business, così come alta fedeltà report stampati. Report Builder comprende:

• Procedura guidata user-friendly, che guida l’utente attraverso il processo di progettazione dei reports.

• Fonti di dati pluggabile PDSs, come JDBC e XML, che consentono di accedere ai dati da qualsiasi fonte per i reports.

Documenti correlati