Expert PL/SQL practices for Oracle developers and DBAs 9781430234852, 1430234857

Expert PL/SQL Practices is a book of collected wisdom on PL/SQL programming from some of the best and the brightest in t

812 119 6MB

English Pages 490 [507] Year 2011

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Expert PL/SQL practices for Oracle developers and DBAs
 9781430234852, 1430234857

Citation preview

%XPERT0,31,0RACTICES FOR/RACLE$EVELOPERSAND$"!S







■■■ *OHN"ERESNIEWICZ !DRIAN"ILLINGTON -ARTIN"àCHI -ELANIE#AFFREY 2ON#RISCO ,EWIS#UNNINGHAM $OMINIC$ELMOLINO 3UE(ARPER 4ORBEN(OLM #ONNOR-C$ONALD !RUP.ANDA 3TEPHAN0ETIT -ICHAEL2OSENBLUM 2OBYN3ANDS 2IYAJ3HAMSUDEEN



%XPERT0,31,0RACTICESFOR/RACLE$EVELOPERSAND$"!S #OPYRIGHTÚBY*OHN"ERESNIEWICZ !DRIAN"ILLINGTON -ARTIN"ÓCHI -ELANIE#AFFREY 2ON#RISCO ,EWIS#UNNINGHAM $OMINIC$ELMOLINO 3UE(ARPER 4ORBEN(OLM #ONNOR-C$ONALD !RUP.ANDA 3TEPHAN0ETIT -ICHAEL2OSENBLUM 2OBYN3ANDS 2IYAJ3HAMSUDEEN !LLRIGHTSRESERVED.OPARTOFTHISWORKMAYBEREPRODUCEDORTRANSMITTEDINANYFORMORBYANYMEANS ELECTRONICORMECHANICAL INCLUDINGPHOTOCOPYING RECORDING ORBYANYINFORMATIONSTORAGEORRETRIEVAL SYSTEM WITHOUTTHEPRIORWRITTENPERMISSIONOFTHECOPYRIGHTOWNERANDTHEPUBLISHER )3".     )3".     (eBook) 4RADEMARKEDNAMES LOGOS ANDIMAGESMAYAPPEARINTHISBOOK2ATHERTHANUSEATRADEMARKSYMBOL WITHEVERYOCCURRENCEOFATRADEMARKEDNAME LOGO ORIMAGEWEUSETHENAMES LOGOS ANDIMAGESONLY INANEDITORIALFASHIONANDTOTHEBENEFITOFTHETRADEMARKOWNER WITHNOINTENTIONOFINFRINGEMENTOF THETRADEMARK 4HEUSEINTHISPUBLICATIONOFTRADENAMES TRADEMARKS SERVICEMARKS ANDSIMILARTERMS EVENIFTHEYARE NOTIDENTIFIEDASSUCH ISNOTTOBETAKENASANEXPRESSIONOFOPINIONASTOWHETHERORNOTTHEYARESUBJECT TOPROPRIETARYRIGHTS 0RESIDENTAND0UBLISHER0AUL-ANNING ,EAD%DITOR*ONATHAN'ENNICK 4ECHNICAL2EVIEWERS#HRIS"ECK -IKE'ANGLER 4OON+OPPELAARS %DITORIAL"OARD3TEVE!NGLIN -ARK"ECKNER %WAN"UCKINGHAM 'ARY#ORNELL *ONATHAN'ENNICK *ONATHAN(ASSELL -ICHELLE,OWMAN *AMES-ARKHAM -ATTHEW-OODIE *EFF/LSON *EFFREY 0EPPER &RANK0OHLMANN $OUGLAS0UNDICK "EN2ENOW #LARKE $OMINIC3HAKESHAFT -ATT 7ADE 4OM7ELSH #OORDINATING%DITOR#ORBIN#OLLINS #OPY%DITOR-ARY"EHR 0RODUCTION3UPPORT0ATRICK#UNNINGHAM )NDEXER30)'LOBAL !RTIST!PRIL-ILNE #OVER$ESIGNER!NNA)SHCHENKO $ISTRIBUTEDTOTHEBOOKTRADEWORLDWIDEBY3PRINGER3CIENCE "USINESS-EDIA ,,# 3PRING3TREET TH&LOOR .EW9ORK .90HONE  302).'%2 FAX   E MAIL ^aSTab]h/b_aX]VTabQ\R^\ ORVISITfffb_aX]VTa^][X]TR^\ &ORINFORMATIONONTRANSLATIONS PLEASEE MAILaXVWcb/P_aTbbR^\ ORVISITfffP_aTbbR^\ !PRESSANDFRIENDSOF%$BOOKSMAYBEPURCHASEDINBULKFORACADEMIC CORPORATE ORPROMOTIONALUSE E"OOKVERSIONSANDLICENSESAREALSOAVAILABLEFORMOSTTITLES&ORMOREINFORMATION REFERENCEOUR 3PECIAL"ULK3ALESnE"OOK,ICENSINGWEBPAGEATfffP_aTbbR^\Qd[ZbP[Tb 4HEINFORMATIONINTHISBOOKISDISTRIBUTEDONANhASISvBASIS WITHOUTWARRANTY!LTHOUGHEVERY PRECAUTIONHASBEENTAKENINTHEPREPARATIONOFTHISWORK NEITHERTHEAUTHORS NOR!PRESSSHALLHAVE ANYLIABILITYTOANYPERSONORENTITYWITHRESPECTTOANYLOSSORDAMAGECAUSEDORALLEGEDTOBECAUSED DIRECTLYORINDIRECTLYBYTHEINFORMATIONCONTAINEDINTHISWORK



Contents at a Glance !BOUTTHE!UTHORSXVII !BOUTTHE4ECHNICAL2EVIEWERSXX )NTRODUCTIONXXI ■#HAPTER$O.OT5SE ■#HAPTER$YNAMIC31,(ANDLINGTHE5NKNOWN ■#HAPTER0,31,AND0ARALLEL0ROCESSING ■#HAPTER7ARNINGSAND#ONDITIONAL#OMPILATION ■#HAPTER0,31,5NIT4ESTING ■#HAPTER"ULK31,/PERATIONS ■#HAPTER+NOW9OUR#ODE ■#HAPTER#ONTRACT /RIENTED0ROGRAMMING ■#HAPTER0,31,FROM31, ■#HAPTER#HOOSINGTHE2IGHT#URSOR ■#HAPTER0,31,0ROGRAMMINGINTHE,ARGE ■#HAPTER%VOLUTIONARY$ATA-ODELING ■#HAPTER0ROFILINGFOR0ERFORMANCE ■#HAPTER#ODING#ONVENTIONSAND%RROR(ANDLING ■#HAPTER$EPENDENCIESAND)NVALIDATIONS )NDEX

III



Contents !BOUTTHE!UTHORSXVII !BOUTTHE4ECHNICAL2EVIEWERSXX )NTRODUCTIONXXI ■#HAPTER$O.OT5SE 2OW BY 2OW0ROCESSING .ESTED2OW BY 2OW0ROCESSING ,OOKUP1UERIES %XCESSIVE!CCESSTO$5!, !RITHMETICSWITH$ATE !CCESSTO3EQUENCES 0OPULATING-ASTER $ETAIL2OWS

%XCESSIVE&UNCTION#ALLS 5NNECESSARY&UNCTION%XECUTION #OSTLY&UNCTION#ALLS

$ATABASE,INK#ALLS %XCESSIVE5SEOF4RIGGERS %XCESSIVE#OMMITS %XCESSIVE0ARSING 3UMMARY

IV

■ #/.4%.43

■#HAPTER$YNAMIC31,(ANDLINGTHE5NKNOWN 4HE(ERO .ATIVE$YNAMIC31, $YNAMIC#URSORS $"-3?31,

3AMPLEOF$YNAMIC4HINKING 3ECURITY)SSUES 0ERFORMANCEAND2ESOURCE5TILIZATION !NTI 0ATTERNS #OMPARING)MPLEMENTATIONSOF$YNAMIC31,

/BJECT$EPENDENCIES .EGATIVE%FFECTS 0OSITIVE%FFECTS

3UMMARY ■#HAPTER0,31,AND0ARALLEL0ROCESSING 7HY0ARALLEL0ROCESSING ,AWS!FFECTING0ARALLEL0ROCESSING 4HE2ISEOF"IG$ATA 0ARALLELVS$ISTRIBUTED0ROCESSING 0ARALLEL(ARDWARE!RCHITECTURES )DENTIFY9OUR'OALS 3PEEDUP 3CALING5P $EGREEOF0ARALLELISM

#ANDIDATE7ORKLOADSFOR0ARALLEL0ROCESSING 0ARALLELISMAND/,40 0ARALLELISMAND.ON /,407ORKLOADS

V

■ #/.4%.43

4HE-AP2EDUCE0ROGRAMMING-ODEL "EFORE,OOKINGTO0,31, 0ROCESSES!VAILABLEFOR0ARALLEL!CTIVITIES 5SING0ARALLEL%XECUTION3ERVERSFOR-AP2EDUCE 0IPELINED4ABLE&UNCTIONS 'UIDANCE 0ARALLEL0IPELINED4ABLE&UNCTIONS3UMMARY

3UMMARY ■#HAPTER7ARNINGSAND#ONDITIONAL#OMPILATION 0,31,7ARNINGS "ASICS 5SING7ARNINGS 0ROMOTING7ARNINGSTO%RRORS )GNORING7ARNINGS #OMPILATIONAND7ARNINGS &INAL7ORDSON7ARNINGS

#ONDITIONAL#OMPILATION "ASICS 7HAT0ARTOFTHE#ODEIS2UNNING "ENEFITSOF0REPROCESSING#ODE )NVALIDATIONS #ONTROLLING#OMPILATION )NQUIRY6ARIABLES &INAL7ORDSON#ONDITIONAL#OMPILATION

3UMMARY

VI

■ #/.4%.43

■#HAPTER0,31,5NIT4ESTING 7HY4EST9OUR#ODE 7HAT)S5NIT4ESTING $EBUGGINGOR4ESTING 7HEN3HOULD9OU"UILD4ESTS

4OOLSFOR"UILDING5NIT4ESTS UT0,31,7ORKINGWITH#OMMAND,INE#ODE 1UEST#ODE4ESTERFOR/RACLE /RACLE31,$EVELOPER

0REPARINGAND-AINTAININGTHE5NIT4EST%NVIRONMENT #REATINGTHE5NIT4EST2EPOSITORY -AINTAININGTHE5NIT4EST2EPOSITORY )MPORTING4ESTS

"UILDING5NIT4ESTS 5SINGTHE5NIT4EST7IZARD #REATINGTHE&IRST)MPLEMENTATION !DDING3TARTUPAND4EARDOWN0ROCESSES #OLLECTING#ODE#OVERAGE3TATISTICS 3PECIFYING0ARAMETERS !DDING0ROCESS6ALIDATION 3AVING4ESTS $EBUGGINGAND2UNNING4ESTS

"ROADENINGTHE3COPEOFTHE4ESTS #REATING,OOKUP6ALUES 3EEDING4EST)MPLEMENTATIONS #REATINGA$YNAMIC1UERY

VII

■ #/.4%.43

3UPPORTING5NIT4EST&EATURES 2UNNING2EPORTS #REATINGA,IBRARYOF#OMPONENTS %XPORTING )MPORTING AND3YNCHRONIZING4ESTS "UILDING3UITES

2UNNING4ESTSFROMTHE#OMMAND,INE 3UMMARY ■#HAPTER"ULK31,/PERATIONS 4HE(ARDWARE3TORE 3ETTINGFORTHE%XAMPLESINTHIS#HAPTER "ULK/PERATIONSIN0,31, 'ETTING3TARTEDWITH"5,+&ETCH 4HREE#OLLECTION 3TYLE$ATATYPES 7HYSHOULD)BOTHER -ONITORING"ULK#OLLECT/VERHEADS 2EFACTORING#ODETO5SE"ULK#OLLECT

"ULK"INDING 'ETTING3TARTEDWITH"ULK"IND -EASURING"ULK"INDING0ERFORMANCE -ONITORING-EMORY5SAGE )MPROVEMENTSING

%RROR(ANDLINGWITH"ULK"IND 3!6%%8#%04)/.3WITH"ATCHES ,/'%22/23#LAUSE 2OBUST"ULK"IND

!*USTIFICATIONFOR-ASSIVE#OLLECTIONS 4HE2EAL"ENEFIT#LIENT"ULK0ROCESSING 3UMMARY

VIII

■ #/.4%.43

■#HAPTER+NOW9OUR#ODE 7HAT4HIS#HAPTER7ILLAND7ILL.OT #OVER !UTOMATED#ODE!NALYSIS 3TATIC!NALYSIS $YNAMIC!NALYSIS

7HENTO!NALYZE 0ERFORMING3TATIC!NALYSIS 4HE$ATA$ICTIONARY 0,3#/0%

0ERFORMING$YNAMIC!NALYSIS $"-3?02/&),%2AND$"-3?42!#% $"-3?(02/&

3UMMARY ■#HAPTER#ONTRACT /RIENTED0ROGRAMMING $ESIGNBY#ONTRACT 3OFTWARE#ONTRACTS "ASIC#ONTRACT%LEMENTS !SSERTIONS 2EFERENCES

)MPLEMENTING0,31,#ONTRACTS "ASIC!33%240ROCEDURE 3TANDARD0ACKAGE ,OCAL!33%24 %NFORCING#ONTRACTS5SING!33%24 !N!DDITIONAL)MPROVEMENT #ONTRACT /RIENTED&UNCTION0ROTOTYPE

%XAMPLE4ESTING/DDAND%VEN)NTEGERS

IX

■ #/.4%.43

5SEFUL#ONTRACT0ATTERNS .OT .5,,)..OT .5,,/54 &5.#4)/.2%452..OT .5,, &5.#4)/.2%452."//,%!..OT .5,, #HECK&UNCTIONS2%452.425%/2!33%24&!),

0RINCIPLES&OR"UG &REE#ODE !SSERT0RECONDITIONS2IGOROUSLY -ODULARIZE2UTHLESSLY !DOPT&UNCTION "ASED)NTERFACES #RASHON!33%24&!), 2EGRESSION4EST9OUR0OSTCONDITIONS !VOID#ORRECTNESS 0ERFORMANCE4RADEOFFS /RACLEG/PTIMIZED#OMPILATION

3UMMARY ■#HAPTER0,31,FROM31, 4HE#OSTOF5SING0,31,&UNCTIONSIN31, #ONTEXT 3WITCHING %XECUTIONS 3UBOPTIMAL$ATA!CCESS /PTIMIZER$IFFICULTIES 4HE2EAD #ONSISTENCY4RAP /THER)SSUES

2EDUCINGTHE#OSTOF0,31,&UNCTIONS !3ENSEOF0ERSPECTIVE 5SING31,!LTERNATIVES 2EDUCING%XECUTIONS

X

■ #/.4%.43

!SSISTINGTHE#"/ 4UNING0,31,

3UMMARY ■#HAPTER#HOOSINGTHE2IGHT#URSOR %XPLICIT#URSORS 4HE!NATOMYOFAN%XPLICIT#URSOR %XPLICIT#URSORSAND"ULK0ROCESSING 2%&#URSORSIN"RIEF

)MPLICIT#URSORS 4HE!NATOMYOFAN)MPLICIT#URSOR 4HE)MPLICIT#URSORANDTHE%XTRA&ETCH4HEORY

3TATIC2%&#URSORS #URSOR6ARIABLE2ESTRICTIONS,AUNDRY,IST 9OUR#LIENTAND2%&#URSORS !&EW7ORDSABOUT0ARSING

$YNAMIC2%&#URSORS %XAMPLEAND"EST5SE 4HE4HREATOF31,)NJECTION $ESCRIBING2%&#URSOR#OLUMNS

3UMMARY ■#HAPTER0,31,0ROGRAMMINGINTHE,ARGE 4HE$ATABASEAS0,31, "ASED!PPLICATION3ERVER #ASE3TUDY4HE!VALOQ"ANKING3YSTEM 3TRENGTHSOF"USINESS,OGICINTHE$ATABASEWITH0,31, ,IMITSOFTHE$ATABASEAS0,31, "ASED!PPLICATION3ERVER 3OFT&ACTORS

2EQUIREMENTSOF0ROGRAMMINGINTHE,ARGE

XI

■ #/.4%.43

5NIFORMITYTHROUGH#ONVENTIONS !BBREVIATIONS 0RE AND3UFFIXESFOR0,31,)DENTIFIERS

-ODULARIZATIONOF#ODEAND$ATA 0ACKAGESAND!SSOCIATED4ABLESAS-ODULES -ODULES#ONTAINING-ULTIPLE0ACKAGESOR3UBMODULES 3CHEMASAS-ODULES -ODULARIZATIONWITHIN3CHEMAS -ODULARIZATIONWITH3CHEMASVSWITHIN3CHEMAS

/BJECT /RIENTED0ROGRAMMINGWITH0,31, /BJECT /RIENTED0ROGRAMMINGWITH5SER $EFINED4YPES /BJECT /RIENTED0ROGRAMMINGWITH0,31,2ECORDS !SSESSMENT

-EMORY-ANAGEMENT -EASURING-EMORY5SAGE #OLLECTIONS

3UMMARY ■#HAPTER%VOLUTIONARY$ATA-ODELING ,ESSONSFROM4WO$ECADESOF3YSTEM$EVELOPMENT 4HE$ATABASEAND!GILE$EVELOPMENT %VOLUTIONARY$ATA-ODELING 2EFACTORINGTHE$ATABASE #REATINGAN!CCESS,AYERVIA0,31, 4HE!GILE-ANIFESTO 5SING0,31,WITH%VOLUTIONARY$ATA-ODELING $EFINETHE)NTERFACE 4HINK%XTENSIBLE

XII

■ #/.4%.43

4EST$RIVEN$EVELOPMENT 5SE3CHEMASAND5SERS7ISELY

3UMMARY ■#HAPTER0ROFILINGFOR0ERFORMANCE 7HAT)S0ERFORMANCE &UNCTIONAL2EQUIREMENTS 2ESPONSE4IME 4HROUGHPUT 2ESOURCE5TILIZATION 0ERFORMANCE)SA&EATURE

7HAT)S0ROFILING 3EQUENCE$IAGRAMS 4HE-AGICOF0ROFILES "ENEFITSOF0ROFILING

)NSTRUMENTATION 7HYIS4HIS0ROGRAM3LOW -EASUREMENT)NTRUSION )DENTIFICATION #ONDITIONAL#OMPILATION "UILT IN0ROFILERS %XTENDED31,4RACE$ATA%VENT  )NSTRUMENTATION,IBRARYFOR/RACLE),/ 

0ROBLEM$IAGNOSIS -ETHOD2 ),/%XAMPLE 0ROFILING%XAMPLE

3UMMARY

XIII

■ #/.4%.43

■#HAPTER#ODING#ONVENTIONSAND%RROR(ANDLING 7HYCODINGCONVENTIONS &ORMATTING #ASE #OMMENTS )NDENTATION

$YNAMIC#ODE 0ACKAGES 3TORED0ROCEDURES .AMING 0ARAMETERS #ALLS ,OCAL6ARIABLES #ONSTANTS 4YPES 'LOBAL6ARIABLES ,OCAL0ROCEDURESAND&UNCTIONS 0ROCEDURE-ETADATA

&UNCTIONS %RROR(ANDLING %RROR4RAPPING %RROR2EPORTING %RROR2ECOVERY 4EST&IRST$ISPLAY3ECOND

3UMMARY

XIV

■ #/.4%.43

■#HAPTER$EPENDENCIESAND)NVALIDATIONS $EPENDENCY#HAINS 3HORTENING$EPENDENCY#HAINS $ATATYPE2EFERENCE 6IEWFOR4ABLE!LTERATIONS !DDING#OMPONENTSINTO0ACKAGES 3YNONYMSIN$EPENDENCY#HAINS 2ESOURCE,OCKING &ORCING$EPENDENCYIN4RIGGERS #REATING4RIGGERS$ISABLED)NITIALLY 3UMMARY

)NDEX

XV



About the Authors ■*OHN"ERESNIEWICZISACONSULTINGMEMBEROFTHETECHNICALSTAFFAT/RACLEHEADQUARTERSIN2EDWOOD 3HORES #!(EJOINED/RACLEINTOWORKON%NTERPRISE-ANAGERINTHEDATABASEPERFORMANCEAREA ANDHASPLAYEDSIGNIFICANTROLEINTHEDESIGNOF$IAGNOSTICAND4UNINGPACKS 2EAL!PPLICATION4ESTING 3UPPORT7ORKBENCH AND%XADATA(EHASBEENAFREQUENTSPEAKERONDATABASEPERFORMANCEAND 0,31,PROGRAMMINGOVERMANYYEARSAT/RACLE/PENWORLDANDOTHERCONFERENCES(EISCO AUTHOROF /RACLE"UILT IN0ACKAGES/2EILLY!SSOCIATES  WITH3TEVEN&EUERSTEINANDISAFOUNDINGMEMBER OFTHE/AK4ABLENETWORK

■!DRIAN"ILLINGTONISACONSULTANTINAPPLICATIONDESIGN DEVELOPMENT ANDPERFORMANCETUNINGWHO HASBEENWORKINGWITH/RACLEDATABASESSINCE(EISTHEMANBEHINDfff^aPR[TSTeT[^_Ta]Tc A WEBSITEFULLOF31,AND0,31,FEATURES UTILITIES ANDTECHNIQUESFOR/RACLEDEVELOPERS!DRIANISALSO AN/RACLE!#%ANDAMEMBEROFTHE/AK4ABLE.ETWORK(ELIVESINTHE5+WITHHISWIFE!NJIANDTHREE CHILDREN'EORGIA /LIVER AND)SABELLA

■-ARTIN"ÓCHIHASWORKEDSINCEAS,EAD3OFTWARE!RCHITECTFOR!VALOQ APROVIDEROFA STANDARDIZEDBANKINGSOFTWAREBUILTONTHE/RACLE2$"-3WITHMILLIONLINESOF0,31,CODE 4OGETHERWITHTWOCOLLEAGUESHEDEFINESTHESYSTEMARCHITECTUREANDREVIEWSTHEDESIGNSANDCODEOF FULL TIME0,31,DEVELOPERS LOOKINGFORSIMPLICITY EFFICIENCY ANDROBUSTNESS-ARTINREGULARLYSPEAKS AT/RACLECONFERENCES)NHEWASNAMED0,31,$EVELOPEROFTHE9EARBY/RACLE-AGAZINE"EFORE GETTINGINTOTHE/RACLEDATABASE -ARTINWORKEDINOBJECT ORIENTEDSYSTEMS FORMALMETHODS AND APPROXIMATERECORDMATCHING(EHOLDSAN-3CFROMTHE3WISS&EDERAL)NSTITUTEOF4ECHNOLOGYANDA 0H$FROMTHE4URKU#ENTERFOR#OMPUTER3CIENCEIN&INLAND)NHISSPARETIME -ARTINENJOYSVARIOUS OUTDOORSPORTSWITHHISFAMILY

■-ELANIE#AFFREYISA3ENIOR$EVELOPMENT-ANAGERFOR/RACLE#ORPORATION PROVIDINGFRONT ENDAND BACK END/RACLESOLUTIONSFORTHEBUSINESSNEEDSOFVARIOUSCLIENTS3HEISCO AUTHOROFSEVERALTECHNICAL PUBLICATIONSINCLUDING/RACLE7EB!PPLICATION0ROGRAMMINGFOR0,31,$EVELOPERS /RACLE$"! )NTERACTIVE7ORKBOOK AND/RACLE$ATABASE!DMINISTRATION4HE#OMPLETE6IDEO#OURSE ALLPUBLISHEDBY 0RENTICE(ALL3HEHASINSTRUCTEDSTUDENTSIN#OLUMBIA5NIVERSITYgS#OMPUTER4ECHNOLOGYAND !PPLICATIONSPROGRAMIN.EW9ORK#ITY TEACHINGADVANCED/RACLEDATABASEADMINISTRATIONAND0,31, DEVELOPMENT3HEISAFREQUENT/RACLECONFERENCESPEAKER

■2ON#RISCOHASBEENASOFTWAREDESIGNER DEVELOPER ANDPROJECTLEADERFORYEARSANDHASWORKED WITH/RACLEDATABASESFORYEARS(EWORKSAT-ETHOD2#ORPORATION DESIGNINGANDDEVELOPING SOFTWARE MANAGINGSOFTWAREPRODUCTSLIKE-ETHOD20ROFILER -24OOLS AND-24RACE CONSULTING AND TEACHINGCOURSES(ISSPECIALTYISSIMPLIFYINGCOMPLEXWORK WHICHISESPECIALLYVALUABLEINHELPINGTHE PEOPLEAROUNDHIMACCOMPLISHEXTRAORDINARYTHINGS

XVI

■ !"/544(%!54(/23

■,EWIS#UNNINGHAMHASBEENWORKINGIN)4FOROVERYEARSANDHASWORKEDWITH/RACLEDATABASES SINCE(ISSPECIALTIESAREAPPLICATIONDESIGN DATABASEDESIGN ANDCODINGOFHIGHVOLUME 6,$" DATABASES(EISCURRENTLYA3ENIOR$ATABASE!RCHITECTATAFINANCIALSERVICESCOMPANYIN3T0ETERSBURG &,WORKINGONVERYLARGE HIGHTRANSACTIONRATEANALYTICALDATABASESANDAPPLICATIONS(ESPENDSAN INORDINATEAMOUNTOFTIMEKEEPINGUPWITHCURRENTTECHNOLOGYANDTRENDSANDSPEAKINGATUSERGROUPS ANDDOINGWEBINARS,EWISISALSOAN/RACLE!#%$IRECTORAND/RACLE#ERTIFIED0ROFESSIONAL(EHAS WRITTENSEVERALARTICLESFORTHE/RACLE4ECHNOLOGY.ETWORKANDMAINTAINSAN/RACLETECHNOLOGYBLOGAT Wcc_)Xcc^^[Q^gR^\Q[^Vb^aPR[TVdXST,EWISHASWRITTENTWOBOOKS%NTERPRISE$"4HE$EFINITIVE 2EFERENCE2AMPANT4ECHPRESS  AND31,$-,4HE31,3TARTER3ERIES#REATE3PACE  (ELIVES IN&LORIDAWITHHISWIFEANDTWOSONS9OUCANCONTACTHIMATLEWISC DATABASEWISDOMCOM

■$OMINIC$ELMOLINOISTHE,EAD/RACLEAND$ATABASE4ECHNOLOGISTFOR!GILEX4ECHNOLOGIES A CONSULTINGFIRMSPECIALIZINGINASSISTINGGOVERNMENTANDPRIVATEENTERPRISESTOREALIZETHEVALUEOFTHEIR INFORMATION$OMINICHASOVERYEARSOFDATABASEEXPERIENCE INCLUDINGMORETHANYEARSASAN /RACLE$ATABASE%NGINEERINGAND$EVELOPMENTPROFESSIONAL(EISAMEMBEROFTHE/AK4ABLE.ETWORK ANDREGULARLYPRESENTSATCONFERENCES SEMINARS ANDUSERGROUPMEETINGSIN%UROPEANDTHE53(EALSO MAINTAINSfff^aPR[T\dbX]VbR^\ ASITEFOCUSEDONDATABASECODINGANDDESIGNPRACTICESRELATEDTO DATABASEAPPLICATIONDEVELOPMENT$OMINICHOLDSA"ACHELOROF3CIENCEDEGREEINCOMPUTERSCIENCE FROM#ORNELL5NIVERSITY )THACA .9

■3UE(ARPERISA0RODUCT-ANAGERFOR/RACLE31,$EVELOPERAND31,$EVELOPER$ATA-ODELERINTHE $ATABASE$EVELOPMENT4OOLSGROUP3HEHASBEENAT/RACLESINCEANDISCURRENTLYBASEDIN ,ONDON3UEISAREGULARCONTRIBUTORTOMAGAZINES MAINTAINSATECHNICALBLOG ANDSPEAKSATMANY CONFERENCESAROUNDTHEWORLD3HEHASAUTHOREDTHETECHNICALBOOK/RACLE31,$EVELOPER0ACKT 0UBLISHING  7HENNOTATWORK 3UEISAKEENWALKERANDPHOTOGRAPHER3UETAKESTIMEOUTTOWORK WITHACHARITYINTHESLUMSOF.EW$ELHI WHERESHEWORKSWITHTHEWOMENANDCHILDREN

■4ORBEN(OLMHASBEENINTHECOMPUTERBUSINESSASADEVELOPERSINCE(EHASBEENWORKINGWITH /RACLESINCEHISFIRSTFOURYEARSASSYSTEMANALYSTANDAPPLICATIONDEVELOPER/RACLEAND&ORMS 2EPORTSAND$"! THENTWOYEARSASDEVELOPER/RACLE &ORMSAND204 AND$"! (E SPENTSEVERALYEARSWORKINGFOR/RACLE$ENMARKINTHE0REMIUM3ERVICESGROUPASA3ENIOR0RINCIPAL #ONSULTANTPERFORMINGAPPLICATIONDEVELOPMENTAND$"!TASKS(EALSOWORKEDASANINSTRUCTORIN 0,31, 31, AND$"!COURSES4ORBENNOWWORKSFOR-IRACLE!3fff\XaPR[TPbSZ ASACONSULTANT WITHAFOCUSINAPPLICATIONDEVELOPMENT0,31, MOD?PLSQL &ORMS !$& ANDDATABASEADMINISTRATION (EHASBEENAT-IRACLE!3YEARS(EISAN/RACLE#ERTIFIED$EVELOPERANDAMEMBEROF>PZCPQ[T]Tc

■#ONNOR-C$ONALDHASWORKEDWITH/RACLESINCETHEEARLYS CUTTINGHISTEETHON/RACLEVERSIONS AND/VERTHEPASTYEARS #ONNORHASWORKEDWITHSYSTEMSIN!USTRALIA THE5+ 3OUTHEAST!SIA 7ESTERN%UROPE ANDTHE5NITED3TATES(EHASCOMETOREALIZETHATALTHOUGHTHESYSTEMS ANDMETHODOLOGIESAROUNDTHEWORLDAREVERYDIVERSE THERETENDTOBETWOCOMMONTHEMESINTHE DEVELOPMENTOFSYSTEMSRUNNINGON/RACLEEITHERTOSTEERAWAYFROMTHE/RACLE SPECIFICFUNCTIONSORTO USETHEMINAHAPHAZARDORLESS THAN OPTIMALFASHION)TWASTHISOBSERVATIONTHATLEDTOTHECREATIONOF APERSONALHINTSANDTIPSWEBSITEfff^aPR[TSQPR^dZ ANDMOREPRESENTINGONTHE/RACLESPEAKER CIRCUITINANENDEAVORTOIMPROVETHEPERCEPTIONANDUSAGEOF0,31,INTHEINDUSTRY

XVII

■ !"/544(%!54(/23

■!RUP.ANDAHASBEENAN/RACLE$"!SINCE WHICHHASEXPOSEDHIMTOALLFACETSOFDATABASE ADMINISTRATION FROMMODELINGTODISASTERRECOVERY(ECURRENTLYLEADSTHEGLOBAL$"!TEAMAT3TARWOOD (OTELS THEPARENTOFCHAINSSUCHAS3HERATONAND7ESTIN IN7HITE0LAINS .9(ESERVESASA CONTRIBUTINGEDITOROF3%,%#4*OURNAL THEPUBLICATIONOF)NDEPENDENT/RACLE5SERS'ROUP)/5'  SPEAKSATMANY/RACLE4ECHNOLOGYEVENTSSUCHAS/RACLE7ORLDANDLOCALUSERGROUPSSUCHAS.EW9ORK /RACLE5SER'ROUPANDHASWRITTENMANYARTICLESFORBOTHPRINTPUBLICATIONSSUCHAS/RACLE-AGAZINE ANDONLINEPUBLICATIONSSUCHAS/RACLE4ECHNOLOGY.ETWORK!RUPHASCOAUTHOREDTWOBOOKS/RACLE 0RIVACY3ECURITY!UDITING2AMPANT  AND/RACLE0,31,FOR$"!S/g2EILLY  2ECOGNIZINGHIS PROFESSIONALACCOMPLISHMENTSANDCONTRIBUTIONSTOUSERCOMMUNITY /RACLECHOSEHIMASTHE$"!OF THE9EARIN!RUPLIVESIN$ANBURY #ONNECTICUT WITHHISWIFE!NINDITAANDSON!NISH(ECANBE REACHEDATARUP PROLIGENCECOM

■3TEPHAN0ETITBEGANHISCAREERINAT#%2. THE%UROPEAN,ABORATORYFOR0ARTICLE0HYSICS LOCATED IN'ENEVA 3WITZERLAND(EISNOWINCHARGEOFATEAMOFSOFTWAREENGINEERSANDSTUDENTSDELIVERING APPLICATIONSANDTOOLSTOTHELABORATORYANDBEYOND/NEOFTHESETOOLSISTHE%NGINEERINGAND %QUIPMENT$ATA-ANAGEMENT3YSTEM ALSOKNOWNASTHE#%2.%$-30ROJECTSLIKE#%2.S,ARGE (ADRON#OLLIDER,(# HAVEALIFETIMEOFYEARSORMORE4HE%$-3ISTHEDIGITALENGINEERINGMEMORY OFTHELABORATORY-ORETHANAMILLIONDOCUMENTSRELATINGTOMORETHANAMILLIONPIECESOFEQUIPMENT ARESTOREDINTHE%$-3 WHICHISALSOUSEDAS#%2.S0RODUCT,IFECYCLE-ANAGEMENT0,- AND!SSET 4RACKINGSYSTEM%$-3ISBASEDALMOSTENTIRELYON0,31,ANDISINTENDEDTOHAVEALIFETIMEATLEASTAS LONGASTHE,(# 3TEPHANANDHISTEAMHAVEBEENPOLISHINGCODINGCONVENTIONSANDBESTPRACTICESIN0,31,IN ORDERTOMEETTHEIRVERYINTERESTINGMIXOFCHALLENGESMAINTAINABILITYOVERDECADES RELIABILITY EFFICIENT ERRORHANDLING SCALABILITY ANDREUSABILITYOFTHEMODULES4HESECHALLENGESARECOMPOUNDEDBYTHE FREQUENTROTATIONOFTEAMMEMBERS MOSTOFWHOMARESTUDENTSONLYTEMPORARILYAT#%2.4HEOLDEST PIECEOFCODEWASWRITTENINANDISSTILLINUSEˆWITHSUCCESS!PARTFROMPOLISHING0,31, 3TEPHANALSOENJOYSBEINGONSTAGEFROMTIMETOTIMEASROCKBANDSINGERATTHE#%2.gSROCKROLL SUMMERFESTIVALANDASACTORINVARIOUSPLAYS

■-ICHAEL2OSENBLUMISA3OFTWARE!RCHITECT$EVELOPMENT$"!AT$ULCIAN )NCWHEREHEIS RESPONSIBLEFORSYSTEMTUNINGANDAPPLICATIONARCHITECTURE-ICHAELSUPPORTS$ULCIANDEVELOPERSBY WRITINGCOMPLEX0,31,ROUTINESANDRESEARCHINGNEWFEATURES(EISTHECO AUTHOROF0,31,FOR $UMMIES7ILEY0RESS  ANDAUTHOROFANUMBEROFDATABASE RELATEDARTICLES)/5'3ELECT*OURNAL /$45'4ECH*OURNAL -ICHAELISAN/RACLE!#% AFREQUENTPRESENTERATVARIOUSREGIONALANDNATIONAL /RACLEUSERGROUPCONFERENCES/RACLE/PEN7ORLD /$45' )/5'#OLLABORATE 2-/5' .9/5' ETC ANDWINNEROFTHE/$45'+ALEIDOSCOPE"EST3PEAKER!WARD)NHISNATIVE5KRAINE HERECEIVEDTHE SCHOLARSHIPOFTHE0RESIDENTOF5KRAINE A-ASTEROF3CIENCEDEGREEIN)NFORMATION3YSTEMS ANDA DIPLOMAWITHHONORSFROMTHE+IEV.ATIONAL5NIVERSITYOF%CONOMICS

■2OBYN3ANDSISA3OFTWARE%NGINEERFOR#ISCO3YSTEMS WHERESHEDESIGNSANDDEVELOPSEMBEDDED /RACLEDATABASEPRODUCTSFOR#ISCOCUSTOMERS3HEHASBEENWORKINGWITH/RACLESINCEANDHAS EXTENSIVEEXPERIENCEINAPPLICATIONDEVELOPMENT LARGESYSTEMIMPLEMENTATIONS ANDPERFORMANCE MEASUREMENT2OBYNBEGANHERWORKCAREERININDUSTRIALANDQUALITYENGINEERING ANDSHEHAS COMBINEDHERPRIOREDUCATIONANDEXPERIENCEWITHHERLOVEOFDATABYSEARCHINGFORNEWWAYSTOBUILD DATABASESYSTEMSWITHCONSISTENTPERFORMANCEANDMINIMALMAINTENANCEREQUIREMENTS3HEISA MEMBEROFTHE/AK4ABLE.ETWORKANDACOAUTHOROFTWOBOOKSON/RACLE%XPERT/RACLE0RACTICESAND 0RO/RACLE31,BOTH!PRESS  2OBYNOCCASIONALLYPOSTSRANDOMBLOGENTRIESAT Wcc_)PSWS^RSSQPQ[^Vb_^cR^\

XVIII

■ !"/544(%!54(/23

■2IYAJ3HAMSUDEENISTHE0RINCIPAL$ATABASE!DMINISTRATORAND0RESIDENTOF/RA)NTERNALS A PERFORMANCERECOVERY%"3ICONSULTINGCOMPANY(ESPECIALIZESINREALAPPLICATIONCLUSTERS PERFORMANCETUNING ANDDATABASEINTERNALS(EALSOFREQUENTLYBLOGSABOUTTHESETECHNOLOGYAREASIN HISBLOGWcc_)^aPX]cTa]P[bf^aS_aTbbR^\(EISALSOAREGULARPRESENTERINMANYINTERNATIONAL CONFERENCESSUCHAS(/43/3 #/,,!"/2!4% 2-/5' 3)/5' 5+/5' ETC(EISAPROUDMEMBEROF /AK4ABLE.ETWORK(EHASOVERYEARSOFEXPERIENCEUSING/RACLETECHNOLOGYPRODUCTSANDOVER YEARSASAN/RACLE/RACLEAPPLICATIONSDATABASEADMINISTRATOR

XIX



About the Technical Reviewers ■#HRIS"ECKHASADEGREEINCOMPUTERSCIENCEFROM2UTGERS5NIVERSITYANDHASBEENWORKINGWITH MULTIPLE$"-3SFORMORETHANYEARS(EHASSPENTTHELASTYEARSASAN/RACLEEMPLOYEEWHEREHE ISCURRENTLYA-ASTER0RINCIPAL4ECHNOLOGISTFOCUSINGONCOREDATABASETECHNOLOGIES(EISACO INVENTOR OFTWO530ATENTSONSOFTWAREMETHODOLOGIESTHATWERETHEBASISFORWHATISNOWKNOWNAS/RACLE !PPLICATION%XPRESS#HRISHASREVIEWEDOTHER/RACLEBOOKSINCLUDING%XPERT/NE /N /NE0EER )NFORMATION)NC  AND%XPERT/RACLE$ATABASE!RCHITECTURE!PRESS  BOTHBY4OM+YTEANDIS HIMSELFTHECO AUTHOROFTWOBOOKS "EGINNING/RACLE0ROGRAMMING7ROX0RESS  AND-ASTERING /RACLE0,31,!PRESS  (ERESIDESIN.ORTHERN6IRGINIAWITHHISWIFE-ARTAANDFOURCHILDREN WHENNOTSPENDINGTIMEWITHTHEM HECANUSUALLYBEFOUNDWASTINGTIMEPLAYINGVIDEOGAMESOR WATCHING3ERIES!FOOTBALL

■-IKE'ANGLERISA$ATABASE3PECIALISTAND)NFRASTRUCTURE!RCHITECTWITHOVERYEARSOFDATA PROCESSINGINDUSTRYEXPERIENCE PRIMARILYASA$ATABASE4ECHNICAL,EAD 3YSTEMS!NALYST AND$"!ON LARGECORPORATE)NFORMATION3YSTEMSPROJECTS!SAPAST0RESIDENTOFTHE$ETROIT/RACLE5SERS'ROUPAND !NN!RBOR/RACLE5SERGROUPS ANDCHARTERMEMBEROFTHE"OARDOF$IRECTORSOFTHE)NTERNATIONAL/RACLE 5SERS'ROUP -IKEHASATTAINEDWORLDWIDERECOGNITIONASANACCOMPLISHEDAND#ERTIFIED/RACLE$"! ANDRELATIONALDATABASEEXPERT

■4OON+OPPELAARSISALONG TIME/RACLETECHNOLOGYUSER HAVINGUSEDTHE/RACLEDATABASEANDTOOLS SOFTWARESINCE/RACLEVERSION $URINGTHISTIME HEHASBEENINVOLVEDINAPPLICATION DEVELOPMENTANDDATABASEADMINISTRATION(EISAN!#%$IRECTORDATABASEDEVELOPMENT ANDFREQUENT SPEAKERAT/RACLE RELATEDEVENTS(ESALSOTHEDECLAREROFh4HE(ELSINKI$ECLARATION)4VERSION vWHICH DESCRIBESADATABASE CENTRICAPPROACHTOMODERNAPPLICATIONDEVELOPMENT4OGETHERWITH,EXDE(AAN 4OONHASCO AUTHORED!PPLIED-ATHEMATICSFOR$ATABASE0ROFESSIONALS!PRESS  

XX



Introduction 2ARELYDO)TAKETHEOPPORTUNITYTOINTRODUCEABOOKTHAT)VEHELPEDCREATE.ORMALLY)AMCONTENTWITH MYPLACEINTHEBACKGROUNDWHEREBOOKEDITORSRIGHTFULLYBELONG)MAKEANEXCEPTIONTHISTIMEBECAUSE THECONTENTINTHISBOOKBRINGSBACKSOMANYMEMORIESFROMOWNEXPERIENCESASADEVELOPERINDAYS GONEBY %XPERT0,31,0RACTICESISABOUTWIELDING0,31,EFFECTIVELY)TSNOTABOOKABOUTSYNTAX)TSABOOK ABOUTHOWTOAPPLYSYNTAXANDFEATURESALONGWITHGOODDEVELOPMENTPRACTICESTOCREATEAPPLICATIONS THATARERELIABLEANDSCALABLEˆANDMAINTAINABLEOVERTHELONGTERM 7ITHANYTOOL ONEOFTHEFIRSTTHINGSTOKNOWISWHENTOWIELDIT2IYAJ3HAMSUDEENDEFTLYTACKLESTHE QUESTIONOFWHENTOUSE0,31,INHISOPENINGCHAPTER$O.OT5SE)PUTTHATCHAPTERFIRSTINTHEBOOK BECAUSEOFPERSONALEXPERIENCE-YBEST EVERPERFORMANCEOPTIMIZATIONSUCCESSCAMEINTHELATES WHEN)REPLACEDASTACKOFPROCEDURALCODEONACLIENT0#WITHASINGLE31,STATEMENT TAKINGAJOBFROM OVERHOURSTOJUSTACOUPLEOFMINUTES0,31,WASNOTTHECULPRIT BUTTHELESSON)LEARNEDTHENIS THATASET BASEDAPPROACHˆWHENONEISPOSSIBLEˆISOFTENPREFERABLETOWRITINGPROCEDURALCODE -ICHAEL2OSENBLUMFOLLOWSWITHANEXCELLENTCHAPTERONDYNAMIC31, SHOWINGHOWTOWRITECODE WHENYOUDONTKNOWTHE31,STATEMENTSUNTILRUNTIME(EREMINDEDMEOFATIMEAT$OW#HEMICALIN THEEARLYSWHEN)WROTEADATA LOADINGAPPLICATIONFORAMEDICALRECORDSYSTEMUSING2DBS %XTENDED$YNAMIC#URSORFEATURESET)STILLREMEMBERTHATASONEOFTHEMOSTFUNAPPLICATIONSTHAT) EVERDEVELOPED $OMINIC$ELMOLINOTACKLESPARALLELPROCESSINGWITH0,31,(ECOVERSTHEBENEFITSTHATYOUCAN ACHIEVEASWELLASTHECANDIDATEWORKLOADS*USTBECAREFUL OKAY/NEOFMYBIGGEST EVERBLUNDERSASA $"!WASWHEN)ONCEUNTHINKINGLYSETADEGREEOFPARALLELISMONAKEYAPPLICATIONTABLEINORDERTO MAKEASINGLEREPORTRUNFASTER)TWASASIFTHE%NTERKEYWASCONNECTEDTOMYTELEPHONE BECAUSEMY PHONERANGWITHINABOUTAMINUTEOFMYCHANGE4HEMANAGERONTHEOTHERENDOFTHELINEWASMOST UNPLEASED.EEDLESSTOSAY )DECIDEDTHENTHATIMPLEMENTINGPARALLELISMDESERVEDJUSTATADBITMORE THOUGHTTHAN)HADBEENGIVINGIT$OMINICSCHAPTERWILLHELPYOUAVOIDSUCHEMBARRASSMENT 3EVERALCHAPTERSINTHEBOOKCOVERCODEHYGIENEANDGOODPROGRAMMINGPRACTICES3TEPHAN0ETIT PRESENTSASETOFUSEFULNAMINGANDCODINGCONVENTIONS4ORBEN(OLMCOVERS0,31,7ARNINGSAND CONDITIONALCOMPILATION,EWIS#UNNINGHAMPRESENTSATHOUGHT PROVOKINGCHAPTERONCODEANALYSIS ANDTHEIMPORTANCEOFTRULYUNDERSTANDINGTHECODETHATYOUWRITEANDHOWITGETSUSED2OBYN3ANDS HELPSYOUTHINKABOUTFLEXIBILITYANDGOODDESIGNINHERCHAPTERONEVOLUTIONARYDATAMODELING-ELANIE #AFFREYTOURSTHEVARIOUSCURSORTYPESAVAILABLE HELPINGYOUTOMAKETHERIGHTCHOICEOFCURSORFORANY GIVENSITUATION /THERCHAPTERSRELATETODEBUGGINGANDTROUBLESHOOTING3UE(ARPERCOVERS0,31,UNITTESTING ESPECIALLYTHESUPPORTINGFEATURESETTHATISNOWBUILTINTO31,$EVELOPER)REMEMBERWRITINGUNITTEST SCRIPTSONPAPERBACKINTHEDAY 3AVEYOURSELFTHEEMBARRASSMENTOFREGRESSIONBUGS!UTOMATEDUNIT TESTSMAKEITEASYANDCONVENIENTTOVERIFYTHATYOUVENOTBROKENTWONEWTHINGSWHILEFIXINGONE *OHN"ERESNIEWICZFOLLOWSWITHACHAPTERONCONTRACT ORIENTEDPROGRAMMING!KEYPARTOF*OHNS APPROACHISTHEUSEOFASSERTSTOVALIDATECONDITIONSTHATSHOULDBETRUEATVARIOUSPOINTSWITHINYOUR CODE)FIRSTLEARNEDOFTHEASSERTTECHNIQUEWHILEDOING0OWER"UILDERPROGRAMMINGBACKINTHE3TONE !GE)VEALWAYSBEENHAPPYTOSEE*OHNPROMOTETHETECHNIQUEINRELATIONTO0,31,

XXI

■ ).42/$5#4)/.

!RUP.ANDAHELPSYOUGETCONTROLOVERDEPENDENCIESANDINVALIDATIONS$EPENDENCYISSUESCANBEA SOURCEOFSEEMINGLYRANDOM DIFFICULT TO REPEATAPPLICATIONERRORS!RUPSHOWSHOWTOGETCONTROLOVER WHATMUSTINEVITABLYHAPPEN SOTHATYOUARENTCAUGHTOUTBYUNEXPECTEDERRORS 7ECOULDHARDLYLEAVEPERFORMANCEANDSCALABILITYOUTOFTHEPICTURE2ON#RISCOTALKSABOUT PROFILINGYOURCODETOFINDTHEGREATESTOPPORTUNITIESFOROPTIMIZATION!DRIAN"ILLINGTONTALKSABOUTTHE PERFORMANCEASPECTSOFINVOKING0,31,FROMWITHIN31,STATEMENTS#ONNOR-C$ONALDCOVERSTHE TREMENDOUSPERFORMANCEADVANTAGESAVAILABLEFROMBULK31,OPERATIONS !NUNUSUALASPECTOFSCALABILITYNOTOFTENTHOUGHTABOUTISTHATOFAPPLICATIONSIZEANDTHENUMBER OFDEVELOPERS)S0,31,SUITEDFORLARGE SCALEDEVELOPMENTINVOLVINGDOZENS PERHAPSHUNDREDSOF PROGRAMMERS-ARTIN"ÓCHISHOWSTHAT0,31,ISVERYMUCHUPTOTHETASKINHISCHAPTERON0,31, PROGRAMMINGINTHELARGEBYRECOUNTINGHISSUCCESSWITHAN MILLIONLINEAPPLICATIONMAINTAINEDBY OVERDEVELOPERS 9OUCANPROBABLYTELLTHAT)MEXCITEDABOUTTHISBOOK4HEAUTHORSARETOPNOTCH%ACHHASWRITTEN ONANASPECTOF0,31,THATTHEYAREPASSIONATEANDESPECIALLYKNOWLEDGEABLEABOUT)FYOUREPASTTHE POINTOFLEARNINGSYNTAX THENSITDOWN READTHISBOOK ANDSTEPUPYOURGAMEINDELIVERINGAPPLICATIONS USINGTHEFULLPOWEROF0,31,AND/RACLE$ATABASE

*ONATHAN'ENNICK !SSISTANT%DITORIAL$IRECTOR !PRESS











XXII

C HAP T E R 1



Do Not Use By Riyaj Shamsudeen #ONGRATULATIONSONBUYINGTHISBOOK0,31,ISAGREATTOOLTOHAVEINYOURTOOLBOXHOWEVER YOU SHOULDUNDERSTANDTHATUSEOF0,31,ISNOTSUITABLEFORALLSCENARIOS4HISCHAPTERWILLTEACHYOUWHEN TOCODEYOURAPPLICATIONIN0,31, HOWTOWRITESCALABLECODE AND MOREIMPORTANTLY WHENNOTTO CODEPROGRAMSIN0,31,!BUSEOFSOME0,31,CONSTRUCTSLEADSTOUNSCALABLECODE)NTHISCHAPTER ) WILLREVIEWVARIOUSCASESINWHICHTHEMISUSEOF0,31,WASUNSUITABLEANDLEADTOANUNSCALABLE APPLICATION

PL/SQL AND SQL 31,ISASETPROCESSINGLANGUAGEAND31,STATEMENTSSCALEBETTERIFTHESTATEMENTSAREWRITTENWITHSET LEVELTHINKINGINMIND0,31,ISAPROCEDURALLANGUAGEAND31,STATEMENTSCANBEEMBEDDEDIN0,31, CODE 31,STATEMENTSAREEXECUTEDINTHE31,EXECUTORMORECOMMONLYKNOWNASTHE31,ENGINE 0,31, CODEISEXECUTEDBYTHE0,31,ENGINE4HEPOWEROF0,31,EMANATESFROMTHEABILITYTOCOMBINETHE PROCEDURALABILITIESOF0,31,WITHTHESETPROCESSINGABILITIESOF31,

2OW BY 2OW0ROCESSING )NATYPICALROW BY ROWPROCESSINGPROGRAM CODEOPENSACURSOR LOOPSTHROUGHTHEROWSRETRIEVEDFROM THECURSOR ANDPROCESSESTHOSEROWS4HISTYPEOFLOOP BASEDPROCESSINGCONSTRUCTISHIGHLYDISCOURAGED ASITLEADSTOUNSCALABLECODE,ISTING SHOWSANEXAMPLEOFAPROGRAMUSINGTHECONSTRUCT ,ISTING 2OW BY 2OW0ROCESSING 342;0A4 2DAB>AR 8B B4;42C_a^SNXSRdbcNXScX\TNXSP\^d]cNb^[S 5A>AR NaTR8=R  ;>>? @dTahRdbc^\TaSTcPX[b B4;42CRdbcNUXabcN]P\TRdbcN[PbcN]P\T 8=C>[NRdbcNUXabcN]P\T[NRdbcN[PbcN]P\T 5A>c^_NbP[TbNRdbc^\Tab _a^SNXSRdbcNXScX\TNXSRdbcNUXabcN]P\TRdbcN[PbcN]P\TP\^d]cNb^[S  E0;D4B  R NaTR_a^SNXS R NaTRRdbcNXS R NaTRcX\TNXS [NRdbcNUXabcN]P\T [NRdbcN[PbcN]P\T R NaTRP\^d]cNb^[S * 4=3;>>?* 2>AR 0B B4;42C] 5A>AR!_N] 0B B4;42C] ]!5A>AR"_N] _N]!0B B4;42CcTgc5A>=UPRc ] ,c] 0=3UPRc ]!,c]! F74=\PcRWTSC74= D?30C4B4CF74==>C\PcRWTSC74= 8=B4AC* 2>AR NaTR8=R  ;>>? @dTahRdbc^\TaSTcPX[b B4;42CRdbcNUXabcN]P\TRdbcN[PbcN]P\TR^d]cahNXS 8=C>[NRdbcNUXabcN]P\T[NRdbcN[PbcN]P\T[NR^d]cahNXS 5A>[NR^d]cahN]P\T 5A>c^_NbP[TbNRdbc^\Tab  _a^SNXSRdbcNXScX\TNXSRdbcNUXabcN]P\T RdbcN[PbcN]P\TP\^d]cNb^[SR^d]cahN]P\T  E0;D4B  R NaTR_a^SNXSR NaTRRdbcNXSR NaTRcX\TNXS[NRdbcNUXabcN]P\T [NRdbcN[PbcN]P\TR NaTRP\^d]cNb^[S[NR^d]cahN]P\T * 4=3;>>?* 2>N30C4 90= (&))33=HHHH77!#)[NT_^RW 5A>N30C4 90= (&))33=HHHH77!#)>? B4;42CRdbcNWXbcNXSNbT`]TgceP[8=C>[NRdbcNXS5A>Rdbc^\TabNWXbc RdbcNWXbcNXSUXabcN]P\T[PbcN]P\T E0;D4B [NRdbcNXSR RdbcNUXabcN]P\TR RdbcN[PbcN]P\T * 4=3;>>?* 4=3* 



#(!04%2■$/./453%

?;B@;_a^RTSdaTbdRRTbbUd[[hR^\_[TcTS  4[P_bTS))) '( !BETTERAPPROACHISTOAVOIDRETRIEVINGTHEVALUETOAVARIABLEANDRETRIEVETHEVALUEFROMTHE SEQUENCEDIRECTLYINTHE8=B4ACSTATEMENTITSELF4HEFOLLOWINGCODEFRAGMENTILLUSTRATESAN8=B4AC STATEMENTINSERTINGROWSINTOCUSTOMERSUSINGASEQUENCE GENERATEDVALUE7ITHTHISCODINGPRACTICE YOUCANAVOIDACCESSINGTHE$5!,TABLE ANDTHUSAVOIDCONTEXTSWITCHESBETWEENTHEENGINES 8]bTacX]c^Rdbc^\TabRdbcNXS EP[dTbRdbcNXSNbT`]TgceP[* "ETTERYET REWRITETHE0,31,BLOCKASA31,STATEMENT&OREXAMPLE THEFOLLOWINGREWRITTEN STATEMENTCOMPLETESINSECONDSCOMPAREDTOARUNTIMEOFSECONDSWITH0,31,LOOP BASED PROCESSING 8=B4AC8=C>Rdbc^\TabNWXbc B4;42C RdbcNWXbcNXSNbT`]TgceP[RdbcNUXabcN]P\TRdbcN[PbcN]P\T 5A>>;40=),50;B4* a X]cTVTa* 5D=2C8>=[^VNT]caheN\TbbPVT8=E0A270A!eNSTQdVX]Q^^[TP] A4CDA=]d\QTa 8B 1468= 85eNSTQdVC74= 8=B4AC8=C>[^VNcPQ[T \TbbPVTNbT`AR 8= B4;42Cb_a^SNXSbRdbcNXSbcX\TNXS RRdbcNUXabcN]P\TRRdbcN[PbcN]P\T bP\^d]cNb^[S 5A>>? 85STQdVN^]C74= 85R RdbcNUXabcN]P\T8B=>C=D;;C74= a ),[^VNT]cahUXabcN]P\TXb]^c]d[[[NSTQdV* 4=385* 85R RdbcN[PbcN]P\T8B=>C=D;;C74= a ),[^VNT]cah;PbcN]P\TXb]^c]d[[[NSTQdV* 4=385* 4=3 ]d[[* 4=3;>>?* 4=3*  ?;B@;_a^RTSdaTbdRRTbbUd[[hR^\_[TcTS 4[P_bTS)))"# 4HEPROBLEMOFINVOKINGFUNCTIONSUNNECESSARILYTENDSTOOCCURFREQUENTLYINPROGRAMSCOPIEDFROM ANOTHERTEMPLATEPROGRAMANDTHENMODIFIED7ATCHFORTHISPROBLEM)FAFUNCTIONDOESNTNEEDTOBE CALLED AVOIDCALLINGIT

INTERPRETED VS. NATIVE COMPILATION 0,31,CODE BYDEFAULT EXECUTESASANINTERPRETEDCODE$URING0,31,COMPILATION CODEISCONVERTEDTO ANINTERMEDIATEFORMATANDSTOREDINTHEDATADICTIONARY!TEXECUTIONTIME THATINTERMEDIATECODEIS EXECUTEDBYTHEENGINE /RACLE$ATABASEVERSIONIINTRODUCESANEWFEATUREKNOWNASNATIVECOMPILATION0,31,CODEIS COMPILEDINTOMACHINEINSTRUCTIONANDSTOREDASASHAREDLIBRARY%XCESSIVEFUNCTIONEXECUTIONMIGHTHAVE LESSIMPACTWITHNATIVECOMPILATIONASMODERNCOMPILERSCANINLINETHESUBROUTINEANDAVOIDTHE INSTRUCTIONJUMP

#OSTLY&UNCTION#ALLS )FTHEEXECUTIONOFAFUNCTIONCONSUMESAFEWSECONDSOFELAPSEDTIME THENCALLINGTHATFUNCTIONINA LOOPWILLRESULTINPOORLYPERFORMINGCODE9OUSHOULDOPTIMIZEFREQUENTLYEXECUTEDFUNCTIONSTORUNAS EFFICIENTLYASPOSSIBLE



#(!04%2■$/./453%

)N,ISTING  IFTHEFUNCTIONRP[Rd[PcTNT_^RWISCALLEDINALOOPMILLIONSOFTIMES%VENIFTHE EXECUTIONOFTHATFUNCTIONCONSUMESJUSTSECONDS ONEMILLIONEXECUTIONSOFTHATFUNCTIONCALLWILL RESULTINANELAPSEDTIMEOFHOURS/NEOPTIONTORESOLVETHISPERFORMANCEISSUEISTOOPTIMIZETHE FUNCTIONTOEXECUTEINAFEWMILLISECONDS BUTTHATMUCHOPTIMIZATIONISNOTALWAYSPOSSIBLE ,ISTING #OSTLY&UNCTION#ALLS 2A40C4>AA4?;0245D=2C8>=RP[Rd[PcTNT_^RWSX]SPcT A4CDA==D?8=34GR^\_dcTNT_^RWNUQX* 2A40C4>AA4?;0245D=2C8>=RP[Rd[PcTNT_^RWSX]SPcT A4CDA==DF=D=UNVTcATU2dab^aNA45XNch_TNcgE0A270A! A4CDA=BHBNA452DAB>A 8B eN^dcNaTUBHBNA452DAB>A* eNb`[NcgE0A270A!"!&%&* 1468= XUXNch_TNcg,0cWT] eNb`[Ncg),+b^\TR^STc^QdX[S`dTah0-* T[bXUXNch_TNcg,1cWT] eNb`[Ncg),+b^\T^cWTaR^STc^QdX[S`dTah1-* 



#(!04%2■$9.!-)#31,(!.$,).'4(%5.+./7.

4=385* >?4=eN^dcNaTU5>AeNb`[Ncg* A4CDA=eN^dcNaTU* 4=3* ,IFEBECOMESSLIGHTLYMOREINTERESTINGWHENTHETASKISNOTJUSTTOBUILDANDEXECUTETHEQUERY BUT ALSOPASSSOMEBINDVARIABLESINTOIT4HEREAREDIFFERENTWAYSOFSOLVINGTHISPROBLEM4HESIMPLESTONE ISTOCREATEAPACKAGEWITHANUMBEROFGLOBALVARIABLESANDTHECORRESPONDINGFUNCTIONSTORETURNTHEM !SARESULT THEWHOLEPROCESSOFGETTINGTHECORRECTRESULTCONSISTSOFSETTINGALLOFTHEAPPROPRIATE VARIABLESANDIMMEDIATELYCALLING&?'%42%ȋ/2?2%&INTHESAMESESSION(OWEVER THESOLUTION )VEJUSTDESCRIBEDISNOTPERFECT SINCETHEMIDDLE TIEROFTENTALKSTOTHEDATABASEINAPURELYSTATELESS WAY)NTHATCASE ITSIMPOSSIBLETOUSE0,31,PACKAGEVARIABLES

■Note "YSTATELESSIMPLEMENTATIONOFTHEMIDDLE TIER )MEANANENVIRONMENTWHEREEACHDATABASECALLGETSA SEPARATEDATABASESESSIONEVENINTHECONTEXTOFTHESAMELOGICALOPERATION 4HISSESSIONCOULDBEEITHER SELECTEDFROMTHEEXISTINGCONNECTIONPOOLOROPENEDONTHEFLY BUTINPRACTICALTERMS ALLSESSION LEVELRESOURCES SHOULDBECONSIDEREDhLOSTvBETWEENTWOCALLS SINCETHEREISNOWAYOFENSURINGTHATTHEFOLLOWINGCALLWOULDHIT THESAMESESSIONASTHEPRECEDINGONE

3TILL /RACLEPROVIDESENOUGHADDITIONALOPTIONSTOOVERCOMEEVENTHATRESTRICTIONUSINGEITHER OBJECTCOLLECTIONSOR8-,4YPETHELATTERISEVENMOREFLEXIBLE /FCOURSE EITHEROFTHESEMETHODS REQUIRESSOMENON TRIVIALCHANGESTOQUERIESASSHOWNINTHEFOLLOWINGEXAMPLE BUTTHEOUTCOMEISA ABSTRACTQUERY BUILDER 2A40C45D=2C8>=UNVTcATU2dab^aNaTU XNch_TNcgE0A270A!),4