Manual Oracle PDF
Manual Oracle PDF
CourseObjectives InthiscourseyouwillinstalltheOracleDatabase10g EnterpriseEditionsoftware, createanewdatabase,andlearnhowtoadministerthedatabase. Youwillalsoconfigurethedatabasetosupportanapplication,performingtasks suchascreatingusers,definingstoragestructures,andsettingupsecurity.This courseusesafictionalapplication.Howeveryouwillbeperformingallthecore tasksnecessaryforarealapplication. Databaseadministrationdoesn doesnt tendafterthedatabaseisconfigured configured,soyouwill alsolearnhowtoprotectyourdatabasebydesigningabackupandrecovery strategy,andhowtomonitorthedatabasetoensureitoperatessmoothly.
OracleProducts OracleDatabase:OracleDatabaseisthefirstdatabasedesignedfor enterprisegridcomputing,themostflexibleandcosteffectivewayto manageinformationandapplications.OracleDatabaseisavailableinthree editions Enterprise,Standard,andPersonal. OracleApplicationServer:OraclesJava2EnterpriseEdition(J2EE)certified server,integratingeverythingneededtodevelopanddeployWebbased applications Theapplicationserverdeploysebusinessportals applications. portals,Web services,andtransactionalapplicationsincludingPL/SQL,OracleForms,and J2EEbasedapplications. OracleApplications:OracleEBusinessSuiteisacompletesetofbusiness applicationsformanagingandautomatingprocessesacrossyour organization. OracleCollaborationSuite:OracleCollaborationSuiteisasingle,integrated systemforallyourorganizationscommunicationsdata:voice,email,fax, wireless,calendarinformation,andfiles. OracleDevelopmentSuite:OracleDeveloperSuiteisacomplete,integrated environmentthatcombinesapplicationdevelopmentandbusiness intelligencetools. OracleServices:ServiceslikeOracleConsultingandOracleUniversity providetheexpertiseyouneedtokeepyourOracleprojectontrackand runningsmoothly.
RelationalDatabaseSystems Dr.E.F.Coddpublished,ARelationalModelofDataforLargeSharedDataBanks, inJune,1970,intheAssociationofComputerMachinery(ACM)journal, CommunicationsoftheACM.Codd'smodelisnowacceptedasthedefinitivemodel forrelationaldatabasemanagementsystems(RDBMS).Thelanguage,called structuredEnglishquerylanguage(SEQUEL),wasdevelopedbyIBMCorporation, Inc.,touseCodd'smodel.SEQUELlaterbecameSQL(stillpronouncedsequel).In 1979 RelationalSoftware, 1979, Software Inc. Inc (nowOracleCorporation)introducedthefirst commerciallyavailableimplementationofSQL.Today,SQLisacceptedasthe standardRDBMSlanguage. Thebasicelementofarelationaldatabasesystemisatwodimensionaltable.A tableconsistsofzeroormorerowsofdata.Eachrowhasoneormorecolumns.A singlecolumnofasinglerowisreferredtoasafieldorcellofdata. Eachrowofdataisacollectionofdataitemsrelatingtoagivensubject.For example,youmighthaveatabletoholdinformationaboutemployeesinyour company.Eachrowrepresentsoneemployeeinthecompany,andthecolumnsmay bethingssuchas,firstandlastname,email,phonenumber,hiredate,andsoon. Eachcolumnhasanameandadatatypeassociatedwithit.Thedatatypedefines whatkindofdataisallowedinthecolumn,forexamplenumbersorcharacters.
HowtheDataIsOrganized Arelationaldatabasehasmanytables,whichcanbeusedindependentlyorjoined togetherbyusingacommoncolumn(orcolumns)betweenthetables.WithOracle Database10g youmayrequirethatthecolumnusedtoestablishtherelationship withanothertablecontainvaluesthatalreadyexistinthattable.Thismandatory relationshipisknownasreferentialintegrity.Usingtheexampleofemployees,each employeeinyourcompanyisassignedtoaparticulardepartment.Becausea departmentmayhavemanyemployees employees,itwouldberedundanttohavethe departmentinformationstoredwitheachrowintheemployeestable.Instead,each rowintheemployeestablehasacolumnwhichisanidentifierpointingtothe departmentstable.Thisallowsyoutojointheemployeestablewiththe departmenttableandseewhichdepartmentanemployeeisassignedto. Thisidentifierisakeyfield.Intheemployeestablethedepartmentsfieldiscalleda foreignkey,becauseitpointstoarowinadifferent(foreign)table.Inthe departmenttablethefieldreferencedbyaforeignkeyintheemployeestableis typicallytheprimarykey,orsometimesanalternatekey.Thisprimarykeyfieldmust havecertainpropertiesinthedepartmenttable.Thefieldmustbeuniqueandmust alwayshaveavalue.Thiswayeachrowintheemployeestablewillpointtooneand onlyonerowinthedepartmenttable.
IntegrityConstraints Youcanuseintegrityconstraintstodefinebusinessrulesinyourrelational database.Thediagramshowsanentityrelationshipdiagram(ERD)ofaHuman Resources(HR)application.TheERDshowsthetablesandrelationsbetweenthem. TheERDisusedtodefineconstraintsthatareusedtoensurevaliddataisstoredin yourdatabasetables. Integrityconstraintsaredefinedaspartofatablesdefinitioninthedatadictionary, sothatallapplicationsaccessingthetablemustadheretotherulesdefinedbythe constraints.Whenyouneedtochangearule,youneedtochangeitonlyonceat thedatabaselevelandnotineachapplicationthataccessesthetable. OracleDatabase10g supportsthefollowingtypesofconstraints: NOT NULL:Disallowsnulls(emptyentries)inatablescolumn UNIQUE:Disallowsduplicatevaluesinacolumnorsetofcolumns PRIMARY KEY:Disallowsduplicatevaluesandnullsinacolumnorsetof columns FOREIGN KEY:Requireseachvalueinacolumnorsetofcolumnsto matchavalueinarelatedtablesUNIQUE orPRIMARY KEY.FOREIGN KEY integrityconstraintsalsodefinereferentialintegrityactionsthatdictate whatOracleshoulddowithdependentdataifthedataitreferencesis altered. CHECK:Disallowsvaluesthatdonotsatisfythelogicalexpressionofthe constraint.
StructuredQueryLanguage StructuredQueryLanguage(SQL)isthesetofstatementswithwhichallprograms andusersaccessdatainanOracledatabase.ApplicationprogramsandOracletools oftenallowusersaccesstothedatabasewithoutusingSQLdirectly,butthese applicationsinturnmustuseSQLwhenexecutingtheusersrequest. SQLenablesyoutoworkwithdataatthelogicallevel.Forexample,toretrieveaset ofrowsfromatable,youdefineaconditionthatisusedtofiltertherows.Allrows satisfyingtheconditionareretrievedinasinglestepandcanbepassedasaunitto anapplicationortoanotherSQLstatement.Youdonotneedtoknowhowtherows arephysicallystoredorretrieved.AllSQLstatementsusetheOracleDatabase optimizertodeterminethemostefficientmeansofaccessingthespecifieddata. SQLwillbecoveredinmoredetailinLesson4,DatabaseInterfaces.Alsoreferto theOracleDatabaseSQLReferenceforadditionalinformation.
TasksofanOracleDatabaseAdministrator AnOracledatabaseadministrator(DBA)istypicallyresponsibleforinstallingthe Oraclesoftwareandcreatingthedatabase.Youmayberesponsibleforcreatingthe databasestoragestructuressuchastablespaces.Inaddition,youmaycreatethe schemaorsetofobjectstoholdapplicationdata. Youneedtoensurethatthedatabaseisavailableforusers.Youcanaccomplishthis bystartingupthedatabase,backingupthedatabaseonaregularbasis,and monitoringtheperformanceofthedatabase database. Asyouproceedthroughthelessonsinthiscourse,youwilllearnhowtoperform eachofthesetasks.YoucanalsorefertotheOracleDatabaseAdministratorsGuide foradditionalinformationabouteachofthetasksoutlinedintheslide.
OracleDatabase10g:Administration WorkshopI213
SystemRequirements Thehardwarerequirementslistedintheslideareminimalrequirementsacrossall platforms.Yourinstallationmayrequiremore,especiallydiskspace.Also,asa generalrule,themoreRAMyouhaveavailablethebetter. Note: Onsystemswith2GBormoreofRAM,theswapspacecanbebetweenone andtwotimesthesizeofRAM. Becauseeachoperatingsystemhasdifferentrequirements,youmustrefertothe operatingsystem systemspecific specificOracledocumentationforinformationaboutoperating systemrequirements.Thesewilllistthereleasesoftheoperatingsystemthatare supported,alongwithhowtosetupanyoperatingsystemgroupsorusers,and otherstepsthatareneededfortheinstallation. Forthiscourseallthenecessaryoperatingsystemrequirementstepshavebeen completed.
OracleDatabase10g:Administration WorkshopI214
OptimalFlexibleArchitecture(OFA) OFAisamethodforconfiguringtheOracledatabaseandotherdatabases.OFA takesadvantageoftheOSanddisksubsystemscapabilitiestocreateaneasyto administerconfigurationthatallowsmaximumflexibilityforgrowingandhigh performancedatabases.ThemethodsdescribedherearethebasicsofOFA. OFAisdesignedto: Organizelargeamountsofcomplicatedsoftwareanddataondisk,toavoid devicebottlenecksandpoorperformance Facilitateroutineadministrativetaskssuchassoftwareanddatabackup, whichareoftenvulnerabletodatacorruption FacilitateswitchingbetweenmultipleOracledatabases Adequatelymanageandadministerdatabasegrowth Helpeliminatefragmentationoffreespaceinthedatadictionary,isolate otherfragmentation,andminimizeresourcecontention FordetailsonthegoalsandimplementationofOFA,refertoOracleInstallation GuideforUNIXSystems, AppendixD.
OracleDatabase10g:Administration WorkshopI215
UsingOptimalFlexibleArchitecture AtthecoreofOFAisanamingscheme,whichgivesyouastandardtoapplytoyour mountpoints(whichareoftenthephysicaldisks),directoriesandsubdirectorieson thosemountpoints,andfinallythefilesthemselves. Mountpointsyntax: Nameallmountpointsusingthesyntax/pm,where p isa stringconstantand m isauniquefixedlengthkey(typicallyatwodigitnumber) usedtodistinguisheachmountpoint.Examplemountpointsare/u01,and/u02. Homedirectoriessyntax: Nameallhomedirectoriesusingthesyntax/pm/h/u. Wherepm isamountpointname, h isa standarddirectorynameand u isthe nameoftheownerofthedirectory.ExamplesofOFAcomplianthomedirectories are: /u01/app/oracle /u01/home/oracle Softwaredirectoriessyntax: TohelpfulfilltheOFAfeatureofsimultaneously executingmultipleversionsofapplicationsoftware,storeeachversionoftheOracle softwareinadirectorymatchingthepattern/pm/h/u/product/v.Here product isaliteralandthevariable v isusedfortheversionnumber.SoanOFA compliantinstallationoftheOracleDatabase10g version10.1.0wouldlooklike: /u01/app/oracle/product/10.1.0
OracleDatabase10g:Administration WorkshopI216
UsingOptimalFlexibleArchitecture(continued) Namingsubdirectoriessyntax: Tofacilitatetheorganizationofadministrativedata, youshouldstoredatabasespecificadministrationfilesinsubdirectoriesmatching thepattern /h/admin/d/a/,where h istheOraclesoftwareownershome directory, admin isaliteral, d isthedatabasename,and a isasubdirectory foreachofthedatabaseadministrationfiles.Followingisalistofthese administrationfilesubdirectories: adhoc:AdhocSQLscriptsforaparticulardatabase arch:Archivedredologfiles adump :Auditfiles(SettheAUDIT_FILE_DEST AUDIT FILE DEST initializationparameter totheadump directory.Cleanoutthissubdirectoryperiodically.) Bdump:Backgroundprocesstracefiles Cdump:Coredumpfiles Create:Programsusedtocreatethedatabase Exp:Databaseexportfiles Logbook:Filesrecordingthestatusandhistoryofthedatabase Pfile i :Instance I parameterfiles fil udump:UserSQLtracefiles Filenamingsyntax: Thefollowingnamingconventionfordatabasefilesensures thattheyareeasilyidentifiable: Controlfiles:/pm/q/d/control.ctl Redologfiles:/pm/q/d/redon.log pm/q/d/tn.dbf Datafiles:/p Thevariablesusedinthesefilenamesare: Pm:Amountpointnameasdescribedpreviously q:AstringdistinguishingOracledatafromallotherfiles(commonlynamed ORACLEororadata) d: ThevalueoftheinitializationparameterDB_NAME (thedatabasename) t: AnOracletablespacename n: Atwo t digit di itstring ti Note: Donotstorefilesotherthancontrolfiles,redologfiles,ordatafiles associatedwithdatabased inthepath/pm/q/d/.
OracleDatabase10g:Administration WorkshopI217
SettingEnvironmentVariables TherearemanyOracleenvironmentvariables,andtheonesmentionedhereare veryimportanttoasuccessfulinstallationanduseofanOracledatabase.Noneof thesearerequiredtobeset,butbysettingthempriortotheinstallationyoumay avoidfutureproblems. ORACLE_BASE:SpecifiesthebaseoftheOracledirectorystructurefor OFA.Useofthisisoptional,butifusedthiscanfacilitatefutureinstallations andupgrades. upgrades Itisadirectorypathforexample: /u01/app/oracle ORACLE_HOME:SpecifiesthedirectorycontainingtheOraclesoftware.Itis adirectorypath,forexample: $ORACLE_BASE/product/10.1.0 ORACLE_SID:Theinitialinstancename(ORCL bydefault).Itisastringof numbersandlettersthatmustbeginwithaletter.OracleCorporation suggeststhatamaximumofeightcharactersbeusedforsystemidentifiers.
OracleDatabase10g:Administration WorkshopI218
SettingEnvironmentVariables(continued) NLS_LANG:SpecifiestheinitialNLSsettingsforasessionontheform language_territory.character set.Forexample,asettingof: AMERICAN DENMARK WE8MSWIN1252 AMERICAN_DENMARK.WE8MSWIN1252 ThissetsthesessiontousethelanguageAMERICAN forOracle messages,sorting,daynames,andmonthnames.Theterritoryis DENMARK,whichsetsthetimeformat,dateformat,andnumericand monetaryconventions.ThecharactersetofWE8MSWIN1252 instructs OracleNettoconvertcharacterinformationtothischaracterset.Thisisan environmentvariableinUNIXandaregistrysettinginWindows.Youcan querythe h actual lNLSsettingsof fyourcurrentsessionby: b select*fromnls_session_parameters; RefertotheGlobalizationSupportGuide forvalidlanguages,territories, charactersets,andmoreinformationaboutlanguagesupport. Note:AWindowsinstallationdefaultstheNLS_LANG valuesinthe registrywherethelanguage partoriginatesfromthekeyboardlanguage. ThishastheeffectthatdefaultinstallationonWindowswithnonAmerican keyboardswillgetthenonAmericanvalueintheNLS_LANG setting.This inturnwilldefaulttheNLS_SORT sessionvariabletobedifferentfrom binary,whichmakesitdifficultfortheoptimizertousecharacterbased indexesforsessionsfromthisnode.
OracleDatabase10g:Administration WorkshopI219
PreinstallationChecks BeforetheOracleUniversalInstallerGUIinterfaceislaunched,thereareanumber ofchecksthatareperformedtoverifythatminimalrequirementsaremet.Inthe eventthatyoursystemdoesntmeetoneormoreoftherequirements,youcan choosetocontinuetheinstallationbyusingtheignoreSysPrereqs flagwhen runningtheinstaller.However,thelikelihoodofasuccessfulinstallationisgreatly reducediftherequirementsarenotmet.Forexample: $sh hrunInstaller I t ll ignoreSysPrereqs i S P Note: Youcanusethehelp flagtoseemoreoptionsfortheOracleUniversal Installer.
OracleDatabase10g:Administration WorkshopI220
OracleUniversalInstaller OracleUniversalInstallerisaJavaapplicationthatperformscomponentbased installationsandenablesdifferentlevelsofintegratedbundle,suite,andWebbased installations,aswellascomplexlogicinasinglepackage.Theinstallationengineis easilyportableacrossallJavaenabledplatforms,andplatformspecificissuescan beencapsulatedfromtheoverallinstallationprocess.TheOracleUniversalInstaller providesthefollowingcapabilitiesforaddressingsoftwaremanagementand distribution: Automaticdependencyresolutionandcomplexlogichandling InstallationfromtheWeb Componentandsuiteinstallations Implicitdeinstallation SupportformultipleOraclehomes Nationallanguagesupport(NLS)/globalizationsupport Supportfordistributedinstallations Unattendedsilentinstallationsusingresponsefiles
OracleDatabase10g:Administration WorkshopI221
InventoryandUNIXGroupName Theinventorydirectoryisanareathatisusedduringtheinstallationofthe software.Thefilesinthisdirectoryshouldnotbedeleted.TheOracleUniversal InstallerinventoryisthelocationfortheOracleUniversalInstallersbookkeeping. Theinventorystoresinformationabout: AllOraclesoftwareproductsinstalledinallOraclehomesonamachine OthernonOracleproductsincludedwithOraclesoftware,suchastheJava RuntimeEnvironment(JRE) Youshouldexpectthesefilestotakeupabout4MBofspace. IfyouareinstallingaproductonaUNIXsystem,theInstallerwillalsopromptyouto providethenameofthegroupthatshouldownthebasedirectory.Youmust chooseaUNIXgroupnamethatwillhavepermissionstoupdate,install,and deinstallOraclesoftware.Membersofthisgroupmusthavewritepermissionsto thebasedirectorythatischosen.Onlyuserswhobelongtothisgroupareableto installordeinstallsoftwareonthismachine.
OracleDatabase10g:Administration WorkshopI222
orainstRoot.sh WheninstallingonaUNIXplatform,youmustruntheorainstRoot.sh scriptas root.Thisscriptcreatestheinventorypointerfile(onLinuxthisfileis /etc/oraInst.loc).TheinventorypointerfileisusedbytheOracleUniversal Installeratstartuptofindtheinventorylocation.Anexampleofthefileis: inventory_loc=/oracle/oraInventory inst_group=oinstall WithaMicrosoftWindowsinstallationtheinventorylocationiscontainedwithin theregistry.
OracleDatabase10g:Administration WorkshopI223
orainstRoot.sh (continued) TheoraintRoot.sh scriptlookslikethefollowing: #!/bin/sh INVPTR=/etc/oraInst INVPTR /etc/oraInst.loc loc INVLOC=/oracle/oraInventory GRP=oinstall PTRDIR="`dirname$INVPTR`"; #Createthesoftwareinventorylocationpointerfile if[!d"$PTRDIR"];then mkdirp$PTRDIR; fi echo"CreatingtheOracleinventorypointerfile($INVPTR)"; echoinventory_loc=$INVLOC>$INVPTR echoinst_group=$GRP>>$INVPTR chmod644$INVPTR #Createtheinventorydirectoryifitdoesn'texist if[!d"$INVLOC" $ ]; ];then echo"CreatingtheOracleinventorydirectory($INVLOC)"; mkdirp$INVLOC; chmod775$INVLOC; fi echo"Changinggroupnameof$INVLOCtooinstall."; chgrpoinstall$INVLOC; if[$?! !=0]; ] then th echo"WARNING:chgrpof$INVLOCtooinstallfailed!"; fi
OracleDatabase10g:Administration WorkshopI224
FileLocations The h Universal i lInstaller ll provides id ad default f l value l onthe h Specify S if File il Locations i page thatpointstothelocationoftheproductsinstallationkitorstage. Oraclehomesareidentifiedbyname.TheOraclehomenameidentifiesthe programgroupassociatedwithaparticularOraclehomeandtheOracleservices installedontheassociatedhome.TheOraclehomenamemustbe1to16 characterslongandcanincludeonlyalphanumericcharactersandunderscores,and mustnotincludespaces. OracleUniversalInstallermaintainsthefollowingOraclehomesonWindows platforms: AllOraclehomesthatarealreadycreatedusingtheOracleUniversalInstaller AllhomescreatedusingthepreviousOracleUniversalInstaller(ORCA based) ThehomesavedintheORACLE_HOME registryentry. OracleUniversalInstallermaintainsthefollowingOraclehomesonUNIX: AllOraclehomesthatarealreadycreatedusingtheOracleUniversalInstaller Allhomesasdefinedinthe/var/opt/oratab file(InLinux, /etc/oratab) ThehomesavedintheORACLE_HOME environmentvariable Ifnoneofthesehomesexists,adefaulthomeiscalculatedbasedonthedisk volumewiththelargestamountoffreespace.
OracleDatabase10g:Administration WorkshopI225
InstallType OracleDatabaseEnterpriseEditionoffersindustryleadingscalabilityandreliability inbothclusteredandsinglesystemconfigurations.Itprovidesthemost comprehensivefeaturesforonlinetransactionprocessingandbusinessintelligence. OracleStandardEditionisforsmallandmediumbusiness,ordepartmental applicationsthatdemandallthepower,reliability,andsecurityofOraclewithoutall theEnterpriseoptions. Thefollowingenterpriselevelfeaturesaresomeoftheoptionsnotavailablewith theOracleStandardEdition: OracleDataGuard:Acomprehensivesetofservicesthatcreate,manage, andmonitoroneormorestandbydatabases. OracleAdvancedSecurity,OracleLabelSecurity,EnterpriseUserSecurity, VirtualPrivateDatabase,Ntierauthentication,andFineGrainedAuditing: TheseoptionsextendthesecurityfeaturesoftheOracleDatabase10g. OraclePartitioning,OracleOLAP,ExportTransportableTablespace,andother featuresthatsupportEnterpriseDataWarehouses. Thecustominstallallowsyoutopickindividualcomponentstoinstall.
OracleDatabase10g:Administration WorkshopI226
PrerequisiteChecks Beforeinstallation,theOracleUniversalInstallercheckstheenvironmentfor requirementsnecessaryforasuccessfulinstallation.Thispageshowthename,type andstatusforallprerequisitechecks.Automaticchecksarerunfirst,ifthereare optionalchecksyoucanrunthemoncetheautomaticchecksarecompete. Onceallchecksarecomplete,therewillbeasummaryofthechecksdoneonthe lowerpartofthepage.Acheckmayrequireverificationifawarningwasproduced duringtheexecutionoramanualcheckwasnotconfirmed confirmed.Toverifyawarningor manualcheck,clickthecheckboxforthecheckthatproducedawarningorisa manualcheck.
OracleDatabase10g:Administration WorkshopI227
StarterDatabase Therearethreetemplatedatabasefromwhichyoucanchoose,oryoucansetupa customstarterdatabase.Thetemplatedatabasesusepreconfiguredfilesand createadatabasequickly,althoughwiththeseyoucancustomizethedatabase.The advancedoptionallowsyoutotalflexibilityinthecreationofthestarteddatabase, butdoestakelongertobuild. Note: Ifyouchoosenottocreateastarterdatabase,thesummarypageappears next. next
OracleDatabase10g:Administration WorkshopI228
ConfigurationandManagement Ifyouselecttocreateastarterdatabaseaspartofyourinstall,youwillgothrougha seriesofpagesaskingyouforinformationtoconfigurethestarterdatabase. DatabaseNaming:Hereyounamethedatabase;thedefaultisorcl. DatabaseCharacterSet:Thisisthecharactersetusedinthedatabaseto storeyourdata.Youshouldtakesometimetodeterminewhatisthebase charactersetforyourdata.Althoughitispossibletochangeacharacterset later itcanbeaverytimeconsumingtask, later, task andwillrequiresomedowntime foryourdatabase.Ifunsureaboutwhichcharactersettouseandyouknow youwillbeusingmultiplelanguages,theUnicodeStandardUFT8AL32UTF8 isagoodchoice.TheWE8ISO8859P1charactersetdoesnthavesupportfor theeurosymbol(),butWE8ISO8859P15does.Formoredetailson selectingtheappropriatecharacterset,seetheOracleDatabase GlobalizationSupportGuide. SampleSchemas:Thesampleschemasareasetofschemasusedfor demonstrationsandtraining. DatabaseManagement:Gridcontrolisusedtomanagemanydatabases eitherononemachineorseveralmachines.Databasecontrolisusedto manageasingledatabase.
OracleDatabase10g:Administration WorkshopI229
FileStorageandBackupRecovery Filestorageoptions: FileSystem:ThisspecifieswheretostorefilesinyourOSconfiguredfile system. AutomaticStorageManagement(ASM):AutomaticStorageManagement filesarecreatedandmanagedautomatically,andyougettheadditional benefitsoffeaturessuchasmirroringandstriping.Fordetailsonhowtoset upASM, ASM seetheOracleDatabaseAdministrators Administrator sGuide. RawDevices(Partitions):Thesearediskpartitionswithoutafilesystemon them.Generallyyoushouldusetheseonlyifyouareveryfamiliarwiththe useofrawpartitionsalready.CheckyourOSdocumentationfordetailson settingupandmaintainingrawpartitions. BackupandRecoveryOptions: DonotenableAutomatedbackups:Eventuallyyouwillneedtosetupa backupplan.Ifyouselectnottosetitupnowyoucandosolater. EnableAutomatedBackups:WhenyouenableAutomatedBackups,you needtospecifywherethebackupswillbestored,andinformationaboutthe backupjobusedforthebackups.
OracleDatabase10g:Administration WorkshopI230
OracleDatabase10g:Administration WorkshopI231
Installation Duringtheinstallationyoucanwatchtheprogressionoftheinstallation.
OracleDatabase10g:Administration WorkshopI232
ConfigurationAssistants Ifyouhaveselectedtocreateastarterdatabasewiththeinstall,theconfiguration assistantspagewillbedisplayedatthecompletionofthesoftwareinstall. iSQLPlusConfigurationAssistant:ThisconfigurestheOC4J(Oracle ContainersforJava)instancewhichisusedbyiSQLPlusandothertoolsto connecttotheOracledatabase. OracleNetConfigurationAssistant:Thisconfiguresbasicnetwork componentsduringinstallation, installation including(thesecomponentsarecoveredin detailinlaterlessons): Listenernamesandprotocoladdresses Namingmethodstheclientwillusetoresolveconnectidentifiersto connectdescriptors Netservicenamesinatnsnames.orafile Directoryserverusage OracleDatabaseConfigurationAssistant:Thiscreatesthestarterdatabase youselected.Itusestheselectionyoumadetocreatethedatabase.Inthe nextlessonyouwilllearnmoreaboutOracleDatabaseConfiguration Assistant.Whenthisconfigurationassistantfinishesyouwillhavethe opportunitytounlockaccountsandchangepasswords.
OracleDatabase10g:Administration WorkshopI233
ConfigurationAssistants(continued) WheninstallingonaUNIX(orLinux)OS,oryoudidnotchosetocreateastarted database,youwillbepromptedtorunonemorescriptasroot.Thescriptisnamed root.sh.Thisscriptupdatesorcreatesafilethatcontainsinformationabout ORACLE_HOME locationsanddatabases.InaLinuxinstallationthefileisnamed /etc/oratab. WithaninstallationonMicrosoftWindowsOS,thereisnoroot.sh script becausetheinformationaboutORACLE_HOME anddatabasesisstoredinthe registry.Theoratab fileisthefilewheretheuserplacesreferencestoall databasestobediscoveredbytheAgentandcontrolledbyOracleEnterprise Manager.
OracleDatabase10g:Administration WorkshopI234
OracleDatabase10g:Administration WorkshopI235
OracleDatabase10g:Administration WorkshopI236
Practice2 InstalltheOracleSoftware DuringthepracticesofthiscourseyouwillassumetheroleofanewDBAwhowillbe supportingadatabasewhichisusedforaHumanResourcesapplication.Youworkfor anITmanager;yourcoworkerisanOracleCertifiedProfessional. Professional TheOSaccountsonyourmachineare: Theoracle userwithapasswordoforacle. Theroot userwithapasswordoforacle. ThesystemadministratorhassetuptheOSsothatitisreadyfortheinstallandthe installmediaisstagedat/stage/Disk1.Installthesoftwareastheuseroracle. Settheglobalnametoorcl.oracle.com andtheSIDtoorcl U AL32UTF8 Use 32 8 for f the h database d b character h set Createthedatabasewithsampleschemas Makesureoinstall istheselectedgroupnameontheUnixGroupName screen AcceptthedefaultsontheSpecifyFileLocationspage CreateadatabaseusingtheGeneralPurposetemplate Useoracle asthep passwordforalltheadministrationaccounts(sys y , system,sysman anddbsnmp) UnlocktheHRschema
OracleDatabase10g:Administration WorkshopI237
OracleDatabase10g:Administration WorkshopI339
DatabaseArchitecture ThefilesthatconstituteanOracledatabaseareorganizedintothefollowing: Controlfiles:Containdataaboutthedatabaseitself,calledthemetadata. Thesefilesarecriticaltothedatabase.Withoutthemyoucannotopenthe datafilestoaccessthedatawithinthedatabase. Datafiles:Containthedataofthedatabase Onlineredologfiles:Allowforinstancerecoveryofthedatabase.Ifthe databasecrashesanddoesnotloseanydatafiles, files theinstancecanrecover thedatabasewiththeinformationinthesefiles. Thereareotherfileswhicharenotofficiallypartofthedatabasebutareimportant tothesuccessfulrunningofthedatabase.Theseare: Parameterfile:Usedtodefinehowtheinstancewillbeconfiguredwhenit startsup Passwordfile:Allowsuserstoconnectremotelytothedatabaseand performadministrativetasks Archivelogfiles:Containanongoinghistoryoftheredogeneratedbythe instance.Thesefilesallowfordatabaserecovery;usingthesefilesanda backupofthedatabase,youcanrecoveralostdatafile.
OracleDatabase10g:Administration WorkshopI340
OracleDatabase10g:Administration WorkshopI341
ControlFiles Whenyoustarttheinstanceandmountthedatabase,thecontrolfileisread.The entriesinthecontrolfilespecifythephysicalfilesthatthedatabasecomprises. Whenyouaddadditionalfilestoyourdatabase,thecontrolfileisautomatically updated. Thelocationofthecontrolfilesisspecifiedinaninitializationparameter. Toprotectagainstfailureofthedatabaseduetothelossofthecontrolfile,you shouldmultiplexthecontrolfileonatleastthreedifferentphysicaldevices. devices By specifyingmultiplefilesthroughtheinitializationparameteryouenabletheOracle databaseservertomaintainmultiplecopiesofthecontrolfile. Youcanaccessinformationaboutthecontrolfilesinyourdatabasebyclickingthe ControlfileslinkintheStorageregionoftheAdministrationpageinEnterprise Manager.TheControlfilesGeneralpagedisplaysthenameandlocationofthe controlfilesinyourdatabase.TheAdvancedpageprovidesinformationaboutthe creationofthecontrolfileanddatabaseidentification.TheRecordSectionpage displaysinformationabouttheentriesinthecontrolfile.
OracleDatabase10g:Administration WorkshopI342
RedoLogFiles Youuseredologfilestorecordchangestothedatabaseasaresultoftransactions andinternalOracledatabaseserveractions.Theyprotectthedatabasefromlossof integrityduetosystemfailurescausedbypoweroutages,diskfailures,andsoon. Redologfilesshouldbemultiplexedtoensurethattheinformationstoredinthem isnotlostintheeventofadiskfailure. Theredologconsistsofgroupsofredologfiles.Agroupconsistsofaredologfile anditsmultiplexedcopies. copies Eachidenticalcopyissaidtobeamemberofthatgroup andeachgroupisidentifiedbyanumber.Thelogwriter(LGWR)processwritesredo recordsfromtheredologbuffertoaredologgroupuntilthefileisfilledoralog switchoperationisrequested.Thenitswitchesandwritestothefilesinthenext group.Theredologgroupsareusedinacircularfashion. Youcanaccessinformationabouttheredologfilesinyourdatabasebyclickingthe RedoLogGroupslinkintheStorageregionoftheAdministrationpage.Youcanview detailedinformation,includingthenamesoftheredologfiles,byselectingagroup andclickingView.
OracleDatabase10g:Administration WorkshopI343
TablespacesandDatafiles Adatabaseisdividedintologicalstorageunitscalledtablespaces,whichcanbe usedtogrouprelatedlogicalstructurestogether.Eachdatabaseislogicallydivided intooneormoretablespaces.Oneormoredatafilesareexplicitlycreatedforeach tablespacetophysicallystorethedataofalllogicalstructuresinatablespace. Note: Youcanalsocreatebigfile tablespaces,whicharetablespaceswitha single,butverylarge(upto4Gblocks)datafile.Traditionalsmallfile tablespaces(whicharethedefault), default) cancontainmultipledatafiles, files butthefiles cannotbeaslarge.Formoreinformationaboutbigfile tablespacesseethe DatabaseAdministratorsGuide.
OracleDatabase10g:Administration WorkshopI344
Segments,Extents,andBlocks Databaseobjectssuchastablesandindexesarestoredintablespacesassegments. Eachsegmentcontainsoneormoreextents.Anextentconsistsofcontiguousdata blocks,whichmeansthateachextentcanexistonlyinonedatafile.Datablocksare thesmallestunitofI/Ointhedatabase. WhenthedatabaserequestsasetofdatablocksfromtheOS,theOSmapsthisto anactualOSblockonthestoragedevice.Becauseofthis,youneednotbeawareof thephysicaladdressofanyofthedatainyourdatabase. database Thisalsomeansthatadata filecanbestripedandormirroredonseveraldisks. Thesizeofthedatablockcanbesetatdatabasecreationtime.Thedefaultsizeof8 Kisadequateformostdatabases.Ifyourdatabasesupportsadatawarehouse applicationthathaslargetablesandindexes,thenalargerblockmaybebeneficial. Ifyourdatabasesupportsatransactionalapplicationwherereadsandwritearevery random,thenspecifyingasmallerblocksizemaybebeneficial.Themaximumblock sizedependsonyourOS.Theminimumblocksizeis2Kandshouldrarely(ifever) beused. Youcanhavetablespaceswithdifferentblocksizes.Generallythisshouldbeused onlyforsupportoftransportabletablespaces.FordetailsseetheDatabase AdministratorsGuide.
OracleDatabase10g:Administration WorkshopI345
OracleInstanceManagement AnOracledatabaseserverconsistsofanOracledatabaseandanOracleinstance. AnOracleinstanceismadeupofmemorybuffersknownastheSystemGlobalArea (SGA)andbackgroundprocessesthathandlemuchofthebehindthesceneswork involvedinrunninganinstance. Theinstanceisidle(nonexistent)untilitisstarted.Whentheinstanceisstarted,an initializationparameterfileisreadandtheinstanceisconfiguredaccordingto instructionscontainedwithintheparameterfile. file Aftertheinstanceisstartedandthedatabaseisopened,userscanaccessthe database.
OracleDatabase10g:Administration WorkshopI346
OracleMemoryStructures ThebasicmemorystructuresassociatedwithanOracleinstanceinclude: SystemGlobalArea(SGA):Sharedbyallserverandbackgroundprocesses ProgramGlobalArea(PGA):Privatetoeachserverandbackgroundprocess; thereisonePGAforeachprocess. TheSystemGlobalArea(SGA)isasharedmemoryareathatcontainsdataand controlinformationfortheinstance. TheSGAincludesthefollowingdatastructures: Databasebuffercache:Cachesblocksofdataretrievedfromthedatabase Redologbuffer:Cachesredoinformation(usedforinstancerecovery)untilit canbewrittentothephysicalredologfilesstoredondisk Sharedpool:Cachesvariousconstructsthatcanbesharedamongusers Largepool:OptionalareausedforbufferinglargeI/Orequests Javapool:UsedforallsessionspecificJavacodeanddatawithintheJava VirtualMachine(JVM) Streamspool:UsedbyOracleStreams WhenyoustarttheinstanceusingEnterpriseManagerorSQL*Plus,thememory allocatedfortheSGAisdisplayed.
OracleDatabase10g:Administration WorkshopI347
OracleMemoryStructures(continued) WiththedynamicSGAinfrastructure,thesizeofthedatabasebuffercache,the sharedpool,thelargepool,theJavapool,andtheStreamspoolchangeswithout shuttingdowntheinstance instance. Thepreconfigureddatabasehasbeenpretunedwithadequatesettingsforthe memoryparameters.However,asyourdatabaseusageexpandsyoumayfindit necessarytoalterthesettingsofthememoryparameters. Oracleprovidesalertsandadvisorstoidentifymemorysizingproblemsandtohelp youdetermineappropriatevaluesformemoryparameters. AProgramGlobalArea(PGA)isamemoryregionwhichcontainsdataandcontrol information f f foreach hserverprocess.Aserverprocessisaprocessthat h servicesa clientsrequests.EachserverprocesshasitsownprivatePGAareathatiscreated whentheserverprocessisstarted.Accesstoitisexclusivetothatserverprocess, andisreadandwrittenonlybyOraclecodeactingonbehalfofit. TheamountofPGAmemoryusedanditscontentdependsonwhethertheinstance isconfiguredinsharedservermode(sharedserverwillbediscussedinlesson13). Generally, y,thePGAcontainsthefollowing: g PrivateSQLarea:Containsdatasuchasbindinformationandruntime memorystructures.EachsessionthatissuesaSQLstatementhasaprivate SQLarea. Sessionmemory:Memoryallocatedtoholdsessionvariablesandother informationrelatedtothesession.
OracleDatabase10g:Administration WorkshopI348
OracleProcesses When h youinvoke i k anapplication li i programoranO Oracle l tool lsuch hasEnterprise i Manager,theOracleservercreatesaserverprocesstoexecutecommandsissued bytheapplication. Oraclealsocreatesasetofbackgroundprocessesforaninstancethatinteractwith eachotherandwiththeoperatingsystemtomanagethememorystructures, asynchronouslyperformI/Otowritedatatodisk,anddogeneralhousekeeping. Whichbackgroundprocessesarepresentdependsuponthefeaturesthatarebeing usedinthedatabase database.Themostcommonbackgroundprocessesarethefollowing: Systemmonitor(SMON):Performscrashrecoverywhentheinstanceis startedfollowingafailure Processmonitor(PMON):Performsprocesscleanupwhenauserprocess fails. Databasewriter(DBWn):Writesmodifiedblocksfromthedatabasebuffer cachetothefilesondisk Checkpoint(CKPT):SignalsDBWn atcheckpointsandupdatesallofthedata filesandcontrolfilesofthedatabasetoindicatethemostrecentcheckpoint Logwriter(LGWR):Writesredologentriestodisk Archiver(ARCn):Copiestheredologfilestoarchivalstoragewhenthelog filesarefulloralogswitchoccurs
OracleDatabase10g:Administration WorkshopI349
DataDictionary Thedatadictionaryisthecentralsetoftablesandviewsthatareusedasaread onlyreferenceaboutaparticulardatabase.Adatadictionarystoresinformation suchas: Thelogicalandphysicalstructureofthedatabase Validusersofthedatabase Informationaboutintegrityconstraints Howmuchspaceisallocatedforaschemaobjectandhowmuchofitisin use Adatadictionaryiscreatedwhenadatabaseiscreatedandisautomatically updatedwhenthestructureofthedatabaseisupdated. ThedatadictionaryiswhereEnterpriseManagerretrievesinformationabout objectsinthedatabase.Youcanalsoselectinformationfromthedatadictionary tables.EnterpriseManagerdoesthisforyouandpresentstheinformationinavery easytouseformat.TheDICTIONARY viewcontainsdescriptionsofdata dictionarytablesandviews.Thesetablesandviewsgenerallyhaveoneofthree prefixes: USER:Informationpertainingtotheobjectsownedbythecurrentuser. ALL:Informationpertainingtotheobjectsaccessibletothecurrentuser. DBA:Informationpertainingtoeveryobjectinthedatabase.
OracleDatabase10g:Administration WorkshopI350
DatabaseControl OracleDatabase10g shipswithOracleEnterpriseManagersDatabaseControl. DatabaseControlisawebenabledcontrolconsolethatthedatabaseadministrator canusefor: Performancemonitoring Managingproactivealerts Controllingmaintenancewizardsandadvisors Useranddatabaseobjectadministration Databasebackupandrecovery Storagemanagement andmuchmore. EachOracleDatabase10g youcreatewillhaveitsownDatabaseControl.Youwillbe usingEnterpriseManagerDatabaseControlinthiscoursetomanagethedatabase onyourclassroomPC.
OracleDatabase10g:Administration WorkshopI351
GridControl DatabaseControlscapabilitiescanbeextendedandintegratedwiththerestofyour systemsusingOracleEnterpriseManagersGridControl.Thearchitectureofthe GridControlframeworkprovidesahighlevelofflexibilityandfunctionality.Youcan easilycustomizeEnterpriseManagertosuitthemonitoringandadministrative needsofyourenvironment. ThetypicalEnterpriseManagerframeworkconfigurationconsistsofthefollowing functionalareas: Managedtargets Managementservices Webbasedgridcontrol Databasecontrol Applicationservercontrol
OracleDatabase10g:Administration WorkshopI352
DatabaseConfigurationAssistantOverview(DBCA) DatabaseConfigurationAssistant(DBCA)enablesyoutocreate,changethe configurationof,ordeleteadatabase.Youcanalsocreateadatabasefromalistof predefinedtemplatesoruseanexistingdatabaseasasampletocreateanew databaseortemplate.Atemplateisapredefineddatabasethatyouuseasa startingpointforanewdatabase. Createadatabase:Ifyouselectthisoption,youcancreateanewdatabase ortemplate template. Configureoptionsinadatabase:IfyouselecttheChangedatabase configurationoption,youcanconfigureinstalledoptionsthathavenot previouslybeenconfiguredforusewithyourdatabase.Youcanalsoenable ordisablesharedserversupport. Note: TheChangedatabaseconfigurationoptionisnotavailableforOracle RealApplicationClusters. Deleteadatabase:Ifyouselectthisoption,youcandeleteallthedatabase files. ManageTemplates:Ifyouselectthisoption,youhavethreewaystocreatea template: Fromanexistingtemplate Fromanexistingdatabase(structureonly) Fromanexistingdatabase(structureaswellasdata)
OracleDatabase10g:Administration WorkshopI353
CreatingaDatabase WhencreatingadatabasewithDBCA,youcanselectoneofthreepredefined databases,orcreateacustomdatabase.OracleCorporationshipspredefined templates.Therearetemplatesfordatawarehouse,generalpurpose,and transactionprocessingdatabases.Thetemplatescontainsettingsoptimizedfor workload.ClickShowDetailstoseetheconfigurationforeachtypeofdatabase. Choosethetemplatesuitedtothetypeofworkloadyourdatabasewillsupport.If youarenotsure, sure selectthedefaultGeneralPurposetemplate. template Formorecomplexenvironments,youmaywanttoselecttheCustomDatabase option.Thisresultsinamoreextensiveinterviewandtakeslongertocreateyour database,becauseadatabasecreationscriptmustberun.
OracleDatabase10g:Administration WorkshopI354
DatabaseIdentification EntertheGlobalDatabaseName,intheformdatabase_name.domain_name andSID(Oraclesystemidentifier).TheSIDdefaultstothedatabasenameand uniquelyidentifiestheinstancethatrunsthedatabase.Itisimportantto understandthattheSIDisthenameoftheinstancethatwillconnecttoadatabase andnotnecessarilythenameofthedatabase.Aninstanceandthedatabasethe instanceconnectstoneednothavethesamename,althoughitisconvenient.With RealApplicationClusters Clusters,multipleinstancesopenthesamedatabaseandtheSIDs foreachinstancewillbedifferent.
OracleDatabase10g:Administration WorkshopI355
ManagementOptions UsethispagetosetupyourdatabasesoitcanbemanagedwithOracleEnterprise Manager,whichprovideswebbasedmanagementtoolsforindividualdatabases,as wellascentralmanagementtoolsformanagingyourentireOracleenvironment.To useEnterpriseManager,selectConfiguretheDatabasewithEnterpriseManager. IftheOracleManagementAgenthasbeeninstalledonyourhostcomputer,then youaregiventheoptionofselectingcentralmanagementbyselectingUseGrid ControlforDatabaseManagement. Management Ifyouselectthistypeofmanagement, management youmust alsoindicatewhichmanagementservicetouseinthedropdownmenu.Otherwise, selectUseDatabaseControlforDatabaseManagementtomanageyourdatabase individually.Ifyouchoosethisoption,youcanadditionallyenableEmail NotificationsandEnableDailyBackup.ClickHelpformoreinformationaboutthese options.
OracleDatabase10g:Administration WorkshopI356
PasswordsandStorage Databaseschemapasswords:Providepasswordsfortheadministrativeusers,SYS, SYSTEM,SYSMAN andDBSNMP.Youcanprovideapasswordforeachone separatelyorprovideonepasswordforall. FileStorageOptions FileSystem:ThisstoresfilesinyourOSconfiguredfilesystem. AutomaticStorageManagement(ASM):AutomaticStorageManagement filesarecreatedandmanagedautomatically, automatically andyougettheadditional benefitsoffeaturessuchasmirroringandstriping.Fordetailsonhowtoset upASM,seetheOracleDatabaseAdministratorsGuide. RawDevices(partitions):Thesearediskpartitionswithoutafilesystemon them.Generallyyoushouldusetheseonlyifyouareveryfamiliarwiththe useofrawpartitionsalready.CheckyourOSdocumentationfordetailson settingupandmaintainingrawpartitions.
OracleDatabase10g:Administration WorkshopI357
FileLocationsandBackupRecovery File il Locations i UseDatabaseFileLocationsfromTemplate:Selectingthisoptioninstructs theDBCAtousethedirectoryinformationasspecifiedinthetemplate.You willhaveanopportunitylatertomakemodificationstodatabasefilenames andlocations. UseCommonLocationforAllDatabaseFiles:Thisoptionrequiresyouto specifyanewcommonareaforallyourdatabasefiles.Youwillhavean opportunitylatertomakemodificationstodatabasefilenamesand locationsontheStoragepage. UseOracleManagedFiles:Selectthisoptiontoeliminatetheneedforyou, theDBA,todirectlymanageoperatingsystemfilesthatanOracledatabase comprises.Youmustprovidethepathtothedatabasearea.Formoredetails onOracleManagedFilesseetheDatabaseAdministratorsGuide. BackupandRecoveryOptions AflashrecoveryareaisalocationinwhichOraclecanstoreandmanagefiles relatedtobackupandrecovery.Fordetailsonsettingupandsizingtheflash recoveryarea,seetheOracleDatabaseBackupandRecoveryBasicsguide. Enablingarchivingputsthedatabaseinarchivelogmodeatcreationtime. ArchivingwillbecoveredmoredetailinthelessontitledBackupand RecoveryConcepts.
OracleDatabase10g:Administration WorkshopI358
OracleDatabase10g:Administration WorkshopI359
ContentandInitializationParameters Sampleschemas:Thesampleschemasareasetofschemasusedfor demonstrationsandtraining. Customscripts:Hereyoucanspecifyanyscriptsyouwantrunatcreationtime. Initializationparameters:Thefourtabscanbeusedtosetthemostcommon parameters,andbyclickingAllInitializationParametersyoucanviewandsetallthe parameters. Memory:ThisallocatesthememoryusedbytheSGAandeachPGAofthe userprocesses. Sizing:Hereyoucansettheblocksize,butifusingatemplatetheblocksize cannotbechanged.YoucanalsosetthemaximumnumberofOSprocesses thatareallowedtoconnecttotheinstance. Charactersets:Hereyousetthedefaultcharactersetforthedatabaseand thenationalcharacterset.Thedefaultcharactersetisusedformostdata typesinthedatabase.TheNCHAR,NVARCHAR2,andNCLOB datatypes supportUnicodedataonly,whichisthenationalcharactersetoption.You canuseeithertheAL32UTF8 ortheAL16UTF16 characterset.Formore informationonchoosingacharactersetrefertoGlobalizationSupport Guide.
OracleDatabase10g:Administration WorkshopI360
ContentandInitializationParameters(continued) Connectionmode:OracleDatabasecreatesserverprocessestohandletherequestsof userprocessesconnectedtoaninstance.Aserverprocesscanbeeitherofthe following: Adedicatedserverprocess,whereoneserverprocessservicesonlyoneuser process Asharedserverprocess,whereaserverprocesscanservicemultipleuser processes Yourdatabaseisalwaysenabledtoallowdedicatedserverprocesses,butyoumust specificallyconfigureandenablesharedserverbysettingoneormoreinitialization parameters.UsingOracle l Shared h dServerswill llbe b discussed d dinal laterl lesson.Youcanalso l refertotheDatabaseAdministratorsGuide.
OracleDatabase10g:Administration WorkshopI361
DatabaseStorage Onthispageyoucanseethestoragesettingsforthecontrolfiles,datafiles,and onlineredologfiles.Whenusingatemplateyoucannotaddanydatafilestothe database,butyoucanaddmorecontrolfilesandonlineredologfiles. Multiplecontrolfilesareallmaintainedsuchthateachisanexactcopyofthe others.DBCAautomaticallymultiplexesthecontrolfileacrossthreefiles.Youcan addmoreifyouwant. Redologsworkingroupsandshouldalsobemultiplexed. multiplexed DBCAdoesn doesnt t automaticallymultiplextheonlineredologfiles.Eachfileinaloggroupisanexact copyoftheothermembersinthegroup.Youcanaddinmorememberspergroup noworaddthematanytimeaftercreationofthedatabase.
OracleDatabase10g:Administration WorkshopI362
CreationOptionsandCreate Youhavetheoptionofsavingthedatabasethatyouhavedefinedasatemplate. Thistemplatecanbeusedlatertocreatedatabaseswithalltheoptionsyouhave defined. AfteryouclickNextontheCreationOptionspage,aConfirmationpageappears whereyoucanreviewalltheoptionstaken.Thisisthelastchancetomakeachange beforethecreationprocessstarts.YoucanalsosavetheConfirmationpageasan HTMLfiletoreviewlater later.AfteryouclickOKontheConfirmationpage, page thedatabase creationstarts. Attheendoftheinstallationyouwillseeapagepresentingyoutheopportunityto unlockaccountscreatedandchangepasswordsifyoudesire.ClickPassword Managementtounlockaccountsandchangepassword.ClickOkwhendont managingtheaccounts,thenclickExittoDBCA.
OracleDatabase10g:Administration WorkshopI363
OtherActionswithDBCA Configuredatabaseoptionsinadatabase:Thisallowsyoutoaddinoptionstoan existingdatabase. Deleteadatabase:Thispermanentlyremovesadatabasefromyoursystem. ManageTemplates:Thisallowsyoutoperformthefollowingwithtemplates. CreateaTemplate: FromanexistingTemplate:Usesandexistingtemplateasastarting pointtobuildanewtemplate. template Manyofthepagesarethesameas thoseinthecreatedatabaseprocess. Fromanexistingdatabase(structureonly):Thisrequireslogginginto anexistingdatabaseandusesitsstructureasastartingpoint. Fromanexistingdatabase(structureaswellasdata):Thisrequires loggingintoanexistingdatabaseandusesitsstructureasabase line;howeveritcapturesthedatafilesaswell. Deleteadatabasetemplate:Thispermanentlyremovesadatabasetemplate fromyoursystem
OracleDatabase10g:Administration WorkshopI364
OracleDatabase10g:Administration WorkshopI365
OracleDatabase10g:Administration WorkshopI366
Practice3:CreateanOracleDatabase YourITmanagerreturnsfromameetingwithafewoftheusersthatwillbeusingthe newsystemyouaregoingtosupport.Theywantaseconddatabaseforstorageof historicaldata. data UsingDBCAyouwillcreateadatabaseusingtheGeneralPurposetemplatewiththe followinginformation: Settheglobaldatabasenamehist.oracle.com andtheSIDtohist. Setthepasswordstooracle. ForthestorageoptionsuseFileSystem. UseFlashRecoveryarea,acceptthedefaultsizeandlocation,disablethe b k backups. Afteryoucreatethedatabasetheusersdecidedthattheydontneedtotrackthe historicaldata.Dropthehist database
OracleDatabase10g:Administration WorkshopI367
OracleDatabase10g:Administration WorkshopI469
WhatIsSQL? Structuredquerylanguage(SQL)isthesetofstatementswithwhichallprogramsand usersaccessdatainanOracledatabase.SQLstatementsaredividedintothefollowing categories: Datadefinitionlanguage(DDL)statements Datamanipulationlanguage(DML)statements Transactioncontrolstatements Sessioncontrolstatements Systemcontrolstatements EmbeddedSQLstatements Withtheadventofgraphicaluserinterface(GUI)tools,youdonthavetowritethese statementsyourself.Formanytasks,thetoolswritesthestatementsforyou.However,if youneedtoruntheSQLwithinascript,thenyoumustwritetheSQLstatements. Note: ThissectionprovidesyouanoverviewofthebasicSQLstatementsavailable.These statementshavemanyoptionswhicharenotdiscussedhere,andtherearemany statementsnotcovered.Forfullsyntaxandothercommands,seetheOracleDatabase SQLReference documentation.
OracleDatabase10g:Administration WorkshopI470
UsingSQL SQLisarichlanguagewhosesyntaxallowsstatementsassimpleasafewwords,and statementssocomplextheyfillpageswiththeirsyntax.Thereareseveralwaystosend SQLcommandstothedatabase. database OracleSQL*PlusandOracleiSQL*Plus:Bothofthesetoolsprovideasimple, commandlineinterfacewiththedatabase. OracleForms:MaskstheSQLfromusersbyprovidingagraphicalbased environmentfromwhichtheycanmanipulatedata. OracleReportsandOracleDiscoverer:Thesereportingtoolsallowcomplex databasequeriestobeexecutedwithasinglemouseclick.OracleReportsis generallyusedforstandard, standard fixedreports. reports OracleDiscovererisadataminingtool thatallowsuserstobrowsedatawithoutknowingtheunderlyingstructureand relationshipofthatdata. OracleEnterpriseManager:Agraphicaltoolthatmanipulatesdatabaseobjects andstructures.ByusingEnterpriseManager,theadministratorcanconcentrateon accomplishingthetaskathandratherthanrememberingsyntax. Thirdpartytools.SQLisastandardsbasedlanguageusedbymostmajordatabase vendors.Therearehundredsoftoolsforinterfacing gwithdatabasesusing gSQL.
OracleDatabase10g:Administration WorkshopI471
OracleDatabase10g:Administration WorkshopI472
WhatIsSQL*Plus? YoucanusethecommandlineinterfacetoSQL*PlustowriteSQL*Plus,SQLand PL/SQLcommandsto: Enter,edit,runstore,retrieve,andsaveSQLcommandsandPL/SQLblocks Format,calculate,store,andprintqueryresults Listcolumndefinitionsforanytable Sendmessagestoandacceptresponsesfromanenduser Performdatabaseadministration PerformthefollowingstepstostartSQL*Plus: 1. Openaterminalwindow. 2. Atthecommandlineprompt,entertheSQL*Pluscommand intheform: $sqlplus/nolog 3. Enterconnect followedbytheuseryouwanttoconnectas. 4. Whenprompted,entertheuserspassword. 5. SQL*Plusstartsandconnectstothedefaultdatabase.
OracleDatabase10g:Administration WorkshopI473
WhatIsiSQL*Plus? iSQL*PlusisabrowserbasedinterfacetoanOracledatabase.Itisacomponentofthe SQL*Plusproduct.iSQL*Plushasaserversidelistenerprocessthatmustbestarted beforeyoucanconnectwithabrowser.Tostartthisserverprocessuse: isqlplusctlstart Aftertheserverprocessisstarted,performthefollowingstepstoconnecttoiSQL*Plus: 1. ConnecttotheInternetoryourintranet,andstartyourWeb browser. 2. Enteryour theiSQL*PlusURL.The iSQL*PlusURLlookslikethe following: http://hostname:port/isqlplus. TheportnumberusedbyiSQL*Plusisusually5560unlesstheOracleUniversalInstaller (OUI)detectssomethingalreadyusingthatport.Check $ORACLE_HOME/install/portlist.ini tofindtheportusedbyiSQL*Plus.
OracleDatabase10g:Administration WorkshopI474
WhatIsiSQL*Plus?(continued) 3. PressEntertogototheURL.TheiSQL*PlusLoginpageisdisplayed inyourWebbrowser. 4. Entery yourOracleusernameandpassword p intheUsernameand Passwordfields.IfyoudonotknowyourOracleusernameandpassword,askyour databaseadministrator. 5. LeavetheConnectionIdentifierfieldblanktoconnecttothe defaultdatabase.EntertheOracleNetdatabasealiastoconnecttoadatabase otherthanthedefault. 6. ClickLogintoconnecttothedatabase.TheiSQL*PlusWorkspaceis di l din displayed i yourWeb W bbrowser. b
OracleDatabase10g:Administration WorkshopI475
UsingiSQL*Plus IntheWorkspacetabbedpageyoucanenteroneormoreSQLandSQL*Pluscommands. WhenyouclickExecuteallthecommandsareexecutedinordertoptobottom.The outputisdisplayedbelowthecommandpanel.Ifyouhavemorethanonecommand,SQL commandsmustbeterminatedbyasemicolon(;)orslash(/). TheHistorytabbedpageshowsthepriorcommandsusedwithinthesession.Youcanload ordeletepriorcommands.Bydefaultthelast10commandsaresaved. YoucanclickPreferencestochangeboththelookoftheiSQL*Pluswindowaswellasits functionality.Forexampleyoucansetthenumberofcommandstobesaved(Rangeis0 to100), 100) howtheoutputisformatted, formatted andexecutionoptions. options
OracleDatabase10g:Administration WorkshopI476
DescribingData TheDESCRIBE commandisusedtoseethedescriptionofadatabaseobject.This commandisnotpartoftheSQLstandard,butisoneofseveralSQL*Pluscommand uniquetoOracletools.UnlikeSQLcommands,theSQL*Pluscommandscanbe abbreviatedtoitsfirstfourletters. Theexampleshowsthestructureoftheemployees table.Fromtheoutputyoucansee thenameofeachcolumn,whetherthecolumnismandatory,andthedatatype associatedwiththatcolumn.Forexample,thecolumnwiththenameofLAST_NAME is mandatorybecauseNOT NULL meansthatrowsmustcontainavalueinthiscolumn. AlsothedescriptionshowsthiscolumntobeoftypeVARCHAR2(25),whichmeansit cancontaincharacterdataandhaveamaximumlengthof25characters. FormoreinformationaboutSQL*PlusanditscommandsseetheSQL*PlusReference Guide.
OracleDatabase10g:Administration WorkshopI477
QueryingData ThemostbasicSELECT statementhasthreeparts: TheSELECT lististhelistofcolumnsyouwanttoretrievefromthetableor tables.Thisismandatory. TheFROM clauseiswhereyouspecifythetableortablesfromwhichyouare retrievingdata.Thisismandatory. TheWHERE conditionlimitstherowsretrievedfromthetablesintheFROM clause.Thispartisoptional;ifnotincludedyouwillretrievealltherows. SQLisalsonotacasesensitivelanguage.Intheexample,thecaseismixedrather unusuallyonlyasanexampletodemonstratethis. this Manyorganizationshavecase standardsthatfacilitatereadability.Bydefault,theonlytimecaseisimportantisina quotedstring.Forexample,ifyouwanttoretrieveonlytherowthathasthelastnameof DeHaan,thentheWHERE conditionlookslikethefollowing: WHERElast_name='DeHaan'
OracleDatabase10g:Administration WorkshopI478
SortingtheData UsetheORDER BY clauseonaselectstatementtosorttheoutput.Thedefaultorderis ascending,togetthedataindescendingorderuseDESC afterthecolumnnameyouare sortingon.Forexample: ORDERBYlast_namedesc Youcansortonmorethenonecolumn.Forexample,thiswillsortdescendingbythelast nameandthenascendingbydepartmentid: ORDERBYlast_namedesc,department_ID
OracleDatabase10g:Administration WorkshopI479
JoiningTables Sometimesyouneedtousedatafrommorethanonetable.Intheslideexample,the reportdisplaysdatafromtwoseparatetables.Toproducethereport,youneedtolinkthe employees l anddepartments d t t tablesandaccessdatafrombothofthem. them Whendatafrommorethanonetableinthedatabaseisrequired,ajoinconditionisused. Rowsinonetablecanbejoinedtorowsinanothertableaccordingtocommonvalues thatexistincorrespondingcolumns;theseareusuallyprimaryandforeignkeycolumns. Todisplaydatafromtwoormorerelatedtables,writeajoinconditionintheWHERE clause.Theexampleintheslideis: SELECTlast_name,department_name FROMemployees, employees departments WHEREemployees.department_id=departments.department_id Notethatthecolumnusedtojointhetables(department_id)neednotbeinthe SELECT listofthestatement.Also,becausethedepartment_id columnhasthe samenameineachtable,thecolumnmustbequalifiedwiththetablenameinfrontofit intheWHERE clause.
OracleDatabase10g:Administration WorkshopI480
JoiningTables(continued) Anequijoinhasajoinconditionthatcontainsanequalityoperator.Anequijoincombines rowsthathaveequivalentvaluesforthespecifiedcolumns.Theexampleintheslideisan equijoin. equijoin Aselfjoinisajoinofatabletoitself.ThistablenameappearstwiceintheFROM clause andisfollowedbytablealiasesthatqualifycolumnnamesinthejoincondition.For example: SELECTe1.last_name||worksfor||e2.last_name "EmployeesandTheirManagers" FROMemployeese1,employeese2 WHEREe1.manager_id d=e2.employee_id l d ANDe1.last_nameLIKER%; EmployeesandTheirManagers RajsworksforMourgos Raphaely p yworksforKing g RogersworksforKaufling RussellworksforKing Aninnerjoin(sometimescalledasimplejoin)isajoinoftwoormoretablesthatreturns onlythoserowsthatsatisfythejoincondition.Theexampleintheslideisaninnerjoin. Anouterjoinextendstheresultofasimplejoin.Anouterjoinreturnsallrowsthatsatisfy thejoinconditionandalsoreturnssomeorallofthoserowsfromonetableforwhichno rowsfrom f th theother th satisfy ti f th thejoin j i condition. diti For F example, l the th following f ll i queryreturns t alldepartmentnumberseveniftherearenoemployeesassignedtothedepartment: SELECTd.department_id,e.last_name FROMdepartmentsdLEFTOUTERJOINemployeese ONd.department_id=e.department_id ORDERBYd.department_id; ACartesianp productisg generatedifaj joinconditionisomitted.Thismeansy youwill retrieveallrowsfromonetablejoinedwithalltherowsofanyothertableortablesinthe SELECT list. OraclealsosupportANSIjoinsyntax.Forexampletheslideexamplecanberewrittenas: SELECTfirst_name,department_name FROMemployeesJOINdepartmentsUSING(department_id); FormoreinformationonjointypesseetheSQLReference documentation.
OracleDatabase10g:Administration WorkshopI481
ManipulatingData Thestatementsthatmakeupthedatamanipulationlanguage(DML)areusedto changedatainthedatabase. INSERT putsnewrowsofdataintoatableinthedatabase.Usedinthe formshownintheslide,onerowofdataiscreatedinthetableatatime. UPDATE modifiesanexistingrow(orsetofrows)inatable.Thenumberof rowsmodifiediscontrolledbytheWHERE condition.Ifyoudonthavea WHERE conditionontheUPDATE,thenallrowsinthetablearemodified modified. DELETE removesrowsfromatable.LikeUPDATE thenumberofrows removediscontrolledbyaWHERE condition.WithoutaWHERE condition, allrowsareremovedfromthetable. Onmostsystemsitisnotcommontousethesestatementsregularly.Insteadof issuingDMLstatementsuchasintheslide,youwillmostlikelyuseanapplication. TheapplicationwillthengeneratetheneededDMLstatementstochangethedata asyouneed. Note: TheNULL keywordinsertsnovalueforthecolumn.Thisisnotablanknora zero;itisrathernovalueatall.TheSYSDATE keywordinsertsthecurrentdateand timeintoaDATE datatypecolumn.
OracleDatabase10g:Administration WorkshopI482
DefiningData Thestatementsthatmakeupthedatadefinitionlanguage(DDL)areusedtoworkwith databaseobjects. TheCREATE statementdefinesnewobjectsinthedatabase.Youcancreatemany differentobjectsinthedatabase,includingtables,indexes,sequences,views,and others. TheALTER statementmodifiesexistingobjectsinthedatabase.Afteranobjectis defined,youmayneedtomodifythatobject.Dependingontheobject,thereare differentthingsthatcanbemodified.Forexample,youcanaddacolumntoa table butyoucannotaddacolumntoanindex. table, index TheDROP commandremovesobjectsinthedatabase.Afteranobjectisdropped itcannolongerbereferenced.Itispossibletoreinstateadroppedatable.
OracleDatabase10g:Administration WorkshopI483
OverviewofTransactions WhenanexecutableSQLstatementisexecutedatransactionbegins.Oracleassignsthe transactiontoanavailableundosegmentinanundotablespacetorecordtheundo entriesforthenewtransaction transaction.Theentriesintheundotablespaceareusedwhena rollbackcommandisissuedtogetthedatabacktoitslastcommittedstatepriortothe currenttransaction.Atransactionendswhenanyofthefollowingoccurs: AuserissuesaCOMMIT orROLLBACK statementwithoutaSAVEPOINT clause. AuserrunsaDDLstatementsuchasCREATE,DROP,RENAME,orGRANT.Ifthe currenttransactioncontainsanyDMLstatements,Oraclefirstcommitsthe transaction,andthenrunsandcommitstheDDLstatementasanew,single statementtransaction. transaction AuserdisconnectsfromOracle.Thecurrenttransactioniscommitted. Auserprocessterminatesabnormally.Thecurrenttransactionisrolledback. Afteronetransactionends,thenextexecutableSQLstatementautomaticallystartsthe nexttransaction. Note: AsetofSELECT commandsthataccessesdatainthesamedatabasetheuseris connectedtodoesnotconstituteatransaction.
OracleDatabase10g:Administration WorkshopI484
TransactionControlStatements Therearethreetransactioncontrolstatements,COMMIT,ROLLBACK,andSAVEPOINT. Committingatransactionmeansmakingpermanentthechangesperformedby theSQLstatementswithinthetransaction. transaction RollingbackmeansundoinganychangestodatathathavebeenperformedbySQL statementswithinanuncommittedtransaction.Oracleusesundotablespacesor rollbacksegmentstostoreoldvalues.Theredologcontainsarecordofchanges. Youcandeclareintermediatemarkers,calledsavepoints,withinthecontextofa transaction.Savepointsdividealongtransactionintosmallerparts.Whenyouset upasavepoint,youcanthenlaterrollbacktothatparticularsavepoint.Each savepointmusthaveaname, name whichyoucanusetorollbacktothatnamed savepoint.Forexample: SQL>SAVEPOINTbefore_insert; Savepointcreated. SQL>INSERTINTOlocal_tempVALUES(SYSDATE,76,58); 1rowcreated. SQL>ROLLBACKTObefore_insert; Rollbackcomplete. p
OracleDatabase10g:Administration WorkshopI485
LockingData Oracleprovidesdataconcurrencyandintegritybetweentransactionsusingitslocking mechanisms.Thismechanismpreventsmultipleusersfromtryingtoupdatethesame dataatthesametime. OracleDatabase10g usesafinegrainedlockingmechanismtoensurethatusersdont unnecessarilyblockotherusers.Someonereadingdata(usingselectstatements)does notblocksomeonefromupdatingdata.Someoneupdatingdatadoesnotblockanother userunlessthatusertriestoupdatethesamerowofdata. Oracleslockingmechanismwillbediscussedinmoredetailinalaterlesson.
OracleDatabase10g:Administration WorkshopI486
OtherStatementCategories Sessioncontrolstatements:Sessioncontrolstatementsdynamicallymanagethe propertiesofausersession.Thesestatementsdonotimplicitlycommitthe currenttransaction.PL/SQLdoesnotsupportsessioncontrolstatements.The sessioncontrolstatementsare: -ALTER SESSION -SET ROLE Systemcontrolstatement:Thesinglesystemcontrolstatement,ALTER SYSTEM, dynamicallymanagesthepropertiesofanOracleinstance.Thisstatementdoes notimplicitlycommitthecurrenttransactionandisnotsupportedinPL/SQL. PL/SQL EmbeddedSQLstatements:EmbeddedSQLstatementsplaceDDL,DML,and transactioncontrolstatementswithinaprocedurallanguageprogram.Embedded SQLissupportedbytheOracleprecompilersandisdocumentedinthefollowing: Pro*COBOLProgrammer'sGuide Pro*C/C++Programmer'sGuide SQL*ModuleforAdaProgrammer'sGuide
OracleDatabase10g:Administration WorkshopI487
WhatIsPL/SQL? PL/SQLisablockstructuredlanguage.Thatis,thebasicunits(procedures,functions,and anonymousblocks)thatmakeupaPL/SQLprogramarelogicalblocks,whichcancontain anynumberofnestedsubblocks.Typically,youcreateeachlogicalblocktosolvea problemorsubproblem.OnewaytolookatitisthatPL/SQLaddsstructured programmingtechniquestotheSQLlanguage. AblockofPL/SQLcodehastheseparts: DECLARE:Thisoptionalpartiswhereyoudefineconstantsandvariables,then usetheminSQLandproceduralstatementsanywhereanexpressioncanbeused. Youmustdeclareaconstantorvariablebeforereferencingitinotherstatements statements, includingotherdeclarativestatements. BEGIN:Thisisthebeginningofthecodeoftheblock.Thecodewillbemadeup ofbothSQLandPL/SQLcommands.Thisismandatory. EXCEPTION:Thisoptionalpartiswhereyoudefineanylocalexceptions. Generallyexceptionsareraisedbecauseofanerrorcondition. END:thisendstheblock.Thisismandatory.
OracleDatabase10g:Administration WorkshopI488
ExamplePL/SQLBlock Theanonymousblockintheslidestartsoffwithdefiningalocalvariabletoholda number.ThecodeoftheblockstartswiththeBEGIN statement.Thefirstactionisto selecttheamountofavailableinventoryfortennisracketsintothelocalvariable.Next followssomeconditionalcontrolinthefromofanIF THEN ELSE statement. Iftherearemorethanzerotennisrackets,thenthequantityisreducedbyoneanda messagewrittentothepurchase_record table.Iftherearezerotennisrackets,then onlyamessageiswrittentothepurchase_record table. LastinthecodeoftheblockisaCOMMIT whichmakesanychangesdoneintheblock permanent TheblockisclosedwithanEND statement. permanent. statement FormoredetailsonPL/SQL,refertoPL/SQLUsersGuideandReference documentation.
OracleDatabase10g:Administration WorkshopI489
UsesofPL/SQL YouusePL/SQLinthefollowingstructures: Anonymousblocks:TheseareunnamedblocksofPL/SQL.Ananonymousblockis generallyfoundinsideanamedblock(afunctionorprocedureforexample), example) itis thenestingoftheseanonymousblocksthatprovidesgreatercontroloverthe executionofthecode. Functions:AfunctionisaPL/SQLblockthatreturnsasinglevaluebyusingthe RETURNPL/SQLcommand Procedures:AprocedureisisaPL/SQLblockthatperformsaspecificaction Packages:Apackageisacollectionofprocedures,functions,andanonymous blocksthatarelogicallyrelated. related Triggers:AtriggerisaPL/SQLblockthatisexecutedwhenaparticularevent happensinthedatabase.Theseeventscanbebasedonatable,suchaswhena rowisinsertedintothetable.Theycanalsobedatabaseevents,suchaswhena userlogsintothedatabase. Objecttypes:Anobjecttypeisakindofdatatype.FordetailsseetheApplication Developer'sGuide ObjectRelationalFeaturesdocumentation. Thesestructures( (except p object j types) yp )willbediscussedinmoredetailinalaterlesson.
OracleDatabase10g:Administration WorkshopI490
WhatIsJava? Java,anobjectorientedprogramminglanguagereleasedbySunMicrosystemsin1995, hashadaprofoundeffectononlineapplications.Javaprogramscanberunonany computerthathasaJavainterpreter(calledaJavaVirtualMachine),whichisincludedin mostWebbrowsers.ProgrammersuseJavatoprovidedynamiccontent,suchasgraphics, motion,andsound.JavaenhancedWebpagesenableinteractiveapplicationssuchas simulationsandcomputerbasedtraining.Javaiscompliedandstoredinthedatabaseas bytecode,acodeformbetweenmachinecodeandsourcecode.Javabytecodeisplatform independent,whichmakeiteasytotransferbetweenoperatingsystems.TheJVM convertsbytecodeintomachinereadableinstructions. instructions TheOracleinstancehasabuiltinJVM.
OracleDatabase10g:Administration WorkshopI491
OracleDatabase10g:Administration WorkshopI492
OracleDatabase10g:Administration WorkshopI493
OtherAPIs ThiscoursewillnotcovertheseAPIsinanydetail.Theintenthereistoinformyouofthe optionsthatareavailable. JavaDatabaseConnectivity(JDBC):JDBCisthestandardAPIforaccessingrelational databasesfromprogramswritteninJava.StandaloneJavaapplications,appletsrunning inabrowser,andJava2Platform,EnterpriseEdition(J2EE)middletiercomponents,such asservletsandEnterpriseJavaBeans,canalluseJDBCtoaccessanOracleDatabase.In addition,JavaclassescanbeloadedintoanOracleDatabaseandpublishedasstored procedures,wheretheyalsouseJDBCfordatabaseaccess.JavaprogramscanuseJDBCto callbothJavaandPL/SQLstoredprocedures procedures.OracleprovidestwodifferentkindsofJDBC drivers.Thindriversarea100%JavaimplementationoftheJDBCspecification.OCI driversinterfacewiththesamenativeOCIclientlibrariesasallotherAPIs.Formore informationseetheJDBCDevelopersGuideandReferenceguide.
OracleDatabase10g:Administration WorkshopI494
OtherAPIs(continued) Pro*C/C++andPro*COBOL:FromtheearliestversionsoftheOracleDatabase programmershaveembeddedSQLstatementsinsideprogramswritteninthird generationprogramminglanguagessuchasCandCOBOL. COBOL Pro Pro*C/C++ C/C++andPro Pro*COBOL COBOLare precompilersthattranslatethisembeddedSQLintoOracleruntimelibrarycallsfor databaseaccess.FormoreinformationseethePro*C/C++PrecompilerProgrammer's Guide andthePro*COBOLPrecompilerProgrammersGuide. OracleC++Interface(OCCI):OCCIprovidesobjectorientedaccesstoanOracledatabase throughaninterfacethat,forC++programmers,issimplerthanOCIandmorenatural thanPro*C/C++.Atthesametimeitexposesmostoftheadvancedfeaturesofthemore l level low l lOCI. OpenDatabaseConnectivity(ODBC):ODBCprovidesastandardinterfacethatallowsone applicationtoaccessmanydifferentdatasources.Adatabasedriverlinkstheapplication toaspecificdatasource.TheOracleODBCdriverenablesWindowsapplicationstoaccess OracledatabasesthroughtheODBCinterfaceusingnativeOCIclientlibraries. OracleDataProviderfor.NET(ODP.NET):ODP.NETallowsfastandreliableaccessto databasefeaturesanddatafromany y.NETapplication. pp Italsousesandinheritsfrom classesandinterfacesavailableintheMicrosoft.NETFrameworkClassLibrary.Formore informationseetheOracleDataProviderfor.NETDevelopersGuide. OracleObjectsforOLE(OO4O):OracleObjectsforOLE(OO4O)allowseasyaccesstodata storedinanOracleDatabasefromanyprogrammingorscriptinglanguagethatsupports theMicrosoftCOMAutomationandActiveXtechnology.ThisincludesVisualBasic,Visual C++,VisualBasicForApplications(VBA),IISActiveServerPages(VBScriptandJavaScript), and dothers. th OtherAccessProtocols WhentheOracleXMLDBisenabled,standardInternetprotocolssuchasFTP,HTTP,and WebDistributedAuthoringandVersioning(WebDAV)canbeusedtoaccessdatainan Oracledatabase.FormoreinformationseetheXMLDBDevelopersGuide.
OracleDatabase10g:Administration WorkshopI495
OracleDatabase10g:Administration WorkshopI496
OracleDatabase10g:Administration WorkshopI497
Practice4:UsingSQL Background:InthispracticesessionyouareactingasaclerkintheHumanResources department.YouwillneedtoconnecttothedatabaseastheHRuser.Onceconnected youwillviewandmanipulatedata data. Tasks: StartiSQL*Plus ConnecttothedatabaseusingiSQL*Plus ConnecttothedatabaseusingSQL*Plus Describedatabaseobjects Querydatastoredwithinthedatabase. Updateexistingdatastoredwithinthedatabase. Rollbackanupdatetorestoredatatoitsoriginalvalue. TofamiliarizeyourselfwiththedatainthedatabaseyoudecidetouseiSQL*Plustoseethe tabledataintheHRschema. 1. ConnecttothedatabaseasuserHR usingiSQL*Plus. 2. DescribetheEMPLOYEES,DEPARTMENTSandLOCATIONStables. 3 Writeaquerythatshowyouthelastname, 3. name phonenumberanddepartmentidof everyoneintheEMPLOYEEStable. 4. Rewritethequerysothatthedepartmentnameisshowninsteadofthedepartment_id. 5. Rewritethequerytoshowthelastname,departmentname,andcityofeveryoneinthe EMPLOYEEStable. 6. Noticethattheresultsarenotreturnedinanyparticularorder.Rewritethequerysothat resultsarereturnedinalphabeticalordersortedfirstbycity,thenbydepartmentname, thenbylastname. 7. WriteandexecuteanSQLstatementthatgiveseveryoneindepartment80a10%raise. 8. The10%raiseyougaveinstep(7)hasbeenrescindedbyuppermanagement.Reverse thetransaction. 9. ConnecttothedatabaseasuserHRusingSQL*Plus. 10. Writeaquerythatshowyouthelastname,departmentnameandstateofeveryonein department30. 30
OracleDatabase10g:Administration WorkshopI498
OracleDatabase10g:Administration WorkshopI5101
StartingandStoppingiSQL*Plus TheiSQL*PlusApplicationServermustberunningbeforeyoucanstartaniSQL*Plus session.AcommandlineutilityandaWindowsServicearesuppliedtostartand stopiSQL*PlusonWindows.TheiSQL*PlusApplicationServerisstartedbydefault duringOracleDatabaseinstallation. TostartorstoptheiSQL*PlusApplicationServeronUnix(Linux). Startaterminalsession. Enterthefollowingtostart:isqlplusctl start Enterthefollowingtostop:isqlplusctl stop Note: Youmayneedtonavigateintoyour$ORACLE_HOME/bin directoryifthis directoryisnotinyourOSpath. TostartortheiSQL*PlusApplicationServeronWindows SelectServicesfromtheStart>Programs>AdministrativeToolsmenu. LocatetheiSQL*PlusWindowsService,OracleOracleHomeNameiSQL*Plus. StarttheWindowsServicetostarttheiSQL*PlusApplicationServer,orstop theservicetostoptheiSQL*PlusApplicationServer. Alternatively,youcanstartiSQL*Plusfromacommandprompt.Usethe samecommandasinUnix(Linux).
OracleDatabase10g:Administration WorkshopI5102
ManagementFramework TherearethreemajorcomponentsoftheOracleDatabase10g managementframework: Thedatabaseandinstancebeingmanaged Alistenerthatallowsconnectionstothedatabase Themanagementinterface.Thismaybeeitheramanagementagentconnecting thisservertoOracleEnterpriseManagerGridControl,orthestandaloneOracle EnterpriseManagerDatabaseControl. Eachofthesecomponentsmustbeexplicitlystartedbeforeyoucanusetheservicesof thecomponentandshouldbeshutdowncleanlywhenshuttingdowntheserverhosting OracleDatabase10g. Thefirstcomponenttobestartedisthemanagementinterface.Afterthisisupand running,themanagementinterfacecanbeusedtostarttheothercomponents.
OracleDatabase10g:Administration WorkshopI5103
StartingandStoppingDatabaseControl FordatabasesnotconnectedtotheGridControlframework,Oracleprovidesastand alonemanagementconsolecalledDatabaseControl.Eachdatabasemanagedwith DatabaseControlhasaseparateDatabaseControlinstallation,andfromanyone DatabaseControlyoucanmanageonlyonedatabase.DatabaseControlrequiresthata dbconsole processbestartedpriortouse.Tostartthedbconsoleprocess: emctlstartdbconsole Tostopthedbconsole process: emctlstopdbconsole Toviewthestatusofthedbconsole process: emctlstatusdbconsole Note: Youmayneedtonavigateintoyour$ORACLE_HOME/bin directoryifthis directoryisnotinyourOSpath. DatabaseControlusesaserversideagentprocess.Thisagentprocessautomaticallystarts andstopswhenthedbconsole processisstartedorstopped.
OracleDatabase10g:Administration WorkshopI5104
AccessingDatabaseControl OpenyourWebbrowserandenterthefollowingURL(thedefaultportis5500): http://hostname:portnumber/em Ifthedatabaseisup,EnterpriseManagerdisplaystheDatabaseControlLoginpage.Login tothedatabaseusingausernamethatisauthorizedtoaccessDatabaseControl.This initiallywillbeSYS,SYSMAN orSYSTEM.Usethepasswordyouspecifiedforthe accountduringthedatabaseinstallation. Ifthedatabaseisdownandneedstobestarted,EnterpriseManagerdisplaysthe Startup/ShutdownandPerformRecoverypage.Ifthisisthecase,clickthe Startup/Shutdownbutton button.Youarethenpromptedforthehostandtargetdatabaselogin usernamesandpasswords,whichyoumustenter.Forthedatabaseuserandpassword, useSYS andthepasswordyouspecifiedduringinstallation.ClickOKtostartthe database.IntheConfirmationpage,clickYEStostartthedatabaseinopenmode.
OracleDatabase10g:Administration WorkshopI5105
SYSOPER andSYSDBA SYSOPER:Isaspecialdatabaseadministrationrolethatpermitsadatabase administratortoperformSTARTUP,SHUTDOWN,ALTER DATABASE OPEN/MOUNT, ALTER DATABASE BACKUP,ARCHIVE LOG,andRECOVER,andincludes RESTRICTED SESSION privileges.WhenyouconnectwithSYSDBA privileges,you areintheschemaownedbySYS. SYSDBA:Isaspecialdatabaseadministrationrolethatcontainseverysystemprivilege withADMIN OPTION andSYSOPER systemprivileges.SYSDBA alsopermitsCREATE DATABASE actionsandincompleterecovery.WhenyouconnectasSYSOPER,youarein thepublicschema schema. MoredetailsonusermanagementwillbecoveredinthelessontitledAdministering Users.
OracleDatabase10g:Administration WorkshopI5106
DatabaseHomePage ThepropertypagesacrossthetopoftheDatabasehomepageenableyoutoaccess performance,administration,andmaintenancepagesformanagingyourdatabase.The varioussectionsoftheDatabasehomepage,andrelatedlinks,provideawealthof informationaboutthedatabasesenvironmentandhealth. Tograntmanagementaccesstootherdatabaseusers,usethefollowingprocedure: 1.StartyourWebbrowserandlogintoDatabaseControlastheSYS orSYSTEM databaseuser. 2.ClickSetupatthetopoftheDatabasehomepage. 3 ClickAdministratorsintheleftnavigationbar. 3. bar 4.ClickCreatetocreateanewEnterpriseManageruserbyassigningthe managementprivilegestoanexistingdatabaseuser. 5.ClicktheflashlighticonnexttotheNamefieldandselectanexistingdatabase userfromthepopupwindow. 6.EnterthepasswordfortheselecteduserandclickFinish.
OracleDatabase10g:Administration WorkshopI5107
ChangingtheListenerStatus FromtheDatabasehomepageclickthelistenernametoopentheListenerhomepage. ClickStoptostopthelistenerifitisrunningorStarttostartthelistenerifitisnot running.YoumustlogontothehostasanOSuserifyouhavenotdonesoalready.This willbetheOSuserthatstartsorstopsthelistener. Thecommandlinemethodforstarting,stopping,andseeingthestatusofthelisteneris: lsnrctlSTART[listener_name] lsnrctlSTOP[listener_name] lsnrctlSTATUS[listener_name] Wherelistener_name listener name isthenameofthelistenerdefinedinthelistener.ora listener ora file.Itisnotnecessarytoidentifythelistenerifyouareusingthedefaultlistener,named LISTENER. TheSTATUS commandprovidesbasicstatusinformationaboutalistener,includinga summaryoflistenerconfigurationsettings,thelisteningprotocoladdresses,anda summaryofservicesregisteredwiththelistener.
OracleDatabase10g:Administration WorkshopI5108
OracleDatabase10g:Administration WorkshopI5109
StartingUpaDatabase Whenstartingthedatabase,youselectthestateinwhichitstarts.Thefollowing scenariosdescribedifferentstagesofstartingupaninstance. StartingtheInstance(NOMOUNT) Aninstanceisstartedinthe NOMOUNT stageonlyduringdatabasecreationorthere creationofcontrolfiles. Startinganinstanceincludesthefollowingtasks: Readingtheinitializationfilefrom$ORACLE_HOME/dbs inthefollowingorder: FirstspfileSID.ora Ifnotfoundthen, then spfile.ora spfile ora Ifnotfoundthen,initSID.ora SpecifyingthePFILE parameterwithSTARTUP overridesthedefault behavior. AllocatingtheSGA Startingthebackgroundprocesses OpeningthealertSID.log fileandthetracefiles
OracleDatabase10g:Administration WorkshopI5110
StartingUpaDatabase(continued) MountingtheDatabase(MOUNT) Toperformspecificmaintenanceoperations,youstartaninstanceandmountadatabase butdonotopenthedatabase. Forexample,thedatabasemustbemountedbutnotopenduringthefollowingtasks: Renamingdatafiles(datafilesforanofflinetablespacecanberenamedwhenthe databaseisopen) Enablinganddisablingonlineredologfilearchivingoptions Performingfulldatabaserecovery Mountingadatabaseincludesthefollowingtasks: Associatingadatabasewithapreviouslystartedinstance Locatingandopeningthecontrolfilesspecifiedintheparameterfile Readingthecontrolfilestoobtainthenamesandstatusofthedatafilesand onlineredologfiles.However,nochecksareperformedtoverifytheexistenceof thedatafilesandonlineredologfilesatthistime.
OracleDatabase10g:Administration WorkshopI5111
StartingUpaDatabase(continued) OpeningtheDatabase(OPEN) Normaldatabaseoperationmeansthataninstanceisstartedandthedatabaseis mountedandopen.Withnormaldatabaseoperation,anyvalidusercanconnecttothe databaseandperformtypicaldataaccessoperations. Openingthedatabaseincludesthefollowingtasks: Openingtheonlinedatafiles Openingtheonlineredologfiles Ifanyofthedatafilesoronlineredologfilesarenotpresentwhenyouattempttoopen thedatabase, database theOracleserverreturnsanerror. error Duringthisfinalstage,theOracleserververifiesthatallthedatafilesandonlineredolog filescanbeopenedandcheckstheconsistencyofthedatabase.Ifnecessary,theSMON backgroundprocessinitiatesinstancerecovery.
OracleDatabase10g:Administration WorkshopI5112
ShuttingDowntheDatabase Shutdownthedatabasetomakeoperatingsystemofflinebackupsofallphysical structuresandtohavemodifiedstaticinitializationparameterstakeeffectwhen restarted. ToshutdownaninstanceyoumustconnectasSYSOPER orSYSDBA andusethe followingcommand: SHUTDOWN[NORMAL |TRANSACTIONAL|IMMEDIATE|ABORT] ThisisthecommandthatgetsgeneratedwhenyouclickShutdownandconfirmyour intentiononthesubsequentpage.
OracleDatabase10g:Administration WorkshopI5113
SHUTDOWN Options SHUTDOWN NORMAL Normalisthedefaultshutdownmode.Normaldatabaseshutdownproceedswiththefollowing conditions: di i Nonewconnectionscanbemade. TheOracleserverwaitsforalluserstodisconnectbeforecompletingtheshutdown. Databaseandredobuffersarewrittentodisk. Backgroundprocessesareterminated,andtheSGAisremovedfrommemory. Oracleclosesanddismountsthedatabasebeforeshuttingdowntheinstance. Thenextstartupdoesnotrequireaninstancerecovery. SHUTDOWN TRANSACTIONAL Atransactionalshutdownpreventsclientsfromlosingwork.Atransactionaldatabaseshutdown proceedswiththefollowingconditions: Noclientcanstartanewtransactiononthisparticularinstance. Aclientisdisconnectedwhentheclientendsthetransactionthatisinprogress. Whenalltransactionshavefinished,ashutdownoccursimmediately. Thenextstartupdoesnotrequireaninstancerecovery.
OracleDatabase10g:Administration WorkshopI5114
SHUTDOWN Options(continued) SHUTDOWN IMMEDIATE Immediatedatabaseshutdownproceedswiththefollowingconditions: CurrentSQLstatementsbeingprocessedbyOraclearenotcompleted. completed TheOracleserverdoesnotwaitfortheusers,whoarecurrentlyconnectedtothe database,todisconnect. Oraclerollsbackactivetransactionsanddisconnectsallconnectedusers. Oracleclosesanddismountsthedatabasebeforeshuttingdowntheinstance. Thenextstartupdoesnotrequireaninstancerecovery.
OracleDatabase10g:Administration WorkshopI5115
SHUTDOWN Options(continued) SHUTDOWN ABORT IftheNORMAL andIMMEDIATE shutdownoptionsdonotwork,youcanabortthe currentdatabaseinstance.Abortinganinstanceproceedswiththefollowingconditions: CurrentSQLstatementsbeingprocessedbytheOracleserverareimmediately terminated. Oracledoesnotwaitforuserscurrentlyconnectedtothedatabasetodisconnect. Databaseandredobuffersarenotwrittentodisk. Uncommittedtransactionsarenotrolledback. Theinstanceisterminatedwithoutclosingthefiles. files Thedatabaseisnotclosedordismounted. Thenextstartuprequiresinstancerecovery,whichoccursautomatically. Note: Itisnotadvisabletobackupadatabasethatisinaninconsistentstate.
OracleDatabase10g:Administration WorkshopI5116
InitializationParameterFiles Tostartaninstance,Oraclemustreadeitheraninitializationparameterfileoraserver parameterfile.Thesefilescontainalistofconfigurationparametersforthatinstanceand database.Oracletraditionallystoresinitializationparametersinatextinitialization parameterfile.Youcanalsochoosetomaintaininitializationparametersinabinary serverparameterfile(SPFILE). Initializationparametersstoredinaserverparameterfilearepersistent,inthatany changesmadetotheparameterswhileaninstanceisrunningcanpersistacrossinstance shutdownandstartup.Initializationparametersaredividedintotwogroups:basicand advanced Inthemajorityofcases, advanced. cases itisnecessarytosetandtuneonlythebasic parameterstogetreasonableperformance.Inraresituations,modificationtothe advancedparametersmaybeneededforoptimalperformance. Oraclesuggeststhatyoucreateaserverparameterfile(SPFILE)asadynamicmeansof maintaininginitializationparameters.Byusingaserverparameterfileyoucanstoreand manageyourinitializationparameterspersistentlyinaserversidediskfile.
OracleDatabase10g:Administration WorkshopI5117
OracleDatabase10g:Administration WorkshopI5118
ViewingtheAlertLog Eachdatabasealsohasanalert_sid.log.Thefileisontheserverwiththedatabase andisstoredinthedirectoryspecifiedwiththeinitializationparameter b k background_dump_dest d d d t.Thealertfileofadatabaseisachronologicallogof messagesanderrors,includingthefollowing: Allinternalerrors(ORA-600),blockcorruptionerrors(ORA-1578),and deadlockerrors(ORA-60)thatoccur Administrativeoperations,suchastheSQLstatementsCREATE,ALTER,DROP DATABASE,TABLESPACE,ROLLBACK SEGMENT andtheEnterpriseManager orSQL*PlusstatementsSTARTUP,SHUTDOWN,ARCHIVE LOG,andRECOVER Severalmessagesanderrorsrelatingtothefunctionsofsharedserverand dispatcherprocesses Errorsduringtheautomaticrefreshofamaterializedview EMmonitorsthealertlogfileandnotifiesyouofcriticalerrors.Youcanalsoviewthelog toseenoncriticalerrorandinformativemessages.Alsothefilecangrowtoan unmanageablesizeifleftalone.Youshouldmakeabackupofthealertfileoccasionally anddeletethecurrentalertfile.Whenthedatabaseattemptstowritetothealertfile again, g thedatabasewillthenrecreateanewalertfile.
OracleDatabase10g:Administration WorkshopI5119
OracleDatabase10g:Administration WorkshopI5120
OracleDatabase10g:Administration WorkshopI5121
Practice5:ControllingtheDatabase Background:YoursystemadministratorasksthatyoustopallOracleservicesin preparationforsystemmaintenance.Aftermaintenanceiscompleted,restartallOracle services.. services Tasks: StartandstoptheOracleListener StartandstopOracleDatabase10g instance Startandstop iSQL*Plus StartandstoptheOracleEnterpriseManagerDatabaseControl 1.ConnecttoDatabaseControl. 2.Stopthe h Oracle l ListenerusingDatabase b Contol. l 3.ShutdownthedatabaseinstanceusingDatabaseControl. 4.StopiSQL*Plus. 5.StopDatabaseControl. 6.StarttheOracleListenerusingcommandlinetools. 7.StartDatabaseControl. 8.StartiSQL*Plus. Q 9.StarttheOracleDatabase10g instance. 10.Viewinformationintheinstancesalertlog. 11.Viewinitializationparameters.
OracleDatabase10g:Administration WorkshopI5122
OracleDatabase10g:Administration WorkshopI6125
TablespacesandDataFiles Databases,tablespaces,anddatafilesarecloselyrelated,buttheyhaveimportant differences: AnOracledatabaseconsistsofoneormorelogicalstorageunitscalled tablespaces,whichcollectivelystoreallofthedatabasesdata. EachtablespaceinanOracledatabaseconsistsofoneormorefilescalled datafiles,whicharephysicalstructuresthatconformwiththeoperating systemonwhichOracleisrunning running. Adatabasesdataiscollectivelystoredinthedatafilesthatconstituteeach tablespaceofthedatabase.Forexample,thesimplestOracledatabase wouldhaveonetablespaceandonedatafile.Anotherdatabasecanhave threetablespaces,eachconsistingoftwodatafiles(foratotalofsixdata files).Asingledatabasecouldpotentiallyhaveasmanyas65,535datafiles.
OracleDatabase10g:Administration WorkshopI6126
SpaceManagementinTablespaces Tablespacesallocatespaceinextents.Tablespacescanbecreatedtouseoneofthe followingtwodifferentmethodsofkeepingtrackoffreeandusedspace: Locallymanagedtablespaces:Theextentsaremanagedwithinthetablespacevia bitmaps.Eachbitinthebitmapcorrespondstoablockoragroupofblocks.Whenan extentisallocatedorfreedforreuse,theOracleserverchangesthebitmapvaluesto showthenewstatusoftheblocks. Dictionarymanagedtablespaces:Theextentsaremanagedbythedatadictionary.The Oracleserverupdatestheappropriatetablesinthedatadictionarywheneveranextentis allocatedordeallocated. deallocated Thisisforbackwardcompatibly;youshoulduselocallymanaged foralltablespaces.
OracleDatabase10g:Administration WorkshopI6127
CreatingaNewTablespace Tocreateatablespace,performthefollowingsteps: 1. NavigatetotheTablespacespage.GototheAdministrationtab,then clickTablespacesundertheStorageheading heading. 2. ClicktheCreatebutton. Note: Ifyouwanttocreateatablespacethatislikeanexisting tablespace,selectanexistingtablespaceandselectCreateLikefromtheActionsmenu. ClickGo. TheCreateTablespaceGeneralpageappears. 3. Enteranameforthetablespace. 4. UndertheExtentManagementheading,selectLocallyManaged.The extentsofalocallymanagedtablespacearemanagedefficientlywithinthetablespaceby theOracledatabaseserver.Foradictionarymanagedtablespaceyoumustmoreactively manageextentsanddatadictionaryaccessisrequiredfortrackingthem.Dictionary managedtablespacesarebeingdeprecated.Oracledoesnotsuggesttheiruse. 5. UndertheTypeheading,selectPermanent.Permanenttablespacesstore permanentdatabaseobjectscreatedbythesystemorusers. 6. UndertheStatusheading,selectReadWrite.Read/writestatusmeans userscanreadandwritetothetablespaceafteritiscreated.Thisisthedefault.
OracleDatabase10g:Administration WorkshopI6128
CreatingaNewTablespace(continued) 7. IntheDatafilesregionofthepageclickAddtoadddatafilestothe tablespace,atablespacemusthaveatleastonefile.Bigfiletablespacesareused withultralargedatabaseswhereOracles Oracle sAutomaticStorageManagementor otherlogicalvolumemanagerssupportstripingorRAID,anddynamically extensiblelogicalvolumes. 8.IntheAddDatafilespage,enterafilename.AcceptthedefaultsfortheFile DirectoryandFileSize. 9.UndertheStorageregion,selectAutomaticallyextenddatafilewhenfull (AUTOEXTEND)andspecifyanamountintheIncrementfieldbywhichyouwant toextend dthe h data d file f l each htimeitfills. f ll Leavethe h MaximumFile l Sizesetto Unlimited.ClickOK.YouarereturnedtotheCreateTablespaceGeneralpage. 10. ClicktheStoragetab.TheCreateTablespaceStoragepageappears. 11. AcceptallofthedefaultsontheStoragepage. 12. ClicktheThresholdstabtoopentheThresholdspage.Thispage enablesyoutosetmonitoredthresholdsforspaceusage.Youreceiveadviceand anoption p foractionwhenthethresholdisreached. 13. AfterspecifyingthresholdsclickOKtoaddthetablespace.Youare returnedtotheTablespacespagewhereyoureceiveaconfirmationofthe creationofthetablespace.YoucanviewyournewtablespaceintheResults section. Note: Thesestepsareintendedtoshowyouhowtoquicklycreateatablespaceformost situations.Youmayneedtochangesomeoptionsdependonyourparticularsystem requirements. i t
OracleDatabase10g:Administration WorkshopI6129
StorageforLocallyManagedTablespaces Extentswithinalocallymanagedtablespacecanbeallocatedinoneoftwoways: Automatic:Alsocalledautoallocate,specifiesthatthesizeoftheextentswithin thetablespacearesystemmanaged.Youcannotspecifyanextentsize.Youcannot specifyautomaticforatemporarytablespace. Uniform:Specifiesthatthetablespaceismanagedwithuniformextentsofasize youspecify.Thedefaultsizeis1megabyte.Allextentsoftemporarytablespaces areofuniformsize,sothisisoptionalforatemporarytablespace.Youcannot specifyuniformforanundotablespace. Segmentspacemanagementwithinalocallymanagedtablespace: Automatic:Oracleusesbitmapstomanagethefreespacewithinsegments.A bitmap,inthiscase,isamapthatdescribesthestatusofeachdatablockwithina segmentwithrespecttotheamountofspaceintheblockavailableforinserting rows.Asmoreorlessspacebecomesavailableinadatablock,itsnewstateis reflectedinthebitmap.BitmapsallowOracletomanagefreespacemore automatically,andthus,thisformofspacemanagementiscalledautomatic segmentspacemanagement.
OracleDatabase10g:Administration WorkshopI6130
StorageforLocallyManagedTablespaces(continued) Manual:ThistellsOraclethatyouwanttousefreelistsformanagingfreespace withinsegments.Freelistsarelistsofdatablocksthathavespaceavailablefor insertingrows. rows Thisformofmanagingspacewithinsegmentsiscalledmanual segmentspacemanagementbecauseoftheneedtospecifyandtunethe PCTUSED,FREELISTS,andFREELIST GROUPS storageparametersfor schemaobjectscreatedinthetablespace.Thisissupportedforbackward compatibility. AdvantagesofLocallyManagedTablespaces Locallymanagedtablespaceshavethefollowingadvantagesoverdictionarymanaged tablespaces: bl Localmanagementavoidsrecursivespacemanagementoperations.Thiscan occurindictionarymanagedtablespacesifconsumingorreleasingspaceinan extentresultsinanotheroperationthatconsumesorreleasesspaceinanundo segmentordatadictionarytable. Becauselocallymanagedtablespacesdonotrecordfreespaceindatadictionary tables, ,they yreducecontentiononthesetables. Localmanagementofextentsautomaticallytracksadjacentfreespace, eliminatingtheneedtocoalescefreeextents. Thesizesofextentsthataremanagedlocallycanbedeterminedautomatically bythesystem. Changestotheextentbitmapsdonotgenerateundoinformationbecausethey donotupdatetablesinthedatadictionary(exceptforspecialcasessuchas t bl tablespace quota t i information). f ti ) Note: Ifyouaremanagingadatabasethathasdictionarymanagedtablespacesandyou wanttoconvertthemtolocallymanaged,usethe DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL proceduretodothis. FordetailsontheuseofthisprocedureseethePL/SQLPackagesandTypesReference andtheDatabaseAdministratorsGuide. Logging gg g Whenchangesaremadetoobjectsinthetablespace,thechangeisloggedintowhatis calledtheredostream.Thisredostreamstartsinmemory,theiswrittentotheonline redologfilesandmaybewrittentoarchivelogfiles.Youcanturnthisprocessesoff.If youdoturnofflogging,theobjectsinthistablespacewillbeunrecoverableintheevent ofanykindoffailure. Thresholds UsetheTablespaceThresholdstabtosetthespaceusedthresholdsforthecurrent databasetablespace.Youcanchoosetousethedefaultusagethresholdsfor tablespacesforthedatabaseoryoucanspecifythethresholdforthepercentageof spaceusedforthecurrenttablespacebyenteringthevaluesfortheWarningand Criticalfields.Youcanalsodisablespaceusedthresholdsentirelyforthistablespace. Thresholdsarecoveredinmoredetailinlesson15.
OracleDatabase10g:Administration WorkshopI6131
TablespacesinthePreconfiguredDatabase Thefollowingtablespacesarecreatedforyouinthepreconfigureddatabase: SYSTEM:TheSYSTEM tablespaceisusedbytheOracledatabaseserverto managethedatabase. database Itcontainsthedatadictionaryandtablesthatcontain administrativeinformationaboutthedatabase.TheseareallcontainedintheSYS schema,andcanbeaccessedonlybytheuserSYS,orotheradministrativeusers withtherequiredprivilege. SYSAUX:ThisisanauxiliarytablespacetotheSYSTEM tablespace.Some componentsandproductsthatusedtheSYSTEM tablespaceortheirown tablespacesinpriorreleasesofOracle,nowusetheSYSAUX tablespace.Every OracleDatabase10g orhigherleveldatabasemusthaveaSYSAUX tablespace. tablespace TEMP:Thistablespaceisusedtostoretemporarytablesandindexeswhen processingSQLstatements.Itwould,forexample,beusedforsortworkspace. Everydatabaseshouldhaveatemporarytablespacethatisassignedtousersas theirtemporarytablespace.Inthepreconfigureddatabase,theTEMP tablespace isspecifiedasthedefaulttemporarytablespace.Thismeansthatifnotemporary tablespaceisspecifiedwhentheuseraccountiscreated,thenOracleassignsthis tablespace p totheuser.
OracleDatabase10g:Administration WorkshopI6132
TablespacesinthePreconfiguredDatabase(continued) UNDOTBS1:Thisistheundotablespaceusedbythedatabaseservertostore undoinformation.Everydatabasemusthaveanundotablespacethatiscreated duringdatabasecreation. creation USERS:Thistablespaceisusedtostorepermanentuserobjectsanddata.Inthe preconfigureddatabase,theUSERS tablespaceisthedefaulttablespaceforall objectscreatedbynonsystemusers.FortheSYS andSYSTEM users(thesystem users),thedefaultpermanenttablespaceremainsSYSTEM. EXAMPLE:Thistablespacecontainsthesampleschemasthatcanbeinstalled whenyoucreatethedatabase.Thesampleschemasprovideacommonplatform f examples. for l Oracle l documentation d and dcoursewarecontainexamples l b based d uponthesampleschemas.
OracleDatabase10g:Administration WorkshopI6133
AlteringaTablespace Afteryoucreateatablespace,youcanlateralteritinseveralwaysastheneedsofyour systemchange. Renaming:SimplyenteranewnameforthetablespaceandclickApply. ChangingtheStatus:Atablespacecanbeinoneofthreedifferentstatusesorstates. Dependingonthetypeoftablespace,notallstatesmaybeavailable: ReadWrite:Thetablespaceisonlineandcanbereadfromandwrittento. ReadOnly:Specifyreadonlytoplacethetablespaceintransitionreadonlymode. Inthisstate,existingtransactionscancomplete(commitorrollback),butno furtherDMLoperationsareallowedtothetablespaceexceptforrollbackof existingtransactionsthatpreviouslymodifiedblocksinthetablespace.The tablespaceisonlinewhileinthereadonlystate.YoucannotmaketheSYSTEM or SYSAUX tablespacereadonly.
OracleDatabase10g:Administration WorkshopI6134
AlteringaTablespace(continued) Offline:Youcantakeanonlinetablespaceofflinesothatthisportionofthe databaseistemporarilyunavailableforgeneraluse.Therestofthedatabaseis openandavailableforuserstoaccessdata.Whenyoutakeitofflineyouhave choicesofhowtodothis: Normal:Atablespacecanbetakenofflinenormallyifnoerrorconditions existforanyofthedatafilesofthetablespace.Oracletakesacheckpoint foralldatafilesofthetablespaceasittakesthemoffline. Temporary:Atablespacecanbetakenofflinetemporarily,evenifthereare errorconditionsforoneormorefilesofthetablespace.Oracletakes offlinethedatafilesthatarenotalreadyoffline,checkpointingthemasit doesso. so Ifnofilesareoffline, offline butyouusethetemporaryclause, clause media recoveryisnotrequiredtobringthetablespacebackonline.However,if oneormorefilesofthetablespaceisofflinebecauseofwriteerrors,and youtakethetablespaceofflinetemporarily,thetablespacerequires recoverybeforeyoucanbringitbackonline. Immediate:Atablespacecanbetakenofflineimmediately,withoutOracle takingacheckpointonanyofthedatafiles.WhenyouspecifyImmediate, mediarecoveryforthetablespaceisrequiredbeforethetablespacecanbe broughtonline.Youcannottakeatablespaceofflineimmediatelyifthe databaseisrunninginNOARCHIVELOG mode. ForRecover:TheFOR RECOVER settinghasbeendeprecated.Thesyntax issupportedforbackwardcompatibility. ChangetheSize:Youcanaddspacetoanexistingtablespacebyaddingdatafilestothe tablespaceoryoucanchangethesizeofanexistingdatafile. ToaddanewdatafiletothetablespaceclickAdd,andfillintheinformationabout thedatafileontheAddDataFilepage.Notethatthetablespacenameisfixed. Tochangethesizeofanexistingdatafile,selectthedatafileintheDatafiles regionoftheEditTablespacepagebyclickingthenameofthedatafile,orselect thedatafileandclickEdit.ThenontheEditDatafilepageyoucanchangethesize ofthedatafile.Youcanmakethetablespaceeitherlargerorsmaller.Howeveryou cannotmakeadatafilesmallerthantheusedspaceinthefile;ifyoutryyouget thefollowingerror: ORA03297: 03297 file fil contains t i used ddata d t beyond b drequested t dRESIZEvalue l StorageOptions:ClickStoragetochangechangetheloggingbehaviorofthetablespace. Thresholds:ClickThresholdstocanchangethewarningandcriticalusedspacealtersfor thetablespace.Youhavethreeoptions: UseDefaultThresholds:Thisusespresetdefaults,andyouhavetheoptionof settingthesedefaults. SpecifyThresholds:Thisallowsyoutosetthresholdsforthisparticulartablespace. DisableThresholds:Thisturnsoffspaceusagealertsforthistablespace. tablespace
OracleDatabase10g:Administration WorkshopI6135
ActionswithTablespaces WiththeActionsMenuyoucanperformaverityoftaskswithyourtablespaces.Selecta tablespaceandthentheactionyouwanttoperform: AddDatafile:Addsadatafiletothetablespace,whichmakesthetablespace larger. CreateLike:Createanothertablespaceusingthetablespaceasatemplate. GenerateDDL:GeneratetheDDLstatementthatcreatesthetablespace.Thiscan thenbecopiedandpastedintoatextfileforuseasascriptorfordocumentation purposes. MakeLocallyManaged:Ifthetablespaceiscurrentlydictionarymanaged managed,thiswill convertthetablespacetolocallymanaged. MakeReadonly:Stopsallwritestothetablespace.Currenttransactionsare allowedtocompetebutnonewDMLorotherwriteactivitiesareallowedtostart onthetablespace. MakeWritable:AllowsDMLandotherwriteactivitiestobeinitiatedonobjectsin thetablespace.
OracleDatabase10g:Administration WorkshopI6136
ActionswithTablespaces(continued) PlaceOnline:Ifthetablespaceiscurrentlyoffline,thisbringsitbackonline. Reorganize:ThisstartstheReorganizationWizard,whichyoucanusetomove objectsaroundwithinthetablespacetoreclaimspacethatotherwisemightnot beused.Thisisataskthatshouldbedoneduringnonpeakusageoftheobjects inthetablespace. ShowDependencies:Thisshowsobjectsthatthistablespacedependsonor objectsthatdependonthistablespace. RunSegmentAdvisor:TheSegmentAdvisorhelpsyoudeterminewhetheran objecthasspaceavailableforreclamationbasedonthelevelofspace f fragmentation within h the h object. b Atthe h tablespace bl level, l l advice d isgenerated dfor f everysegmentinthetablespace. TakeOffline:Ifthetablespaceiscurrentlyonlinethiswillmakethetablespace unavailable.Thetablespaceisnotdeletedordrop,justunavailable. Note: Notallactionsareavailableforeachtablespace.Dependingonthetypeof tablespaceselected,someactionscannotbeperformed.Forexample,youcannottake theSYSTEM tablespace p offline, ,norcany youmakeanundotablespace p readonly. y
OracleDatabase10g:Administration WorkshopI6137
DroppingTablespaces Youcandropatablespaceanditscontents(thesegmentscontainedinthetablespace) fromthedatabaseifthetablespaceanditscontentsarenolongerrequired.Youmust havetheDROP TABLESPACE systemprivilegetodropatablespace. Whenyoudropatablespace,thefilepointersinthecontrolfileoftheassociated databaseareremoved.YoucanoptionallydirectOracletodeletetheoperatingsystem files(datafiles)thatconstitutedthedroppedtablespace.IfyoudonotdirectOracleto deletethedatafilesatthesametimethatitdeletesthetablespace,youmustlateruse theappropriatecommandsofyouroperatingsystemtodeletethem. Youcannotdropatablespacethatcontainsanyactivesegments. segments Forexample, example ifatablein thetablespaceiscurrentlybeingusedorthetablespacecontainsundodatathatis neededtorollbackuncommittedtransactions,youcannotdropthetablespace.The tablespacecanbeonlineoroffline,butitisbesttotakethetablespaceofflinebefore droppingit.
OracleDatabase10g:Administration WorkshopI6138
ViewingTablespaceInformation ClickViewtoseeinformationabouttheselectedtablespace.IntheViewTablespacepage, youcanalsoclickedittoalterthetablespace. Obtainingtablespaceanddatafileinformationcanalsobeobtainedbyqueryingthe following: Tablespaceinformation: DBA_TABLESPACES V$TABLESPACE Datafileinformation: DBA DATA FILES DBA_DATA_FILES V$DATAFILE Tempfileinformation: DBA_TEMP_FILES V$TEMPFILE
OracleDatabase10g:Administration WorkshopI6139
OracleDatabase10g:Administration WorkshopI6140
OracleDatabase10g:Administration WorkshopI6141
Practice6:WorkingwithTablespaces Background:Youwillbesupportinganewinventoryapplicationwithyourdatabase.The installationinstructionsfortheapplicationinstructyoutocreateatablespacetoholddataforthe newapplication. Tasks: Examinetablespacesanddatafiles Createatablespace Addspacetoanexistingtablespace. 1.UseDatabaseControltoviewalltablespacesinyourdatabase.Foreachtablespace recordthetablespacename,type,size,andpercentused. 2.Viewalldatafilesinyourdatabase.Foreachdatafilerecordthefilename,tablespace name,currentsize,autoextendstatus,andmaximumfilesize(ifautoextendisenabled).
Tablespace Name
Type
Size (MB)
Used %
Tablespace T bl Name
Auto A extend?
OracleDatabase10g:Administration WorkshopI6142
Practice6:WorkingwithTablespaces (continued) 3. Createanewtablespace toholdinformationfortheinventoryapplication. Characteristicsforthenewtablespace are: Tablespace Name:INVENTORY Filesize:50MB Extentmanagement:Local AUTOEXTEND: disabled Type:Permanent ExtentAllocation: Automatic Status:ReadWrite Segmentspace management:Auto File l name:inventory01.dbf dbf Enable bl Logging:Yes Filedirectory:default Usedefaultthresholds
OracleDatabase10g:Administration WorkshopI6143
OracleDatabase10g:Administration WorkshopI7145
DatabaseUserAccounts Toaccessthedatabaseausermustspecifyavaliddatabaseuseraccountandsuccessfully authenticateasrequiredbythatuseraccount. Insomesystems, systems eachdatabaseuserhashisorherowndatabaseaccount. account Inothers, others manyusersshareacommondatabaseaccount.Regardlessofwhichmodelyourdatabase follows,eachuseraccountwillhave: Auniqueusername.Usernamescannotexceed30characters,cannotcontain specialcharacters,andmuststartwithaletter. Anauthenticationmethod.Themostcommonauthenticationmethodisa password,butOracleDatabase10g supportsseveralotherauthentication gbiometric, ,certificate, ,andtokenauthentication. methodsincluding Adefaulttablespace.Aplacewheretheuserwillcreateobjectsiftheuserdoes notspecifysomeothertablespace.Notethathavingadefaulttablespacedoesnot implytheuserhastheprivilege ofcreatingobjectsinthattablespacenoraquota ofspacewithinthattablespaceinwhichtocreateobjects.Boththesearegranted separately. Atemporarytablespace.Aplacewheretheusercancreatetemporaryobjects suchassortsandtemporarytables. Auserprofile. profile Asetofresourceandpasswordrestrictionsassignedtotheuser user.
OracleDatabase10g:Administration WorkshopI7146
CreatingaUser InOracleEnterpriseManageryoucanmanagethelistofdatabaseusersthatare allowedtoaccessthecurrentdatabasethroughtheUserspropertysheet.Youcan usethepropertysheettocreate,delete,andmodifythesettingsofauser. TheUserspropertysheetconsistsofseveralpages.Youcancreateoreditthe securitysettingsforadatabaseuserbymovingtotheotherpagesassociatedwith theUserspropertysheet.ClickHelpformoreinformationaboutaspecificpage. Tocreateadatabaseuser: 1.NavigatetotheDatabasehomepage. 2 OntheAdministrationpropertiespageunderSecurity, 2.On Security clickUsers. Users TheUsers Searchpageappearscontainingaresultstablethatlistsallcurrentusersforthe database. 3.ClickCreatetocreateanewuser.
OracleDatabase10g:Administration WorkshopI7147
ProfilesandUsers Profilesimposeanamedsetofresourcelimitsondatabaseusageandinstanceresources. Profilesalsoplacelimitationsonuserspasswords(length,expirationtime,andsoon.) Everyuserisassignedtoaprofileandmaybelongtoonlyoneprofileatanygiventime. time Thedefaultprofileservesasthebasisforallotherprofiles.Asyoucanseeintheslide, limitationsforaprofilecanbeeitherimplicitlyspecified(asinCPU/Session),unlimited(as inCPU/Call)orreferencewhateversettingisinthedefaultprofile(asinConnectTime). ProfilescannotimposeresourcelimitationsonusersunlesstheRESOURCE_LIMIT initializationparameterissettoTRUE.WithRESOURCE_LIMIT atitsdefaultvalueof FALSE,profilelimitationsareignored. Profilesallowtheadministratortocontrolthefollowingsystemresources: CPU.CPUresourcesmaybelimitedonapersessionorpercallbasis.A CPU/sessionlimitationof1000meansthatifanyindividualsessionusingthis profileconsumesmorethan10secondsofCPUtime(CPUtimelimitationsarein 100thsofasecond),thenthatsessionreceivesanerrorandisloggedoff: ORA02392:exceededsessionlimitonCPUusage,youarebeing loggedoff
OracleDatabase10g:Administration WorkshopI7148
ProfilesandUsers(continued) Apercalllimitationdoesthesamething,butinsteadoflimitingtheusersoverall session,itpreventsanysinglecommandfromconsumingtoomuchCPU.IfCPU/Callis limitedandtheuserexceedsthelimitation limitation,thecommandabortsandtheusergetsan errormessagesuchasthefollowing: ORA02393:exceededcalllimitonCPUusage Network/Memory:Eachdatabasesessionconsumessystemmemoryresources and(ifthesessionisfromausernotlocaltotheserver)networkresources. ConnectTime:Howmanyminutesauserscanbeconnectedbefore beingautomaticallyloggedoff. Idle dl Time:Howmanyminutesausers sessioncanremainidle dl before b f beingautomaticallyloggedoff.Idletimeiscalculatedfortheserver processonly.Itdoesnottakeintoaccountapplicationactivity.The IDLE_TIME limitisnotaffectedbylongrunningqueriesandother operations. ConcurrentSessions:Howmanyconcurrentsessionscanbecreated using gadatabaseuseraccount. PrivateSGA:LimitstheamountofspaceconsumedwithintheSGAfor sorting,mergingbitmaps,andsoon.Thisrestrictiontakeseffectonlyif thesessionusesasharedserver(sharedserversarediscussedinalater lesson) DiskI/O:Limitstheamountofdataausercanreadeitheratthepersessionor percalllevel.Reads/SessionandReads/Callplacealimitationonthetotal number b of freads d from f both b thmemoryand ddisk. di k This Thi canbe b done d to t ensurethat th t noI/Ointensivestatementshoardmemoryandtieupthedisk. Profilesalsoallowacompositelimit.Compositelimitsarebasedonaweighted combinationofCPU/session,reads/session,connecttime,andprivateSGA.Composite limitsarediscussedinmoredetailintheOracleDatabaseSecurityGuide. Usingprofilestomanageuserpasswordswillbediscussedinalaterlesson.
OracleDatabase10g:Administration WorkshopI7149
AuthenticatingUsers Authenticationmeansverifyingtheidentityofsomeone(auser,device,orotherentity) whowantstousedata,resources,orapplications.Validatingthatidentityestablishesa trustrelationshipforfurtherinteractions.Authenticationalsoenablesaccountabilityby makingitpossibletolinkaccessandactionstospecificidentities.Afterauthentication, authorizationprocessescanalloworlimitthelevelsofaccessandactionpermittedto thatentity. Whenyoucreateauseryoumustdecideontheauthenticationtechniquetouse,which canbemodifiedlater. Password: AlsoreferredtoasauthenticationbytheOracledatabase, database createeachuser withanassociatedpasswordthatmustbesuppliedwhentheuserattemptstoestablisha connection.Whensettingupapasswordyoucanexpirethepasswordimmediately,which forcestheusertochangethepasswordafterfirstloggingin.Ifyouplanonexpiringuser passwords,makesuretheusershavetheabilitytochangethepassword.Some applicationsdonothavethisfunctionality.
OracleDatabase10g:Administration WorkshopI7150
AuthenticatingUsers(continued) External: Alsoreferredtoasauthenticationbytheoperatingsystem,userscanconnect toOraclemoreconveniently,withoutspecifyingausernameorpassword.Withexternal authentication yourdatabasereliesontheunderlyingoperatingsystemornetwork authentication, authenticationservicetorestrictaccesstodatabaseaccounts.Adatabasepasswordis notusedforthistypeoflogin.Ifyouroperatingsystemornetworkservicepermits,you canhaveitauthenticateusers.Ifyoudoso,settheOS_AUTHENT_PREFIX initializationparameterandusethisprefixinOracleusernames.The OS_AUTHENT_PREFIX parameterdefinesaprefixthatOracleaddstothebeginning ofeveryusersoperatingsystemaccountname.Thedefaultvalueofthisparameteris OPS$ $ for f backward b k dcompatibility ibili with i hprevious i versions i of fOracle. O l O Oracle l comparesthe h prefixedusernamewiththeOracleusernamesinthedatabasewhenauserattemptsto connect.Forexample,assumethatOS_AUTHENT_PREFIX issetasfollows: OS_AUTHENT_PREFIX=OPS$ Ifauserwithanoperatingsystemaccountnamedtsmith istoconnecttoanOracle databaseandbeauthenticatedbytheoperatingsystem,Oraclechecksthatthereisa corresponding p gdatabaseuserOPS$tsmith $ and, ,ifso, ,allowstheusertoconnect.All referencestoauserauthenticatedbytheoperatingsystemmustincludetheprefix,as seeninOPS$tsmith. Note: ThetextoftheOS_AUTHENT_PREFIX initializationparameteriscasesensitive onsomeoperatingsystems.SeeyouroperatingsystemspecificOracledocumentation formoreinformationaboutthisinitializationparameter. Global: StrongauthenticationthroughtheOracleAdvancedSecurityoption,global authentication th ti ti allows ll userst tobe b identified id tifi dthrough th hthe th useof fbiometrics, bi t i x509 509 certificates,tokendevices,andtheOracleInternetDirectory.Formoreinformationon advancedauthenticationmethodsrefertotheOracleEnterpriseIdentityManagement course.
OracleDatabase10g:Administration WorkshopI7151
DefaultandTemporaryTablespacesandLocking Adefaulttablespaceisthetablespacewhereobjectsarecreatedifatablespaceisnot specifiedinthecreationoftheobject.Ifyoudonotchooseadefaulttablespace,thenthe systemdefineddefaultpermanenttablespaceisused. Thetemporarytablespaceisthetablespacewhereanysortingactionhappens.Thereare severalwaysthatasortcantakeplace,forexamplewhencreatinganindexorusingan ORDER BY clauseonaSELECT statement.Ifyoudonotspecifyone,thensystem definedtemporarytablespaceisused. Whenauseriscreated,thatusercanhaveastatusoflockedorunlocked.Ifauseris locked thatmeansthatnoonecanloginasthisuser. locked, user Newusers usersaccountsareunlocked bydefault. Note: Itispossibletodefineadefaultandtemporarytablespaceatthedatabaselevel.If youdefinethematthedatabaselevel,thenanyusernotassignedaspecifictablespace fordefaultandtemporarywhencreated,isassignedthedatabasedefaultandtemporary tablespaces.
OracleDatabase10g:Administration WorkshopI7152
DatabaseUsersandSchemas Aschemaisthecollectionofdatabaseobjectsownedbyadatabaseuser.Aschemahas thesamenameastheuserthatownsit.Schemaobjectsincludestructuressuchas tables,views,indexes,andJavaandPL/SQLstoredcode.Thereisnorelationshipbetween atablespaceandaschema.Objectsinthesameschemacanbeindifferenttablespaces, andatablespacecanholdobjectsfromdifferentschemas.Whenadatabaseuseris created,acorrespondingschemawiththesamenameiscreatedforthatuser.Ausercan beassociatedonlywithaschemaofthesamename,andthereforeusernameand schemaareoftenusedinterchangeably. Schemaobjectsthatoccupyspacewithinthedatabase(suchastablesandindexes)are createdintheusersdefaulttablespaceunlessspecificallyplacedsomewhereelse. Schemaownershavefullcontrolovertheirownschemaobjectsandcangrantpermission tootheruserstousethoseobjects. Someuseraccountsarecreatedspecificallytoprovideaschemaandarentintendedto allowuserstologintothedatabase.Theseaccountsshouldbelocked,whichmeansthat noonecanlogintotheaccount.Tolockanaccount,selectLockedinthestatussectionof theCreateorEditUserpage.
OracleDatabase10g:Administration WorkshopI7153
OracleDatabase10g:Administration WorkshopI7154
Privileges AprivilegeisarighttoexecuteaparticulartypeofSQLstatementortoaccessanother usersobject.Oracleallowsveryfinegrainedcontroloverwhatuserscanorcannotdo withinthedatabase.Privilegesaredividedintotwocategories: Systemprivileges.Eachsystemprivilegeallowsausertoperformaparticular databaseoperationorclassofdatabaseoperations;forexample,theprivilegeto createtablespacesisasystemprivilege.Systemprivilegescanbegrantedbythe administratororbysomeonewhoexplicitlygivespermissiontoadministerthe privilege.Thereareover100distinctsystemprivileges. Objectprivileges. privileges Objectprivilegesallowausertoperformaparticularactionona specificobject,suchasatable,view,sequence,procedure,function,orpackage. Withoutspecificpermission,userscanaccessonlytheirownobjects.Object privilegescanbegrantedbytheownerofanobject,bytheadministrator,orby someonewhowasexplicitlygivenpermissiontograntprivilegesontheobject.
OracleDatabase10g:Administration WorkshopI7155
SystemPrivileges Tograntsystemprivileges,clicktheSystemsPrivilegeslink,selectappropriateprivileges fromthelistofavailableprivileges,andmovethemtotheSelectedSystemPrivilegeslist boxbyclickingtheMovearrow. GrantingaprivilegewiththeANY clausemeanstheprivilegecrossesschemalines.For example,theCREATE TABLE privilegeallowstheusertocreateatable,butonlywithin theirownschema.TheSELECT ANY TABLE privilegeallowsausertoselectfrom tablesownedbyotherusers. SelectingtheAdminOptioncheckboxallowsthisusertoadministertheprivilegeand grantthesystemprivilegetootherusers. users Carefullyconsidersecurityrequirementsbeforegrantingsystempermissions.Some systemprivilegesareusuallygrantedonlytoadministrators: RESTRICTED SESSION:Thisprivilegeallowstheusertologinevenifthe databasehasbeenopenedinrestrictedmode.
OracleDatabase10g:Administration WorkshopI7156
SystemPrivileges(continued) SYSDBA andSYSOPER:Theseprivilegesallowtheusertoshutdown,startup, performrecovery,andotheradministrativetasksinthedatabase. DROP ANY object:TheDROP ANY privilegeallowsuserstodeleteobjects theydonotown. CREATE,MANAGE,DROP,ALTER TABLESPACE:Nonadministratorsshouldnot usuallybeabletocontroltablespaces. CREATE ANY DIRECTORY:Oracleallowsdeveloperstocallexternalcode(for example,aClibrary)fromwithinPL/SQL.Asasecuritymeasure,theoperating systemdirectorywherethecoderesidesmustbelinkedtoavirtualOracle di directory object. bj With Wi hthe h CREATE ANY DIRECTORY privilege, i il ausercan potentiallycallinsecurecodeobjects. EXEMPT ACCESS POLICY:Thisprivilegeallowsausertobypasssecurity functionsplacedontablesorviews. GRANT ANY OBJECT PRIVILEGE:Thisprivilegeallowsuserstograntobject permissionsonobjectstheydonotown. ALTER DATABASE andALTER SYSTEM:Nonadministratorsshouldnotusually y beallowedtochangethedatabaseorinstance.
OracleDatabase10g:Administration WorkshopI7157
ObjectPrivileges Tograntobjectprivileges,clicktheObjectPrivilegeslink,selectthetypeofobjectyou wanttograntprivilegeson,andclicktheAddbutton.Choosetheobjectsyouwantto grantprivilegesonbyeitherenteringintheusername.objectname orbyselectingthem fromthelist. Next,selecttheappropriateprivilegesfromtheAvailablePrivilegeslistboxandclickthe Movebutton. SelecttheGrantcheckboxfromthelistofobjectprivilegestoallowthisusertogrant otherusersthesameaccess.
OracleDatabase10g:Administration WorkshopI7158
AssigningQuotatoUsers Quotaisaspaceallowanceinagiventablespace.Bydefaultauserhasnoquotaonanyof thetablespaces.Youhavethreeoptionsforprovidingauserquotaonatablespace. Unlimited:Thisallowstheusertouseasmuchspaceasisavailableinthe tablespace. Value:Thisisanumberofkilobytesormegabytesthattheusercanuse.This doesn'tguaranteethatthespaceissetasidefortheuser.Thisvaluecanbelarger orsmallerthanthecurrentspaceavailableinthetablespace. UNLIMITED TABLESPACE systemprivilege:Thissystemprivilegeoverridesall individualtablespacequotasandgivestheuserunlimitedquotaonall tablespaces,includingSYSTEM andSYSAUX.Thisprivilegeshouldbegranted withcaution. YoushouldnotgivequotatousersontheSYSTEM orSYSAUX tablespace.Typically,only theusersSYS andSYSTEM shouldbeabletocreateobjectsintheSYSTEM orSYSAUX tablespace. Usersdonotneedquotaontheirassignedtemporarytablespacesoranyundo tablespaces.
OracleDatabase10g:Administration WorkshopI7159
OracleDatabase10g:Administration WorkshopI7160
Roles Inmostsystemsitistootimeconsumingtograntnecessaryprivilegestoeachuser individually,andthereistoogreatachanceoferror.Oracleprovidesforeasyand controlledprivilegemanagementthroughroles. roles Rolesarenamedgroupsofrelated privilegesthataregrantedtousersortootherroles.Theyaredesignedtoeasethe administrationofprivilegesinthedatabase,andhenceimprovesecurity. RoleCharacteristics Privilegesaregrantedtoandrevokedfromrolesasiftherolewereauser. Rolescanbegrantedtoandrevokedfromusersorotherrolesasiftheywere systemprivileges. Arolecanconsistofbothsystemandobjectprivileges. privileges Arolecanbeenabledordisabledforeachuserwhoisgrantedtherole. Arolecanrequireapasswordtobeenabled. Rolesarenotownedbyanyone;andtheyarenotinanyschema. Intheexampleabove,theHR_CLERK roleisgrantedSELECT andUPDATE privilegeson theemployees table.TheHR_MGR roleisgrantedtheDELETE andINSERTprivileges ontheemployees tableand theHR_CLERK role.ThemanagerisgrantedtheHR_MGR roleandcannowselect,delete,insert,andupdate p theemployees p y table.
OracleDatabase10g:Administration WorkshopI7161
BenefitsofRoles EasierPrivilegeManagement Userolestosimplifyprivilegemanagement.Ratherthangrantingthesamesetof privilegestoseveralusers,youcangranttheprivilegestoarole,andthengrantthatrole toeachuser. DynamicPrivilegeManagement Iftheprivilegesassociatedwitharolearemodified,alltheuserswhoaregrantedtherole acquirethemodifiedprivilegesautomaticallyandimmediately. SelectiveAvailabilityofPrivileges Rolescanbeenabledanddisabledtoturnprivilegesonandofftemporarily. temporarily Enablinga rolecanalsobeusedtoverifythatauserhasbeengrantedthatrole. GrantingThroughtheOperatingSystem Operatingsystemcommandsorutilitiescanbeusedtoassignrolestousersinthe database.
OracleDatabase10g:Administration WorkshopI7162
PredefinedRoles ThereareseveralrolesdefinedautomaticallyforOracledatabaseswhenyourun databasecreationscripts.CONNECT isgrantedautomaticallytoanyusercreatedwith EnterpriseManager.SELECT_CATALOG_ROLE isprovidedforaccessingdatadictionary viewsandpackages(thisroleisdeprecatedinfavoroftheSELECT_ANY_DICTIONARY systemprivilege).TheDBA roleincludesnearlyallprivilegesandshouldnotbegrantedto nonadministrators. FunctionalRoles Otherrolesthatauthorizeyoutoadministerspecialfunctionsarecreatedwhenthat functionalityisinstalled. installed Forexample example,XDBADMIN containstheprivilegesrequiredto administertheXMLdatabaseifthatfeatureisinstalled.The AQ_ADMINISTRATOR_ROLE providesprivilegestoadministeradvancedqueuing.The HS_ADMIN_ROLE includestheprivilegesneededtoadministerheterogeneousservices. Youshouldnotaltertheprivilegesgrantedtothesefunctionalroleswithoutthe assistanceofOracleSupportbecauseyoumayinadvertentlydisableneededfunctionality.
OracleDatabase10g:Administration WorkshopI7163
SecureRoles Rolesareusuallyenabledbydefault,whichmeansthatifaroleisgrantedtoauser,that usercanexercisetheprivilegesgiventothatrole.Itispossibleto: Makearolenondefault.Whentheroleisgrantedtoauser,cleartheDEFAULT checkbox.Nowtheusermustexplicitlyenabletherolebeforetherolesprivileges canbeexercised. Havearolerequireadditionalauthentication.Thedefaultauthenticationforarole isNONEbutitispossibletohavetherolerequireadditionalauthenticationbefore itcanbeset. CreatesecureapplicationrolesthatcanbeenabledonlybyexecutingaPL/SQL proceduresuccessfully.ThePL/SQLprocedurecancheckthingssuchastheusers networkaddress,whichprogramtheuserisrunning,timeofday,oranythingelse thatisneededtoproperlysecureagroupofpermissions.
OracleDatabase10g:Administration WorkshopI7164
OracleDatabase10g:Administration WorkshopI7165
OracleDatabase10g:Administration WorkshopI7166
Practice7:AdministeringUsers Background:YouneedtocreateauseraccountforJennyGoodman,thenewhuman resourcesdepartmentmanager.Therearealsotwonewclerksinthehumanresources department DavidHambyandRachelPandya. department, Pandya Allthreeofthemshouldbeabletologin tothedatabase,selectfromthehr.employees table,andupdaterecordsinthattable. Themanageralsoneedstobeabletoinsertanddeletenewemployeerecords.Ensure thatifthenewusersforgettologoutattheendoftheday,theywillautomaticallybe loggedoffafterfifteenminutes. Tasks: Createaprofilewithresourcelimitations Createroles l with happropriatepermissions Createusersandassignthemthecorrectroles 1.CreateaprofilenamedHRPROFILE thatlimitsidletimeto15minutes.Leave allotherfieldssettoDefault. 2.Createroleswithappropriatepermissions. a) )CreatearolenameHRCLERK withSELECT andUPDATE p permissions onthehr.employees table. b)CreatearolenameHRMANAGER withINSERT andDELETE permissionsonthehr.employees table.GranttheHRCLERK roleto theHRMANAGER role. 3.Createthreenewusers. a)CreateanaccountforDavidHamby,anewHRclerk. b)Create C t anaccount tfor f Rachel R h lPandya, P d another th newHRclerk. l k c)CreateanaccountforJennyGoodman,thenewHRmanager. 4.Testthenewusers. a)ConnecttothedatabaseasuserDHAMBY.Attempttoselectfromthe hr.employees table. b)Nowattempttodeletearecordfromthehr.employees table. c)ConnecttothedatabaseasJGOODMAN andattempttoselectandthen deletefromthehr.employees table. d)Rollbackthedeleteoperationbecausethiswasonlyatest. 5.Whenyoucreatedthenewusersyoudidnotselectadefaultortemporary tablespace.Whatdetermineswhichtablespacesthenewuserswilluse? 6.YoudidnotgranttheCREATE SESSION systemprivilegetoeitherofthe newusers,buttheycanallconnecttothedatabase.Why? 7 Createanewuseraccounttoowndatabaseobjectsforanewinventory 7. application.Theusernameshouldbeinventorywithapasswordofverysecure. Maketheusersdefaulttablespacetheinventorytablespace.Granttheuserthe connectandresourceroles. 8.Leaveoneofthenewusersconnectedtothedatabaseduringthenextlesson orattheendoftheday.Verifythattheuserisautomaticallyloggedoutafter fifteenminutes.
OracleDatabase10g:Administration WorkshopI7167
OracleDatabase10g:Administration WorkshopI8169
WhatIsaSchema? Aschemaisacollectionofdatabaseobjectsownedbyaparticularuser.Aschemahasthe samenameastheuserthatownstheschema.Schemaobjectsarethelogicalstructures thatdirectlyrefertothedatabasesdata.Schemaobjectsincludestructuressuchas tables,views,andindexes. Note: Thereisnorelationshipbetweenatablespaceandaschema.Objectsinthesame schemacanbeindifferenttablespaces,andatablespacecanholdobjectsfromdifferent schemas. YoucancreateandmanipulateschemaobjectsusingSQLorEnterpriseManager.When youuseEnterpriseManager Manager,theunderlyingSQLisgeneratedforyou. you
OracleDatabase10g:Administration WorkshopI8170
Schemas Whenyoucreatethedatabase,anumberofschemasarecreatedforyou.Twoof particularimportanceare: SYS schema:Allofthebasetablesandviewsthatconstitutethedatabase'sdata dictionaryarecreatedintheSYS schema.Thedatadictionaryisacollectionof tablesthatdescribetheOracledatabase.Thedatadictionaryiscreatedinthe SYSTEM tablespacewhenthedatabaseiscreatedandisupdatedbytheOracle databaseserverwhenadatadefinitionlanguage(DDL)statementisexecuted.The datadictionarycontainsinformationaboutusers,schemaobjects,andstorage structures. structures Youcanusethedatadictionaryasareadonlyreferencefor informationaboutthedatabase.WhenyouuseEnterpriseManageryouaccess thedatadictionarytablesthroughviews. ObjectsintheSYS schemashouldneverbemodifiedbyanyuser ordatabaseadministrator,andnooneshouldcreateanytablesintheschemaof userSYS. SYSTEM schema:Containsadditionaltablesandviewsthatstoreadministrative information,andinternaltablesandviewsusedbyvariousOracleoptionsand tools.YoushouldnotcreateanyadditionalobjectsintheSYSTEM schema.
OracleDatabase10g:Administration WorkshopI8171
Schemas(continued) DuringacompleteinstallationofanOracledatabase,thesampleschemasareinstalled automaticallywiththeseeddatabase.Thesampleschemasservethepurposeof providingacommonplatformforexamplesinOracledocumentationandcurriculum. curriculum Theyareasetofinterlinkedschemasaimedatprovidingalayeredapproachto complexityandincludethefollowing: HR:TheHumanResourcesschemaisasimpleschemaforintroducingbasictopics. AnextensiontothisschemasupportsOracleInternetDirectorydemonstrations. OE:TheOrderEntryschemaisfordealingwithmattersofintermediate complexity.AmultitudeofdatatypesisavailableintheOE schema.TheOC ( l Catalog) (Online l )subschema b h isacollection ll of fobject b relational l ldatabase d b objects b builtinsidetheOE schema. PM:TheProductMediaschemaisdedicatedtomultimediadatatypes. QS:TheQueuedShippingschemacontainsasetofschemasthatareusedto demonstrateOracleAdvancedQueuingcapabilities. SH:TheSalesHistoryschemaisdesignedtoallowdemonstrationswithlarger amountsofdata.Anextensiontothisschemap providessupport pp foradvanced analyticprocessing.
OracleDatabase10g:Administration WorkshopI8172
OracleDatabase10g:Administration WorkshopI8173
NamingDatabaseObjects Whenyounameanobjectinthedatabaseyouhavetheoptionofenclosingnamesin doublequotationmarks(").Ifyoudothisthenyoucanbreakseveralofthenamingrules mentionedintheslide.Howeverthisisnotrecommended,becauseifyounameanobject thiswayyoumustalwaysrefertoitwiththequotesaroundthename.Forexample,ifyou nameatable"LocalTemp"youmustdothefollowing: SQL>select*from"LocalTemp"; TEMP_DATELO_TEMPHI_TEMP 01DEC033041 Ifyoumistypethecaseyouwillget: SQL>select*from"localtemp"; select*from"localtemp" * ERRORatline1: ORA00942:tableorviewdoesnotexist Nonquotednamesarestoredinuppercaseandarenotcasesensitive.WhenaSQL statementisprocessed,nonquotednamesareconvertedtoalluppercase.
OracleDatabase10g:Administration WorkshopI8174
OracleDatabase10g:Administration WorkshopI8175
SchemaObjectNamespaces TheOracledatabaseusesnamespacestoresolveschemaobjectreferences.Whenyou refertoanobjectinaSQLstatement,OracleconsidersthecontextoftheSQLstatement andlocatestheobjectintheappropriatenamespace.Afterlocatingtheobject,Oracle performstheoperationspecifiedbythestatementontheobject.Ifthenamedobject cannotbefoundintheappropriatenamespace,thenOraclereturnsanerror. Becausetablesandviewsareinthesamenamespace,atableandaviewinthesame schemacannothavethesamename.However,tablesandindexesareindifferent namespaces.Therefore,atableandanindexinthesameschemacanhavethesame name. name Eachschemainthedatabasehasitsownnamespacesfortheobjectsitcontains.This means,forexample,thattwotablesindifferentschemasareindifferentnamespacesand canhavethesamename.
OracleDatabase10g:Administration WorkshopI8176
SpecifyingDataTypesinTables Whenyoucreateatable,youmustspecifyadatatypeforeachofitscolumns.Whenyou createaprocedureorfunction,youmustspecifyadatatypeforeachofitsarguments. Thesedatatypesdefinethedomainofvaluesthateachcolumncancontainoreach argumentcanhave. OracleDatabasebuiltindatatypesincludethefollowing: CHAR:Fixedlengthcharacterdataoflengthsizebytes.Maximumsizeis2000 bytes.Defaultandminimumsizeis1byte. VARCHAR2:Variablelengthcharacterstringhavingmaximumlengthsizebytesor characters Maximumsizeis4000bytes. characters. bytes YoumustspecifysizeforVARCHAR2. DATE:ValiddaterangefromJanuary1,4712BCtoDecember31,9999AD;also storesthetimedowntothesecond. NUMBER:Numberhavingprecisionp andscales.Theprecisioncanrangefrom1 to38.Thescalecanrangefrom84to127. RefertotheOracleDatabaseSQLReferenceforacompletelistofbuiltindatatypesand userdefinedtypes.
OracleDatabase10g:Administration WorkshopI8177
OtherDataTypes FLOAT(p):ThisisanANSIdatatype.TheFLOAT datatypeisafloatingpoint numberwithabinaryprecision p.Thedefaultprecisionforthisdatatypeis126 binary,or38decimal. INTEGER:ThisisequivalenttoNUMBER(p,0). NCHAR(length):TheNCHAR datatypeisaUnicodeonlydatatype.Whenyou createatablewithanNCHAR column,youdefinethecolumnlengthincharacters. Youdefinethenationalcharactersetwhenyoucreateyourdatabase.The maximumlengthofacolumnisdeterminedbythenationalcharacterset definition WidthspecificationsofcharacterdatatypeNCHAR refertothenumber definition. ofcharacters.Themaximumcolumnsizeallowedis2000bytes.Ifyouinserta valuethatisshorterthanthecolumnlength,thenOracleblankpadsthevalueto columnlength.YoucannotinsertaCHAR valueintoanNCHAR column,norcan youinsertanNCHAR valueintoaCHAR column. NVARCHAR2(length):TheNVARCHAR2 datatypeisaUnicodeonlydatatype. ItislikeNCHAR expectthatitsmaximumlengthis4000bytesanditisnotblank paddedtothelengthspecified.
OracleDatabase10g:Administration WorkshopI8178
OtherDataTypes(continued) LONG:Characterdataofvariablelengthupto2gigabytes,or231 1bytes. LONG RAW:Rawbinarydataofvariablelengthupto2gigabytes. RAW(size):Rawbinarydataoflengthsizebytes.Maximumsizeis2000bytes. YoumustspecifysizeforaRAWvalue. ROWID:Base64stringrepresentingtheuniqueaddressofarowinitstable.This datatypeisprimarilyforvaluesreturnedbytheROWID pseudocolumn. UROWID:Base64stringrepresentingthelogicaladdressofarowofanindex organizedtable.TheoptionalsizeisthesizeofacolumnoftypeUROWID.The maximumsizeanddefaultis4000bytes. BLOB:Abinary ylarge g object. j CLOB:Acharacterlargeobjectcontainingsinglebyteormultibytecharacters. Bothfixedwidthandvariablewidthcharactersetsaresupported,andbothuse theCHAR databasecharacterset. NCLOB:AcharacterlargeobjectcontainingUnicodecharacters.Bothfixedwidth andvariablewidthcharactersetsaresupported,andbothusetheNCHAR databasecharacterset.Storesnationalcharactersetdata. Note: ThemaximumsizeforallLOBdatatypes(BLOB,CLOB and NCLOB)is:(4 gigabytes - 1) * (the value of CHUNK).A CHUNKisanoptionalattributewhichyoucansetwhendefiningaLOB.The CHUNKspecifiesthenumberofbytestobeallocatedforLOB manipulation.Ifsizeisnotamultipleofthedatabaseblocksize,thenthe databaseroundsupinbytestothenextmultiple.Forexample,ifthe databaseblocksizeis2048andCHUNKsizeis2050,thenthedatabase allocates4096bytes(2blocks).Themaximumvalueis32768(32K),which isthelargestOracleDatabaseblocksizeallowed. allowed ThedefaultCHUNKsizeis oneOracleDatabaseblock. BFILE:Containsalocatortoalargebinaryfilestoredoutsidethedatabase. EnablesbytestreamI/OaccesstoexternalLOBsresidingonthedatabaseserver. Maximumsizeis4gigabytes. TIMESTAMP(fractional_seconds_precision):Year,month,andday valuesofdate,aswellashour,minute,andsecondvaluesoftime,where fractional seconds precision isthenumberofdigitsinthefractional fractional_seconds_precision partoftheSECOND datetimefield(asinfractionsofasecond).Acceptedvalues offractional_seconds_precision are0to9.Thedefaultis6.
OracleDatabase10g:Administration WorkshopI8179
CreatingandModifyingTables TablesarethebasicunitofdatastorageinanOracledatabase.Theyholdalluser accessibledata.Eachtablehascolumnsandrows. CreatingaTable YoucancreateatableusingEnterpriseManagerasfollows: 1. ClickTablesintheSchemaregionoftheAdministrationpage. TheTablespageappears. 2 2. Ifyouknowtheschemaname name,enterallorpartofitinthe SchemafieldintheSearchregion.Ifyoudonotknowtheschemaname, clicktheflashlighticonnexttotheSchemafield.TheSearchandSelect: Schemawindowappears.Youcanpagethroughtheschemanamesand selecttheoneyouarelookingfor. 3. ClickCreate.TheCreateTable:TableOrganizationpage appears. 4. AcceptthedefaultofStandard,HeapOrganizedbyclicking Continue.TheCreateTablepageappears. 5. EnterthetablenameintheNamefield. 6. EntertheschemanameintheSchemafieldorclickthe flashlighticontoinvokethesearchfunction.
OracleDatabase10g:Administration WorkshopI8180
CreatingandModifyingTables (continued) 7. EnterthetablespacenameintheTablespacefieldorclickthe flashlighticontoinvokethesearchfunction. 8 8. IntheColumnssection, section enterthecolumnnameanddatatypes. types 9.ClickOK.Anupdatemessageappearsindicatingthetablehasbeensuccessfully created. ModifyingaTable YoucanmodifyatableusingEnterpriseManagerasdescribedinthefollowingsteps.In thisexample,anadditionalcolumnisaddedtoatable. 1. IntheTablespage,selectthetableintheresultslistandclickEdit. 2. Inthe h Edit d Table bl page,click l kthe h Add dd5Table bl Columns l b button.An editablecolumnslistappears. 3. Enterthenewcolumnname,datatype,andsize.ClickApply. 4. Anupdatemessageappearsindicatingthatthetablehasbeen modifiedsuccessfully.
OracleDatabase10g:Administration WorkshopI8181
UnderstandingDataIntegrity Youcanusethefollowingintegrityconstraintstoimposerestrictionsontheinputof columnvalues: NOT NULL:Bydefault,allcolumnsinatableallownullvalues.Nullmeansthe absenceofavalue.ANOT NULL constraintrequiresthatacolumnofatable containnonullvalues.Forexample,youcandefineaNOT NULL constraintto requirethatavaluebeinputinthelast_name columnforeveryrowofthe employees table. UNIQUE Key:AUNIQUE keyintegrityconstraintrequiresthateveryvalueina columnorsetofcolumns(key)beuniquethatis, is notworowsofatablehave duplicatevaluesinaspecifiedcolumnorsetofcolumns.Forexample,aUNIQUE keyconstraintisdefinedonthedepartment_name columnofthe departments tabletodisallowrowswithduplicatedepartmentnames. PRIMARY KEY:EachtableinthedatabasecanhaveatmostonePRIMARY KEY constraint.Thevaluesinthegroupofoneormorecolumnssubjecttothis constraintconstitutetheuniqueidentifieroftherow.Ineffect,eachrowisnamed byitsprimarykeyvalues.
OracleDatabase10g:Administration WorkshopI8182
UnderstandingDataIntegrity(continued) TheOracleimplementationofthePRIMARY KEY integrity constraintguaranteesthatbothofthefollowingaretrue: Notworowsofatablehaveduplicatevaluesinthespecifiedcolumnorset ofcolumns. Theprimarykeycolumnsdonotallownulls.Thatis,avaluemustexistfor theprimarykeycolumnsineachrow. OracleenforcesallPRIMARY KEY constraintsusingindexes.The primarykeyconstraintcreatedforthedepartment_id columninthe departments tableisenforcedbytheimplicitcreationof: Auniqueindex d onthat h column l ANOT NULL constraintforthatcolumn Referentialintegrityconstraints:Differenttablesinarelationaldatabasecanbe relatedbycommoncolumns,andtherulesthatgoverntherelationshipofthe columnsmustbemaintained.Referentialintegrityrulesguaranteethatthese relationshipsarepreserved. Areferentialintegrity g yconstraintrequires q thatforeachrowofa table,thevalueintheforeignkeymatchesavalueinaparentkey. Asanexample,aforeignkeydefinedisdefinedonthe department_id columnoftheemployees table.Itguaranteesthatevery valueinthiscolumnmustmatchavalueintheprimarykeyofthedepartments table(alsothedepartment_id column).Therefore,noerroneousdepartment numberscanexistinthedepartment_id columnofthedepartments table. A th type Another t of freferential f ti lintegrity i t it constraint t i tis i called ll daself lf referentialintegrityconstraint.Thistypeofforeignkeyreferencesaparentkeyin thesametable. Checkconstraints:ACHECK integrityconstraintonacolumnorsetofcolumns requiresthataspecifiedconditionbetrueorunknownforeveryrowofthetable. IfaDMLstatementresultsintheconditionoftheCHECK constraintevaluatingto false,thenthestatementisrolledback.
OracleDatabase10g:Administration WorkshopI8183
OracleDatabase10g:Administration WorkshopI8184
OracleDatabase10g:Administration WorkshopI8185
ViewingtheContentsofaTable YoucaneasilyviewtherowsinatableusingEnterpriseManagerasfollows: 1.SelectthetableontheTablespage. 2.SelectViewDatafromtheActionsmenuandclickGo. TheViewDataForTablepageappears.TherowdataforthetableisshownintheResults section.TheQueryboxdisplaystheSQLquerythatwasexecutedtoproducetheresults. Onthispageyoucanclickanycolumnnameandsortthedatainthecolumnineither ascendingordescendingorder.Ifyouwanttochangethequery,clicktheRefineQuery button.OntheRefineQueryforTablepage,youcanselectthecolumnsthatyouwantto displayandspecifyaWHERE clausefortheSQLstatementtolimittheresults. results RefertotheOracleDatabaseSQLReferenceformoreinformationonWHERE clausesin SQLstatements.
OracleDatabase10g:Administration WorkshopI8186
ActionswithTables Youcanselectatableandthenperformactionsonthattable. CreateLike:Withthisyoucancreateatablethathasthesamestructureasthe selectedtable.Youmustchangethetablenameandtheconstraintnames.You canalsoaddordeletecolumnsandmakeotherchangestothetablestructure. Whencreated,thetablewillbeempty. CreateIndex:Usethisoptiontocreateindexesonatable.Indexesshouldbe createdonlyoncolumnsthatareusedinWHERE conditionsofselectandDML statements. CreateSynonym:Asynonymisanameusedinplaceofthefulltablename. name A synonymcanbeprivateorpublic. CreateTrigger:AtableleveltriggerisaPL/SQLblockthatisexecutedbecauseof aneventhappeningonthetable.Forexampleyoumaywanttokeepacopyof datainanothertableasitgetsdeletedfromtheemployees table.Youwould thencreateabeforedeletetriggerthatwouldinsertthedataabouttobe deletedfromtheemployees tableintoanothertable.Formoreinformation abouttriggersrefertotheApplicationDeveloper'sGuide Fundamentals andthe PL/SQLUsersGuideandReference.
OracleDatabase10g:Administration WorkshopI8187
ActionswithTables (continued) GatherStatistics:TheGatherStatisticsWizardguidesyouthroughtheprocessof generatingandmodifyingoptimizerstatistics.Thestatisticsarestoredinthedata dictionaryandusedbythecostbasedoptimizer. optimizer Uptodatestatisticscangreatly improvetheperformanceofSQLqueriesagainstyourobjects.Oraclesuggests thatyouuseautomatedtaskstogeneratestatisticsregularlywithinmaintenance windows. GenerateDDL:ThisgeneratestheDDLcommandtocreatethetableselected.This canthenbecopypastedintoatextfileforuseasascriptorfordocumentation purposes. GrantPrivileges: l Byd default f l when h atable bl iscreated donly l the h ownercando d anythingwithit.Theownermustgrantoutprivilegestootheruserstobeableto performDMLandsomeDDLonthetable. Reorganize:YoucanusetheReorgWizardtorebuildfragmentedindexesortables, moveobjectstoadifferenttablespace,oroptimizethestorageattributesof specifiedobjects. RunSegment g Advisor:Thesegment g advisordetermineswhetherobjects j have unusedspacethatcanbereleased,takingestimatedfuturespacerequirements intoconsideration.Theestimatedfuturespacecalculationisbasedonhistorical trends. ShrinkSegment:Theshrinkoperationcompactsfragmentedspaceand,optionally, freesthespace. ShowDependencies:Thisshowobjectsthatthistabledependsonorobjectsthat d depend donthis thi table. t bl ViewData:Runsaselectstatementonthetable,yourefinetheselectstatement. Youcannotchangethedata. FlashbackTable:TheFlashbackTablesfacilityallowsyoutorecoveratabletoa previouspointintime.Itprovidesamethodofrecoveringatablethathasbeen accidentallymodifiedordeletedbyauserorapplication.Youcanrestoretable dataalong gwithallitsassociatedattributes,suchasindexes,triggers, gg andsoon. Thisisdonewhilethedatabaseisonlinebyrollingbackonlythechangestothe giventables.Youcanrevertatableanditscontentstoacertaintimeoruser specifiedsystemchangenumber(SCN).Useflashbacktablewithflashbackquery androwversionstofindatimetowhichthetableshouldberestored.Formore informationaboutusingtheFlashbackTablesfeature,seetheOracleDatabase AdministratorsGuide. FlashbackbyRowVersions:FlashbackVersionsQueryallowsyoutoquery metadataandhistoricaldatawithinatimeinterval.Youcanperformquerieson thetableasofacertainwallclocktime.Selectthefilterconditionsthatallowyou toretrievethedifferentversionsofrowsinatablethatexistedinaspecifictime interval.
OracleDatabase10g:Administration WorkshopI8188
CreatingIndexes Indexesareoptionalstructuresassociatedwithtables.Theycanbecreatedtoincrease theperformanceofdataretrieval.AnOracleindexprovidesadirectaccesspathtotable data. Indexescanbecreatedononeormorecolumnsofatable.Afteranindexiscreated,itis automaticallymaintainedandusedbytheOracleserver.Updatestoatablesdata,such asaddingnewrows,updatingrows,ordeletingrows,areautomaticallypropagatedtoall relevantindexeswithcompletetransparencytotheusermakingthechange. YoucanclicktheIndexeslinkundertheSchemaheadingoftheAdministrationpageto viewtheIndexespage. page Youcanviewindexattributes, attributes orusetheActionsmenutoView Dependenciesforanindex. Indexescanbecreatedexplicitly,orimplicitlythroughconstraintsthatareplacedona table.
OracleDatabase10g:Administration WorkshopI8189
OracleDatabase10g:Administration WorkshopI8190
OracleDatabase10g:Administration WorkshopI8191
WhatIsaSequence? Asequenceisadatabaseobjectfromwhichmultipleuserscangenerateuniqueintegers. Yougenerallyusesequencestogenerateprimarykeyvalues. Name:Usethenamingrulescoveredearliertonameasequence. Schema:Thisistheownerofthesequence. Type:Asequencecaneitherbeascendingordescending MaximumValue:Specifythemaximumvaluethesequencecangenerate.This integervaluecanhave28orfewerdigits.ItmustbegreaterthanMinimumValue andInitial.UsingUnlimitedindicateamaximumvalueof1027 foranascending sequenceor 1foradescendingsequence. sequence ThedefaultisUnlimited. Unlimited MinimumValue:Specifytheminimumvalueofthesequence.Thisintegervalue canhave28orfewerdigits.ItmustbelessthenorequaltoInitialandlessthen MaximumValue.UsingUnlimitedindicatesaminimumvalueof1foranascending sequenceor1026 foradescendingsequence.ThedefaultisUnlimited.
OracleDatabase10g:Administration WorkshopI8192
WhatIsaSequence? (continued) Interval:Specifytheintervalbetweensequencenumbers.Thisintegervaluecan beanypositiveornegativeinteger,butitcannotbezero.Thisvaluecanhave28or fewerdigits. digits Thedefaultisone. one Initial:Specifythefirstsequencenumbertobegenerated.Usethisclausetostart anascendingsequenceatavaluegreaterthanitsminimumortostarta descendingsequenceatavaluelessthanitsmaximum. CycleValues:Afteranascendingsequencereachesitsmaximumvalue,it generatesitsminimumvalue.Afteradescendingsequencereachesitsminimum, itgeneratesitsmaximumvalue.Ifyoudonotchoosethisoption,anerrorwillbe returned dif fyouattempttoretrieveavalue l after f the h sequencehas h been b exhausted. OrderValues:Thisguaranteesthatsequencenumbersaregeneratedinorderof request.Thisclauseisusefulifyouareusingthesequencenumbersas timestamps.Guaranteeingorderisusuallynotimportantforsequencesusedto generateprimarykeys.Thisoptionisnecessaryonlytoguaranteeordered generationify g youareusing gOraclewithRealApplication pp Clusters. CacheOptions:SpecifyhowmanyvaluesofthesequenceOraclepreallocatesand keepsinmemoryforfasteraccess.Thisintegervaluecanhave28orfewerdigits. Theminimumvalueforthisparameteris2.Forsequencesthatcycle,thisvalue mustbelessthanthenumberofvaluesinthecycle.Youcannotcachemore valuesthanwillfitinagivencycleofsequencenumbers.
OracleDatabase10g:Administration WorkshopI8193
UsingaSequence YourefertosequencevaluesinSQLstatementswiththefollowingpseudocolumns: CURRVAL:Returnsthecurrentvalueofasequence NEXTVAL:Incrementsthesequenceandreturnsthenextvalue YoumustqualifyCURRVAL andNEXTVAL withthenameofthesequence: sequence.CURRVAL sequence.NEXTVAL ThefirstreferencetoNEXTVAL returnstheinitialvalueofthesequence.Subsequent referencestoNEXTVAL incrementthesequencevaluebythedefinedincrementand returnthenewvalue. value AnyreferencetoCURRVAL alwaysreturnsthecurrentvalueofthe sequence,whichisthevaluereturnedbythelastreferencetoNEXTVAL.
OracleDatabase10g:Administration WorkshopI8194
OracleDatabase10g:Administration WorkshopI8195
OracleDatabase10g:Administration WorkshopI8196
Practice8:ManagingSchemaObjects Background: You need to create a schema objects for the new inventory application. Tasks: Createtablestostoredata Ensurereferentialintegritythroughtheuseofconstraints Createindexestoimproveaccesstodata Modifyexistingtables Createviewsthatsimplifyuseraccesstodata 1.IntheINVENTORYtablespace,createthePRODUCT_MASTERtableintheINVENTORY schema.Thespecificationsofthetableare: PRODUCT_ID number(5).Thisistheprimarykeyfield. PRODUCT_NAME varchar2(50) withaNotNullconstraint. CODE varchar2(20) withaNotNullconstraint. REORDER_THRESHOLD number(5) withacheckconstraintensuringthatthe numberis alwaysgreaterthanzero. COST number(5,2) number(5 2) PRICE number(5,2) 2.IntheINVENTORYtablespacecreatethePRODUCT_ON_HANDtableintheINVENTORY schema.Thespecificationsofthetableare: ON_HAND_ID number(5).Thisistheprimarykeyfield. PRODUCT_ID number(5).Thisfieldshouldhaveaforeignkeyconstraint linkingittothe product_idfieldintheproduct_mastertable. QUANTITY number(5) WAREHOUSE_CITY varchar2(30) 3.IntheINVENTORYtablespacecreatetheOBSOLETE_PRODUCTStableinthe INVENTORY schema.Thespecificationsofthetableare: PRODUCT ID number(5).Thisistheprimarykeyfield. PRODUCT_ID PRODUCT_NAME varchar2(50) withaNotNullconstraint. CODE varchar2(20) withaNotNullconstraint. COST number(5,2) PRICE number(5,2) 4.IntheINVENTORYtablespace,createanindexonthePRODUCT_NAMEcolumnofthe OBSOLETE_PRODUCTStableintheINVENTORYschema. 5.Inthe h INVENTORYtablespace, bl createanindex d onthe h PRODUCT_NAMEand dCODE columns ofthePRODUCT_MASTERtableintheINVENTORYschema. 6.IntheINVENTORYtablespace,createanindexthePRODUCT_IDandQUANTITYcolumn of thePRODUCT_ON_HANDtableintheINVENTORYschema. 7.Youreceiveanupdate p fortheinventory yapplication pp thatrequires q y youtoaddtwo columnstothe PRODUCT_MASTERtable.AddacolumnnamedPRIMARY_SOURCEofdatatype varchar2 withsize50.AddanothercolumnnamedSECONDARY_SOURCEofdatatypevarchar2 OracleDatabasewith 10g:Administration size50. WorkshopI8197
Practice8:ManagingSchemaObjects(continued) 8.Theupdatefortheinventoryapplicationalsorequiresyoutoaddacolumntothe PRODUCT_ON_HANDtable.AddacolumnnamedLAST_UPDATEofdatatypedate. 9 Theupdatefortheinventoryapplicationalsorequiresyoutoaddacolumntothe 9. OBSOLETE_PRODUCTStable.AddacolumnnamedOBSOLETEDofdatatypedate. 10.Youreceiveanotherupdatefortheinventoryapplication.Thisupdateinstructsyouto dropthe OBSOLETE_PRODUCTStableandaddacolumnOBSOLETEDtothe PRODUCT_MASTERtablewithdatatypedate. 11.Thesecondupdatetotheinventoryapplicationalsoinstructsyoutocreateaview named d WAREHOUSE_VWintheINVENTORYschemathattheshows(inorder): Thenameoftheproduct Theamountoftheproductonhand Thewarehousecityname.
OracleDatabase10g:Administration WorkshopI8198
OracleDatabase10g:Administration WorkshopI9201
OracleDatabase10g:Administration WorkshopI9202
TheINSERT Command ThebasicINSERT statementcreatesonerowatatime.Usingwhatiscalledasubselect, youcancausetheinserttocopyrowsfromonetabletoanother.Thismethodisalso referredtoasanINSERT selectstatement.Theexampleontheslideisthefollowing INSERT command: insertintodept_80(select*fromemployees wheredepartment_id=80); Inthiscasethedept_80 tablehastheexactsamestructureastheemployees table.If thisisnotthecaseyoucannamethecolumnsineachtable.Thecolumnvalueswill matchintheorderasnamedintheINSERT andSELECT statements. statements Allthatisrequired isthatthedatatypesmatch.Forexample: insertintojust_names(first,last) (selectfirst_name,last_namefromemployees); Herethejust_names tablehasonlytwocolumnsthathavethesamedatatypeasthe first_name andlast_name columnsintheemployees table. Usingtheinsertselectmethodisawaytobulkloaddatafromoneormoretablesinto anothertable.
OracleDatabase10g:Administration WorkshopI9203
TheUPDATE Command TheUPDATE commandisusedtomodifyexistingrowsinatable.Thenumberorrows modifiedbytheupdatewilldependontheWHERE condition.IftheWHERE clauseis omitted,thenallrowswillbechanged.IfnorowssatisfytheWHERE condition,thenno rowswillbemodified.
OracleDatabase10g:Administration WorkshopI9204
TheDELETE Command TheDELETE commandisusedtoremoveexistingrowsfromatable.Thenumberor rowsmodifiedbythedeletedependsontheWHERE condition.IftheWHERE clauseis omitted,thenallrowswillberemoved.IfnorowssatisfytheWHERE conditionthenno rowswillberemoved.Noteintheexample,whennorowsaredeleteditisnotanerror; themessagereturnedonlystatesthatzerorowshavebeenremovedfromthetable.
OracleDatabase10g:Administration WorkshopI9205
TheCOMMIT andROLLBACK Commands BydefaulteachDMLcommandenteredisnotcommitted.Severaltools(including iSQL*Plus)haveoptionsthatcanbesettocommitoneachcommandoragroupof commands. BeforeaCOMMIT orROLLBACK isissued,thechangesareinapendingstate.Onlythe userwhomadethechangeisallowedtoseethechangeddata.Otheruserscanselectthe samedata,butwillseethedataasitwasbeforeanychangeismade.Otheruserscannot issueDMLonthesamedatathatanotheruserhaschanged. Bydefaultausertryingtomakeachangeonthesamerowasanotheruserwillwaituntil thefirstusereithercommitsorrollsbackthechange. change Thisiscontrolledautomaticallyby Oracleslockingmechanism.Becausethelockingmechanismisbuiltintotherowitself, thereisnowaythedatabasewillrunoutoflocks.
OracleDatabase10g:Administration WorkshopI9206
IntegrityConstraintsandDML AllintegrityconstraintsareenforcedwheneverDMLstatementsareexecuted. FOREIGN KEY columns INSERT andUPDATE:Thevaluemustexistintheparenttable. DELETE:Arowintheparenttablethathasatleastonerowstillreferringtoit cannotbedeleted. NOT NULL columns INSERT:Cannotinsertwithoutavalue UPDATE:CannotmodifythevaluetoNULL UNIQUE keycolumns: INSERT andUPDATE:Cannothavethesamevalueasanyothercolumninthe table,exceptfornull.Eachnullisconsideredunique,soallrowscouldhaveanull valueinacolumnwithaUNIQUE keyconstraint. PRIMARY KEY columns: ApplytherulesforUNIQUE keyandNOT NULL columns. CHECK columns: INSERT andUPDATE:Valuesmustmeettheconditionoftheconstraint.
OracleDatabase10g:Administration WorkshopI9207
DataPumpExport OraclesDataPumputilityenableshighspeedtransferofdatafromonedatabaseto another.Forexample,youmaywanttoexportatableanditsassociatedindexesfromone databaseandimportitintoanotherdatabase.FormoreinformationaboutDataPump seetheOracleDatabaseUtilitiesGuide. OnthemaintenancepageclickExporttoFilestouseDataPumptowritedataouttoa file. 1.Onthefirstpage,youselectwhatyouwanttoexport,andenterinthehost logincredentialsintheUsernameandPasswordfields: Database:Thisexportstheentiredatabase, database andisalsocalledafullexport. export Thefollowingsystemschemasarenotexportedaspartofafullexport becausethemetadatatheycontainisexportedaspartofotherobjectsin thedumpfileset:SYS,ORDSYS,ORDPLUGINS,CTXSYS,MDSYS, LBACSYS,andXDB.Thismoderequiresthatyouhavethe EXP_FULL_DATABASE role.
OracleDatabase10g:Administration WorkshopI9208
DataPumpExport(continued) Schemas:Thisexportsallobjectsofoneormoreschemas.Ifyoudonot havetheEXP_FULL_DATABASE role,thenyoucanspecifyonlyyour ownschema.Crossschemareferencesarenotexportedunlessthe referencedschemaisalsospecifiedinthelistofschemastobeexported. Tables:Intablemode,onlyaspecifiedsetoftables,partitions,andtheir dependentobjectsareunloaded.Youmusthavethe EXP_FULL_DATABASE roletospecifytablesthatarenotinyourown schema,andonlyoneschemacanbespecified.Notethattypedefinitions forcolumnsarenotexportedintablemode.Itisexpectedthatthetype d fi iti already definitions l d exist i tin i the th target t ti instance t at timport i ttime. ti Also, Al asin i schemaexports,crossschemareferencesarenotexported. 2.IfyouselectSchemasorTablesfortheexporttype,thenextpagewillallow youtoselectthesetofSchemasorTablesthatyouwanttoexport.ClickAddto selecttheSchemasorTablesyouwanttoexport. 3.TheOptionspageisthenextstep,ifyouselectedaDatabaseexportyouwill godirectly g ytothisp page g afterselecting gthetype yp ofexport. p TheMaximumNumber ofThreadsinExportJobisthedegreeofparallelismtobeused.Hereyoucansee andestimateofhowbigtheexportwillbe,selectblocksforaquickestimate,and statisticsforamorepreciseestimate.ClickEstimateDiskSpaceNowtoseethe results.Youalsocanspecifyinformationabouttheoptionallogfilehere.Click ShowAdvancedOptionsforthefollowing: Content:Youcanexportjustthemetadataorthedata,orboth.Youcan alsosetupaconditiontofilteroutbyobjectname. name Flashback:Getaconsistentexporttoaparticulartime. Query:GetonlydatathatmatchesaWHERE clausethatyouprovide. 4.ThenextpageisFiles.YouusetheFilespagetospecifythedirectorynameand filename,andthemaximumsizefortheexportfiles.The%Uisasubstitution variablethatbeginswith01forthefirstfileandthengoesto02,03,andsoon. Enoughdumpfilesarecreatedtoallowallprocessesspecifiedbythecurrent settingofthePARALLEL parametertobeactive.Forexample,ifexpa%U, expb%U,andexpc%U wereallspecifiedforajobhavingaparallelismof6,the initialdumpfilescreatedwouldbeexpa01.dmp,expb01.dmp, expc01.dmp,expa02.dmp,expb02.dmp,andexpc02.dmp. 5.ThenextpageistheSchedule.YouusetheSchedulepagetoschedulethe exportjob. 6 ThelastpageisReview. 6. Review YouusetheReviewpagetodisplaythePL/SQLcode fortheexportcommandgeneratedbytheselectionsyoumadeintheprevious pagesofthewizard.Youcannotchangethecodegenerated.Youcancopyoutfor creationofascriptfileifneeded.ClickSubmitJobtobegintheexportprocess. Afterthejobissubmitted,clickViewJobtomonitorthejobprogress.
OracleDatabase10g:Administration WorkshopI9209
DataPumpImport UseDataPumpImporttoloaddataextractedbyDataPumpExport.OntheMaintenance pageclickImportfromFilestouseDataPumpImporttoreadfileswrittenbyDataPump Exportbackintoadatabase. 1.Files:UsetheFilespagetodesignatethepathandnameoftheimportfileson thedatabaseserver.Thenyoumustselectoneofthreepossibleimportchoices whethertoimportentirefiles,specificschemas,orspecifictables.Youcanalso choosetogeneratealogfileandthenentercredentialsinthehostUsernameand HostPasswordfields. 2 SelectObjects:Thispageisdisplayedonlywhenyouchoosetheoptiononthe 2. Filespagetoselectspecificobjectstoimport.Usethispagetoselecttheusers youwanttoimportfromtheAvailableUserslistandmovethemtotheSelected Userslist.
OracleDatabase10g:Administration WorkshopI9210
DataPumpImport(continued) 3.ReMapping:Thispageisdisplayedonlyifyoupreviouslyselectedobjectsin theSelectObjectspage.Usethispagetodesignatewhethertoimporteachusers dataintothesameuser users sschema,ortoimportintodifferentuser users sschemaas designatedintheSourceUserandDestinationUserfields. 4.Options:UsetheOptionspagetosetoptionsfordatafilereuse,object creationerror,andunusableindexes. 5.Schedule:UsetheSchedulepagetoscheduletheimportprocedureasajobin theJobsystem. 6.Review:UsetheReviewpagetodisplaythePL/SQLcodefortheimport command dgenerated t dby b the th selections l ti youmade d in i the th previous i pagesof fthe th wizard.YoucaneditthePL/SQLcodemanuallyorclickImporttobegintheimport process. Afterthejobissubmitted,clickViewJobtomonitorthejobprogress.
OracleDatabase10g:Administration WorkshopI9211
DIRECTORY Objects BecauseDataPumpisserverbased(ratherthanclientbased),dumpfiles,logfiles,and SQLfilesareaccessedrelativetoserverbaseddirectorypaths.DataPumprequiresthat youspecifydirectorypathsasdirectoryobjects.Adirectoryobjectmapsanametoa directorypathonthefilesystem. UsetheCREATE DIRECTORY statementtocreateadirectoryobject,orclickCreate DirectoryObject.Adirectoryobjectspecifiesanaliasforadirectoryontheserversfile system.YoumusthaveCREATE ANY DIRECTORY systemprivilegestocreate directories. Whenyoucreateadirectory, directory youareautomaticallygrantedthereadandwriteobject privilegesonthedirectory,andyoucangranttheseprivilegestootherusersandroles. ToviewthedefinitionofdirectoryobjectusetheDBA_DIRECTORIES view. Note: Oracledoesnotverifythatthedirectoryyouspecifyactuallyexists.Therefore,take carethatyouspecifyavaliddirectoryinyouroperatingsystem.Inaddition,ifyour operatingsystemusescasesensitivepathnames,besureyouspecifythedirectoryinthe correctformat.(However,youneednotincludeatrailingslashattheendofthepath name).Rememberthattheoperatingsystemwillcontrolsecurityforfilesinthedirectory.
OracleDatabase10g:Administration WorkshopI9212
SQL*Loader SQL*LoaderloadsdatafromexternalfilesintotablesofanOracledatabase.Ithasa powerfuldataparsingenginethatputslittlelimitationontheformatofthedatainthe datafile.ThefilesusedbySQL*Loaderareasfollows: InputDataFiles: SQL*Loaderreadsdatafromoneormorefiles(oroperatingsystem equivalentsoffiles)specifiedinthecontrolfile.FromSQL*Loader'sperspective,thedata inthedatafileisorganizedasrecords.Aparticulardatafilecanbeinfixedrecordformat, variablerecordformat,orstreamrecordformat.Therecordformatcanbespecifiedinthe controlfilewiththeINFILE parameter.Ifnorecordformatisspecified,thedefaultis streamrecordformat format. ControlFile: ThecontrolfileisatextfilewritteninalanguagethatSQL*Loader understands.ThecontrolfiletellsSQL*Loaderwheretofindthedata,howtoparseand interpretthedata,wheretoinsertthedata,andmore.Althoughnotpreciselydefined,a controlfilecanbesaidtohavethreesections. Thefirstsectioncontainssessionwideinformation,forexample: Globaloptionssuchasbindsize,rows,recordstoskip,andsoon INFILE clausestospecifywheretheinputdataislocated Datatobeloaded
OracleDatabase10g:Administration WorkshopI9213
SQL*Loader(continued) ThesecondsectionconsistsofoneormoreINTO TABLE blocks.Eachofthese blockscontainsinformationaboutthetableintowhichthedataistobeloaded, suchasthetablenameandthecolumnsofthetable. Thethirdsectionisoptionaland,ifpresent,containsinputdata. LogFile: WhenSQL*Loaderbeginsexecution,itcreatesalogfile.Ifitcannotcreatealog file,executionterminates.Thelogfilecontainsadetailedsummaryoftheload,including adescriptionofanyerrorsthatoccurredduringtheload. BadFile: Thebadfilecontainsrecordsthatwererejected,eitherbySQL*Loaderorbythe Oracledatabase.DatafilerecordsarerejectedbySQL*Loaderwhentheinputformatis i lid Aft invalid. Afterad data t file fil record dis i accepted t dfor f processing i by b SQL*Loader, SQL*L d itis i sent t t tothe th Oracledatabaseforinsertionintoatableasarow.IftheOracledatabasedeterminesthat therowisvalid,thentherowisinsertedintothetable.Iftherowisdeterminedtobe invalid,thentherecordisrejectedandSQL*Loaderputsitinthebadfile. DiscardFile: Thisfileiscreatedonlywhenitisneeded,andonlyifyouhavespecifiedthat adiscardfileshouldbeenabled.Thediscardfilecontainsrecordsthatwerefilteredoutof theloadbecausethey ydidnotmatchany yrecordselectioncriteriaspecified p inthecontrol file. FormoreinformationonSQL*LoaderrefertotheOracleDatabaseUtilities documentation.
OracleDatabase10g:Administration WorkshopI9214
OracleDatabase10g:Administration WorkshopI9215
TheSQL*LoaderControlFile(continued) TheexamplebelowillustratesatypicalSQL*Loadercontrolfile. 1 -- This is a sample control file 2 LOAD DATA 3 INFILE SAMPLE.DAT 4 BADFILE sample.bad 5 DISCARDFILE sample.dsc 6 APPEND 7 INTO TABLE emp 8 WHEN (57) = . 9 TRAILING NULLCOLS 10 (hiredate SYSDATE, deptno POSITION(1:2) INTEGER EXTERNAL(3) NULLIF deptno=BLANKS, job POSITION(7:14) CHAR TERMINATED BY WHITESPACE NULLIF job=BLANKS job BLANKS "UPPER(:job)", mgr POSITION(28:31) INTEGER EXTERNAL TERMINATED BY WHITESPACE, NULLIF mgr=BLANKS, ename POSITION(34:41) CHAR TERMINATED BY WHITESPACE "UPPER(:ename)", empno POSITION(45) INTEGER EXTERNAL TERMINATED BY WHITESPACE, sal POSITION(51) CHAR TERMINATED BY WHITESPACE "TO_NUMBER(:sal,$99,999.99)", comm INTEGER EXTERNAL ENCLOSED BY ( AND % ":comm * 100" ) Samplecontrolfileexplanation,bylinenumbers: 1. Commentscanappearanywhereinthecommandsectionofthe file,buttheyshouldnotappearwithinthedata.Precedeanycommentwithtwo hyphens.Alltexttotherightofthedoublehyphenisignored,untiltheendofthe line. line 2. TheLOAD DATA statementtellsSQL*Loaderthatthisisthe beginningofanewdataload.Ifyouarecontinuingaloadthatwasbeen interruptedinprogress,thenusetheCONTINUE LOAD DATA statement. 3. TheINFILE keywordspecifiesthenameofadatafilecontaining datathatyouwanttoload.
OracleDatabase10g:Administration WorkshopI9216
TheSQL*LoaderControlFile(continued) 4. TheBADFILE keywordspecifiesthenameofafileintowhich rejectedrecordsareplaced. 5 5. TheDISCARDFILE keywordspecifiesthenameofafileinto whichdiscardedrecordsareplaced. 6. TheAPPEND keywordisoneoftheoptionsyoucanusewhen loadingdataintoatablethatisnotempty.Toloaddataintoatablethatisempty, youusetheINSERT keyword. 7. TheINTO TABLE keywordenablesyoutoidentifytables,fields, anddatatypes.Itdefinestherelationshipbetweenrecordsinthedatafileand tablesinthedatabase. 8. TheWHEN clausespecifiesoneormorefieldconditionsthateach recordmustmatchbeforeSQL*Loaderwillloadthedata.Inthisexample SQL*Loaderwillonlyloadtherecordifthe57th characterisadecimalpoint.That decimalpointdelimitsdollarsandcentsinthefieldandcausesrecordstobe rejectedifSAL hasnovalue. 9 9. TheTRAILING NULLCOLS clausetellsSQL SQL*Loader Loadertotreatany relativelypositionedcolumnsthatarenotpresentintherecordasnullcolumns. 10. Theremainderofthecontrolfilecontainsthefieldlist,which providesinformationaboutcolumnformatsinthetablethatisbeingloaded.
OracleDatabase10g:Administration WorkshopI9217
ControlFileSyntaxConsiderations Thesyntaxisfreeformat.(Statementscanextendovermultiplelines.) Itiscaseinsensitive;however,stringsenclosedinsingleordoublequotation marksaretakenliterally,includingcase. Incontrolfilesyntax,commentsextendfromthetwohyphens()thatmarkthe beginningofthecommenttotheendoftheline.Theoptionalthirdsectionofthe controlfileisinterpretedasdataratherthanascontrolfilesyntax;consequently, commentsinthissectionarenotsupported. TheCONSTANT keywordhasspecialmeaningtoSQL*Loaderandistherefore reserved Toavoidpotentialconflicts, reserved. conflicts donotusethewordCONSTANT asaname foranytablesorcolumns.
OracleDatabase10g:Administration WorkshopI9218
InputDataandDataFiles FixedRecordFormat Afileisinfixedrecordformatwhenallrecordsinadatafilearethesamebyte y length. g Althoughthisformatistheleastflexible,itresultsinbetterperformancethanvariableor streamformat.Fixedrecordformatisalsosimpletospecify.Forexample: INFILE <datafile_name> "fix n" ThisexamplespecifiesthatSQL*Loadershouldinterprettheparticulardatafileasbeing infixedrecordformatwhereeveryrecordisn byteslong. Thefollowingexampleshowsacontrolfilethatspecifiesafixedrecordformatdatafile. Thedatafilecontainsfour fo rph physical sicalrecords records.Thefirstrecordis[0001, [0001 abcd] b d], which hichis exactlyninebyteslong(usingasinglebytecharacterset)andthecarriagereturnisthe tenthbyte. load data infile example.dat "fix 10" into table example e ds te terminated ated by , , fields (col1, col2) example.dat:
OracleDatabase10g:Administration WorkshopI9219
InputDataandDataFiles(continued) 0001,abcd 0002,fghi 0003,klmn VariableRecordFormat Afileisinvariablerecordformatwhenthelengthofeachrecordinacharacterfieldis includedatthebeginningofeachrecordinthedatafile.Thisformatprovidessomeadded flexibilityoverthefixedrecordformatandaperformanceadvantageoverthestream recordformat.Forexample,youcanspecifyadatafilethatistobeinterpretedasbeingin variablerecordformatasfollows: INFILE "datafile_name d t fil " "var n" Inthisexample,n specifiesthenumberofbytesintherecordlengthfield.Ifn isnot specified,SQL*Loaderassumesalengthof5.Specifyingn largerthan40resultsinan error.ThefollowingexampleshowsacontrolfilespecificationthattellsSQL*Loaderto lookfordataintheexample.dat datafileandtoexpectvariablerecordformatwhere therecordlengthfieldsare3byteslong.Theexample.dat datafileconsistsofthree physical p y records.Thefirstisspecified p tobe009( (thatis, ,nine) )bytes y long, g,thesecondis 010byteslong(includingaonecharacternewline),andthethirdis012byteslong.This examplealsoassumesasinglebytecharactersetforthedatafile. load data infile example.dat "var 3 into table example fields terminated by , optionally enclosed by " (col1 char(5),col2 char(7)) example.dat: 009hello,cd, 010world,im, 012my,name is, StreamRecordFormat Afileisinstreamrecordformatwhentherecordsarenotspecifiedbysize;instead SQL*Loaderformsrecordsbyscanningfortherecordterminator.Streamrecordformatis themostflexibleformat,buttherecanbeanegativeeffectonperformance.The specificationofadatafilethatistobeinterpretedasbeinginstreamrecordformatlooks similartothefollowing: INFILE <datafile_name> ["str terminator_string"] The ete terminator ato _st string g is sspec specified edase either t e c char a st string g o orXhex e st string g where: char_string isastringofcharactersenclosedinsingleordoublequotation marks Xhex_string isabytestringinhexadecimalformat
OracleDatabase10g:Administration WorkshopI9220
InputDataandDataFiles(continued) Whentheterminator_string containsspecial(nonprintable)characters,itshould bespecifiedasaXhex_string.However,somenonprintablecharacterscanbe specifiedas(char char string) byusingabackslash.Forexample: \n linefeed(newline) \t horizontaltab \f formfeed \v verticaltab \r carriagereturn IfthecharactersetspecifiedwiththeNLS_LANG parameterforyoursessionisdifferent f from the th character h t set tof fth thed data t fil file,character h t strings t i areconverted t dto t the th character h t set t ofthedatafile. Hexadecimalstringsareassumedtobeinthecharactersetofthedatafile,sono conversionisperformed.Ifnoterminator_string isspecified,itdefaultstothe newline(endofline)character(linefeedinUNIXbasedplatforms,carriagereturn followedbyalinefeedonMicrosoftplatforms,andsoon).Thenewlinecharacteris connectedtothecharactersetofthedatafile. Thefollowingexample illustratesloadingdatainstreamrecordformatwherethe terminatorstringisspecifiedusingacharacterstring,|\n.Theuseofthebackslash characterallowsthecharacterstringtospecifythenonprintablelinefeedcharacter. load data infile example.dat "str |\n into table example fields terminated by , optionally enclosed by " (col1 char(5), col2 char(7)) example.dat: hello,world,| james,bond,|
OracleDatabase10g:Administration WorkshopI9221
LoadingMethods SQL*Loaderprovidestwomethodsforloadingdata: Conventionalpath Directpath ConventionalPathLoad ConventionalpathloadbuildsanarrayofrowstobeinsertedandusestheSQLINSERT statementtoloadthedata.Duringconventionalpathloads,inputrecordsareparsed basedonfieldspecifications,andanarrayofrecordsisbuiltandinsertedintothetable specifiedinthecontrolfile.Recordsthatdonotconformtothefieldspecificationsare rejectedandthoserecordsthatdonotsatisfytheselectioncriteriaarediscarded discarded. Conventionalpathloadscanbeusedtoloaddataintoboththeclusteredandunclustered tables.Redogenerationiscontrolledbytheloggingattributeforthetablethatisbeing loaded.
OracleDatabase10g:Administration WorkshopI9222
LoadingMethods(continued) DirectPathLoad Adirectpathloadbuildsblocksofdatainmemoryandsavestheseblocksdirectlyintothe extentsallocatedforthetablebeingloaded.Onlineredologfileentriesarenotgenerated unlessthedatabaseisinARCHIVELOG mode.Directpathloadsusethefield specificationstobuildwholeOracleblocksofdata,andwritetheblocksdirectlytoOracle datafilesabovethehighwatermark.Thehighwatermarkisthehighestpointtowhich datahasbeenwrittenintothetablesofar.Directpathloadbypassesthedatabasebuffer cacheandaccessestheSGAonlyforextentmanagementandadjustmentofthehigh watermark.
OracleDatabase10g:Administration WorkshopI9223
ComparingDirectandConventionalPathLoads MethodofSavingData ConventionalpathloadsuseSQLprocessingandadatabaseCOMMIT forsavingdata.The insertionofanarrayofrecordsisfollowedbyacommitoperation.Eachdataloadmight involveseveraltransactions. Directpathloadsusedatasaves towriteblocksofdatatoOracledatafiles.Thefollowing featuresdifferentiateadatasavefromaCOMMIT: Duringadatasave,onlyfulldatabaseblocksarewrittentothedatabase. Theblocksarewrittenafterthehighwatermarkofthetable. Afteradatasave, save thehighwatermarkismoved moved. Internalresourcesarenotreleasedafteradatasave. Adatasavedoesnotendthetransaction. Indexesarenotupdatedateachdatasave.
OracleDatabase10g:Administration WorkshopI9224
ComparingDirectandConventionalPathLoads(continued) LoggingChanges ConventionalpathloadinggeneratesredoentriessimilartoanyDMLstatement.When usingadirectpathload,redoentriesarenotgeneratedif: ThedatabaseisinNOARCHIVELOG mode ThedatabaseisinARCHIVELOG mode,butloggingisdisabled.Loggingcanbe disabledbysettingtheNOLOGGING attributeforthetableorbyusingthe UNRECOVERABLE clauseinthecontrolfile. EnforcingConstraints Duringaconventionalpathload,allenabledconstraintsareenforcedinthesameway th tthey that th areduring d i anyDMLoperation. ti Duringdirectpathloads,theconstraintsarehandledasfollows: NOT NULL constraintsarecheckedwhenarraysarebuilt. FOREIGN KEY andCHECK constraintsaredisabled,andcanbeenabledatthe endoftherunbyusingtheappropriatecommandsinthecontrolfile.FOREIGN KEY constraintsaredisabledbecausetheyreferenceotherrowsortables,and CHECK constraintsaredisabledbecausethey ymay yuseSQLfunctions.Ifonly ya smallnumberofrowsaretobeinsertedintoalargetable,useconventionalloads. PRIMARY KEY andUNIQUE constraintsarecheckedduringandattheendof therun,andmaybedisablediftheyareviolated. FiringINSERT Triggers WHILE INSERT triggersarefiredduringconventionalloads;theyaredisabledbeforea directpathloadandreenabledattheendoftherun.Theymayremaindisabledifa referencedobjectisnotaccessibleattheendoftherun. run Considerusingconventional pathloadstoloaddataintotableswithINSERT triggers. LoadingintoClusteredTables Directloadscannotbeusedtoloadrowsintoclusteredtables.Clusteredtablescanbe loadedusingconventionalpathloadsonly. Locking Whileadirectpathloadisinprogress,othertransactionscannotmakechangestothe tablesthatarebeingloaded.Theonlyexceptiontothisruleiswhenseveralparalleldirect loadsessionsareusedconcurrently.
OracleDatabase10g:Administration WorkshopI9225
LoadingDatawithSQL*Loader UsetheLoadDatafromFileWizardtoloaddatafromanonOracledatabaseintoan Oracledatabase.Todisplaythewizard,selectLoadDatafromFileontheUtilitiessection oftheDatabasehomepageMaintenancesubtab. Youcanloaddataasfollows: 1. LogintoEnterpriseManagerasSYS oranotheruserwith administratorprivileges. 2. ClickLoadDatafromFileunderUtilitiesontheMaintenancepage toinvokeasixsteploadingwizard. 3 3. Enterthefullpathofyourcontrolfileonthedatabaseserver machineontheLoadData:ControlFilepage.Alsoentertheusernameand passwordforthehostmachine.ClickNext. 4. SelectProvidethefullpathandnameonthedatabaseserver machineontheLoadData:DataFilepageandenterthepath.ClickNext. 5.ThedefaultisConventionalPathfortheloadingmethodontheLoadData: LoadMethodpage.YoumaychooseDirectPathifneeded.
OracleDatabase10g:Administration WorkshopI9226
LoadingDatawithSQL*Loader(continued) 6. SelectGeneratelogfilewherelogginginformationistobestored underOptionalFilesontheLoadData:Optionspage.Youcanacceptthedefault filenameandpathorenteradifferentone.Notethatthispagegivesyouthe optionoflimitingthenumberofrowsloaded.ClickNext 7. EnteraJobNameandDescriptionontheLoadData:Schedule page.SelectImmediatelytorunthejobnow.ClickNext. 8. TheLoadData:Reviewpageallowsyoutoreviewyourfilenames andloadingmethods.Ifyouwanttochangesomething,youcanclickBack. Otherwise,clickSubmitJobtostarttheloading. 9 9. Th Status The St t pageappearswith iththe th Load L dData D t Submit S b itS Successful f l message.ClickViewJobtoviewthejobsummary.TheSummarypageshould indicatethatthejobhassucceeded.Youcanviewthelogfilebyclickingyourjob undertheLogsheadingorbyviewingthelogfiledirectly. 10.YoucanconfirmtheloadeddatabynavigatingtotheTablespage,selecting thetable,andchoosingViewDataastheaction.
OracleDatabase10g:Administration WorkshopI9227
OracleDatabase10g:Administration WorkshopI9228
OracleDatabase10g:Administration WorkshopI9229
Practice9:ManagingData Background:Youneedtocreateadditionaltablesforthenewinventoryapplicationand loaddataintoyourexistingtables. Tasks: UseDataPumptoexportdatafromthedatabase. UseDataPumptoimportdataintothedatabase. UseDataPumptomoveobjectsanddatabetweenschemas. UseSQLLoadertoloaddatafromatextfileintothedatabase. 1.ExporttheHRschematoafilenamedhrexport.dmp.Allthefilesforthe exportneedtogointothehomedirectoryoftheoperatingsystemuser oracle. 2.ImportEMPLOYEES,DEPARTMENTSandLOCATIONStablesintoINVENTORY schemaandtheINVENTORYtablespace usingthehrexport.dmp youcreatedin step1. 3.UseDatabaseControltoverifythatyouhavesuccessfullycopieddatafromthe HRschematotheINVENTORYschemausingexport/import. export/import 4.UseSQLLoadertoloaddatafromtextfilesintotheproduct_master and product_on_hand tables. a)Usethecontrolfile/home/oracle/labs/lab09_04_a.ctl toloaddatafrom thetextfile/home/oracle/labs/lab09_04_a.dat intothe product_master table. b)Usethecontrolfile/home/oracle/labs/lab09_04_f.ctl toloaddatafrom the h textfile f l /home/oracle/labs/lab09_04_f.dat / / / / intothe h product_on_hand table.
OracleDatabase10g:Administration WorkshopI9230
PL/SQL PL/SQLisanOracleproprietaryfourthgenerationprogramminglanguagethat providesproceduralextensionstotheSQLlanguage.PL/SQLprovidesacommon programmingenvironmentforOracledatabasesandapplicationsregardlessofthe operatingsystemorhardwareplatform. WithPL/SQL,youcanmanipulatedatawithSQLstatementsandcontrolprogram flowwithproceduralconstructssuchasIFTHEN,CASE,andLOOP.Youcanalso declareconstantsandvariables, variables defineproceduresandfunctions, functions usecollections andobjecttypes,andtrapruntimeerrors.PL/SQLprogramcanalsocallprograms writteninotherlanguagessuchasC,C++,andJava. Becauseitrunsinsidethedatabase,PL/SQLcodeisveryefficientfordataintensive operations,andminimizesnetworktrafficinapplications. FormoredetailsonproceduralconstructsandusesofPL/SQL,refertoPL/SQL UsersGuideandReference documentation.
PL/SQLObjects Packages:Apackageisacollectionofprocedures,andfunctionsthatarelogically related.Thispartofapackageisalsocalledthespecification(orspec),andisthe interfacetoyourapplications;itdeclaresthetypes,variables,constants, exceptions,cursors,andsubprogramsavailableforuse. Packagebody:Thebodyfullydefinescursorsandsubprograms,andso implementsthespec.Thebodyholdsimplementationdetailsandprivate declarations,whicharehiddenfromyourapplication. Typebody:Acollectionofmethods(proceduresandfunctions)associatedwith userdefineddatatypes. types Formoreinformationonuserdefineddatatypes types,referto OracleDatabaseApplicationDevelopersGuide ObjectRelationalFeatures Procedures:AprocedureisaPL/SQLblockthatperformsaspecificaction. Functions:AfunctionisaPL/SQLblockthatreturnsasinglevaluebyusingthe RETURN PL/SQLcommand. Triggers:AtriggerisaPL/SQLblockthatisexecutedwhenaparticularevent happensinthedatabase.Theseeventscanbebasedonatable,suchaswhena rowisinsertedintothetable.Theycanalsobedatabaseevents,suchaswhena userlogsintothedatabase.
Functions PL/SQLfunctionsaretypicallyusedtocomputeavalue.Therearemanybuiltinfunctions suchasSYSDATE,SUM,AVG,andTO_DATE.Developersalsocreatetheirownfunctions whenwritingapplications.ThecodeforaPL/SQLfunctionmust containaRETURN statement.PL/SQLfunctionsareinvokedbyselectingfromthemasshowabove. Thecomputetax functionshownintheslideiscreatedwiththeSQLcommand: CREATEORREPLACEFUNCTIONcomputetax(salaryNUMBER) RETURNNUMBER AS BEGIN IFsalary<5000THEN RETURNsalary*.15; ELSE RETURNsalary*.33; ENDIF; END; /
Procedures PL/SQLproceduresperformaspecificaction.Theprocedureshownintheslideproduces thefollowingresults: SQL>SELECTsum(salary)FROMhr.employees; SUM(SALARY) 691400 SQL>callgiveraise(); Callcompleted. completed SQL>SELECTsum(salary)FROMhr.employees; SUM(SALARY) 725970 Likefunctions,procedurescanacceptinputvaluesandperformconditionalstatements suchasIFTHEN,CASE,andLOOP.
Packages Packagesaregroupingsoffunctionsandprocedures.Thereareperformanceand maintainabilityadvantagesingroupingfunctionsandproceduresintoasinglepackage. Eachpackageshouldbemadeupoftwoseparatelycompileddatabaseobjects: Packagespecification,sometimesknownasthepackageheader.Thisobjecthas anobjecttypeofPACKAGEandonlycontainsthedefinitionoftheprocedures functions,andvariablesforthepackage. Packagebody.ThisobjecthasanobjecttypeofPACKAGE BODY andcontains theactualcodeforthesubprogramsdefinedinthepackagespecification. Proceduresandfunctionscalledfromwithinapackagearecalledusingdotnotation: package_name.procedureorfunctionname Inthepackageshownabovethesubprogramsareexecutedasfollows: SQL>SELECTmoney.computetax(salary)FROMhr.employees WHEREemployee_id=107; SQL>EXECUTEmoney.giveraise;
PackageBody Packagebodies: Areseparatefromthepackagespecifications.Becauseofthis,thecodeofthe bodycanbechangedandrecompiled,andotherobjectsthataredependanton thespecificationarenotmarkedinvalid. Containthecodeforsubprogramsdefinedinthepackagespecification.Thisis wheretheworkisdone.Thespecificationshowshowtocallsubprogramswithin thepackage;thebodyisthecodesection. Cannotbecompiledunlessthepackagespecificationhasalreadybeencompiled. Youcancreateaspecificationwithoutabody, body butyoucannotcreateabody withoutaspecification. Maybewrappedtohidedetailsofthecode.Wrapisastandaloneprogramthat obfuscatesPL/SQLsourcecodesothatyoucandeliverPL/SQLapplications withoutexposingyoursourcecode.Formoreinformationontheuseofwrapsee thePL/SQLUsersGuideandReference.
PackageBody(continued) Thecodeforthemoneypackagebodyisasfollows: CREATEORREPLACEPACKAGEBODYmoneyAS FUNCTIONcomputetax(salaryNUMBER)RETURNNUMBERIS BEGIN IFsalary<5000THEN RETURNsalary*.15; ELSE RETURNsalary*.33; ENDIF; ENDcomputetax; PROCEDUREgiveraiseAS BEGIN EXECUTEIMMEDIATE'UPDATEhr.employees SET salary=salary*1.05'; ENDgiveraise; g ; ENDmoney; /
BuiltInPackages ThebuiltinPL/SQLpackagessuppliedwiththeOracleDatabase10g provideaccess toextendeddatabasefunctionalitysuchasadvancedqueuing,encryption,and heterogeneousservices.Theyalsoincludemanyadministrationandmaintenance utilities. Whichpackagesanadministratorusesdependsonthetypeofapplicationsthe databaseserves.Afewofthemorecommonadministrationandmaintenance packagesare: DBMS_STATS:Gather,view,andmodifyoptimizerstatistics DBMS_TTS:Validatetransportabletablespaces DBMS_WORKLOAD_REPOSITORY:ManagetheADDMrepository DBMS_SESSION:PL/SQLaccesstoALTER SESSION andSET ROLE statements DBMS_RLS:AdministertheVirtualPrivateDatabase DBMS_RESOURCE_MANAGER:Maintainresourcemanagerobjects DBMS_OBFUSCATION_TOOLKIT:Encrypt,decrypt,andcompute checksums DBMS_SCHEDULER:Schedulingfunctionsandproceduresthatarecallable fromanyPL/SQLprogram Fordetailsontheseandotherbuiltinpackages,seethePL/SQLPackagesandTypes Reference manual.
Triggers TriggersarePL/SQLcodeobjectsstoredinthedatabasethatautomaticallyrunorfire whensomethinghappens.OracleDatabase10g allowsmanyactionstoserveras triggeringevents,includinganinsertintoatable,auserloggingintothedatabase, someonetryingtodropatableorchangeauditsettings. Triggersmaycallotherproceduresorfunctions(anexperienceddeveloperusuallykeeps thetriggerscodeveryshortandplacesanythingthatrequireslengthycodeinaseparate package). DBAsusetriggerstoassistinvaluebasedauditing(discussedinalaterlesson),toenforce complexconstraints, constraints andtoautomatemanytasks. tasks Forexample, example the SECURE_EMPLOYEES triggerthatisshownabove,logsallDDLstatementstoaholding table. Therearemanydifferenteventsthatcanbeusedtofireatrigger.Mostcanfirethetrigger eitherbeforetheeventisallowedtooccurorafter(exceptionsarenotedinthefollowing table).FortheDMLtriggers(INSERT,UPDATE,DELETE),thetriggercanbedesignedto fireonceforthestatement,orwitheachrowthatismodified.
Triggers(continued) Thefollowingeventscanbeusedtofiretriggers:
INSERT STARTUP (AFTER) ALTER ASSOCIATE STATISTICS COMMENT DISASSOCIATE STATISTICS LOGON (AFTER) SUSPEND (AFTER)
PL/SQLConfigurationOptions AfewofthemoreimportantinitializationparameterscontrollingPL/SQLperformance are: PLSQL_CODE_TYPE:CompiledPL/SQLcanbestoredintwodifferentwaysas interpretedbytecodeorasnativemachinecode.Thedefault,interpreted bytecodeprovidesbetterdebuggingfeaturesfordevelopment.Nativemachine codeprovidesthebestruntimeperformance,uptotwiceasfastasinterpreted bytecode. PLSQL_DEBUG:AsettingofTRUE enablesadditionaldebuggingfeaturesthat arehelpfulinadevelopmentenvironmentandforcescodetobestoredas interpreted,regardlessofthePLSQL_CODE_TYPE setting.Thedefaultsettingof FALSE turnsoffextendeddebuggingfeatures. PLSQL_OPTIMIZE_LEVEL:Thedefaultsettingof1providesoptimumcompiler performance.Incaseswherecodechangesareinfrequentandapplicationsmake heavyuseofstoredPL/SQL,asettingof2providesbetterruntimeperformance butslightlydegradescompilerperformance. PLSQL_WARNINGS:Acceptstwoarguments.Thefirstenablesordisables warningmessagesfromthePL/SQLcompiler.ThesecondappliesthefirsttoALL warningmessages,orlimitsittoSEVERE,INFORMATIONAL,or PERFORMANCE messages.AproductionsettingofDISABLE:ALL providesthe bestperformance. Fordetailsontheseparameters,seetheOracleDatabaseReference manual.
DatabaseSecurity OracleDatabase10g providestheindustrysbestframeworkforasecuresystem, butforthatframeworktobeeffectivethedatabaseadministratorshouldfollow bestpracticesandcontinuallymonitordatabaseactivity. RestrictingAccesstoDataandServices Allusersshouldnothaveaccesstoalldata.Dependingonwhatisstoredinyour database,restrictedaccesscanbemandatedbybusinessrequirements,customer expectations andincreasinglybylegalrestrictions expectations, restrictions.Creditcardinformation, information health caredata,identityinformation,andmoremustbeprotectedfromunauthorized access.Oracleprovidesextremelyfinedgrainedauthorizationcontrolstolimit databaseaccess.Restrictingaccessshouldincludeapplyingtheprincipalofleast privilege.
DatabaseSecurity (continued) AuthenticatingUser toenforceaccesscontrolsonsensitivedata,thesystemmustfirstknowwhoistryingto accessthedata.Compromisedauthenticationcanrenderallothersecurityprecautions useless.Themostbasicformofuserauthenticationisbychallengingtheusertoprovide somethingtheyknowsuchasapassword.Ensuringthatpasswordsfollowsimplerules cangreatlyincreasethesecurityofyoursystem.Strongerauthenticationmethods includerequiringtheusertoprovidesomethingtheyhave,suchasatokenorPublicKey Infrastructure(PKI)certificate.Anevenstrongerformofauthenticationistoidentifythe userthroughauniquebiometriccharacteristicsuchasafingerprint,irisscan,bone structurepatterns,and dsoon.Oracle O l supportsadvanced d dauthentication h i i techniques h i such h astoken,biometric,andcertificatebasedidentificationthroughtheAdvanced SecurityOption.Useraccountsthatarenotinuseshouldbelockedtopreventattempts tocompromiseauthentication. MonitoringforSuspiciousActivity Evenauthorized,authenticateduserscansometimescompromiseyoursystem. Identifying y gunusualdatabaseactivity ysuchasanemployee p y whosuddenly ybegins g queryinglargeamountsofcreditcardinformation,researchresults,orothersensitive information,canbethefirststeptodetectinginformationtheft.Oracleprovidesarich setofauditingtoolstotrackuseractivityandidentifysuspicioustrends.
ApplythePrincipleofLeastPrivilege OracleDatabase10g databaseserverleadstheindustryinsecurity.However,to fullymaximizethesecurityfeaturesofferedbyOracleDatabase10ginanybusiness environment,itisimperativethatOracleDatabase10g itselfbewellprotectedand properlyconfigured. Properuseofembeddedsecurityfeaturesandadherencetobasicsecuritypractices willhelpprotectagainstdatabaserelatedthreatsandattacksandprovideamuch moresecureoperatingenvironmentfortheOracleDatabase10g. PracticethePrincipleofLeastPrivilege Theprincipleofleastprivilegemeansthatausershouldbegivenonlythose privilegesthatarerequiredtoefficientlycompleteatask.Thisreducesthechances thatusers,eitheraccidentallyormaliciously,canmodifyorviewdatathatthey shouldnothavetheprivilegetomodifyorview.
ProtecttheDataDictionary Nonadministratorsdonotneedaccesstothedatadictionary,butmaygainaccessif yougrantoneofthe* ANY TABLE systemprivilegessuchasSELECT ANY TABLE orUPDATE ANY TABLE.Thedatadictionarycontainsinformationthata malicioususercanleveragetopenetrateordamageyoursystem.Toexemptdata dictionarytablesfromthe* ANY TABLE privileges,setthe O7_DICTIONARY_ACCESSIBILITY initializationparametertoFALSE. Iftherearenonadministratoruserswhodo needaccesstothedatadictionary,you cangrantthataccessby: UsingstandardGRANT commandstoallowtheusertoseethespecificdata dictionaryobjectsrequired GrantingtheSELECT ANY DICTIONARY systemprivilegetogiveaccess totheentiredatadictionary InOracleDatabase10gandOracle9i Database,thedefaultvaluefor ,inOracle8iandearlier, , O7_DICTIONARY_ACCESSIBILITY isFALSE;however, itdefaultstoTRUE;thereforewitholderversionyoushouldmanuallysetitto FALSE toenabledatadictionaryprotection. Caution:IfthisparameterissettoTRUE,anyuserwiththeDROP ANY TABLE systemprivilegewillbeabletomaliciouslyoraccidentallydroppartsofthedata dictionary.
RevokeUnnecessaryPrivilegesfromPUBLIC BecauseanydatabaseusercanexerciseprivilegesthataregrantedtoPUBLIC, revokeunnecessaryprivilegesandrolesfromthedatabaseserverusergroup PUBLIC. SuchprivilegesincludeEXECUTE onseveralPL/SQLpackagesthatmaypermita minimallyprivilegedusertoaccessandexecutepackagesthatyoumaynotwant themtoaccess.ManyofthebuiltinDBMS_* andUTL_* packagesareinstalled withtheEXECUTE privilegegrantedtoPUBLIC.Followingtheprincipleofleast privilegeyoushouldusuallyrevokethesepermissionsforafewofthemore sensitivepackages,andthengrantindividualexecutepermissionstouserswho needthem.Restrictingaccesstopublicprivilegesaffectsall users.Youshouldretest relevantsystemcomponents.Ifrestrictingaccessisnotpractical,youmayalso choosetoauditaccessinstead. Themorepowerfulpackagesthatmaypotentiallybemisusedinclude: UTL_SMTP:Permitsarbitrarymailmessagestobesentusingthedatabase asanSMTPmailserver.GrantingthispackagetoPUBLIC maypermit unauthorizedexchangeofmailmessages. UTL_TCP:Permitsoutgoingnetworkconnectionstobeestablishedbythe databaseservertoanyreceivingorwaitingnetworkservice.Thus,arbitrary datacanbesentbetweenthedatabaseserverandanywaitingnetwork service.
RevokeUnnecessaryPrivilegesfromPUBLIC (continued) UTL_HTTP:AllowsthedatabaseservertorequestandretrievedataviaHTTP. GrantingthispackagetoPUBLIC maypermitdatatobesentviaHTMLformsto amaliciousWebsite. UTL_FILE:Ifconfiguredimproperly,allowstextlevelaccesstoanyfileonthe hostoperatingsystem.Evenwhenproperlyconfigured,thispackagedoesnot distinguishbetweenitscallingapplications,withtheresultthatoneapplication withaccesstoUTL_FILE maywritearbitrarydataintothesamelocationthat iswrittentobyanotherapplication. DBMS_OBFUSCATION_TOOLKIT:Encryptsdata.Generally,mostusersshould nothave h the h privilege i il toencryptdata d because b encrypted dd datai isnonrecoverable bl iftheencryptionkeysarenotsecurelystoredandmanaged. Thesepackagesareextremelyusefultoapplicationsthatneedthem,butrequireproper configurationtobeusedsecurely.Thus,unlessabsolutelynecessary,revokethemfrom PUBLIC andgrantthemonlytoindividualusersorroleswhenrequired. ListingObjectsExecutablebyPublic Usethefollowing gq query ytolisttheobjects j ownedby ySYS thathavetheEXECUTE privilegegrantedtoPUBLIC: SQL>SELECTtable_name 2FROMdba_tab_privs 3WHEREowner='SYS' 4ANDprivilege='EXECUTE' 5ANDgrantee='PUBLIC' grantee 'PUBLIC' 6/ TABLE_NAME AGGXMLIMP AGGXMLINPUTTYPE ... XMLTYPEEXTRA XMLTYPEPI 437rowsselected. SQL>
RestricttheOperatingSystemDirectoriesAccessiblebytheUser TheUTL_FILE_DIR configurationparameterdesignateswhichoperatingsystem directoriesPL/SQLcanreadfromandwriteto.Bydefault,nodirectoriescanbe accessed. Operatingsystemprivilegesstillapply.Directoriesthattheuserwhostartedthe databasecouldnotaccessarestillnotaccessibleregardlessofthe UTL_FILE_DIR setting. Tospecifymultipledirectories directories,listallrequireddirectoriesinsinglequotesasa commaseparatedlist(asshownabove).Thisisnotadynamicparametersothe instancemustberestartedforchangestotakeaffect.Remembernottouse environmentvariablesinthedirectorypath.Theinstancedoesnotchecktosee whetherthedirectoriesexist,soyoucanchangetheparameterandcreatethe directorieslater. BecauseallPL/SQLuserscanreadorwritetoallfilesspecifiedbythisparameter,all PL/SQLusersmustbetrustedwiththeinformationinthedirectoriesspecifiedby thisparameter. ThedirectorieslistedmustalsobeaccessiblebytheOracleinstance. Caution:NeversetUTL_FILE_DIR = *,becausethisenablesaccesstoall directoriesaccessiblebytheOracleinstance,includingthedatafileandredolog directories.
LimitUserswithAdministrativePrivileges Donotprovidedatabaseusersmoreprivilegesthannecessary.Toimplementleast privilege,restrictthefollowingtypesofprivileges: Grantsofsystemandobjectprivileges SYSprivilegedconnectionstothedatabase,suchasSYSDBA andSYSOPER OtherDBAtypeprivileges,suchasDROP ANY TABLE UsethequeryshownontheslidetolistallusersthathavetheDBA rolegrantedto them.NonadministratorsshouldnotbegrantedtheDBArole.Instead,determine theactualprivilegestheyneedandgrantonlythoseprivileges. ToseeuserswhohavebeengrantedSYSDBA orSYSOPER privileges(effectively grantingthemtheDBArole),usethefollowingquery: SQL>SELECT*FROMV$PWFILE_USERS; USERNAMESYSDBASYSOPER SYSTRUETRUE ThereisseldomreasonforanyuserotherthanSYS tohaveSYSDBA privileges.
ManageDefaultUserAccounts OracleDatabase10g installswithanumberofdefault,presetdatabaseserveruser accounts.TheseaccountsareintendedtostoredataandownPL/SQLorJavacode objects,nottopermitdatabaseconnections.WhentheDatabaseCreationAssistant (DBCA)isusedtocreateadatabaseitautomaticallylocksandexpiresalldefault databaseuseraccountsexceptforthefollowing: SYS SYSTEM DBSNMP SYSMAN Oraclesupportsscriptedcreationofcustomdatabases.Manyapplicationsexpect theirdatabasetobeconfiguredinacertainwayandautomatethatconfiguration throughtheuseofscripteddatabasecreation.Databasescreatedinthiswaymay notlockthedefaultaccounts.Also,manyapplicationscreateuseraccountsthat shouldbelocked. Validatethatunlockedaccountsarereallybeingusedfordatabaseconnections,and notsimplytostoredata.
ImplementStandardPasswordSecurityFeatures Oraclepasswordmanagementisimplementedwithuserprofiles. Profilescanprovidemanystandardsecurityfeaturesincluding: Accountlocking:Enablesautomaticlockingofaccountsforasetduration whenusersfailtologintothesysteminthespecifiednumberofattempts Passwordagingandexpiration:Enablesuserpasswordstohavealifetime, afterwhichtheyexpireandmustbechanged Passwordhistory:Checksthenewpasswordtoensurethatthepasswordis notreusedforaspecifiedamountoftimeoraspecifiednumberof passwordchanges Passwordcomplexityverification:Makesacomplexitycheckonthe passwordtoverifythatitmeetscertainrules.Thecheckshouldensurethe passwordiscomplexenoughtoprovideprotectionagainstintruderswho mighttrytobreakintothesystembyguessingthepassword. RememberthatwhenusersarecreatedtheyareassignedtheDEFAULTprofile unlessanotherprofileisimplicitlyspecified.
PasswordAccountLocking TheOracleserverautomaticallylocksanaccountaftertheuserfailstologinbefore theFAILED_LOGIN_ATTEMPTS valueisreached.Theaccountiseither automaticallyunlockedafteraspecifiedtimedeterminedby PASSWORD_LOCK_TIME oritmustbeunlockedbythedatabaseadministrator usingtheALTER USER command. ThedatabaseaccountcanbeexplicitlylockedwiththeALTER USER commandor byusingEnterpriseManager. Manager Whenthishappens happens,theaccountisnotautomatically unlockedafterPASSWORD_LOCK_TIME hasexpired,butmustbemanually unlockedbytheDBA. SQL>ALTERUSERhrACCOUNTLOCK; Useraltered. SQL>CONNECThr/hr ERROR:ORA28000:theaccountislocked Warning:YouarenolongerconnectedtoORACLE. SQL>CONNECT/assysdba Connected. SQL>ALTERUSERhrACCOUNTUNLOCK; Useraltered.
PasswordExpirationandAging ThedatabaseadministratorcanspecifyagraceperiodPASSWORD_GRACE_TIME, whichbeginsafterthefirstattempttologintothedatabaseafterpassword expiration.Awarningmessageisgeneratedeverytimetheusertriestologinuntil thegraceperiodisover.Ifauserdoesnotchangetheirpasswordwithinthegrace period,theiraccountislocked. Note: Iftheaccountisanapplicationaccount(notaccessedthroughSQL*Plus), verifythattheapplicationisabletohandlethechangepassworderrorbefore enablingpasswordexpiration.ManyDBAsassignaseparateprofiletoapplication useraccountsandmonitoringtools. Ausersaccountcanbemanuallyexpiredbysettingthepasswordtoexpired. SQL>ALTERUSERhrPASSWORDEXPIRE; Useraltered. SQL>CONNECThr/hr ERROR:ORA28001:thepasswordhasexpired Changingpasswordforhr Newpassword:******** Retypenewpassword:******** Passwordchanged
PasswordHistory Passwordhistorychecksensurethatausercannotreuseapasswordforaspecified timeinterval.Thesecheckscanbeimplementedusingoneofthefollowing: PASSWORD_REUSE_TIME:Specifiesthatausercannotreuseapassword foragivennumberofdays PASSWORD_REUSE_MAX:Specifiesthenumberofpasswordchanges requiredbeforethecurrentpasswordcanbereused. Thesetwoparametersaremutuallyexclusive, exclusive sowhenoneparameterissettoa valueotherthanUNLIMITED (orDEFAULT iftheDEFAULT profilehasthevalue settoUNLIMITED),theotherparametermustbesettoUNLIMITED.
PasswordVerification Beforeassigninganewpasswordtoauser,aPL/SQLfunctioncanbeinvokedto verifythevalidityofthepassword. TheOracleserverprovidesadefaultverificationroutinethatcanbeloadedby runningtheSQLscriptlocatedat $ORACLE_HOME/rdbms/admin/utlpwdmg.sql orthedatabase administratorcanwriteacustomPL/SQLfunctionthatmeetstheirownsecurity requirements. requirements Inadditiontotherestrictionslistedintheslide,custompasswordverification functionsmustusethefollowingspecificationtodeclareinputvariables: function_name(userid_parameter INVARCHAR2, password_parameter INVARCHAR2, old_password_parameter IN VARCHAR2) RETURNBOOLEAN Ifthepasswordfunctionraisesanexceptionorbecomesinvalid,anerrormessageis returnedandtheALTER USER orCREATE USER commandisterminated.
SuppliedPasswordVerificationFunction:VERIFY_FUNCTION TheOracleserverprovidesacomplexityverificationfunctionnamed VERIFY_FUNCTION.Thisfunctioniscreatedwiththescript $ORACLE_HOME/rdbms/admin/utlpwdmg.sql.Thepasswordverification functionmustbecreatedintheSYS schema. InadditiontocreatingtheVERIFY_FUNCTION,theutlpwdmg scriptalso changestheDEFAULT profilewiththefollowingALTER PROFILE command: ALTERPROFILEdefaultLIMIT PASSWORD_LIFE_TIME60 PASSWORD_GRACE_TIME10 PASSWORD_REUSE_TIME1800 PASSWORD_REUSE_MAXUNLIMITED FAILED_LOGIN_ATTEMPTS3 PASSWORD_LOCK_TIME1/1440 PASSWORD_VERIFY_FUNCTIONverify_function;
CreatingaPasswordProfile
Tocreateapasswordprofile,openEnterpriseManagerandnavigatetothe Administrationpage.SelectProfilesandclicktheCreatebutton. Commonvaluesforeachofthesettingscanbechosenfromalistofvalues(click theflashlighticontobrowse)oryoucanenteracustomvalue. Alltimeperiodsareexpressedindays,butcanbeexpressedasfractions.Thereare 1440minutesinaday, y,so5/1440 / isfiveminutes. EnterpriseManagercanalsobeusedtoeditexistingpasswordprofiles. DroppingaPasswordProfile Ifyoudropaprofile,allusersassignedthatprofilewillautomaticallybeassignedto thedefaultprofile.
AssigningUserstoaPasswordProfile Toassignausertoapasswordprofile: 1. OpenEnterpriseManagerandnavigatetotheAdministration page. 2. SelectUsers.Selecttheuseryouwishtoassigntoaprofile andclicktheEditbutton. 3. FromtheProfiledropdownlist,selecttheprofilethatyou wanttoapplytotheuser, user andclicktheApplybutton button. Rememberthatausercanhaveonlyoneprofileineffectatanygiventime.Ifusers havealreadyloggedinwhenyouchangetheirprofile,thechangedoesnottake effectuntiltheirnextlogin. NotethatuseraccountscanbealsobelockedorexpiredfromtheEditUserpage.
MonitoringforSuspiciousActivity OracleDatabase10g providesthreedifferenttypesofauditing.Theadministrator canauditallactionsthattakeplacewithinthedatabase.Itisimportantto rememberthatcapturingandstoringinformationaboutwhatishappeninginthe systemincreasestheamountofworkthesystemmustdo.Auditingshouldbe focusedsothatonlyeventsthatareofinterestarecaptured.Properlyfocused auditinghasminimalimpactonsystemperformance.Improperlyfocusedauditing cansignificantlyaffectperformance. performance Standarddatabaseauditingcapturesseveralpiecesofinformationaboutanaudited eventincludingthattheeventoccurred,whenitoccurred,theuserwhocausedthe auditedevent,andwhichclientmachinetheuserwasonwhentheevent happened. Usevaluebasedauditingtoauditchangestodata(inserts,updates,deletes).Value basedauditingextendsstandarddatabaseauditing,capturingnotonlythatthe auditedeventoccurred,buttheactualvaluesthatwereinserted,updated,or deleted.Valuebasedauditingisimplementedthroughdatabasetriggers. Usefinegrainedauditing(FGA)toauditSQLstatements.FGAextendsstandard databaseauditing,capturingtheactualSQLstatementthatwasissuedratherthan onlythattheactionoccurred.
StandardDatabaseAuditing Tousedatabaseauditingyoumustfirstsetthenondynamicparameter AUDIT_TRAIL topointtoastoragelocationforauditrecords.Thenormalsetting forthisparameterisDB,whichcausesauditrecordstobestoredinthe DBA_AUDIT_TRAIL table. Databaseauditingcancaptureinformationaboutloginevents,theexerciseof systemprivileges,andtheexerciseofobjectprivileges.Auditinformationcanbe focusedbytheusergeneratingtheauditeventorbythestatusoftheevent (successfulornot).Thefollowingauditcommandthatgeneratesinformationis probablynotrequiredbecauseitisnotwellfocused.Thisoptioncapturesany operationthataffectsanytable: SQL>AUDITTABLE; Auditsucceeded. Abetterexampleofanauditcommand(becauseitismorenarrowlyfocused)is: SQL>AUDITDELETEONhr.employeesWHENEVER SUCCESSFUL; Auditsucceeded.
SpecifyingAuditedOptions SQLstatementauditing:ThestatementshownintheslidewillauditanyDDL statementthataffectsatableincludingCREATE TABLE,DROP TABLE, TRUNCATE TABLE,andsoon.SQLStatementauditingcanbefocusedby usernameorbysuccess/failure. SQL>AUDITTABLEBYhrWHENEVERNOTSUCCESSFUL; Systemprivilegeauditingcanbeusedtoaudittheexerciseofanysystemprivilege (suchasDROP ANY TABLE). ) Itcanbefocusedbyusernameorsuccess/failure. success/failure By default,eachtimeanauditedsystemprivilegeisexercisedanauditrecordis generated.Youcanchoosetogroupthoserecordssothatonlyonerecordis generatedpersession(thatwayifauserupdates100,000recordsinatable belongingtoanotheruser,youonlygatheroneauditrecord).IftheBY SESSION clauseisnotspecified,thedefaultisBY ACCESS.ConsiderusingtheBY SESSION clausetolimittheperformanceandstorageimpactofsystemprivilege auditing. Objectprivilegeauditingcanbeusedtoauditactionsontables,views,procedures, sequences,directoriesanduserdefineddatatypes.Thistypeofauditingcanbe focusedbysuccess/failureandgroupedbysessionoraccess.Unlikesystemprivilege auditing,thedefaultgroupingisbysessionsoyoumustimplicitlyspecifyBY ACCESS ifyouwantaseparateaudittrailrecordgeneratedforeachaction.
SpecifyingAuditOptions(continued) TheAUDIT SESSION optionauditsthecreationofusersessions.Itcanbefocusedby usernameorbysuccess/failure.Thisoptionisuniquebecauseitgeneratesasingleaudit recordforeachsessioncreatedbyconnectionstoaninstance.Anauditrecordis insertedintotheaudittrailatconnecttimeandupdatedatdisconnecttime.Cumulative informationaboutasessionsuchasconnectiontime,disconnectiontime,logicaland physicalI/Osprocessed,andmoreisstoredinasingleauditrecordthatcorrespondsto thesession.InmanydatabasesitiscommontousetheAUDIT SESSION (nonfocused)command.InalmostalldatabasesyoushouldAUDIT SESSION WHENEVER NOT SUCCESSFUL becausethisallowsyoutodetectattemptstobreak i yourdatabase into d b Note: Oftenyourauditoptionsstartasnonfocusedbecauseyouarenotsurewhattype ofactivityyouarelookingfor.TheAUDIT ALL optionisaconvenientshortcuttoaudit abroadrangeofactivity.Ifusedwithobjectprivilegeauditing(asshownintheslide),it detects:
If the AUDIT ALL option is used with a username: SQL> AUDIT ALL BY hr; Th user will The ill h have all ll DDL statements t t t audited dit d for f the th following f ll i objects: bj t
Public Database Link Public Synonym Sequence Table User Synonym Tablespace View
ViewingAuditingOptions Toseewhichauditoptionshavebeenselected,usetheviewslistedabove. DBA_STMT_AUDIT_OPTS andDBA_PRIV_AUDIT_OPTS containonlyrecords ofstatementorprivilegeauditoptionsthathavebeenspecified. DBA_OBJ_AUDIT_OPTS containsonerecordperauditableobjectregardlessof whatobjectauditoptionshavebeenspecified.Theviewshowsacolumnforeach auditableoption.Forexample,INSERT auditoptionsareshownintheINS column AuditoptionsaredisplayedasSUCCESSFUL/NOT SUCCESSFUL with column. threepossiblevaluesforeachstatus: Notaudited S Collectauditrecordsbysession A Collectauditrecordsbyaccess SQL>SELECTobject_name,object_type,ins,upd FROMdba_obj_audit_optsWHEREobject_name= 'EMPLOYEES OBJECT_NAMEOBJECT_TYINSUPD EMPLOYEESTABLEA/S/
StandardDatabaseAuditing Aftertheadministratorhasenableddatabaseauditing(withtheAUDIT_TRAIL parameter)andspecifiedauditingoptions(withSQLstatementsasshowonthe previousfewpages),thedatabasebeginscollectingauditinformation. IfAUDIT_TRAIL issettoOS,theauditrecordswillbestoredintheoperating systemsauditsystem.InaWindowsenvironment,thisistheeventlog.InaUNIXor Linuxenvironment,auditrecordsarestoredinafile.Thelocationofthatfileis specifiedwithAUDIT_FILE_DEST AUDIT FILE DEST.AssumingthatAUDIT_TRAIL AUDIT TRAIL issettoDB, auditrecordsarestoredinatablethatispartoftheSYS schema. Maintainingtheaudittrailisanimportantadministrativetask.Dependingonthe focusoftheauditoptions,theaudittrailcangrowverylargeveryquickly.Ifnot properlymaintained,theaudittrailcanconsumesomuchspacethatitaffectsthe performanceofthesystem.
ValueBasedAuditing Databaseauditingrecordsthatinserts,updates,anddeleteshaveoccurredon auditedobjects,butdoesnotcapturetheactualvaluesthatwerechanged.Value basedauditingextendsdatabaseauditing,capturingtheactualvaluesthathave beenchanged.Valuebasedauditingleveragesdatabasetriggers(eventdriven PL/SQLconstructs). Whenauserinserts,updates,ordeletesdatafromatablewiththeappropriate triggerattached, attached thetriggerworksinthebackgroundtocopyauditinformationtoa tabledesignedtocontaintheauditinformation.Valuebasedauditingtendsto degradeperformancemorethanstandarddatabaseauditingbecausetheaudit triggercodemustbeexecutedeachtimetheinsert,update,ordeleteoperation occurs.Thedegreeofdegradationdependsontheefficiencyofthetriggercode. Valuebasedauditingshouldbeusedonlyinsituationswheretheinformation capturedbystandarddatabaseauditingisinsufficient.
ValueBasedAuditing(continued) Thekeytovaluebasedauditingistheaudittrigger.Atypicalaudittriggerisshow below. CREATE OR REPLACE TRIGGER system.hrsalary_audit system.hrsalary audit AFTER UPDATE OF salary ON hr.employees REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN IF :old.salary != :new.salary THEN INSERT INTO system.audit_employees t dit l VALUES (sys_context('userenv','os_user'), sysdate, sys_context('userenv','ip_address'), :new.employee_id ||' salary changed from '||:old.salary|| ' to '||:new.salary); || y) END IF; END; / Thistriggerfocusesauditingtocapturechangestothesalarycolumnofthe hr.employees table.Whenarowisupdatedthetriggerchecksthesalarycolumn.If theoldsalaryisnotequaltothenewsalary,thenthetriggerinsertsanauditrecordinto theaudit_employees audit employees table(createdviaaseparateoperationintheSYSTEM schema).Theauditrecordwillincludetheusername,IPaddressfromwhichthechange wasmade,primarykeyidentifyingwhichrecordwaschanged,andtheactualsalary valuesthatwerechanged. Databasetriggerscanalsobeusedtocaptureinformationaboutuserconnectionsin caseswherestandarddatabaseauditingdoesnotgathersufficientdata.Withlogon triggers,theadministratorcancapture: -IPaddressofthepersonloggingin -Thefirst48charactersoftheprogramnameusedtoconnecttotheinstance -Terminalnameusedtoconnecttotheinstance
FineGrainedAuditing(FGA) Databaseauditingrecordsthatanoperationhasoccurred,butdoesnotcapture informationaboutthestatementthatcausedtheoperation.Finegrainedauditing (FGA)extendsthatcapabilitytoallowsthecaptureofactualSQLstatementsthat queryormanipulatedata.FGAalsoallowsauditingtobemorenarrowlyfocused thanstandardorvaluebaseddatabaseauditing. FGAauditoptionscanbefocusedbyindividualcolumnswithinatableorview,and canevenbeconditionalsothatauditsarecapturedonlyifcertainadministrator definedspecificationsaremet. Unlikevaluebasedauditing,FGAdoesnotrequiretheuseofdatabasetriggersand hasaperformanceimpactsimilartostandarddatabaseauditing. TheadministratorusestheDBMS_FGA PL/SQL packagetocreateanauditpolicy onthetargettableorview.Ifanyoftherowsreturnedfromaqueryblockmatches theauditedcolumnandtheauditcondition,thenanauditeventcausesanaudit recordtobecreatedandstoredintheaudittrail.Optionally,theauditeventcan alsoexecuteaprocedure.FGAautomaticallyfocusesauditingatthestatementlevel soaSELECT statementthatreturnsthousandsofrowsgeneratesonlyoneaudit record.
FGAPolicy TheexampleintheslideshowsanFGApolicybeingcreatedwiththe DBMS_FGA.ADD_POLICY procedure.Theprocedureacceptsthefollowing arguments: PolicyName YouassigneachFGApolicyanamewhenyoucreateit.Theexampleintheslide namesthepolicyAUDIT_EMPS_SALARY,usingthefollowingargument: policy name=>'audit policy_name audit_emps_salary emps salary' AuditCondition TheauditconditionisaSQLpredicatethatdefineswhentheauditeventshouldfire. Intheexampleontheslide,allrowsinthesales departmentareaudited,using thefollowingconditionargument: audit_condition=>'department_id=10' StatementType Whichtypeofstatementsshouldbeaudited?ThechoicesareSELECT and(all ( one string)INSERT,UPDATE,DELETE.
FGAPolicy(continued) AuditColumn Theauditcolumndefinesthedatathatisbeingaudited.Anauditeventoccursonlyif thiscolumnisincludedintheSELECTstatement.Theexampleintheslideauditsthe SALARYcolumn,usingthefollowingargument: audit_column=>'salary' Thisargumentisoptional.Ifitisnotspecified,thenonlytheAUDIT_CONDITION argumentdetermineswhetheranauditeventoccurs. Object Theobjectisthetableorviewthatisbeingaudited.Itispassedastwoarguments: Th schema The h that h contains i the h object bj Thenameoftheobject Theexampleontheslideauditsthehr.employeestableusingthefollowingarguments: object_schema=>'hr' object_name=>'employees' Handler Anoptional p eventhandlerisaPL/SQL / Q procedure p thatdefinesany yadditionalactionsthat shouldbetakenduringauditing.Forexample,theeventhandlercouldsendanalert pagetotheadministrator.Ifitisnotdefined,thenanauditevententryisinsertedinto theaudittrail.Ifanauditeventhandlerisdefined,thentheauditentryisinsertedinto theaudittrailandtheauditeventhandlerisexecuted. TheauditevententryincludestheFGApolicythatcausedtheevent,theuserexecuting theSQLstatement,andtheSQLstatementanditsbindvariables. Theeventhandlerispassedastwoarguments: arguments TheschemathatcontainsthePL/SQLprogramunit ThenameofthePL/SQLprogramunit TheexampleontheslideexecutestheSECURE.LOG_EMPS_SALARYprocedureusingthe followingarguments: handler_schema=>'secure' handler_module=>'log_emps_salary' Status ThestatusindicateswhethertheFGApolicyisenabled.Intheexampleontheslide,the followingargumentenablesthepolicy: enable=>TRUE
TriggeringAuditEvents Ingeneral,finegrainedauditingpolicyisbasedoncolumnsauditedandsimple userdefinedSQLpredicates.Duringparsingwheneverpolicyconditionsaremetfor astatement,thestatementisaudited,andifthereisaneventhandler,itisalso fired. Theauditfunctionisexecutedasanautonomoustransaction.Eachauditpolicyis appliedindividually.Thatis,aslongastherowsbeingreturnedorchangedfitinto anyoftheauditconditiondefinedonthetable, table anauditrecordwillbegenerated, generated andtherewillbeonerecordgeneratedforeachpolicyperSQLstatement. Examples Thefirsttwoexamplesontheslidecauseanauditeventbecausetheyaccessthe salary columnandrowswiththedepartment_id = 10.Oracleserveris awarethatthesecondexampleaccessestherowsindepartment10,eventhough thedepartment_id isnotreferencedintheSQLstatementWHERE clause. Thelastexampledoesnotcauseanauditeventbecausethesalary columnisnot accessed.Ifthesalary columnhadnotbeenspecifiedastheAUDIT_COLUMN whenthepolicywascreated,thenthisSELECT statementwouldcauseanaudit event.
DBA_FGA_AUDIT_TRAIL Name TIMESTAMP DB_USER executing OS_USER theuserexecuting OBJECT SCHEMA OBJECT_SCHEMA OBJECT_NAME POLICY_NAME SCN SQL_TEXT auditevent SQL_BIND event,formattedas:#n(s):v: bindvariableinthestatement
Description Thedateandtimeofexecution Thedatabasenameoftheuser Theoperatingsystemnameof Theowneroftheauditedobject Thenameoftheauditedobject Thepolicynamethecausedtheauditevent TheSCNofthetransaction TheSQLstatementcausingthe Thebindvariableoftheaudit wheren isthenumberofthe
s isthebindvariablelength,v is thebindvariablevalue COMMENT$TEXT Acomment Note: Thisisapartiallistofcolumnsavailableindba_fga_audit_trail dba fga audit trail.For moreinformationrefertotheOracleDatabaseReference guide.
DBA_FGA_AUDIT_TRAIL (continued) SelectingfromtheFGAAuditTrail Thefollowingexampledisplaysthetwoauditrowscreatedbythevalidexamplesfrom thepreviouspage.Thesql_bind sql bind columninthesecondrowhasavalueof #1(4):1000,whichincludesthefollowingcomponents: #1 indicatesthatthisisthefirstbindvariableinthestatement. (4) Indicatesthatthebindvariablehasalengthof4. 1000 indicatesthatthebindvariablehasavalueof1000. Example Thisexampleissimilartotheoneontheslide,exceptitalsoincludesarowforapolicy without i h anaudit di eventhandler. h dl SQL> COL timestamp FORMAT A10 SQL> COL db_user FORMAT A7 SQL> COL policy_name FORMAT A20 SQL> COL sql_bind FORMAT A20 SQL> COL sql_text FORMAT A60 SQL> SQL> SELECT to_char(timestamp, 'YYMMDDHH24MI') 2 AS timestamp, 3 db_user, 4 policy_name, 5 sql_bind, 6 sql_text 7 FROM dba_fga_audit_trail; dba fga audit trail; TIMESTAMP DB_USER POLICY_NAME SQL_BIND ---------- ------- -------------------- ----------------SQL_TEXT --------------------------------------------------------0201221740 SYSTEM AUDIT_EMPS_SALARY #1(4):1000 SELECT count(*) FROM hr.employees WHERE department_id = 10 AND salary > :b1 0201221741 SYSTEM AUDIT_EMPS_SALARY AUDIT EMPS SALARY SELECT salary FROM hr.employees SQL>
FGAGuidelines AuditCondition WhencreatinganewFGApolicy,theauditconditiondefaultstonull,which meansallstatementswillbeaudited. PolicyNameError Policynamesmustbeuniquewithinthedatabase.Theyhavenoowner.Ifa duplicatenameisused,youreceivethefollowingerrorwhencreatingthepolicy: ORA28101:policyalreadyexists AuditedObjectErrors Theauditedtableorviewmustexistwhenyoucreatethepolicy.Ifitdoesnotyou receivethefollowingerror: ORA00942:tableorviewdoesnotexist
FGAGuidelines(continued) AuditConditionErrors Iftheauditconditionhasinvalidsyntax,thepolicyiscreatedwithoutanerror,butthe followingerrorisraisedwhentheauditedobjectisaccessed: ORA28112:failedtoexecutepolicyfunction Iftheauditconditionhasvalidsyntax,butisincorrect,thenthewrongrowsareaudited. AuditColumnErrors Iftheauditcolumndoesnotexistinthetable,thenthepolicyiscreated;however,no rowsareaudited,becausetheauditcolumnisneveraccessed. Iftheauditcolumnnameisvalid,butincorrect,thenthewrongrowsareaudited. E Event H Handler dl E Error Whenthepolicyreferencesanonexistentorinvalideventhandler,thepolicyiscreated; however,norowsarereturnedwhenanauditeventoccurs.
AuditingSYSDBA andSYSOPER Users SYSDBA andSYSOPER usershaveprivilegestostartandshutdownthedatabase. Becausetheymaymakechangeswhilethedatabaseisclosed,theaudittrailfor theseprivilegesmustbestoredoutsidethedatabase.Oraclecapturesloginevents bySYSDBA andSYSOPER usersautomatically,butdoesnotcaptureanything otherthantheloginunlessauditingisspecificallyenabled. EnableauditingofSYSDBA andSYSOPER usersbysettingtheinitialization parameter: audit_sys_operations=TRUE(the default is FALSE) IfSYS operationsareaudited,theaudit_file_dest initializationparameter controlswheretheauditrecordswillbestored.OnaWindowsplatform,theaudit traildefaultstotheWindowsEventLog.OnUNIXorLinuxplatforms,auditrecords arestoredin$ORACLE_HOME/rdbms/audit.
SecurityUpdates Oraclesecurityalertscontainabriefdescriptionofthevulnerability,anassessment oftheriskanddegreeofexposureassociatedwiththevulnerability,andapplicable workaroundsorpatches.Oraclealsoincludesanacknowledgementoftheindividual ororganizationthatnotifiedusofthevulnerability. SecurityalertsarepostedontheOracleTechnologyNetworkWebsiteandon OracleMetaLink (MetaLink).Althoughsecurityalertsarepubliclyacknowledgedfor anyoneinterestedinthem, them onlycustomerswithacurrentCustomerSupport Identification(CSI)numbercandownloadpatches. Oracleappreciatesyourcooperationinkeepingitsproductssecurethroughprompt, complete,andconfidentialnotificationofpotentialsecurityvulnerabilities.Ifyou discoverasecurityvulnerabilitywithanyOracleproduct,pleasenotifyusby submittingaservicerequestthroughMetaLinkorbyemailing [email protected].
Practice111Overview:DatabaseSecurity(Part1) Background Whileconductingusertrainingyoudiscoverthatsomeusersareusingverysimple passwords,andsuspectthatsomeonemaybetryingtoguessthepasswordsof privilegeduserssotheycangainaccesstosensitivedata.Configureyourdatabaseto preventtheuseofsimplepasswordsandtodetectattemptstoguesspasswords Tasks Preventtheuseofsimplepasswords Forceaccountstolockfor10minutesafterfourfailedloginattempts Exempttheapplicationserverloginfromforcedpasswordchanges Auditunsuccessfulattemptstoconnecttothedatabase 1.Preventtheuseofsimplepasswords a)Whatprofilesexistwithinthedatabase? b)UseEnterpriseManagertoseewhatpasswordrestrictionsare enforcedbythedefaultprofile? c)UsingSQL SQL*Plus Plus,connecttothedatabaseassysdba andrunthe utlpwdmg.sql scriptlocatedin$ORACLE_HOME/rdbms/admin SQL>connect/assysdba SQL>@?/rdbms/admin/utlpwdmg.sql Functioncreated. Profilealtered. d)UsingEnterpriseManager,viewthechangesmadetothedefault profile f l b bythe h utlpwdmg.sql script.Notethat: h - Passwords now expire every 60 days. - If a user doesnt change his or her password within 10 days of expiration, the account will be locked. - Passwords may not be reused within 1800 days. - After a user fails to provide the correct password within three consecutive login attempts the account will automatically lock for one minute. 2.Editthedefaultprofilesothatuserswhofailtologincorrectlyfourtimesin arowwillhavetheiraccountslockedfor10minutes.
Practice111Overview:DatabaseSecurity(Part1)(continued) 3.ExempttheHRuserfromforcedpasswordchanges. a)CreateanewprofilecalledHRPROFILEusingthedefaultprofileasa template. b)Editthenewprofiletomakepasswordexpirationunlimited. c)AssignuserHRtothenewprofile. d)IfyouweretodroptheHRPROFILEwhatwouldhappentotheHR user? 1. Nothing would happen to the HR user. The drop statement would fail b because the h HRPROFILE cannot be b dropped d d while hil a user is i assigned to it. 2. The HR user would also be dropped. 3. The HRPROFILE would be dropped and the HR user would be unable to log in until the administrator assigned a different profile. 4. The HR user would be automatically y assigned g the DEFAULT profile. 4.Auditunsuccessfulattemptstoconnecttothedatabase a)Enablecollectionofauditinformation.Storetheauditinformationin thedatabase. b)Begincollectingauditrecordsforuserswhounsuccessfullyattempt tologin. c)Verifythatunsuccessfulattemptstoconnecttothedatabaseare captured. d)Whydidyouhavetorestarttheinstanceafterchangingthe AUDIT_TRAIL initializationparameter? e)WhatwouldhavehappenedifyouhadleftAUDIT_TRAIL atits defaultsettingofNONE?
Practice112:DatabaseSecurity(Part2) Background Yoususpectthatsomeonehasbeenviewingandpossiblychangingemployeesalary datawithoutproperpermission.Configureyourdatabasetodetectunauthorizedaccess tosalarydataandcaptureanychangestosalaryinformation. Tasks AuditselectontheSALARY columnoftheEMPLOYEES table AuditchangestotheSALARY columnoftheEMPLOYEES table. Capture oldvalue newvalue which hi husermade d the h change h what h location l i the h change h was madefrom. 1.Auditselectonthesalary columnoftheemployees table.Becausewe onlywanttocaptureauditinformationifsomeoneselectsthesalarycolumnwe mustusefinegrainedauditingratherthanstandarddatabaseauditing. Note:isusedtocontinueastatementonanewlineinPL/SQL / Q a)UsetheDBMS_FGApackagetoaddafinegrainedauditpolicytoHRs employees table.Onlycaptureauditinformationifsomeonereadsthe salary column. b)VerifythatonlySELECT statementsthatincludethesalary columngenerateanaudittrail. 2.Auditchangestothesalary columnoftheemployees table.Because youwanttocapturetheoldandnewvaluesratherthanjustthefactthata changehappened,youmustusevaluebasedauditingratherthanstandard databaseauditing.Rememberthatvaluebasedauditingisimplementedthrough theuseofdatabasetriggers. a)CreateatablecalledAUDIT_EMPLOYEES intheSYSTEM schema toholdinformationcapturedthroughdatabaseauditing.Makethetable astandard,heaporganizedtablewithfourcolumns: who varchar2(10) event_date date ipaddress varchar2(16) what varchar2(2000) b)Createatriggertocapturechangestothesalary column. Connectasusersystem Runthescript$HOME/LABS/hrsalarytrig.sql $HOME/LABS/hrsalarytrig sql SQL>connectsystem/manager@dba10g Connected. SQL>@$HOME/LABS/hrsalarytrig.sql TriggerCreated. c)Verifythatauditinformationaboutchangestothesalary column arenowcaptured.
OracleDatabase10g:Administration WorkshopI12299
OracleNetServices OracleNetservicesenablenetworkconnectionsfromaclientormiddletier applicationtotheOracleDatabaseServer.Afteranetworksessionisestablished, OracleNetactsasthedatacourierforboththeclientapplicationandthedatabase server.Itisresponsibleforestablishingandmaintainingtheconnectionbetween theclientapplicationanddatabaseserver,aswellasexchangingmessagesbetween them.OracleNet,orsomethingthatsimulatesOracleNetsuchasJavaDatabase Connectivity(JDBC),islocatedoneachcomputerthatneedstotalktothedatabase server. Ontheclientmachine,OracleNetisabackgroundcomponentaccessedby whateverapplicationneedstoconnecttothedatabase(SQL*Plus,OracleForms, OracleDiscovererandmanyothers).TheuserneverseesOracleNet,justthe applicationthatisusingit. Onthedatabaseserver,OracleNetincludesanactiveprocesscalledthelistener. p forcoordinating gconnectionsbetweenthe TheOracleNetlistenerisresponsible databaseandexternalapplications.Withoutthelistener,externalconnectionsto thedatabasearenotpossible. WhilethemostcommonuseofOracleNetistoallowincomingdatabase connections,servicesalsocanbeconfiguredtoallowaccesstoexternalcode librariesandprocedures(EXTPROC)andtoconnecttheOracleinstancetonon OracledatasourcessuchasSybase,Informix,DB2,andSQLServerthroughOracle g services. Heterogeneous
OracleDatabase10g:Administration WorkshopI12300
OracleNetListener TheOracleNetlisteneristhegatewaytotheOracleinstanceforallnonlocaluser connections.Asinglelistenercanservicemultipledatabaseinstancesand thousandsofclientconnections. TheOracleNetlisteneriscontrolledbyDatabaseControlorbythelsnrctl commandlineutility.ListenersareconfiguredusingDatabaseControl.Forthe server,DatabaseControlcontrolstheconfigurationoftheactuallisteneraswellas generalparameterssuchaspasswordprotectionandlogfilelocations. locations AdvancedadministratorscanalsoconfigureOracleNetservicesbymanuallyediting theconfigurationfileswithatexteditorsuchasVi,gedit,orNotepadifnecessary.
OracleDatabase10g:Administration WorkshopI12301
MonitoringtheListener SelectingtheListenerlinkfromtheEnterpriseManagerhomepagetakesyoutothe listenerstatuspage. Fromthispageyoucansee: ThelistenerversionandORACLE_HOME Thefirstlisteningaddressforthelistener Thelocationoftheconfigurationfilesusedtostartthelistener Theavailabilityofthelistenerandwhenitwasstarted Thelistenerresponsetime:TNSPing(ms) Averagenumberofconnectionsrefused/establishedperminute Clickingthelinksforavailability,responsetime,orconnectionsperminutetakes youtodetailedinformationaboutthosemetrics.
OracleDatabase10g:Administration WorkshopI12302
CreatingaListener Eachlistenermusthaveatleastonelisteninglocation.Inthedetailpaneclickthe AddAddressbuttontocreatealisteninglocation.Selectthenetworkprotocol. TCP/IPismostcommonlyusedandisthedefault.OtherchoicesareInternalProcess Communication(IPC)normallyusedforconnectingtolocalapplications(resident onthedatabaseserver)orexternalcodelibraries(EXTPROC),NamedPipes(NMP) andTCP/IPwithSSL.EnterthenameorIPaddressoftheserverthelistenerwillbe runningon on,andtheportyouwantthelistenertomonitor. monitor OracleNet Nets sdefaultport is1521.Ifyouchoosetouseaportotherthan1521,additionalconfigurationis requiredforthelistenerorfortheinstance. Allotherconfigurationstepsareoptionalforthelistener.Theonlyrequired configurationisthelisteninglocation.SelectFilethenSaveNetworkConfiguration fromthemenu. TocreateanOracleNetlistener,selectNetServicesAdministrationfromtheRelated Linkssectionofthelistenerpropertiespage. 1. ChooseListenersfromtheAdministerdropdownboxand clickgo. 2. ClickCreate 3. Enteralistenername.Thenamemustbeuniqueforthis server. 4. Addalisteningaddress.
OracleDatabase10g:Administration WorkshopI12303
ListeningAddresses Eachlistenermusthaveatleastonelisteningaddress. 5. Selectthenetworkprotocol.TCP/IPismostcommonlyused andisthedefault. Note: TheNMPandEXTPROCprotocolsareconfiguredusingtheOther Servicestab. 6. EnterthenameorIPaddressoftheserverthelistenerwillbe runningon on,andtheportyouwishthelistenertomonitor monitor.OracleNet Nets s defaultportis1521.Ifyouchoosetouseaportotherthan1521,additional configurationisrequiredforthelistenerorfortheinstance. 7. EnterthenameorIPaddressoftheserverthelistenerwill runon. 8. Allotherconfigurationstepsareoptionalforthelistener.Click OKtosavetheaddress.Theonlyrequiredconfigurationisthelistening addressandname.ClickOKtosaveyourchanges. 9. Tostartthenewlistener,selectStart/StopfromtheActions dropdownlistandclickGo.
OracleDatabase10g:Administration WorkshopI12304
OracleDatabase10g:Administration WorkshopI12305
StaticDatabaseRegistration Foralistenertoforwardclientconnectionstoaninstance,thelistenermustknow thenameoftheinstanceandwheretheinstancesORACLE_HOME islocated.The listenercanfindthisinformationintwoways: Dynamicserviceregistration:Oracle8i,Oracle9i,andOracleDatabase10g instancesautomaticallyregisterwiththedefaultlistenerondatabase startup.Noadditionallistenerconfigurationisrequiredforthedefault listener. Staticserviceregistration:OlderreleasesoftheOracleDatabasedonot automaticallyregisterwiththelistenerandthereforerequirethatthe listenerconfigurationfilecontainalistofalldatabaseservicesthelistener willserve.Youmaystillchoosetousestaticserviceregistrationwithnewer releasesif: Yourlistenerisnotonthedefaultportof1521andyoudonotwish toconfigureyourinstancetoregisterwithanondefaultport. port Yourapplicationrequiresstaticserviceregistration. Toaddastaticdatabaseservice,selectStaticDatabaseRegistrationfromtheEdit ListenerpageandclicktheAddDatabasebutton.Entertheservicename(sameas theglobaldatabasename<DB_NAME>.<DB_DOMAIN>),ORACLE_HOME path, andSID(sameastheinstancename).ClickOK.Youwillhavetorestartyourlistener forthechangestotakeeffect.
OracleDatabase10g:Administration WorkshopI12306
ControllingtheListener Thelistenercontrolutilityenablesyoutocontrolthelistener.Withlsnrctl you can: Startthelistener Stopthelistener Checkthestatusofthelistener Checkthestatusoflistenerservices Reinitializethelistenerfromtheconfigurationfileparameters Dynamicallyconfiguremanylistener Changethelistenerpassword Thebasiccommandsyntaxforthisutilityisasfollows: LSNRCTL>command [listener_name] Whenalsnrctl commandisissued,thecommandactsonthedefaultlistener listenerunlessadifferentlistenernameisspecifiedortheSET LISTENER commandisexecuted.IfthelistenernameisLISTENER,thelistener_name argumentcanbeomitted. Validcommandsforlsnrctl areshownintheslideabove.
OracleDatabase10g:Administration WorkshopI12307
ListenerControlUtilitySyntax lsnrctl commandscanbeissuedfromwithintheutility(promptsyntax)orthe commandline.Thefollowingtwocommandshavetheidenticaleffect.First,using thecommandlinesyntax: #lsnrctlstart Thenusingthepromptsyntax: #lsnrctl LSNRCTLforLinux:Version10.1.0.1.0 10 1 0 1 0on05NOV2003 Copyright(c)1991,2003,Oracle.Allrightsreserved. WelcometoLSNRCTL,type"help"forinformation. LSNRCTL>start Usually,commandlinesyntaxisusedtoexecuteoneofforscriptedcommands.If youplantoexecuteseveralconsecutivelsnrctl commands,thepromptsyntaxis mostefficient.Noticethatthelistener_name argumentwasomitted,sothe stopcommandwouldaffectthelistenernamedLISTENER.Promptsyntaxmustbe usedifyourlistenerispasswordprotected.
OracleDatabase10g:Administration WorkshopI12308
ListenerControlUtilitySyntax(continued) RememberthatifyourlistenerisnamedsomethingotherthanLISTENER,youmust eitherincludethelistenernamewiththecommandorusetheSET CURRENT LISTENER command.SupposeyourlistenerwasnamedBACKUP.Using CURRENT_LISTENER promptsyntax: LSNRCTL>stopbackup Connectingto (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5 521))) Thecommandcompletedsuccessfully The h above b produces d the h sameresults l asfollows: f ll LSNRCTL>setcurbackup CurrentListenerisbackup LSNRCTL>stop Connectingto (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5 521))) ))) Thecommandcompletedsuccessfully Note:Intheabovesyntax,thecurrent_listener canbeabbreviatedascur. Youcanalsoachievethesameresultswithcommandlinesyntax: /home/oracle>lsnrctlstopbackup LSNRCTLforLinux:Version10.1.0.1.0on05NOV200315:19:33 Copyright(c)1991,2003,Oracle.Allrightsreserved. C Connecting ti to t (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel)(PORT=5 521))) Thecommandcompletedsuccessfully Whichsyntaxyouuseispurelyamatterofchoiceandconvenience.
OracleDatabase10g:Administration WorkshopI12309
OracleDatabase10g:Administration WorkshopI12310
MonitoringwithListenerControl(continued) Thelistenercontrolstatuscommandreturnsdetailedinformationaboutthelistenerand summaryinformationaboutallservicesthelistenerishandling. LSNRCTL> SET PASSWORD Password: d The command completed successfully LSNRCTL> STATUS Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))) STATUS of the LISTENER -----------------------Alias LISTENER Version TNSLSNR for Linux: Version 10.1.0.1.0 - Beta Start Date 05-NOV-2003 15:48:08 Uptime 0 days 16 hr. 40 min. 2 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /oracle/product/ora10g/network/admin/listener.ora Listener Log File /oracle/product/ora10g/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel)(PORT=1 521))) Services Summary... Service "dba10g" has 2 instance(s). Instance "dba10g", status READY, has 1 handler(s) for this service... Instance "dba10g", status UNKNOWN, has 1 handler(s) for this service... Service "rhel" has 1 instance(s). Instance "dba10g", status READY, has 1 handler(s) for this service... The command completed successfully Statusinformationincludes: Listenernameandversion Whenthelistenerwasstartedandhowlongithasbeenup Locationofconfigurationandlogfiles Tracelevelandsecuritystatus Listeneraddressinformationincludinghost,port,andprotocolsserviced Summaryinformationabouteachservicethelistenerishandling.Statusinformation forstaticallyregisteredserviceswilldisplayasUNKNOWN.Asyoucanseeabove, aninstancecanhavemultipleservicenames(instancedba10g isalso answeringtorhel)
OracleDatabase10g:Administration WorkshopI12311
OracleDatabase10g:Administration WorkshopI12312
OracleDatabase10g:Administration WorkshopI12313
EasyConnect WithEasyConnecttheusersuppliesallinformationrequiredfortheOracleNet connectionaspartoftheconnectstring.EasyConnectconnectionstringstakethe formof: <username>/<password>@<hostname>:<listener port>/<service name> Thelistenerportandservicenameareoptional.Ifthelistenerportisnotprovided, thenOracleNetassumesthedefaultportof1521isbeingused used.Iftheservicename isnotprovidedOracleNetassumesthedatabaseservicenameandhostname providedintheconnectstringareidentical. AssumingthelistenerwasusingtheTCPprotocoltolistenonport1521and instanceparametersSERVICE_NAMES=db,DB_DOMAIN=us.oracle.com, theconnectstringshownintheslideabovecouldbeshortenedto: SQL> connect hr/[email protected] Note: TheSERVICE_NAMES initializationparametercanacceptmultiplecomma separatedvalues.Onlyoneofthosevaluesneedstobedb forthisscenariotowork.
OracleDatabase10g:Administration WorkshopI12314
LocalNaming Withlocalnaming,theusersuppliesanaliasfortheOracleNetservice.OracleNet checksthealiasagainstalocallistofknownservicesandifitfindsamatch,converts thealiasintohost,protocol,port,andservicename. Oneadvantageoflocalnamingisthatthedatabaseusersonlyneedtoremembera shortaliasratherthanthelongconnectstringrequiredbyEasyConnect. Thelocallistofknownservicesisstoredininthetextconfigurationfile $ORACLE HOME/network/admin/tnsnames ora. $ORACLE_HOME/network/admin/tnsnames.ora LocalnamingisappropriatefororganizationswhereOracleNetservice configurationsdonotchangeoften.
OracleDatabase10g:Administration WorkshopI12315
DirectoryNaming Withdirectorynaming,theusersuppliesanaliasfortheOracleNetservice.Oracle Netchecksthealiasagainstanexternallistofknownservicesandifitfindsamatch, convertsthealiasintohost,protocol,port,andservicename. Likelocalnaming,databaseusersonlyneedtorememberashortaliasratherthan thelongconnectstringrequiredbyEasyConnect. Oneadvantageofdirectorynamingisthatassoonasanewservicenameisadded totheLDAPdirectory directory,theservicenameisavailableforuserstoconnectwith. with With localnamingtheDBAmustfirstdistributeupdatedtnsnames.ora files containingthechangedservicenameinformationbeforeuserscanconnecttonew ormodifiedservices. DirectorynamingisappropriatefororganizationswhereOracleNetservice configurationschangefrequently.
OracleDatabase10g:Administration WorkshopI12316
ConfiguringServiceAliases TocreatealocalOracleNetservicealias,selectLocalNamingfromtheAdminister dropdownlistandclickGo,andthenclickCreate. Toconfigureservicealiasesfordirectorynaming,selectDirectoryNaminginsteadof LocalNaming. Note: Ifdirectorynaminghasnotalreadybeenconfigured,thenyoucannotselect theDirectoryNamingoption.DirectoryNamingisdiscussedintheOracleEnterprise IdentityManagement courseaswellastheOracleAdvancedSecurity Administrationmanual. IntheCreateNetServiceNamepage,enterauniquenameintheNetServiceName field(thisisthenameuserswillenterwhentheywanttousethisalias).Enterthe servicenameorSIDofthedatabaseyouwanttoconnectto,andclicktheAdd buttontoentertheaddressfortheservicename. Fortheaddress,entertheprotocol,port,andhostusedbythelistenerforthe serviceyouwanttoconnectto.
OracleDatabase10g:Administration WorkshopI12317
AdvancedConnectionOptions Withadvancedconnectionoptions,OracleNetcantakeadvantageoflistener failoverandloadbalancing,aswellasOracleConnectionManagersourcerouting. Withconnecttimefailoverenabled,thealiashastwoormorelisteneraddresses listed.Ifthefirstaddressisnotavailable,thesecondisthentried.OracleNetwill keeptryingaddressesinorderuntilitreachesalistenerthatisfunctioningoruntil alladdresseshavebeentriedandfailed. Withloadbalancingenabled, enabled OracleNetpicksanaddressatrandomfromthelistof addresses.InaRealApplicationClusterthisbalancestheworkloadacrossmultiple instancesofthesamedatabase. SourceroutingisusedwithOracleConnectionManager.OracleConnection ManagerservesasaproxyserverforOracleNettraffic,enablingOracleNettraffic toberoutedsecurelythroughafirewall.OracleNettreatstheaddressesasalistof relays,connectingtothefirstaddressandthenrequestingtobepassedfromthe firsttotheseconduntilthedestinationisreached.Itdiffersfromfailoverorload balancinginthatalladdressesareusedeachtimeaconnectionismade.Formore informationonOracleConnectionManagerpleaserefertoChapter11oftheOracle NetServicesAdministrator guide.
OracleDatabase10g:Administration WorkshopI12318
AdvancedConnectionOptions(continued) Note that there are five choices for connect-time failover and load balancing. The five options translate to:
Option Try each address, in order, until one succeeds Try each address, randomly, until one succeeds Try one address, selected at random Use each address in order until destination reached Use only the first address
Advanced Functionality Failover Failover Load balancing Load balancing Source routing None
OracleDatabase10g:Administration WorkshopI12319
OracleNetManager EnterpriseManagerDatabaseControlconfigurestheserversideofOracleNet,but doesnothelpwithclientormiddletierconfiguration.TheOracleNetManagerisa graphicaltoolprimarilyusedtoconfigureclientsideOracleNetconnections including: OracleNetservicenames OracleNetprofiles Security Troubleshooting(loggingandtracing) Namesresolutionmethods TheOracleNetManagercanalsobeusedtocreateandconfigureOracleNet listeners,andtoconfigureLightweightDirectoryAccessProtocol(LDAP)service nameresolution. TostartOracleNetManager,runnetmgr fromacommandprompt.Whenyou openOracleNetManager,youwillseeanavigationtreeontheleft,andadetail windowontheright.Youcandrilldownintoeachnodeinthetreestructureusing theexpand/contractsymbol(+/)nexttothenodeyouwanttoconfigure.
OracleDatabase10g:Administration WorkshopI12320
ChoosingNamingMethods Thedefaultnamesresolutionmethodsarelocalnaming(TNSNAMES),Easy Connect(EZCONNECT)andhostnaming(adeprecatedpredecessortoEasy Connect). Withtheconfigurationshownabove,OracleNetfirstexaminesthelocalnames resolutionfile,attemptstouseEasyConnect,checksthedirectoryserver,andfinally attemptstousehostnaminguntiliteitherfindsamatchfortheusersupplied connectstringorfails. fails IfyouwantdirectorynamingtobecheckedbeforeEasy Connect,thenselectLDAPandclickthePromotebutton.
OracleDatabase10g:Administration WorkshopI12321
ConfiguringServiceAliaseswithNetManager YoucanalsouseOracleNetManagertoaddOracleNetServicealiasestothelocal namingordirectorynamingrepository.Forlocalnaming,expandtheLocalnode andselectServiceNamesfromthetreestructure.Thenclicktheplus(+)icon(upper left)orusethemenubyselectingEditandthenCreate.Thisopensaconfiguration wizardwhereyoufirstchoosethealiasname,thentheprotocol,thentheaddress andport,andfinallytheactualservicenamethatthelistenerishandling. Toconfigureservicealiasesfordirectorynaming naming,expandtheDirectorynoderather thantheLocalnode. Afteryouraliashasbeencreatedyoucantesttheconnection.UnlikeDatabase Control,OracleNetManagerattemptstoconnecttotheservicewiththeusername SCOTT usingapasswordofTIGER.YoumustclicktheChangeLoginbuttonand supplythecorrectusernameandpassword.
OracleDatabase10g:Administration WorkshopI12322
Option Try each address, in order, until one succeeds Try each address, randomly, until one succeeds Try one address, selected at random Use each address in order until d i i reached destination h d Use only the first address
OracleDatabase10g:Administration WorkshopI12323
Advanced Functionality Failover Failover Load balancing Load balancing Source routing None
OracleDatabase10g:Administration WorkshopI12324
OracleDatabase10g:Administration WorkshopI12325
OracleDatabase10g:Administration WorkshopI12326
Practice12:OracleNetServices Background:Usersneedtoconnecttoyourdatabase.Workwiththemtoallow connectionsusingseveraldifferentmethods.Ensurethatuserscanuseconnecttime failovertotakeadvantageofabackuplistener. listener Tasks: Createabackuplistenertosupportconnecttimefailover Modifyyourlocalnameresolutionfilesoyoucanconnecttoanotherdatabase Modifyyourlocalnameresolutionfilesothatusersfailovertothebackup listeneriftheprimaryisunavailable 1. Createabackuplistenertosupportconnecttimefailover. Namethe h newlistener l BACKUP. UseTCP/IPprotocolonport1561. UsestaticregistrationtoregisteryourORCLdatabasewiththenew listener. Startthenewlistener. 2. Modifyyourlocalnameresolutionfilesothatyoucanconnectto anotherdatabase.Testy yourchanges g tothenetworkconfiguration g using g SQL*PlusoriSQL*Plus. 3. Modifyyourlocalnameresolutionfilesothatyoufailovertothe backuplisteneriftheprimarylistenerisunavailable.Testyourchangesby shuttingdownthedefaultlistenerandverifyingthatyoucannowconnect throughthebackuplistener.
OracleDatabase10g:Administration WorkshopI12327
EstablishingaConnection AfterOracleNetnamesresolutioniscomplete,aconnectionrequestispassedfromthe userormiddletierapplication(referredtoastheuserprocessfromhereon)tothe OracleNetListener.ThelistenerreceivesaCONNECT packetandcheckstoseewhether thatCONNECT packetisrequestingavalidOracleNetservicename. Iftheservicenameisnotrequested(asinthecaseofaTNSPING request),thelistener acknowledgestheconnectrequestanddoesnothingelse.Ifaninvalidservicenameis requested,thelistenertransmitsanerrorcodetotheuserprocess.
DedicatedServerProcess IftheCONNECT packetrequestsavalidservicename,thelistenerspawnsanewprocess todealwiththeconnection.Thisnewprocessisknownastheserverprocessandis sometimesalsoreferredtoastheshadowprocess.Aftertheprocesshasbeen spawned,thelistenerconnectstotheprocessandpassesitinitializationinformation, includingtheaddressinformationfortheuserprocess.Atthispointthelistenernolonger dealswiththeconnectionandallworkishandedofftotheserverprocess. TheserverprocessnowtransmitsaRESEND packetbacktotheuserprocess.
UserSessions After f the h usersessionreceivesthe h RESEND packet, k itretransmitsthe h CONNECT packet.Theserverprocesscheckstheusersauthenticationcredentials(usuallya password)andifthecredentialsarevalid,ausersessioniscreated. Dedicatedserverprocess:Withthesessionestablished,theserverprocessnowacts astheusersagentontheserver.Theserverprocessisresponsiblefor: ParsingandrunninganySQLstatementsissuedthroughtheapplication CheckingthedatabasebuffercachefordatablocksrequiredtoperformSQL statements Readingnecessarydatablocksfromdatafilesondiskintothedatabase buffercacheportionoftheSGA,iftheblocksarenotalreadypresentinthe SGA Managingallsortactivity.AportionoftheserverprocesscalledtheProgram GlobalArea(PGA)containsamemoryareaknownastheSortAreathatis used dto t work kwith ithsorting. ti Returningresultstotheuserprocessinsuchawaythattheapplicationcan processtheinformation Serverprocessesalsoreservememoryforspecializedworksuchasbitmapandhash joins.Theamountofmemoryconsumedbythededicatedserverprocessdepends onseveralinitializationparametersettings.Itcanbeautomaticallycontrolled g theuseofPGA_AGGREGATE_TARGET andWORKAREA_SIZE_POLICY through orfinedtunedifneededforadvanceduse.
UserSessions:DedicatedServer Withdedicatedserverprocessesthereisaonetooneratiobetweenserverprocesses anduserprocesses.EachserverprocessconsumessystemresourcesincludingCPUcycles andmemory. Inaheavilyloadedsystem,thememoryandCPUresourcesconsumedbydedicated serverprocessescanbeprohibitiveandnegativelyaffectthesystemsscalability.Ifyour systemisbeingnegativelyimpactedbytheresourcedemandsofthededicatedserver architectureyouhavetwooptions: IncreasesystemresourcesbyaddingmorememoryandadditionalCPUcapability. UsetheOracleSharedServerarchitecture. architecture
UserSessions:SharedServers EachservicethatparticipatesintheSharedServerarchitecturehasatleastone(and usuallymore)dispatcherprocess.Whenaconnectionrequestarrives,thelistenerdoes notspawnadedicatedserverprocess.Instead,thelistenermaintainsalistofdispatchers availableforeachservicename,alongwiththeconnectionload(numberofconcurrent connections)foreachdispatcher. Connectionrequestsareroutedtothelightestloadeddispatcherthatisservicingagiven servicename.Usersremainconnectedtothesamedispatcherforthedurationofa session. Unlikededicatedserverprocesses, processes asingledispatchercanmanagehundredsofuser sessions. Dispatchersdonotactuallyhandletheworkofuserrequests.Insteadtheypassuser requeststoacommonqueuelocatedinthesharedpoolportionoftheSGA. SharedServerprocessestakeovermostoftheworkofdedicatedserverprocesses, pullingrequestsfromthequeueandprocessingthemuntilcomplete. Becauseasingleusersessionmayhaverequestsprocessedbymultiplesharedserver processes,mostofthememorystructuresusuallystoredintheProgramGlobalArea (PGA)mustbeinasharedmemorylocation.InaSharedServerarchitecture,mostof thesememoryareasarestoredinthelargepoolportionoftheSGA.
ProcessingaRequest WhenauserconnectsthroughtheSharedServerarchitecturesubmitsadatabase request: 1.Theuserprocessforwardstherequesttoitsdispatcher. 2.ThedispatcherplacestherequestintothecommonrequestqueueintheSGA. 3.Thenextavailablesharedserverpicksuptherequestfromtherequestqueue andprocessestherequest. 4.Thesharedserverplacestheresponseonthecallingdispatchersresponse queue.Eachdispatcherhasitsownresponsequeue. 5 Thedispatcherretrievestheresponsefromitsresponsequeue. 5. queue 6.Thedispatcherreturnstheresponsetotheuser. Aftertheusercallhasbeencompleted,thesharedserverprocessisreleasedandis availabletoserviceanotherusercallintherequestqueue. RequestQueue Onerequestqueueissharedbyalldispatchers. Sharedserversmonitortherequestqueuefornewrequests. Requestsareprocessed donafirst f in,first f out(FIFO) ( )basis. b There h isnopriority setting.
TheSGAandPGA ThecontentsoftheSystemGlobalArea(SGA)andtheProgramGlobalArea(PGA)differ whendedicatedserversorsharedserversareused. TextandparsedformsofallSQLstatementsarestoredintheSGA. ThecursorstatecontainsruntimememoryvaluesfortheSQLstatement,suchas rowsretrieved. Usersessiondataincludessecurityandresourceusageinformation. Thestackspacecontainslocalvariablesfortheprocess. Technical Note ThechangeintheSGAandPGAistransparenttotheuser;however, however ifsupportingmultiple users,youneedtoincreasetheLARGE_POOL_SIZE.Eachsharedserverprocessneeds toaccessthedataspacesofallsessionssothatanyservercanhandlerequestsfromany session.SpaceisallocatedintheSGAforeachsessionsdataspace.Youcanlimitthe amountofspacethatasessioncanallocatebysettingthePRIVATE_SGA resourcelimit intheDatabaseServicesregionoftheGeneralpageoftheusersprofile.
DISPATCHERS TheDISPATCHERS parameterenablesvariousattributesforeachdispatcher. OracleDatabase10g supportsanamevaluesyntax(similartothesyntaxusedbyOracle NetServices)toenablethespecificationofexistingandadditionalattributesinaposition independent,noncasesensitivemanner. Forexample:DISPATCHERS = (PROTOCOL=TCP)(DISPATCHERS=3) Parameter Type Parameter class: String (Specify as a quoted string) Dynamic
Default value: Null (no dispatchers will becan started) Although thenumberof connections adispatcher handlevariesgreatlydependingon thetypeofworkload,agoodmeasuretouseistoallowonedispatcherpereveryfifty concurrentdatabaseconnectionsthatusethesharedserverarchitecture.
DISPATCHERS (continued) TheonlyrequireddispatcherattributeisPROTCOL.Allothersareoptional.Afewofthe possibleargumentsfortheDISPATCHERS parameteraredescribedbelow.Noticethat argumentsuseathreeletterabbreviationinsteadofthefullargumentname. name Attribute PROTOCOL (PRO or PROT) DISPATCHERS (DIS or DISP) SERVICE (SER or SERV) LISTENER (LIS or LIST) Description Specifies the network protocol for which the dispatcher generates a listening endpoint (usually TCP) The initial number of dispatchers to start (default is 1) The Oracle Net Service name the dispatcher registers with the listener. If not given, the dispatcher registers the values in SERVICE_NAMES.
Specifies S ifi an alias li name f for th the li listeners t with ith which hi h th the PMON process registers dispatcher information. Set the alias to a name which is resolved through a naming method. This attribute need only be specified if the listener is a local listener that uses a nondefault port (not 1521) and is not specified with the LOCAL_LISTENER parameter or the listener is on another node. SESSIONS The maximum number of network sessions for each dispatcher. (SES or SESS) The default is operating systemspecific. Most operating systems have a default of 16 K. Note: TherearemanymorepossibleattributesfortheDISPATCHERS parameter.Further CONNECTIONS Specifies the maximum number connections to detailsontheDISPATCHERS parameter canbe foundof innetwork theInitialization Parameters (CON or CONN) allow for each dispatcher. The default is operating system sectionintheOracleDatabaseReference f Manual. specific. For example, 1024 is the default for Sun Solaris and Windows.
SHARED_SERVERS SHARED_SERVERS specifiestheminimumnumberofserverprocessesthatthatwillbe retained.Settingthisparameterisnotusuallycriticalbecausetheinstancemonitorsthe CommonRequestQueueandwillstartadditionalsharedserversasneededtoservethe queue,andthendisposeofthemwhennolongerneeded. Parameter type Parameter class Default value Integer Dynamic 0 if DISPATCHERS is NULL NULL, 1 if DISPATCHERS is set
Range of values Operating system dependent Agood measuretouse istoretain oneshared serverforeverytwentyfiveconcurrent databaseconnectionsusingthesharedserverarchitecture.
MAX_SHARED_SERVERS MAX_SHARED_SERVERS specifiesthemaximumnumberofsharedserverprocesses thatwillbeallowedtorunsimultaneously.Thesettingisimportantbecausetheinstance automaticallycreatesadditionalsharedserverprocessesasneededtoservicethe commonrequestqueue. Parameter type Integer Parameter class Default value Range of values Dynamic None (unlimited) Operating system dependent
Estimating the Maximum Number of Shared Servers Ingeneral,setthisparameterforanappropriatenumberofsharedserverprocessesat timesofhighestactivity.Experimentwiththislimit,andmonitorsharedserversto determineanidealsettingforthisparameter.Tofindthemaximumnumbersofservers started(highwatermark),querytheV$SHARED_SERVER_MONITOR datadictionary view.
CIRCUITS Virtualcircuitsareuserconnectionstothedatabasethroughdispatchersandservers.The CIRCUITS parameterspecifiesthetotalnumberofvirtualcircuitsthatareavailablefor inboundandoutboundnetworksessions. Parameter type Parameter class Default value Integer Dynamic
g , then the value of If Oracle Shared Server is configured, CIRCUITS will match that of SESSIONS. Otherwise, the value is 0 Setthisparameteronly ifyou wanttolimitthetotalnumberofconnectionsuserscan makeviathesharedserverarchitecture.Thisparameterisofinterestbecauseitisoneof severalparametersthatcontributetothetotalSGArequirementsofaninstance.
SHARED_SERVER_SESSIONS Thisparametercontrolsthetotalnumberofsharedserversessionsopenconcurrentlyat anypointintime.Theuseofthisparameterallowsresourcesfordedicatedusersessions tobereserved. Parameter type Parameter class Default value Integer Dynamic None (unlimited)
RelatedParameters OtherparametersaffectedbyOracleSharedServerthatmayrequireadjustment: LARGE_POOL_SIZE specifiesthesizeinbytesofthelargepool.OracleShared Serverusesthelargepooltostoresessioninformationthatusuallyresidesinthe PGAinadedicateserversession. SESSIONS specifiesthemaximumnumberofsessionsthatcanbecreatedinthe system.ThismayneedtobeadjustedforOracleSharedServerbecauseyour systemcannowservicemoresessions. PROCESSES controlsthenumberofserversideprocesses. LOCAL LISTENER definestheportandprotocolusedbythelisteners. LOCAL_LISTENER listeners Ifyour listenerisnotusingTCP/IPonport1521,orifyouhavemultiplelisteners,you mustconfigureLOCAL_LISTENER sothedispatcherscanregisterwiththe listeners. IfyoudonotsetavalueforLARGE_POOL_SIZE,thenOracleusesthesharedpoolfor OracleSharedServerusersessionmemory.Thiscannegativelyimpacttheperformance ofPL/SQL,SQL,andotherservicesthatrelyonthesharedpool. Oracleallocatessomefixedamountofmemory(about10K)perconfiguredsessionfrom thesharedpool,evenifyouhaveconfiguredthelargepool.
DataDictionaryViews V$CIRCUIT This view contains information about virtual circuits, which are user ser connections to the database through thro gh dispatchers and servers. Any shared server connection creates an entry in V$CIRCUIT. This view contains information on the shared server processes. This view provides information on the dispatcher processes. This view contains information for tuning the shared server processes. This view contains information on request and response queues. This view lists session information for each current session.
WhenNottoUseSharedServer TheOracleSharedServerarchitectureisanefficientprocessandmemoryusemodel,but isnotappropriateforallconnections.Becauseofthecommonrequestqueue,andthe factthatmanyusersmayshareadispatcherresponsequeue,sharedserversdonot performwellwithoperationsthatmustdealwithlargesetsofdatasuchaswarehouse queriesorbatchprocessing. BackupandrecoverysessionsusingOracleRecoveryManager(discussedinlater chapters)alsodealwithverylargedatasetsandshouldmakeuseofdedicated connections. Manyadministrationtaskscannotorshouldnotbeperformedusingsharedserver connections.Theseincludestartupandshutdownoftheinstance,creatingtablespacesor datafiles,indexandtablemaintenance,analyzingstatistics,andmanyothertasks commonlyperformedbytheDBA.AllDBAsessionsshouldchoosededicatedservers.
Practice13:OracleSharedServer Background:Youvenoticedthatduringpeakloadtimes,yoursystemisperforming poorly.Afterinvestigating,youfindthatusersessionsareconsumingsomuchmemory that h yoursystemis i swapping i excessively. i l C Configure fi yoursystemtoreduce d the h amount ofmemoryconsumedbyusersessions. Tasks: Investigatetheimpactofdedicatedserverconnectionsonyoursystem Configureyoursystemtousesharedservers Investigatetheimpactofsharedserverconnectionsonyoursystem 1. Investigate g theimpact p ofdedicatedserverconnectionsony your system. a) Openfourterminalsessionsonyourserver. b) ChecktoseehowmanyOracleprocessesarerunning. c) InyourremainingthreeterminalsessionsstartSQL*Plussessions. VerifythatnoneofyourthreeSQL*Plussessionsisusingsharedservers. d)Yourdefaultservicenameisconfiguredtousededicatedserver processes.Note N t that th twith itheach hSQL*Plus SQL*Pl session i started, t t d t twonew processesarecreated.RememberthateachofyourSQL*Plussessions startstwo resourceconsumingprocesses.OneistheSQL*Plussession itself(whichwillnormallyconsumeresourcesontheclientormiddle tier),theotheristhededicatedserverprocess(whichconsumes resourcesontheserver). 2. Configureyoursystemtousesharedservers.UsetheTCP protocolandyoursystemsservice name. 3. Investigatetheimpactofsharedserverconnectionsonyour system. a) ExityourthreeSQL*Plussessions(leavethefourterminal sessionsopen;youwillneedthemlater). b) Createanewlocalnamingaliasthatusesthedefaultdatabase connection. connection c) OpenthreeSQL*Plussessionsusingthenewservicename. d) Verifythatyouareconnectedusingasharedserver(youwill probablyseeanextraconnectioninV$CIRCUIT becausetheEnterprise Managermonitoringprocessusuallylogsintothenewsharedserver systembeforeyoucan). e) ChecktoseehowmanyOracleprocessesarerunningnow.Note thatyourthreeSQL*Plussessionsstartedonlythreenewprocesses (thesearethethreeSQL*Plusprocesses).Allthreeoftheseareusually locatedontheclientmachineorapplicationserver,whichmeansthat thesethreenewsessionshavenotaddedany newprocessesonthe server.
OracleDatabase10g:Administration WorkshopI14355
OracleDatabase10g:Administration WorkshopI14356
MonitoringMethodologies TheOracleDatabase10g supportsbothproactiveandreactivemonitoring.Reactive monitoringisaresponsetoaknownorreportedproblem.Youmaybegin monitoringperformancemetricsinreactiontousercomplaintsaboutresponse time,instancefailures,orerrorsfoundinthealertlog. Reactivemonitoringisinevitablynecessarysometimes,butyourgoalshouldbeto detectandrepairproblemsbeforetheyaffectsystemoperation.Fixingproblems beforetheyoccur occur,oratleastbeforetheyarewidelynoticed noticed,isaproactiveapproach tosystemmaintenance. OracleDatabase10g includesseveraltoolsthataidinproactivemonitoring.Twoof theseareservergeneratedalertsandtheAutomatedDatabaseDiagnosticMonitor (ADDM).Proactivemonitoringwillbecoveredinthenextlesson.
OracleDatabase10g:Administration WorkshopI14357
DatabaseandInstanceMetrics Therearehundredsofdifferentmeasurementpointsavailabletomonitoryour system. Thedatadictionaryprovidesinformationaboutspaceconsumptionandobject status. Realtimeperformancemetricscoveringmemoryusage,waitevents,input/output devicethroughput,andinstanceactivityareavailablethroughdynamic performanceviews, views alsoknownasv$ views. views OracleDatabasescanbeextremelylarge(terabytedatabasesarebecoming commonandexabytedatabasesarepossible).Withsuchlargedatasetsitiscritical thattheinstancelocatetheparticularpieceofdataauserislookingforinthemost efficientwaypossible.Theportionoftheinstancethatdecideshowtolookfordata isknownastheoptimizer. DatadistributionmetricsareusedtohelptheOracleDatabase10g optimizer choosethemostefficientwaytoretrievedata,andarethereforecommonly referredtoasoptimizerstatistics.
OracleDatabase10g:Administration WorkshopI14358
DatabaseandInstanceMetrics(continued) Optimizerstatisticsshowingdatadistributionforeachtableinclude: Numberofrows Averagerowlength Amountofemptyspacethatisallocatedtothetable Numberofrowsthatarechained(existingintwoormoredatablocksdueto longrowlengthorinefficientdatastoragesettings) Oneexampleofanoptimizerchoiceisbetweenafulltablescan(readingtheentire tabletofindaparticularrow)andanindexscan(lookingfortherowinanindexfirst, thengoingdirectlytothedatablockinthetablethatholdstherow).Forsmalltables,a f lltable full bl scani isusually ll moreefficient ffi i than h looking l ki through h hanindex i d for f data d and dlater l jumpingtothecorrectblock.Foralargetable(rememberthatlargecaneasilybe hundredsofmillionsofrows)anindexscanprobablymakesmuchmoresense.
OracleDatabase10g:Administration WorkshopI14359
DataDictionaryMetrics Oneofthemostimportantdatadictionarymetricsdealswithobjectstatus. DatabaseindexesandstoredproceduresbothneedtobeVALID tobeused. IndexescanbecomeUNUSABLE duetonormalmaintenanceoperationsontables. Indexescontainpointerstothephysicallocationofindividualrowsofdata.Ifthe DBAcausesthoserowstochangelocationthroughmaintenanceoperationssuchas theMOVE command,thepointersarenolongervalidandtheindexwillnotbe usableuntilitisrebuilt. rebuilt PL/SQLcodeobjectshaveanINVALID statusforseveralreasons.Ifthecode containsaprogrammingerror,thePL/SQLobjectwillnotcompilecorrectlyandwill bemarkedinvalid.Avalidprocedurecanbecome invalidifanobjecttheprocedure referenceschanges.Supposeaprocedurereferencesthesalary columnofthe employees table.Ifthecolumnprecisionischanged,orifthecolumnisdropped, thereisnoguaranteethattheprocedurethatworkedcorrectlyontheold table definitionwillstillrunonthenewtabledefinition. UnusableindexesalwaysrequireDBAinterventiontorestorethemtoavalidstate. InvalidPL/SQLobjectswillnormallyrecompileautomaticallythefirsttimetheyare called,butsometimesrequireDBAinterventionincaseswheretheautomatic recompilationfails.
OracleDatabase10g:Administration WorkshopI14360
InvalidandUnusableObjects IfyoufindPL/SQLobjectswithastatusofINVALID,thefirstquestionyouneedto answerishasthisobjectever beenVALID?Often,anapplicationdeveloper neglectstocleanupcodethatdoesnotwork.IfthePL/SQLobjectisinvalidbecause ofacodeerror,thenthereislittlethatcanbedoneuntilthaterrorisfixed.Ifthe procedurewasvalidatsometimeinthepastandhasrecentlybecomeinvalid,you havetwooptionstofixtheproblem: 1 1. Donothing. nothing MostPL/SQLobjectswillautomaticallyrecompile ifneededwhentheyarecalled.Userswillexperienceaslightdelaywhilethe objectsrecompile(inmostcasesthisdelayisnotevennoticeable). 2. Manuallyrecompiletheinvalidobject. InvalidPL/SQLobjectscanbemanuallyrecompiledusingEnterpriseManageror throughSQLcommands: ALTERPROCEDUREHR.updatesalaryCOMPILE; ManuallyrecompilingPL/SQLpackagesrequirestwosteps: ALTERPACKATEHR.maintainempCOMPILE; ALTERPACKATEHR.maintainempCOMPILEBODY;
OracleDatabase10g:Administration WorkshopI14361
InvalidandUnusableObjects(continued)
Unusableindexesaremadevalidbyrebuildingthemtorecalculatethepointers. Rebuildinganunusableindexrecreatestheindexinanewlocation,thendropsthe unusableindex.ThiscaneitherbedoneusingEnterpriseManagerorthroughSQL commands. ALTERINDEXHR.emp_empid_pkREBUILD; ALTERINDEXHR HR.emp_empid_pk emp empid pkREBUILDONLINE; ALTERINDEXHR.emailREBUILDTABLESPACEUSERS; IftheTABLESPACE clauseisleftout,theindexisrebuiltinthesametablespacewhere italreadyexists.TheREBUILD ONLINE clauseallowsuserstocontinueupdatingthe indexstablewhiletherebuildtakesplace(withouttheONLINE keywordusersmust waitfortherebuildtofinishbeforeperformingDMLontheaffectedtable).
OracleDatabase10g:Administration WorkshopI14362
OptimizerStatistics Optimizerstatisticsfortablesandindexesarestoredinthedatadictionary.These statisticsarenotintendedtoproviderealtimedata.Theyprovidetheoptimizera statistically correctsnapshotofdatastorageanddistributionwhichtheoptimizer usestomakedecisionsonhowtoaccessdata. Metricscollectedinclude: Sizeofthetableorindexindatabaseblocks Numberofrows Averagerowsizeandchaincount(tablesonly) Heightandnumberofdeletedleafrows(indexesonly) Asdataisinserted,deleted,andmodifiedthesevalueschange.Theperformance impactofmaintainingrealtimedatadistributionstatisticswouldbeprohibitive,so thesestatisticsareupdatedbyperiodicallygatheringstatisticsontablesand indexes. IfyourdatabasewascreatedwiththeDatabaseCreationAssistant(DBCA), optimizerstatisticsareautomaticallycollectedonceadaybetween10:00PMand 6:00AM.IfyourdatabasewasnotcreatedwiththeDBCA,orifyourdatabase containstablesandindexesthatareveryvolatile,youmustmanuallycollect optimizerstatistics.
OracleDatabase10g:Administration WorkshopI14363
OptimizerStatistics(continued) Alargetablethatexperiences10percentgrowth(orreduction)withina24hourperiod isusuallyconsideredtoovolatileforstatisticscollectiononceperdaytobesufficient. Fortablesthatexperiencethislevelofchange,Oraclerecommendscollectingstatistics morefrequently,preferablyoftenenoughthatthetableneverchangesbymorethan about10percentbetweencollectionperiods. StatisticscanbemanuallycollectedusingEnterpriseManager,orthroughtheuseofthe DBMS_STATS packageasshownbelow: SQL>EXECdbms_stats.gather_table_stats(HR,EMP); SQL>SELECTnum_rowsFROMdba_tables 2WHEREowner='HR' 'HR'ANDtable_name bl ='EMP'; 'EMP' NUM_ROWS 214 Notethatthenumberofrowsnowcorrectlyreflectswhatwasinthetableasofthe timestatisticsweregathered.DBMS_STATS alsoallowsmanualcollectionofstatistics foranentireschema, ,oreventhewholedatabase.
OracleDatabase10g:Administration WorkshopI14364
GatheringOptimizerStatistics EnterpriseManagersGatherStatisticsWizard(availablefromtheMaintenance page)istherecommendedwaytomanuallycollectorupdateoptimizerstatistics. Thewizardpromptsforinformationandthencreatesajobtocollectstatistics.: 1.DefaultMethod:Offersthechoicetodelete,estimate,orcompute statistics.Computingstatisticsexamineseveryrowinatable;estimating takesastatisticalsample.Forindexesandsmalltablesthecomputemethod shouldbeused. used Forlargetablesanestimateisusuallybest. best Inmostcases thedefaultestimatepercentageshouldbeusedforestimates. Note: Anestimatepercentageof50%orhighertriggersacompute. Whenmanuallychoosinganestimatesize,515%isusuallysufficient. 2.Objectselection:Choosetheobjectstogatherstatisticsfor.Youcan selectindividualtablesorindexesorbroadenthescopetocollectforentire schemasoreventhecompletedatabase. 3.Schedule:Provideshostcredentialsanddetermineswhenthestatistics willbecollected.Choicesincludeimmediately,ascheduledtime,oranamed maintenancewindow. 4.Review:Showsthecodegeneratedbythewizardandallowsyouto submitthejob.
OracleDatabase10g:Administration WorkshopI14365
OracleDatabase10g:Administration WorkshopI14366
OracleDatabase10g:Administration WorkshopI14367
DynamicPerformanceViews Thereareover300dynamicperformanceviewsintheOracleDatabase10g that providedetailedinformationonsessionandsystemstatistics,fileI/O,andinstance activity. Dynamicperformanceviewsprovideasnapshotofrealtimedata.Asyoucansee fromtheexampleabove,eachaccessofadynamicperformanceviewgivesupto dateresults.Forthestatisticshownabove,theactofselectingtheinformationwith theORDER BY clausecausedsorts (memory) toincrement increment. Dynamicperformancedataisalsononpersistent.Aftertheinstanceisshutdown, theviewsresetandbegincountingupagain.Thatmeansthatperformancedata obtainedfromdynamicperformanceviewsshouldnotbeusedtomake configurationdecisionsuntiltheinstancehasbeenoperationalforawhile. Dynamicperformancemetricsareusuallynotmeaningfulasasinglemeasurement. Theyshouldbeconsideredinthecontextofperformancetrends(increasing, decreasing)oragainstbaselinedata. Formoreinformationondynamicperformanceviews,refertoOracleDatabase: Reference.
OracleDatabase10g:Administration WorkshopI14368
ViewingPerformanceInformation EnterpriseManagersAllMetricspagegroupsmetricsbyfunctionalarea. 1.Expandtheareaofinterest. 2.Clickthelinkforthemetricyouwanttoview. Themetricdetailpagedisplays: Lastknownvalue High andlow watermarkvalues Averagereadings Graphicalrepresentationofthemetricplottedoverauserdefinedtime period
OracleDatabase10g:Administration WorkshopI14369
ReactingtoPerformanceIssues EnterpriseManagersPerformancepageisthebestplacetostartifyounoticea degradationinsystemperformance.ThePerformancepageisdividedintothree mainregions: Host:Servermetricsshowingthenumberofwaitingprocessesandthe amountofmemorypaging ActiveSessions:WaitingandWorking:Anoverviewofinstanceperformance showinggroupedmetricsfrommultiplecategories. categories Ifonecategoryis consumingasignificantportionofthewaittimefortheinstance,that categoryiswheretroubleshootingshouldstart. InstanceThroughput:Informationaboutcurrentsessions,redogeneration, anddatafilereadactivity. Eachofthesesectionscanbedrilledintobyclickingthemetricofinterest.Inthe exampleshownintheslide,usersarespendingasignificantportionoftheirtime waitingonaconfigurationissue.ClicktheConfigurationmeasurementtodrilldown andseewheretheproblemis.
OracleDatabase10g:Administration WorkshopI14370
ReactingtoPerformanceIssues(continued) Drillingdownintotheconfigurationwaittimerevealsthatthemajorityofthewait timeisforspaceintheredologbuffer.Inthiscase,theDBAmustdetermine whethertheproblemiswiththelogbufferitself(needingmorememoryallocated) orwiththeredologfiles(filewritetimemaybetoohighforLGWR tokeepupwith demand). DrillingintotheRunQueuegraphintheHostregionofthePerformancepage revealsthatdiskI/Oishighandhasbeensteadilyclimbing. climbing Afterfurther investigationusingoperatingsystemtoolsyoumightfindthattheredologgroups areonthesamedisksasthedatafiles.
Disk I/O contention is often a performance bottleneck. Oracle suggests: Putting redo log files on separate disks Separating index and data tablespace files
OracleDatabase10g:Administration WorkshopI14371
OracleDatabase10g:Administration WorkshopI14372
OracleDatabase10g:Administration WorkshopI14373
Practice14:MonitoringPerformance Background:Userarecomplainingaboutslowerthannormalperformancefor operationsinvolvingthehumanresourcesandorderentryapplications.Upon questioningothermembersoftheDBAstaffyoufindthatmaintenancewasrecently performed f donsomeof fthe h tables bl belonging b l tothe h HR schema. h Troubleshoot bl h and dmake k changesasappropriatetoresolvetheperformanceproblems. Tasks: Viewoverallinstanceperformance. Detectandrepairunusableindexes. ManuallycollectstatisticsontheHR andOE schemas. Automatestatisticscollectionusingthescheduler. 1 1. Simulateaworkingloadonyourinstancebyrunningthescript $HOME/labs/lab14_01.sql.Expectthisscripttotakeabout30minutesto completesorunitinaseparateterminalwindowandcontinueonwiththelab whileitruns. Note: BecausethisscriptgeneratesafairlyheavyloadintermsofCPUand diskI/OyouwillnoticeresponsetimeforDatabaseControlisslower. SQL>connecthr/hr@orcl Connected. SQL>@$HOME/labs/lab14_01.sql 2.Detectandrepairunusableindexes. a)ConnecttothedatabaseasuserHR andrunthescript $HOME/labs/lab14_02_a.sql. SQL>connecthr/hr@dba10g Connected. SQL>@$HOME/labs/lab14_02_a.sql TableAltered. b)AsuserHR ,attempttoaddanewemployeebyrunningthescript $HOME/labs/lab14_02_b.sql. SQL>connecthr/hr@dba10g Connected. SQL>@$HOME/labs/lab14_02_b.sql INSERTINTOhr.employees h l VALUES(301, (301 'John','JONES', 'J h ' 'JONES' ERRORat t line1: ORA01502:index'HR.EMP_EMP_ID_PK'orpartitionofsuch indexisinunusablestate c)UsingEnterpriseManager,checktoseewhetheranyotherindexesin theHR schemaareunusable. d)Reorganizeanyunusableindexes. e)Repeatstepdfortheremainingunusableindexes indexes.Afterallindexes havebeenreorganized,attempttoaddanewemployeeagainbyrunning the$HOME/labs/lab14_02_b.sql script. SQL>@$HOME/labs/lab14_02_b.sql 1rowcreated. SQL>commit; Commitcomplete.
OracleDatabase10g:Administration WorkshopI14374
Practice14:MonitorPerformance(continued) f)Whydidtheoriginalattempttoinsertarowinstep2.bfail? g)WhatimpactwouldanunusableindexhaveonSELECT statements? h)Wereanyobjectsotherthanindexesmadenotvalidwhenthe employees tablewasmoved?Ifso,whatdoyouneedtodoasan administratortocorrectthem? 3.CollectstatisticsontheHR andOE schemas. 4.AutomatestatisticscollectionsothatstatisticsarecollectedfortheOE and HR schemaseachevening.Remembertocheckyourjobtomorrowmorningto verifythatitsucceeded. 5. Viewoverallinstanceperformance. a)InEnterpriseManagernavigatetothePerformancepageand investigatesystemperformance. b)ClicktheRunQueueLengthmetricintheHostregion.Noticethatthe threemajorindicatorsofsystemperformance(CPU,Memory,andDisk I/O)aredisplayedgraphically.ClicktheDiskI/OUtilizationgraph.For howlongdoestheinstanceretainmetricdataonDiskI/Outilization? c)ReturntotheDatabasePerformancepagebyclickingtheDatabase tabatthetoprightofthepageandselectingPerformance.Drilldown intoUserI/ObyclickingtheUserI/OlabeltotherightoftheActive Sessions:WaitingandWorkingregion.NoticethebargraphlabeledTop FilesbyWaitCount%.Whathappensifyoumoveyourcursoroverone ofthebars? d)SelecttheTopObjectspage.LookatthepiechartlabeledTop ObjectsByWaitCount%.Noticethatasyoumovetheshadedboxonthe timeline(topportionofthepage)theobjectsthatcausedwaitevents duringtheselectedtimeperiodchange.Clickoneoftheobjectnumbers inthelegendbox.Whathappens?
OracleDatabase10g:Administration WorkshopI14375
ServerGeneratedAlerts OracleDatabase10g providesalertsaboutproblemstotheadministratorviathe EnterpriseManagerDatabaseConsole.EnterpriseManagercanbeoptionally configuredtoemailtheadministratoraboutproblemconditionsaswellasdisplay alertinformationontheconsole. Youcanalsosetthresholdsonmanyofthepertinentmetricsforyoursystem. OracleDatabase10gwillproactivelynotifyyouifthedatabasedeviatesfrom normalreadingsenoughtoreachthosethresholds. thresholds Earlynotificationofpotential problemsallowsyoutorespondquickly,andoftenresolveissuesbeforeuserseven noticethem. Afewkeymetricsthatcanprovideearlyproblemnotificationare: AverageFileReadTime(centiseconds) DumpAreaUsed(%) ResponseTime(pertransaction) SQLResponseTime(%) TablespaceUsed(%) WaitTime(%)
Thresholds Thresholdsareboundaryvaluesagainstwhichmonitoredmetricvaluesare compared.Youcanspecifywarningandcriticalthresholdssuchthat,whena monitoredmetricvaluecrossesthosethresholds,analertisgenerated.Thisalertin turnnotifiesyouofimpendingproblems,whichyoucanaddressinatimelymanner. Warningthresholdsaregenerallyusedtoprovideadvancenotificationwhen performancetrendsstarttodeviatefromnormalactivity.Noactionisusually requiredforperformancewarnings, warnings theyaremeanttoalerttheDBAtobegin monitoringthesituationmorecarefully. Criticalalertsshouldbeusedtoindicateproblemsthatrequireimmediateattention. Automatedresponseactionscanbeestablishedtoactivatewhencriticalthresholds arereached. Theadministratorsgoalshouldbetosolveproblemsbeforethecriticalthresholds arereached.
BaselineMeasurements Youmaywantthresholdsforperformancemetricstobebasedondeviationsfrom realtargetperformanceinsteadofabsolutenumbers.Forexample,ifthedatabase wasrunningunderanormalworkloadwithacceptableperformanceonagivenhour ingivenday,youmaywanttodefinethresholdssuchthatyouarewarnedif databaseperformancebecomes10%worsethantheperformanceonthatgiven day,andreceiveacriticalalertifperformancedegradesby25%. Th Create The C t Baseline B li Wizard Wi dallows ll youto t capture t averageperformance f statistics t ti ti for f anygivenhouror,ifyoudonotselectanhour,fortheentire24hourperiod indicatedbytheDatefield.Itwillcalculatewarningandcriticaldeviationsfrom averageperformance. Tocaptureabaseline: 1.InvoketheCreateBaselineWizardfromtheManageMetricspage. 2.Specifyadateandoptionalhourwhenperformanceandworkloadwere normal. 3.Providedefaultwarningandcriticalpercentagedeviationsandclickthe Gobutton. 4.Choosethemetricormetricsyouwanttocapture(thedefaultisto captureabaselinemeasurementforallmetrics).Thresholdvalueswill populateautomaticallyusingthedeviationpercentagesenteredinstep3. Youcancustomizetheseifneeded. needed 5.Afteranydesiredchangeshavebeenmadetothecalculatedthresholds, clicktheOKbutton.
TuningandDiagnosticAdvisors AutomaticDatabaseDiagnosticMonitor:Aserverbasedexpertthatreviews databaseperformanceevery60minutes.ADDMsgoalistodetectpossiblesystem bottlenecksearlyandrecommendfixesbeforesystemperformancedegrades noticeably. SQLTuningAdvisor:ThisadvisoranalyzesanindividualSQLstatementandmakes recommendationsforimprovingitsperformance.Recommendationsmightinclude actionssuchasrewritingthestatement, statement changingtheinstanceconfiguration, configuration or addingindexes.TheSQLTuningAdvisorisnotinvokeddirectly.Insteaditiscalled fromwithinothertools,suchasTopSQLorTopSessions,tohelpoptimizehigh impactSQLstatements. SQLAccessAdvisor:ThisadvisoranalyzesallSQLstatementsissuedwithinagiven periodandsuggeststhecreationofadditionalindexesormaterializedviewsthat willimproveperformance. MemoryAdvisor:Thememoryadvisorisactuallyacollectionofseveraladvisory functionsthathelpdeterminethebestsettingsforthesharedpool,databasebuffer cache,andProgramGlobalArea.Inadditiontotheadvisoryfunctions,thispage providesacentralpointofcontrolforthelargepoolandtheJavapool.
TuningandDiagnosticAdvisors(continued) MeanTimeToRecover(MTTR)Advisor:TheMTTRadvisorassistsyouinsettingthe lengthoftimerequiredforthedatabasetorecoverafteraninstancecrash.MTTRand theuseofthisadvisorwillbecoveredmoreinlaterlessons. lessons SegmentAdvisor:Thisadvisorlooksfortablesandindexesthatareconsumingmore spacethantheyrequire.Theadvisorchecksforinefficientspaceconsumptionatthe tablespaceorschemalevelandproducesscriptstoreducespaceconsumptionwhere possible. UndoManagementAdvisor:TheUndoManagementAdvisorhelpsyoudeterminethe undotablespacesizethatisrequiredtosupportagivenretentionperiod.Undo managementand dthe h useof fthe h advisor d will llbe b covered dinalater l lesson. l
SQLTuningandAccessAdvisors ThegoalofSQLanalysisistohelpyouidentifyhighimpactSQLstatementsand makesuggestionsonhowtoimprovetheirperformance. SQLstatementperformancecanbeimprovedbyaddingorchangingindexing,by providingstagedaggregatedataasmaterializedviews,byrewritingtheSQLtobe moreefficient,andbycorrectingsetupflawssuchasimproperinitialization parameters. ManuallyanalyzingandtuningSQLstatementsisatimeconsumingprocessthat requiressubstantialexpertise.TheSQLtuningandaccesswizardshelpby: MakingiteasiertofindhighimpactSQLstatements RecognizingcommonerrorsinSQLstatementconstruction Recommendingplaceswhereindexesormaterializedviewscouldhelpand informingtheDBAofthecostofaddingthoseobjects
MemoryAdvisors SizingtheSGAtoosmallwillseverelydegradeperformance,butitisoftendifficult toknowhowmuchmemoryisenough.Conversely,mostexpertsagreethatthereis littlevalueinallocatingadditionalmemorytoanyoftheindividualSGAareasifthat memorydoesnothingtoimproveperformance.Infact,byconsumingvaluable memoryresourcesneedlessly,sizingtheSGAtoolargecandegradesystem performancejustasmuchassizingittoosmall. ThememoryadvisorsallowyoutoeasilyfindandsetyourSGAcomponentstothe mostefficientsizes.Eachoftheadvisorspresentstheadministratorwithagraph showingthebenefitofincreasedmemorycontrastedwiththeamountofmemory requiredtoachievethatbenefit.Theadministratorshouldtrytosizethedifferent cacheareassomewherenearthekneeofthecurve(thepointatwhich performancegainseitherleveloutorprovideminimalperformanceimprovement forthecostofthememoryallocation). RemembertobalancetheSGAandPGAneedswiththeoverallsystemmemory requirements.Itdoeslittlegoodtoincreasetheamountofmemoryallocatedtothe instanceifindoingsoyoudrivetheserverintoswapping(usingdisktosimulatereal memory).
SegmentAdvisor Whenrowsaredeletedfromatable,orwhendatawithinarowisupdatedtoa valuethatconsumeslessspacethantheoriginal,thespaceallocatedtothatrowis returnedtothetableforfutureuse. Overtimethisresultsintableswithmorespaceallocatedthanneeded.The segmentadvisorlooksfortablesorindexeswithexcessfreespace,andsuggests waystoreturnthatspacetotherestofthedatabase. Thesegmentadvisorcanberunusingexistingoptimizerstatistics(limitedmode)or canactuallyscanthetablesandindexes(comprehensivemode)tomakethebest recommendations.Theanalysisscopecanbenarrowedtoindividualtablesand indexes,orcancoveranentiretablespace. SegmentAdvisorrecommendationsusuallyrequirethattablepropertiesbe changedtoenablerowmovement.ThiscanbedonethroughEnterpriseManager byopeningtheAdministrationpropertiespage,clickingTables,andeditingthetable youwanttomodify.EnableRowMovementappearsontheOptionstaboftheEdit Tablepage.Alternatively,thefollowingSQLcommandcanbeused: SQL>ALTERTABLEowner.table_name ENABLEROW MOVEMENT;
AutomaticWorkloadRepository Bydefault,every30minutes,thedatabaseautomaticallycapturesstatistical informationfromtheSGA,andstoresitinsidetheAutomaticWorkloadRepository (AWR)intheformofsnapshots.Thesesnapshotsarestoredondiskandretained forsevendays(boththesnapshotintervalandretentionintervalscanbemodified bytheadministratorifdesired). TheAWRcontainshundredsoftables,allbelongingtotheSYSMAN schemaand storedintheSYSAUX tablespace. tablespace OracledoesnotsupportdirectSQLaccesstothe repository.Instead,useEnterpriseManagerorthe DBMS_WORKLOAD_REPOSITORY packagetoworkwiththeAWR.
ManagingtheAWR OpentheAdministrationpropertiespageandclicktheWorkloadRepositorylinkto accesstheAWRsettingspage. AWRsettingsincluderetentionperiod,collectioninterval,andcollectionlevel. Rememberthatdecreasinganyofthesesettingsimpactsthefunctionalityof componentsthatdependontheAWR,includingtheadvisors. Increasingthesettingscanprovideimprovedadvisorrecommendations,butdoes soatthecostofthespacerequiredtostorethesnapshotsandtheperformance expendedcollectingthesnapshotinformation. ConsidersettingcollectionleveltoALL whentuninganewapplication.TheALL settingcollectsSQLexecutionplansandtimingstatisticsthatenhancethe recommendationsoftheSQLadvisors.Whentuningiscomplete,thissettingshould bereturnedtotheTYPICAL setting.
AutomaticDatabaseDiagnosticMonitor(ADDM) Unliketheotheradvisors,theADDMrunsautomaticallyaftereachAWRsnapshot. Eachtimeasnapshotistaken,theADDMdoesananalysisoftheperiod correspondingtothelasttwosnapshots.ADDMproactivelymonitorstheinstance, anddetectsmostbottlenecksbeforetheybecomeasignificantproblem. Inmanycases,ADDMrecommendssolutionsfordetectedproblemsandeven quantifiesthebenefitsfortherecommendations. SomecommonproblemsdetectedbyADDMinclude: CPUbottlenecks PoorOracleNetconnectionmanagement Lockcontention(lockswillbediscussedinalaterlesson) I/Ocapacity UndersizingofOraclememorystructures HighloadSQLstatements HighPL/SQLandJavatime Highcheckpointloadandcause;forexample,smalllogfiles TheresultsofeachADDManalysisarestoredinsidetheAutomaticWorkload Repository,andarealsoaccessiblethroughtheEnterpriseManagerconsole.
Practice15:ProactiveMaintenance Background:Youwanttoproactivelymonitoryourdatabasesothatcommonproblems canbefixedbeforetheyaffectusers. Tasks: Configureyoursystemtoalertyouiftheapplicationtablespacefallsbelow25% freespace. Configureyoursystemtoalertyouiffreememoryintheshared,large,orjava poolsfallsbelow10%. UsetheSegmentAdvisortodetectandcorrectstorageproblems. EstablishabaselinemeasurementfortheWaitTime%metric. 1 Configure 1. C fi yoursystemtoalert l youifthe h USERS tablespace bl f falls ll below b l 25% freespace 2.Configureyoursystemtoalertyouwhensharedpool,largepool,orjavapool freememoryfallsbelow10%. 3.Usethesegmentadvisortodetectandcorrectstorageproblems 4.Monitorthewaittimepercentagetoestablishabaseline.
UndoData Oraclesavestheoldvalue(undodata)whenaprocesschangesdatainadatabase. Itstoresthedataasitexistedbeforebeingmodified.Capturingundodatapermits userstochangetheirminds(rollback).Undoalsosupportsreadconsistentand flashbackqueries. Readconsistentqueriesarequeries,startedbeforeadatachange,thatfinish sometimeafteradatachange.Oracleprovidesresultsconsistentwiththedataasof thetimeaquerystarted. started Forareadconsistentquerytosucceed, succeed theoriginal informationmuststillexistasundoinformation.Aslongastheundoinformationis retained,Oraclecanreconstructdatatosatisfyreadconsistentqueries. Flashbackqueriesarequeriesthatpurposefullyaskforapictureofthedataasit existedatsometimeinthepast.Aslongasundoinformationforthatpasttimestill exists,theflashbackqueriescancompletesuccessfully. Undodataisalsousedtorecoverfromfailedtransactions.Afailedtransaction occurswhenausersessionendsabnormally(possiblyduetonetworkerrorsora failureontheclientmachine)beforetheuserdecidestocommitorrollbackthe transaction.Failedtransactionsmayalsooccurwhentheinstancecrashes.Incase ofafailedtransaction,
UndoData(continued) thesafestbehaviorischoseandOraclereversesallchangesmadebyauser,restoring theoriginaldata. Undoinformationisretainedforalltransactionsatleastuntilthetransactionendsby: Userschangingtheirmind(rollsback) Usersendingatransaction(commits) Usersessionabnormallyterminating(rollsback) Usersessionnormallyterminatingwithanexit(commits) Undoinformationmayberetainedlongerdependingontheamountofdatabase activityandthedatabaseconfiguration.
TransactionsandUndoData Whenatransactionstarts,thattransactionisassignedtoanundosegment. Throughoutthelifeofthetransaction,anychangesmadeduringthetransactionwill copyoriginalvaluesforthechangeddatatotheundosegment.Youcantellwhich transactionsareassignedtowhichundosegmentsbycheckingthedynamic performanceviewv$transaction. Undosegmentsarespecializedsegmentsthatareautomaticallycreatedbythe instanceasneededtosupporttransactions transactions.Likeallsegments, segments undosegmentsare madeupofextentswhichinturnconsistofdatablocks.Undosegments automaticallygrowandshrinkasneeded,actingasacircularstoragebufferfortheir assignedtransactions. Transactionsfillextentsintheirundosegmentextentsuntilatransaction completes,orallspaceisconsumed.Ifanextentfillsupandmorespaceisneeded, thetransactionwillacquirethatspacefromthenextextentinthesegment.Once allextentshavebeenconsumed,thetransactionwilleitherwraparoundbackinto thefirstextent(overwritingundodatathatisnolongerneeded)orrequestthata newextentbeallocatedtotheundosegment(ifunabletowraparoundbecause theundoinformationinthefirstextentisstillrequired).
StoringUndoInformation Undosegmentscanexistonlyinaspecializedformoftablespacecalledanundo tablespace.Whereasadatabasemayhavemanyundotablespaces,eachinstance canopenonlyoneundotablespace. UndosegmentshaveasegmenttypeofTYPE 2 UNDOandarealwaysowned bySYS.Becausethesegmentsactasacircularbuffer,eachsegmentwillhavea minimumoftwoextents.Thedefaultmaximumnumberofextentsdependsonthe databaseblocksizebutisveryhigh(32,765 (32 765foran8Kblocksize). size) Undotablespacesarepermanent,locallymanagedtablespaceswithautomatic extentallocation.Theyaremanagedlikeanyothertablespacewiththeexceptionof recovery.Becauseundodataisrequiredtorecoverfromfailedtransactions(suchas mightoccurwhenaninstancecrashes),undotablespacescanberecoveredonly whiletheinstanceisintheMOUNT state.Recoveryconsiderationsforundo tablespaceswillbecoveredinalaterlesson.
MonitoringUndo Mostofthetimeundoismanagedautomaticallybytheinstancewithlittleneedfor DBAintervention.Afewthingsthatmayrequireadministratorinvolvementinclude: Insufficientspaceforundo UsersreceivingORA-01555 snapshot too old errormessages Undoinformationisalwaysretaineduntilatransactionends.Thatmeansthatif extremelylargeamountsofdataaredeletedorupdated(insertoperationsconsume verylittleundospacebecausetheoriginalimageofinserteddataisanullvalue) withoutperiodicallycommittingthechanges,theundotablespacemustbelarge enoughtocontaintheoriginaldata.Imagineacasewherea50GBtablehadall rowsdeletedwiththecommand: SQL>DELETEFROMreallybigtable; Theundotablespacewouldberequiredtomakeroomfor50GBoforiginal informationjustincasetheuserwhoissuedtheabovestatementchangedhisor hermindandwantedtorollbackthechange.Whentheundotablespacerunsout ofroomforundodata,usersreceiveanerrormessagesuchasthefollowing: ORA01650:unabletoextendrollbacksegment Note: Proactivemonitoring,discussedinanearlierlesson,detectsundotablespace spaceproblemsbeforetheyaffectusers.
MonitoringUndo(continued) Anotherpossibleproblemtheadministratormayencounterwithundoinformation occurswhenaqueryneedstoaccessundoinformationthathasalreadybeen overwritten Thismighthappeninalongrunningorflashbackquery. overwritten. query Whenaquery needsasnapshotofdataasofsometimeinthepast,andreconstructingthat snapshotrequiresundodatathatnolongerexists,thequeryreturnsthefollowing error: ORA01555:snapshottooold
AdministeringUndo OracleDatabase10g recommendstheuseofautomaticundomanagement, configuredbysettingtheUNDO_MANAGEMENT initializationparametertoAUTO. ManualundomanagementissupportedforbackwardscompatibilitywithOracle8i andearlierversions,butrequiresagreatdealmoreDBAinteraction. WithautomaticundomanagementtheDBAmanagesundoatthetablespacelevel, controllingwhichundotablespaceaninstanceuseswiththeUNDO_TABLESPACE initializationparameter. parameter Afterselectingtheundotablespacetheadministrator needonlyworryaboutprovidingsufficientspaceandconfiguringanundoretention interval. WithmanualmanagementtheDBAmustalsoconsider: Segmentsizingincludingmaximumextentsandextentsizing Identifyingandeliminatingblockingtransactions Creatingenoughrollbacksegments(inmanualmodeundosegmentsare knownasrollbacksegments)tohandletransactions Choosingatablespacetocontaintherollbacksegments(undotablespaces areonlyusedwithautomaticundomanagement)
ConfiguringUndoRetention UndoretentionisconfiguredwiththeUNDO_RETENTION initializationparameter. Thisparametersetstheageatwhichundoinformationexpiresandmaybe overwrittenasneeded. Automaticallymanagedundowillattempttoretainundoinformationuntilit expires,butifanactivetransactionneedsspaceintheundotablespace,committed (unexpired)informationwillbeoverwrittenregardlessoftheundoretention settingsratherthanallowatransactiontofail. fail Anundoretentionsettingof0turnsonautomaticundoretentiontuning.Inthis modetheinstanceretainsasmuchundoinformationasneededtosatisfythe longestrunningquery.Iftheundotablespaceistoosmalltosatisfytheundo retentionrequiredbythecurrentlongestrunningquery,automaticundoretention retainsasmuchundoaspossibleusingthecurrentavailablespace(without extendingtheundodatafiles)unlesstheamountofinformationretaineddrops below900seconds(15minutes).Automaticundoretentionkeepsatleast15 minutesofundoinformationifpossiblewithoutgivingaspaceerror.
ConfiguringUndoRetention(continued) Undoinformationisdividedintothreecategories: Uncommittedundoinformation:Supportsacurrentlyrunningtransactionandis requiredifauserwantstorollbackorifthetransactionfailed. failed Uncommitted undoinformationisneverbeoverwritten. Committedundoinformation:Nolongerneededtosupportarunning transaction,butstillneededtosatisfytheundoretentioninterval.Alsoknown asunexpiredundoinformation.Committedundoinformationisretainedwhen possiblewithoutcausinganactivetransactiontofailduetolackofspace. Expiredundoinformation:Nolongerneededtosupportarunningtransaction. Overwrittenwhen h spaceisrequired dby b anactivetransaction.
GuaranteeingUndoRetention Thedefaultundobehavioristooverwritecommittedtransactionsthathavenotyet expiredratherthanallowinganactivetransactiontofailduetolackofundospace. Thisbehaviorcanbechangedbyguaranteeingretention.Withguaranteed retention,undoretentionsettingsareenforcedeveniftheycausetransactionsto fail. RETENTION GUARANTEE isatablespaceattributeratherthananinitialization parameter ThisattributecanbechangedonlywithSQLcommandlinestatements. parameter. statements Thesyntaxtochangeanundotablespacetoguaranteeretentionisshowninthe slide.Toreturnaguaranteedundotablespacetoitsnormalsetting,usethe followingcommand: SQL>ALTERTABLESPACEundotbs1RETENTION NOGUARANTEE; Theretentionguaranteeappliesonlytoundotablespaces.Attemptstosetitona nonundotablespaceresultin: SQL>ALTERTABLESPACEexampleRETENTIONGUARANTEE; ERRORatline1: ORA30044:'Retention'canonlyspecifiedforundo tablespace
SizingtheUndoTablespace Undotablespacesshouldbesizedsothattheycancontaintheoriginalinformation foralltransactions.ClickingtheUndoManagementlinkonEnterpriseManagers Administrationpropertiespagerevealsanoverviewofsystemundoincluding currentsettings,undoconsumptionperminute,andthelengthofthelongest runningqueryobservedduringagiventimeperiod. Datafilesbelongingtoanundotablespacemaybecantoautomaticallyextend whentheyrunoutoffreespace. space Unlikeothertablespaces, tablespaces Oraclerecommendsthat datafilesassociatedwithundotablespacesnothaveautomaticextensionenabled. Whenfirstdeterminingundospacerequirements,youmaywanttoenable automaticextensionofthedatafiles,butafteryouhaveproperlysizedthe tablespaceyoushoulddisableit.Disablingautomaticextensioninanundo tablespacesdatafilespreventsasingleuserfrominadvertentlyconsuminglarge amountsofdiskspacebyneglectingtocommittransactions.
UsingtheUndoAdvisor TheUndoAdvisorisaccessedthroughtheUndoManagementpropertiespage.It providesanestimateoftheundotablespacesizerequiredtosatisfyagivenundo retention. EnterthedesiredretentionperiodandclicktheUpdateAnalysisandGraphbutton. Theanalysissectionoftheadvisordisplaysthetablespacesizerequiredtosupport theretentionperiod. Youcanalsoclickapointonthegraphtoseethetablespacesizerequiredto supporttheselectedperiod. Afteryouhaveselectedanundoretentionperiod,clickOKtoimplementthenew retentionperiod.
Practice16:ManagingUndo Background:Anewversionofyourapplicationincludesseveralreportsbasedonvery longrunningqueries.Configureyoursystemtosupportthesereports Tasks: Calculatetheamountofundospacerequiredtosupportareportthattakestwo daystorun. Resizetheundotablespacetosupporttheretentionperiodrequiredbythenew reports. 1.UsetheUndoAdvisortocalculatetheamountofundospacerequiredto supportareportthat h takes k twodays d torun.What h does d the h analysis l recommend d astheRequired Tablespace Size for New Undo Retention? ______________ 2. Resizetheundotablespacetosupporttheretentionperiod requiredbythenewreports(or1GB,whicheverissmaller).
Locks Beforethedatabaseallowsasessiontomodifydata,thesessionmustfirstlockthe databeingmodified.Alockgivesthesessionexclusivecontroloverthedatasothat noothertransactioncanmodifythelockeddatauntilthelockisreleased. Transactionscanlockindividualrowsofdata,multiplerows,orevenentiretables. OracleDatabase10g supportsbothmanualandautomaticlocking.Automatically acquiredlocksalwayschoosethelowestleveloflockingpossibletominimize potentialconflictswithothertransactions. transactions
LockingMechanism Thelockingmechanismisdesignedtoprovidethemaximumpossibledegreeof dataconcurrencywithinthedatabase.Transactionsthatmodifydataacquirerow levellocksratherthanpageortablelevellocks.Modificationstoobjects(suchas tablemoves)obtainobjectlevellocksratherthanwholedatabaseorschemalocks. Dataqueriesdonotrequirealock,andaquerysucceedsevenifsomeonehas lockedthedata(alwaysshowingtheoriginal,prelockvaluereconstructedfrom undoinformation). information) Whenmultipletransactionsneedtolockthesameresource,thefirsttransactionto requestthelockobtainsit.Othertransactionswaitenqueueuntilthefirst transactioncompletes.Thequeuemechanismisautomaticandrequiresno administratorinteraction. Alllocksarereleasedattheendofatransaction.Transactionsarecompletedwhen acommitorrollbackisissued.Inthecaseofafailedtransaction,thesame backgroundprocessthatautomaticallyrollsbackanychangesfromthefailed transactionreleasesalllocksheldbythetransaction.
DataConcurrency Thelockmechanismdefaultstoafinegrained,rowlevellockingmode.Different transactionscanbeupdatingdifferentrowswithinthesametablewithout interferingwithoneother. Whilethedefaultmodelistolockattherowlevel,OracleDatabase10g supports manuallockingathigherlevelsifneeded: SQL>LOCKTABLEhr.employeesINEXCLUSIVEMODE; Table(s)Locked. Locked Withtheabovestatement,anyothertransactionthattriestoupdatearowinthe lockedtablemustwaitenqueueuntilthetransactionthatissuedthelockrequest completes.EXCLUSIVE isthestrictestlockmode.Otherlockmodesare: ROW SHARE:Permitsconcurrentaccesstothelockedtable,butprohibits sessionsfromlockingtheentiretableforexclusiveaccess ROW EXCLUSIVE:ThesameasROW SHARE,butalsoprohibitslockingin SHARE mode.ROW EXCLUSIVE locksareautomaticallyobtainedwhen updating,inserting,ordeletingdata. SHARE:Permitsconcurrentqueriesbutprohibitsupdatestothelocked table.ASHARE lockisrequired(andautomaticallyrequested)tocreatean indexonatable.
DataConcurrency(continued) SHARE ROW EXCLUSIVE:Usedtoqueryawholetableandtoallowothersto queryrowsinthetable,butprohibitsothersfromlockingthetableinSHARE modeorupdatingrows EXCLUSIVE:Permitsqueriesonthelockedtablebutprohibitsanyother activityonit.Anexclusivelockisrequiredtodropatable. Likeanyrequestforalock,manuallockstatementswaitenqueueuntilallsessionsthat eitheralreadyhavelocks,orhavepreviouslyrequestedlocks,releasetheirlocks.The LOCK commandacceptsaspecialargumentthatcontrolsthewaitingbehavior, NOWAIT. NOWAIT returnscontroltoyouimmediatelyifthespecifiedtableisalreadylockedby anothersession. SQL>LOCKTABLEhr.employeesINSHAREMODENOWAIT; LOCKTABLEhr.employeesINSHAREMODENOWAIT * ERRORatline1: ORA00054:resourcebusyandacquirewithNOWAITspecified
EnqueueMechanism Requestsforlocksareautomaticallyqueued.Assoonasthetransactionholdinga lockcompletes,thenextsessioninlinereceivesthelock. Theenqueuemechanismtrackstheorderinwhichlockswererequestedandthe requestedlockmode. Sessionsthatalreadyholdalockcanrequesttoconvert thatlockwithouthavingto gototheendofthequeue.Forexample,supposeasessionholdsasharedlockona table Thesessioncanrequesttoconvertthesharedlocktoanexclusivelock. table. lock As longasnooneelsealreadyhasanexclusiveorsharedlockonthetable,thesession holdingthesharedlockwillbegrantedanexclusivelockwithouthavingtowaitin thequeueagain.
LockConflicts Lockconflictsoccuroften,butareusuallyresolvedthroughtimeandtheenqueue mechanism.Incertainrarecasesalockconflictmayrequireadministrator intervention.Inthecaseabove,transaction2obtainsalockonasinglerowat 9:00:00andneglectstocommit,leavingthelockinplace.Transaction1attemptsto updatetheentiretable,requiringalockonallrows,at9:00:05.Transaction1is blockedbytransaction2untiltransaction2commitsat16:30:01. Theuserattemptingtoperformtransaction1wouldalmostcertainlycontactthe administratorforhelpinthiscase,andtheDBAwouldhavetodetectandresolve theconflict.
PossibleCausesofLockConflicts Themostcommoncauseoflockconflictisanuncommittedchange,buttherearea fewotherpossiblecauses: Longrunningtransactions.Manyapplicationsusebatchprocessingto performbulkupdates.Thesebatchjobsareusuallyscheduledfortimesof lowornouseractivity,butinsomecasesmaynothavefinishedormaytake toolongtorunduringthelowactivityperiod.Lockconflictsarecommon whentransactionandbatchprocessingarebeingperformedsimultaneously simultaneously. Unnecessarilyhighlockinglevels.Notalldatabasessupportrowlevel locking(Oracleaddedsupportforrowlevellocksin1988withrelease6). Somedatabasesstilllockatthepageortablelevel.Developerswriting applicationsintendedtorunonmanydifferentdatabasesoftenwritetheir applicationwithartificiallyhighlockinglevelssothattheOracledatabase behavessimilartotheselesscapabledatabases.DevelopersnewtoOracle alsosometimesunnecessarilycodeinhigherlockinglevelsthanrequiredby OracleDatabase10g.
ResolvingLockConflicts Toresolvealockconflict,thesessionholdingthelockmustreleaseit.Thebestway tohavethesessionreleasethelockistocontacttheuserandaskthatthe transactionbecompleted. Inanemergency,itispossiblefortheadministratortoterminatethesession holdingthelockbyclickingtheKillSessionbutton.Keepinmindthatwhena sessioniskilledallworkwithinthecurrenttransactionislost(rolledback).Users whosesessionarekilledmustloginagainandredoallworksincetheircommit commit. Userswhosesessionshavebeenkilledwillreceivethefollowingerrorthenexttime theytrytoissueanSQLstatement: ORA00028:yoursessionhasbeenkilled
Practice17:LocksintheOracleDatabase Background:TheHelpdeskjustreceivedacallfromSusanMavris,anHRrepresentative complainingthatthedatabaseisfrozen.Uponquestioningtheuser,youfindthatshe wastrying y gtoupdate p JohnChensp personnelrecordwithhisnewphone p number, ,but whensheenteredthenewdatahersessionfrozeandshecouldntdoanythingelse. Tasks: Detectwhichsessioniscausingthelockingconflict. Resolvetheconflictinfavorofthesessionthatcomplained. 1.SetupalockconflictbyrunningtheSQLscript $HOME/labs/lab17_01.sql.Donotworryifthesessionseemsto h hangthis thi i isth thecondition diti wearetrying t i t tocreate. t SQL>@$HOME/labs/lab17_01.sql 2.Detectwhichsessioniscausingthelockingconflict. 3.Resolvetheconflictinfavorofthesessionthatcomplained.
BackupandRecoveryIssues TheDBAsgoalistoensurethedatabaseisopenandavailablewhenusersneedit. Insupportofthatgoal,theDBA,usuallyworkingwiththesystemadministrator: Anticipatesandworksagainstcommoncausesoffailure Workstoincreasethemeantimebetweenfailure,ensuringhardwareisas reliableaspossible,thatcriticalcomponentsareprotectedbyredundancy, andthatoperatingsystemmaintenanceisperformedinatimelymanner. OracleprovidesadvancedconfigurationoptionstoincreaseMTBFincluding: RealApplicationClusters(discussedinanothercourse) Streams(discussedinanothercourse) Decreasesthemeantimetorecover,practicingrecoveryproceduresin advanceandconfiguringbackupssotheyarereadilyavailablewhenneeded Minimizesthelossofdata.DBAswhofollowacceptedbestpracticescan configuretheirdatabasessothatnocommittedtransactioniseverlost. Toolstoassistinguaranteeingthisinclude: Archivedredologs(discussedlaterinthislesson) StandbydatabasesandOracleDataGuard(discussedinanother course)
CategoriesofFailures Failurescanbedividedintoafewbroadcategories: Statementfailure:Asingledatabaseoperation(select,insert,update, delete)fails. Userprocessfailure:Asingledatabasesessionfails. Networkfailure:Connectivitytothedatabaseislost. Usererror:Ausersuccessfullycompletesanoperation,buttheoperation wasincorrect(droppingatable, table enteringincorrectdata) data). Instancefailure:Thedatabaseinstanceshutsdownunexpectedly. Mediafailure:Oneormoreofthedatabasefilesarelost(deleted,failed disk).
UserProcessFailure Userswhoareabnormallydisconnectedfromtheinstancemayhaveuncommitted workinprogressthatneedstobecleanedup.ThePMONbackgroundprocess periodicallypollsserverprocessestoensurethattheirsessionsarestillconnected. IfPMONfindsaserverprocesswhoseuserisnolongerconnected,PMONrecovers fromanyongoingtransactions,includingrollingbackuncommittedchangesand releasinganylocksheldbythefailedsession. DBAinterventionshouldnotberequiredtorecoverfromuserprocessfailurebut theadministratorshouldwatchfortrends.Oneortwousersdisconnecting abnormallyisnotacauseforconcern.Asmallpercentageofuserprocessfailuresis normal.Consistentandsystemicfailuresindicateotherproblems.Alarge percentageofabnormaldisconnectsmayindicateaneedforusertraining(teach themtologoutratherthanjustterminatingtheirprograms).Itmayalsobe indicativeofnetworkorapplicationproblems.
UserErrors Usersmayinadvertentlydeleteormodifydata.Whenthathappens,theDBAmay needtoassisttheuserinrecoveringfromtheerror.Iftheuserhasnotyet committedorexitedtheirprogram,theycansimplyrollbacktheiroperation.Ifthe userhasalreadycommittedthechanges,flashbackqueriescanbeusedto determinewhatthepreviousvalueswere(andthenthedatacanbeupdatedto restoretheoriginalinformation.) SQL>SELECTsalaryFROMemployeesWHERE employee_id=100; SALARY 25 SQL>SELECTsalaryFROMemployees 2ASOFTIMESTAMP(SYSTIMESTAMPINTERVAL10minute) 3WHEREemployee_id=100; SALARY 24000 Incaseswhereflashbackqueriesarenotpossiblebecausetheundoretention periodhasbeenexceeded,theDBAmaystillbeabletorecovertheoriginal informationthroughtheuseofOracleLogMiner.
UserErrors(continued) OracleLogMinerallowsyoutoqueryyouronlineredologsandarchivedredologs throughanSQLinterface.Transactiondatamaypersistinonlineredologslongerthanit doesinundo undo,andifyouhaveconfiguredarchivingofredoinformationredopersists untilyoudeletethearchivedfiles. OracleLogMinerisdiscussedintheOracleDatabase10g:AdministrationWorkshopII courseandintheOracleDatabase:Utilities referencemanual. Userswhodroptablescanrecoverthosetablesfromtherecyclebinbyflashingthe tablebacktobeforethedrop. SQL>DROPTABLEhr.job_history; Table bl d dropped. d SQL>SELECTCOUNT(*)FROMhr.job_history; SELECTCOUNT(*)FROMhr.job_history * ERRORatline1: ORA00942:tableorviewdoesnotexist SQL>FLASHBACKTABLEhr.job_historyTOBEFOREDROP; Flashbackcomplete. SQL>SELECTCOUNT(*)FROMhr.job_history; COUNT(*) 10 Iftherecyclebinhasalreadybeenpurged,oriftheuserdroppedthetablewiththe PURGE option,thedroppedtablecanstill berecoveredbyusingpointintimerecovery (PITR)ifthedatabasehasbeenproperlyconfigured. PITRisdiscussedintheOracleDatabase10g:AdministrationWorkshopIIcourseandin theOracleDatabase:Backup pandRecovery yAdvancedUsersGuide.
InstanceFailure Instancefailureoccurswhenthedatabaseinstanceisshutdownbefore synchronizingalldatabasefiles.Aninstancefailurecanoccurduetohardwareor softwarefailure,orthroughtheuseoftheemergencyshutdowncommands SHUTDOWN ABORT andSTARTUP FORCE. Administratorinvolvementinrecoveringfrominstancefailureisusuallylimitedto restartingtheinstanceandworkingtopreventfutureoccurrences.
InstanceRecovery TheOracleDatabase10g automaticallyrecoversfrominstancefailure.AlltheDBA needstodoisstarttheinstancenormally.Theinstancewillmountthecontrolfiles andthenattempttoopenthedatafiles.Whenitdiscoversthedatafileshavenot beensynchronizedduringshutdown,theinstanceusesinformationcontainedinthe redologgroupstorollthedatafilesforwardtothetimeofshutdownandthen (becausetheundotablespacewasalsorolledforward)rollbackanyuncommitted transactions. transactions
PhasesofInstanceRecovery Inorderforaninstancetoopenadatafile,thesystemchangenumber(SCN) containedwithinthedatafilesheadermustmatchthecurrentSCNstoredinthe databasescontrolfiles. Ifthenumbersdonotmatch,theinstanceappliesredofromtheonlineredologs, sequentiallyredoingtransactionsuntilthedatafilesareuptodate.Afteralldata fileshavebeensynchronizedwiththecontrolfiles,thedatabaseisopenedand usersmaynowlogin. in Whenredowasapplied,all transactionswereappliedtobringthedatabaseupto thestateasofthetimeoffailure.Thisusuallyincludestransactionsthatwerein progressbuthadnotyetbeencommitted.Afterthedatabasehasbeenopened, thoseuncommittedtransactionsarerolledback.Attheendoftherollbackphaseof instancerecovery,thedatafileswillcontainonlycommitteddata.
TuningInstanceRecovery Transactioninformationisalwaysrecordedintheredologgroupsbeforethe instancereturnscommit complete foratransaction.Theinformationinthe redologgroupsguaranteesthatthetransactioncanberecoveredincaseofa failure.Thatsametransactioninformationalsoneedstobewrittentothedatafile. Thedatafilewriteusuallyhappenssometimeaftertheinformationisrecordedin theredologgroupsbecausethedatafilewriteprocessismuchslowerthanthe redowrites(randomwritesfordatafilesareslowerthanserialwritesforredolog files). Tokeeptrackofwhathasalreadybeenwrittentothedatafiles,thedatabaseuses checkpoints.Acheckpointguaranteesthatasofthetimethecheckpointoccurs,all datauptoacertainSCNisrecordedinthedatafile.Transactionsafterthe checkpointpositionmayormaynothaveyetbeenwrittentotheappropriatedata file.Inthegraphicabove,thestripedblockshavenotyetbeenwrittentodisk. Thetimerequiredforinstancerecoveryisthetimerequiredtobringthedatafiles fromtheirlastcheckpointtothelatestSCNrecordedinthecontrolfile.The administratorcontrolsthattimebysettingaMTTRtarget(inseconds)andthrough thesizeoftheredologgroups. Thedistancebetweenthecheckpointpositionandtheendoftheredologgroup canneverbemorethan90%ofthesmallestredologgroup.
MTTRAdvisor ClicktheMTTRAdvisorfromEnterpriseManagersAdvisorCenterforassistancein settingtheMTTRtarget.Theadvisorallowsyoutospecifyadesiredmeantimeto recoverandtranslatesthatintosettingsfortheFAST_START_MTTR_TARGET initializationparameter. Thedefaultsettingof0disablestheMTTRtarget,reducingthelikelihoodthatwrites totheloggroupswillwaitonwritestothedatafiles.Thisshouldbesettoavalue thatsupportstheservicelevelagreementforyoursystem. system SettingtheMTTRtargettoosmallmeansthatwritestotheloggroupswaitfor writestothedatafiles(impactingperformance).SettingtheMTTRtargettoolarge meansthattheinstancetakeslongertorecoverafteracrash.
ConfiguringforRecoverability Toprovidethebestprotectionforyourdatayoushould: Scheduleregularbackups.Mostmediafailuresrequirethatyourestorethe lostordamagedfilefrombackup. Multiplexcontrolfiles.Allcontrolfilesassociatedwithadatabaseare identical.Recoveringfromthelossofsinglecontrolfileisnotdifficult. Recoveringfromthelossofall controlfilesismuchmorechallenging.Guard againstlosingallcontrolfilesbyhavingmultiplecopies(atleastthree). three) Multiplexredologgroups.Torecoverfrominstanceormediafailure,redo loginformationisusedtorolldatafilesforwardtothelastcommitted transaction.Ifyourredologgroupsrelyonasingleredologfile,thenthe lossofthatfilemeansdataislikelytobelost.Ensurethereareatleasttwo copiesofeachredologgroup. Retainarchivedcopiesofredologs.Ifafileislostandrestoredfrombackup, theinstancemustapplyredoinformationtobringthatfileuptothelatest SCNcontainedinthecontrolfile.Thedefaultsettingistooverwriteredo informationonceithasbeenwrittentothedatafiles.Yourdatabasecanbe configuredtoretainredoinformationinarchivedcopiesoftheredologs. ThisisknownasplacingthedatabaseinARCHIVELOG mode.
ControlFiles Thecontrolfileisasmallbinaryfilethatdescribesthestructureofthedatabase.It mustbeavailableforwritingbytheOracleserverwheneverthedatabaseis mountedoropen.Withoutthisfile,thedatabasecannotbemountedandrecovery orrecreationofthecontrolfilewillberequired.Yourdatabaseshouldhavea minimumoftwocontrolfiles(threeispreferred)ondifferentdiskstominimizethe impactofalossofonecontrolfile. IfyourdatabasewascreatedwiththeDBCA, DBCA youshouldalreadyhavethreecontrol files. Lossofasinglecontrolfilewillcausetheinstancetofailbecauseallcontrolfiles mustbeavailableatalltimes,butrecoveryisasimplematterofcopyingoneofthe othercontrolfiles.Lossofallcontrolfilesisslightlymoredifficulttorecoverfrom, butnotusuallycatastrophic.Recoveryfromlossofcontrolfileswillbediscussedin alaterlesson.
RedoLogFiles Redologgroupsaremadeuponeormoreredologfiles.Eachlogfilewithinagroup isaduplicateoftheothers.Oraclerecommendsthatredologgroupshaveatleast twofilespergroup,withthefilesdistributedonseparatedisks/controllerssothat nosingleequipmentfailurewilldestroyanentireloggroup. Lossofanentireloggroupisoneofthemostseriouspossiblemediafailures becauseitcanresultinlossofdata.Lossofasinglememberwithinamultiple memberloggroupistrivial, trivial andwillnotaffectdatabaseoperationotherthan causinganalerttobepublishedinthealertlog.Recoveryfromlossofasinglelog filewillbediscussedinalaterlesson.Recoveryfromlossofanentireloggroup requiresadvancedrecoverytechniquesandisdiscussedinOracleDatabase10g: WorkshopII. Rememberthatredologsheavilyinfluencedatabaseperformancebecausea commitcannotcompleteuntilthetransactioninformationhasbeenwrittentothe logs.Youshouldplaceyourredologfilesonyourfastestdisksservedbyyourfastest controllers.Ifpossible,donotplaceanyotherdatabasefilesonthesamedisksas yourredologfiles.Becauseonlyonegroupiswrittentoatagiventime,thereisno harminhavingmembersfromseveralgroupsonthesamedisk.
MultiplexingtheRedoLog Youcanmultiplexyourredologbyaddingamembertoanexistingloggroup.Performthe followingstepstoaddamembertoaredologgroup,thiscanbedonewhenthedatabase isopenwithnoimpactonuserperformance: 1. NavigatetotheRedoLogGroupspage. 2. SelectagroupandclicktheEditbutton,orclickthegroupnumber link.TheEditRedoLogGrouppageappears. 3. IntheRedoLogMemberssection,clickAdd.TheAddRedoLog Memberpageappears. 4 4. Enterthefilenameandthefiledirectory. directory ClickOK. OK Note: Itisrecommendedthatyoustoremembersonseparate drivestoprotectagainsttotallossoftheredologentriesintheeventofadisk failure. Repeatthesestepsforeveryexistinggroup. Whenyouaddtheredologmembertoagroup,thegroupsstatusismarkedINVALID. Thisistheexpectedstatebecauseamemberofthegrouphasnotyetbeenwrittento. Whenalogswitchoccursandtheinvalidgroupbecomesthecurrentgroup,thestatus changestoCURRENT.
ArchivedLogFiles Theinstancetreatstheonlineredologgroupsasacircularbufferinwhichtostore transactioninformation,fillingonegroupandthenmovingontothenext.Afterall groupshavebeenwrittento,theinstancebeginsoverwritinginformationinthefirst loggroup. Toconfigureyourdatabaseformaximumrecoverability,youshouldinstructthe databasetomakeacopyoftheonlineredologgroupbeforeallowingittobe overwritten Thesecopiesareknownasarchivedlogs overwritten. logs.Tofacilitatethecreationof archivelogsyoushould: 1.Specifyanamingconventionforyourarchivedlogs. 2.Specifyadestinationordestinationsforstoringyourarchivedlogs. 3.PlacethedatabaseinARCHIVELOG mode. Note: ThedestinationmustexistpriortoplacingthedatabaseinARCHIVELOG mode.Whenadirectoryisspecifiedasadestination,thereshouldbeatrailingslash attheendofthedirectoryname.
ArchivedLogFileNamingandDestinations ConfigurelogfilenamingandestinationsbyclickingConfigureRecoverySettings fromtheMaintenancepage. Eacharchivelogfilemusthaveauniquenametoavoidoverwritingolderlogfiles. Youspecifythenamingformatasshowabove.Tohelpcreateuniquefilenames, OracleDatabase10g allowsseveralwildcardcharactersinthenameformat: %s:Includesthelogsequencenumberaspartofthefilename %t:Includesthethreadnumberaspartofthefilename %r:ResetlogsID.Ensuresthatthearchivelogfilenameremainsuniqueeven aftercertainadvancedrecoverytechniquesthatresetlogsequencenumbers %d:IncludesthedatabaseIDaspartofthefilename Theformatmust include%s,%t,and%r.Theuseof%disoptionalbutitshouldbe includedifmultipledatabasessharethesamearchivelogdestination. Archivedlogfilescanbewrittentoasmanyastendifferentdestinations. Destinationsmaybelocal(adirectory)orremote(anOracleNetaliasforastandby database).Localdestinationsshouldendinaslash(/),orabackslash(\)ifusing Windows.
ArchiveLogFileNamingandDestinations (Continued) Thedefaultdestination(number10)sendsarchivedlogfilestoalocationdetermined bytheDB_RECOVERY_FILE_DEST initializationparameter. DB RECOVERY FILE DEST isalsoknownastheflashrecoveryarea.This DB_RECOVERY_FILE_DEST destinationisvisibleatthebottomoftheConfigureRecoverySettingspropertiespage astheFlashRecoveryAreaLocation.Ifyoudonotwantarchivessenttothislocation, simplydeleteUSE_DB_RECOVERY_FILE_DEST. InordertochangerecoverysettingsyoumustbeconnectedasSYSDBA orSYSOPER.
ARCHIVELOG Mode PlacingthedatabaseinARCHIVELOG modepreventsredologsfrombeing overwrittenuntiltheyhavebeenarchived,andisthelaststepinconfiguringthe databaseforarchivingredoinformation. TheSQLcommandtoplacethedatabaseinARCHIVELOG modeis: SQL>ALTERDATABASEARCHIVELOG; ThiscommandcanbeissuedonlywhilethedatabaseisintheMOUNT state,sothe instancemustberestartedtocompletethislaststep. step Youwillbeaskedfor operatingsystemanddatabasecredentialsduringtherestartofthedatabase.The databasecredentialsmust beforauserwithSYSDBA privileges. Aftertheinstanceisrestarted,thechangesyoumadetothearchiveprocesses,log format,andlogdestinationswilltakeeffect. WiththedatabaseinNOARCHIVELOG mode(thedefault),recoveryispossible onlyupuntilthetimeofthelastbackup.Alltransactionsmadeafterthatbackup arelost. InARCHIVELOG mode,recoveryispossibleupuntilthetimeofthelastcommit. MostproductiondatabasesareruninARCHIVELOG mode.
Practice18:BackupandRecoveryConcepts Background:Yourdatabaseisreadytomovefromtestanddevelopmentinto production.Configureyourdatabasetoreducethechancesoffailureordataloss. Tasks: Verifythatyouhavethreecontrolfilestoensuredualredundancy. Verifythatallredologgroupshavetwomemberstoensureredundancy. PlaceyourdatabaseinARCHIVELOG mode. Ensurethatredundantarchivelogfilesarecreated. 1.Verifythatyouhavethreecontrolfilestoensuredualredundancy. 2.Addadditionalmemberstoeachloggrouptoensureredundancy. 3 Place 3. Pl yourdatabase d b in i ARCHIVELOG mode. d Configure C fi redundant d d archive hi logdestinations,onetotheflashrecoveryarea,theotherto /u01/app/oracle/archive.
OracleDatabase10g:Administration WorkshopI19457
Terminology Awholedatabasebackupincludesalldatafilesandatleastonecontrolfile(remember thatallcontrolfileswithinadatabaseareidentical). Partialdatabasebackupsmayincludezeroormoretablespaces,zeroormoredatafiles, andmayormaynotincludeacontrolfile. Fullbackupsmakeacopyofeverydatablockwithinthefilesbeingbackedupthat containsdata. Incrementalbackupsmakeacopyofalldatablocksthathavechangedsincesome previousbackup.OracleDatabase10g supportstwolevelsofincrementalbackup(01).A level0orbaselinebackupisequivalenttoafullbackupandcontainsalldatablocks. blocks A level1incrementalbacksupalldatabaseblockschangedsincethelevel0backup.To restoreusingincrementalbackups,thebaselinebackupmustfirstberestored,andthen theincremental. Offlinebackups(alsoknownasconsistentbackups)aretakenwhilethedatabaseisnot open.Theyareconsistentbecauseatthetimeofthebackup,theSCNdatafileheaders matchestheSCNinthecontrolfiles. Onlinebackups(alsoknownashotorinconsistentbackups)aretakenwhilethedatabase isopen.Thebackupsareinconsistentbecausewiththedatabaseopenthereisno guaranteethatthedatafilesaresynchronizedwiththecontrolfiles.Inconsistentbackups requirerecoveryinordertobeused.
OracleDatabase10g:Administration WorkshopI19458
Terminology(continued) Imagecopiesareduplicatesofdataorarchivedlogfiles(similartosimplycopyingthefiles usingoperatingsystemcommands). Backupsetsarecopiesofoneormoredataorarchivedlogfiles.Withbackupsets,empty datablocksarenotstored,therebycausingbackupsetstouselessspaceondiskortape. Backupsetscanbecompressedtofurtherreducethespacerequirementsofthebackup. Imagecopiesmustbebackeduptodisk.Backupsetscanbesenttodiskordirectlyto tape. Theadvantageofcreatingabackupasanimagecopyisimprovedgranularityofthe restoreoperation operation.Withanimagecopyonlythefileorfilesneedtoberetrievedfrom tape.Withbackupsetstheentirebackupsetmustberetrievedfromtapebeforeyou extractthefileorfilesthatareneeded. Theadvantageofcreatingbackupsasbackupsetsisbetterspaceusage.Mostdatabases contain20%ormoreemptyblocks.Imagecopiesbackeverysingledatablockup,evenif thedatablockisempty.Backupsetssignificantlyreducethespacerequiredbythe backup.Inmostsystemstheadvantagesofbackupsetsoutweightheadvantagesof imagecopies. DatabasesinNOARCHIVELOG modemustperformoffline,full,wholedatabasebackups. DatabasesinARCHIVELOG modehaveaccesstothefullrangeofbackupoptions.
OracleDatabase10g:Administration WorkshopI19459
RecoveryManager(RMAN) RecoveryManageristhecomponentofOracleDatabase10g thatisusedtoperform backupandrecoveryoperations.RMANcantakeconsistentandinconsistentbackups, performincrementalorfullbackups,andbackupeitherthewholedatabaseoranportion ofit. RMANusesitsownpowerfuljobcontrolandscriptinglanguage,aswellasapublished APIthatinterfacesRMANwithmanypopularbackupsoftwaresolutions. RMANcanstorebackupsondiskforquickrecovery,orplacethemontapeforlongterm storage.InorderforRMANtostorebackupsontape,aninterfacetothetapedevice knownasamediamanagementlayer(MML)mustbeconfigured. configured EnterpriseManagersuppliesagraphicalinterfacetothemostcommonlyusedRMAN functionality.AdvancedbackupandrecoveryoperationsareaccessiblethroughRMANs commandlineclient.FormoreinformationonadvancedRMANcapabilities,refertothe OracleDatabase10g:AdministrationWorkshopII orOracleBackupandRecovery AdvancedUsersGuide.
OracleDatabase10g:Administration WorkshopI19460
ConfiguringBackupSettings NavigatetotheMaintenancepageandclickConfigureBackupSettings.Fromthis propertypageyoumanagethepersistentbackupsettingsthatwillbeusedforcreating backups.Thereareseparatesettingsfordiskandtape.Tapesettingsdependonthe mediamanagementlayercapabilities.Disksettingsinclude: Parallelism:Howmanyseparatestreamsofbackupinformationdoyouwantto create.Thebestsettingforparallelismdependsonyourhardware.AsingleCPU, singlediskcontroller,orsinglediskserverwouldnotbenefitfromconducting parallelbackups.Ashardwareresourcesincrease,theappropriatedegreeof parallelismalsoincreases. increases Diskbackuplocation:Whereshouldbackupsbestored?ThedefaultistheFlash RecoveryArea.Ifyouchangethis,clickTestDiskBackuptoverifythatRMANcan writetothenewlocation. Diskbackuptype:Selectimagecopy,backupset,orcompressedbackupset. ClicktheBackupSettabtosetthemaximumsizeofbackupsetfiles(backupsetscanbe dividedfurtherifneededforeasierarchiving). HostcredentialsarerequiredforEnterpriseManagertosaveanychangestothebackup settings.
OracleDatabase10g:Administration WorkshopI19461
ConfiguringBackupSettings(continued) ClickthePolicytabto: AutomaticallybackupthecontrolandSPFILEwitheachbackup.Youarealsogiven theopportunitytospecifyalocationforthesebackupsifyoudontwantthemto gototheflashrecoveryarea. Optimizebackupsbynotbackingupfilesthatexactlymatchafilealreadypartof theretainedbackups.Thissettingallowsyoutoskipreadonlyandofflinedata files. Enableblockchangetrackingandspecifyalocationforthetrackingfile.Ifyou intendtocreateincrementalbackupsthissettingcandecreasethetimerequired tochoosewhichblockstoincludeintheincrementalbackup. Excludetablespacefromawholedatabasebackup.Someadministratorschoose nottobackuptablespacescontainingdataorobjectsthatcaneasilyberecreated (suchasindexesordatathatisbatchloadedfrequently). Retentionpolicy:HowlongshouldRMANkeepyourbackups?Ifyouareusingthe flashrecoveryareatostorebackups,RMANautomaticallydeletesoldbackupsto makeroomfornewones(iftheretentionpolicyallowsit).Bydefaultonlythelast backupisretained.Theretentionpolicycanbespecifiedasanumberofbackups oranumberofdays.
OracleDatabase10g:Administration WorkshopI19462
SchedulingBackups:Strategy ClickScheduleBackupfromtheBackup/RecoverysectionoftheMaintenanceproperties page.SelecteithertheOraclesuggestedbackupstrategyoryourowncustomized strategy.TheOraclesuggestedbackupstrategymakesaonetimewholedatabase, baselineincrementallevel0,onlinebackup,andthenschedulesincrementallevel1 backupsforeachfollowingday. ByselectingCustomized,yougainaccesstoawiderrangeofconfigurationoptions.Select whichobjectsyouwanttobackupthewholedatabase(thedefault)orindividual tablespaces,datafiles,archivelogs,oranyOraclebackupscurrentlyresidingondisk(to movethemtotape) tape).
OracleDatabase10g:Administration WorkshopI19463
SchedulingBackups:Options Choosefullorincrementallevelbackups.Ifperformingafulldatabasebackup,youcan selectUseasthebaseofanincrementalbackupstrategytomakethefulldatabase backupanincrementallevel0.Ifusingimagecopies,selectingtheRefreshthelatest datafilecopyondisktothecurrenttimeusingtheincrementalbackupcheckbox updatestheexistingbackupratherthancreatinganewimagecopy. Selectonlineorofflinebackupmodes.RememberthatNOARCHIVELOG mode databasesmustperformofflinebackups. Youmayalsochoosetobackuparchivedlogfilesanddeletethemfromdiskoncethey aresuccessfullybackedup. up Clickthedeleteobsoletebackupstoremoveanybackupsthatfalloutsidetheretention policyyouconfiguredearlier.RMANwillautomaticallyremoveobsoletebackupsifyou arebackinguptotheflashrecoveryarea. Selectthemaximumnumberoffilesyouwanttoplaceineachbackupset.Limitingthe numberoffilespersetmayspeedtherestoreprocessbecausethesizeofthebackupset thatmustbereturnedfromtapewillbesmallerthanifasinglebackupsetcontainingall thedatafilesforthedatabasewerecreated.
OracleDatabase10g:Administration WorkshopI19464
OracleDatabase10g:Administration WorkshopI19465
OracleDatabase10g:Administration WorkshopI19466
OracleDatabase10g:Administration WorkshopI19467
BackupControlFiletoTrace ClickControlfilesintheStoragesectionoftheAdministrationpropertiespagetomanage yourdatabasescontrolfiles.Controlfileshaveanadditionalbackupoption;theymaybe backeduptotrace.AcontrolfiletracebackupcontainstheSQLstatementrequiredtore createthecontrolfilesintheeventthatallcontrolfilesarelost. Althoughitisveryunlikelythataproperlyconfigureddatabase,withmultiplecopiesof thecontrolfileplacedonseparatedisksandseparatecontrollers,wouldloseallcontrol filesatthesametime,itispossibleandthereforetheadministratorshouldbackthe controlfileuptotraceaftereachchangetothephysicalstructureofthedatabase(adding tablespacesordatafiles files,addingadditionalredologgroups). groups) TracecopiesofthecontrolfilecanbecreatedusingEnterpriseManager(asshowabove) byclickingControlfilesfromtheAdministrationpropertiespage,orwiththeSQL command: SQL>ALTERDATABASEBACKUPCONTROLFILETOTRACE; ThetracebackupiscreatedinthelocationspecifiedbytheUSER_DUMP_DEST initializationparameterwithafilenamesuchassid_ora_pid.trc.
OracleDatabase10g:Administration WorkshopI19468
OracleDatabase10g:Administration WorkshopI19469
ManageBackups ClickManageCurrentBackupsfromtheMaintenancepropertiespagetomanageyour existingbackups.Fromthispageyoucanseewhenabackupwascompleted,whereitwas created(diskortape),andifitisstillavailable. AtthetopoftheManageCurrentBackupspageyoucanseefourbuttonsthatallowyou toworkwithexistingbackups. CatalogAdditionalFiles:AlthoughRMAN(workingthroughEnterpriseManager)is therecommendedwaytocreatebackups,itispossibletocreateimagecopiesin otherways(forexample,byshuttingdownthedatabaseandcopyingthefiles). RMANandEnterpriseManagerwillnotknowaboutthosebackupsunlessyouadd themtothecatalog. CrosscheckAll:RMANcanautomaticallydeleteobsoletebackups,butyoucanalso deletethembyusingoperatingsystemcommands.Ifyoudeleteabackupoutside ofRMAN,thecatalogwillnotknowitismissinguntilyouperformacrosscheck betweenthecatalogandwhatisreallythere. DeleteAllObsolete:Deletesbackupsolderthantheretentionpolicy DeleteAllExpired:Deletesthecataloglistingforanybackupsthatwerenotfound whenthecrosscheckwasperformed
OracleDatabase10g:Administration WorkshopI19470
FlashRecoveryArea Theflashrecoveryareaisaspacesetasideondisktocontainarchivedlogs,backups,and flashbacklogs. Ifyouhaveconfiguredyourarchivedlogstobewrittentothislocation(withthe USE_DB_RECOVERY_AREA flaginoneofthelocations),itisimportanttomonitorthis spacetoensureitdoesntreachcapacity.Iftheinstanceisunabletocreateanarchived logduetolackofspace,itwillpauseuntiltheadministratorcorrectsthesituation. ClickingConfigureRecoverySettingsfromtheMaintenancepropertypagetakesyouto theFlashRecoveryAreasettings.Fromthispageyoucan: Specifythelocationoftheflashrecoveryarea Specifythesizeoftheflashrecoveryarea(Oraclesuggeststhisbeatleasttwice thesizeofthedatabasesoitcanholdabackupandseveralarchivedlogs) Verifyhowmuchoftheflashrecoveryareahasbeenconsumed Configureflashbackdatabase(flashbackdatabaseisdiscussedinOracleDatabase 10g:AdministrationWorkshopII andintheOracleDatabaseAdministration guide.
OracleDatabase10g:Administration WorkshopI19471
OracleDatabase10g:Administration WorkshopI19472
OracleDatabase10g:Administration WorkshopI19473
Practice19:DatabaseBackups Background:Yourdatabaseisreadytomovefromtestanddevelopmentintoproduction. Ensureyourdatabaseisconfiguredsothatrecoveryispossiblewithoutlossofdata. Tasks: Configureyourdatabaseforbackups. Backyourdatabaseupwhilethedatabaseisopenforuseractivity. Schedulenightlyincrementalbackupsforyourdatabase. 1. Configureyourdatabaseforbackups. SetParallelismto1. SetDiskBackupLocationto/u01/app/oracle/backup/. Note: The h directory d mustexistbefore b f abackup b k operationcanbe b performed. f d ChooseBackupSetasyourDiskBackupType. 2. Backupyourdatabasewhilethedatabaseisopenforuseractivity. 3. Schedulenightlyincrementalbackupsforyourdatabase. SettheJobNametoNightly_Backup andacceptthedefaultJobDescription Accepttodaysdateandusethedropdownlistsandoptionbuttonstoselect11:00PM fortheTime. SelectIntervalfromtheRepeatregion,andsettheFrequencyto1day. SelectIndefiniteintheRepeatUntilregion.
OracleDatabase10g:Administration WorkshopI19474
OracleDatabase10g:Administration WorkshopI20477
OpeningaDatabase Asadatabasemovesfromtheshutdownstagetobeingfullyopen,itperformsinternal consistencychecksateachstage. NOMOUNT:InorderforaninstancetoreachNOMOUNT (alsoknownasSTARTED) status,theinstancemustreadtheinitializationparameterfile.Nodatabasefiles arecheckedinreachingNOMOUNT. MOUNT:AstheinstancemovestoMOUNT status,itchecksthatallcontrolfiles listedintheinitializationparameterfilearepresentandsynchronized.Ifevenone controlfileismissingorcorrupt,theinstancewillreturnanerrortothe administratornotingthemissingcontrolfileandwillremainattheNOMOUNT state. OPEN:WhentheinstancemovesfromtheMOUNT totheOPEN stateit: Checksthatallredologgroupsknowntothecontrolfilehaveatleastone memberpresent.Anymissingmembersarenotedinthealertlog.
OracleDatabase10g:Administration WorkshopI20478
OpeningaDatabase(continued) Verifiesthatalldatafilesknowntothecontrolfilearepresentunlessthey havebeentakenoffline.Offlinefilesarenotcheckeduntilthe administratortriestobringthemonline. online Theadministratormaytakeadata fileofflineandopentheinstanceaslongasthedatafiledoesnotbelong totheSYSTEM orUNDO tablespaces.Ifanyfilesaremissinganerror notingthefirstmissingfileisreturnedtotheadministratorandthe instanceremainsattheMOUNT state.Whentheinstancefindsfilesthat aremissing,onlythefirstfilecausingaproblemappearsintheerror message.Tofindallfilesneedingrecovery,theadministratorcancheckthe v$recover_file dynamicperformanceviewtogetacompletelistof filesneedingattention: SQL>startup ORACLEinstancestarted. TotalSystemGlobalArea171966464bytes FixedSize775608bytes VariableSize145762888bytes DatabaseBuffers25165824bytes RedoBuffers262144bytes Databasemounted. ORA01157:cannotidentify/lockdatafile4 seeDBWRtracefile ORA01110:datafile4:'/oracle/oradata/orcl/users01.dbf' SQL>SELECTname,error 2FROMv$datafile 3JOINv$recover_file 4USING(file#); NAMEERROR /oracle/oradata/orcl/users01.dbfFILENOTFOUND /oracle/oradata/orcl/example01 dbfFILENOTFOUND /oracle/oradata/orcl/example01.dbf Verifiesthatalldatafilesthatarenotofflineorreadonlyaresynchronized withthecontrolfile.Ifnecessary,instancerecoveryisautomatically performed.Howeverifafileisoutofsynchronizationmorethancanbe recoveredusingtheonlineredologgroups,thentheadministratormust performmediarecovery.Ifanyfilesrequiremediarecovery,anerror messagenotingthefirstfilerequiringrecoveryisreturnedtothe administrator d i i and dthe h instance i remains i atthe h MOUNT state. ORA01113:file4needsmediarecovery ORA01110:datafile4:'/oracle/oradata/orcl/users01.dbf' Again,v$recover_file givesacompletelistoffilesneeding attention.Filesthatarepresentbutneedmediarecoverywillbelisted,but willnothaveanerrormessage.
OracleDatabase10g:Administration WorkshopI20479
ChangingInstanceStatus Whenstartingtheinstance,thedefaultstartmodeisOPEN.Youmaychoosetostartthe instanceinsomeothermode,orproblemswiththedatabasemayforceyoutostartin anothermode.TheAdvancedStartupOptionspropertiesscreenallowsyoutoselecta stateotherthanOPEN whenstartingtheinstanceandtoalterthestateiftheinstance hasalreadystartedinanothermode.YoumayalsouseSQLcommandstomodifyan instancesstatus: SQL>STARTUPNOMOUNT ORACLEinstancestarted. started TotalSystemGlobalArea188743680bytes FixedSize778036bytes VariableSize162537676bytes DatabaseBuffers25165824bytes RedoBuffers262144bytes SQL>ALTERDATABASEMOUNT Databasealtered. ALTERDATABASEOPEN OracleDatabase10g:AdministrationSQL> WorkshopI20480
KeepingaDatabaseOpen Afteraninstanceisopen,mediafailurecausinglossofacontrolfile,lossofamemberof aredologgroup,orlossofadatafilebelongingtotheSYSTEM orUNDO tablespaceswill causetheinstancetofail. Inmanycasesthefailedinstancewillnotcompletelyshutdown,butwillbeunableto continuetoperformwork.Recoveringfromthesetypesofmediafailuresmustbedone withthedatabasedown,sotheadministratorshouldusetheSHUTDOWN ABORT commandbeforebeginningrecoveryefforts. Lossofdatafilesbelongingtoothertablespacesdoesnotcauseinstancefailure,andthe databasecanberecoveredwhileopenwithworkcontinuinginothertablespaces. tablespaces
OracleDatabase10g:Administration WorkshopI20481
LossofaControlFile Recoveringfromlossofacontrolfile(aslongasatleastonecontrolfileremains)canbe accomplishedasfollows: 1. Iftheinstancedidnotalreadyfail,shutitdownusingSHUTDOWN ABORT. 2. Copyoneoftheremainingcontrolfilestothemissingfileslocation.Ifthemedia failurewasduetolossofadiskdriveorcontroller,copyoneoftheremainingcontrolfiles tosomeotherlocationandupdatetheinstancesparameterfiletopointtothenew location.Alternatively,youcandeletethereferencetothemissingcontrolfilefromthe initializationparameterfile.RememberthatOraclesuggestshavingatleast twocontrol filesatalltimes. times 3. Starttheinstance. RecoveringfromlossofallcontrolfilesiscoveredinOracleDatabase10g:Administration WorkshopII.
OracleDatabase10g:Administration WorkshopI20482
LossofaRedoLogFile Recoveringfromthelossofasingleloggroupmembershouldnotaffecttherunninginstance. 1. Determinethereisamissinglogfilebyexaminingthealertlog. 2 2. Restorethemissingfilebycopyingoneoftheremainingfilesfromthe samegroup. 3. Ifthemediafailurewasduetolossofadiskdriveorcontroller,rename themissingfile. 4. Ifthegrouphasalreadybeenarchived,orifyouareinnoarchivelog mode,youmaychoosetosolvetheproblembyclearingtheloggrouptorecreatethe missingfileorfiles.SelecttheappropriategroupandselecttheClearLogfile action.You canalsocleartheaffectedgroupmanuallywiththecommand: SQL>ALTERDATABASECLEARLOGFILEGROUP#; Note: DatabaseControlwillnotallowyoutoclearaloggroupthathasnotbeenarchived.Doing sobreaksthechainofredoinformation.Ifyoumustclearanunarchived loggroup,youshould immediately takeafullbackupofthewholedatabase.Failuretodosomayresultinalossofdata ifanotherfailureoccurs.Toclearanunarchived loggroupusethecommand: SQL>ALTERDATABASECLEARUNARCHIVEDLOGFILEGROUP#;
OracleDatabase10g:Administration WorkshopI20483
LossofaDataFileinNOARCHIVELOG Mode Thelossofany datafilefromadatabaseinNOARCHIVELOG moderequires completerestorationofthedatabaseincludingcontrolfilesandalldatafiles. WiththedatabaseinNOARCHIVELOG mode,recoveryispossibleonlyupuntilthe timeofthelastbackup,sousersmustreenterallchangesmadesincethatbackup. 1. Shutdowntheinstanceifitisnotalreadydown. 2. ClickPerformRecoveryfromtheMaintenanceproperties page. page 3. SelectWholeDatabaseasthetypeofrecovery.
OracleDatabase10g:Administration WorkshopI20484
LossofaNoncriticalDataFileinARCHIVELOG Mode WiththedatabaseinARCHIVELOG mode,thelossofanydatafilenotbelongingtothe SYSTEM orUNDO tablespacesonlyaffectsobjectsthatareinthemissingfile.Therestof thedatabaseremainsavailableforuserstocontinuework.Forthemissingdatafile, 1. ClickPerformRecoveryfromtheMaintenancepropertiespage. 2. SelectDatafilesastherecoverytypeandselectRestoreto currenttime. 3. Addalldatafilesneedingrecovery. 4. Determinewhetheryouwanttorestorethefilestothedefault locationor(ifmissingadiskorcontroller)toanewlocation. location 5. SubmittheRMANjobtorestoreandrecoverthemissingfiles.. BecausethedatabaseisinARCHIVELOG mode,recoveryupuntilthetimeofthelast commitispossibleandusersarenotrequiredtoreenteranydata.
OracleDatabase10g:Administration WorkshopI20485
LossofaSystemCriticalDataFile DatafilesbelongingtotheSYSTEM tablespaceorcontainingUNDO dataareconsidered systemcritical.Alossofoneofthesefilesrequiresthedatabasetoberestoredfromthe MOUNT state(unlikeotherdatafilesthatmayberestoredwiththedatabaseopen). 1. Iftheinstanceisnotalreadyshutdown,shutitdown. 2. Mountthedatabase. 3. ClickPerformRecoveryfromtheMaintenancepropertiespage. 4. SelectDatafilesastherecoverytypeandselectRestoreto currenttime. 5 5. Addalldatafilesneedingrecovery. recovery 6. Determinewhetheryouwanttorestorethefilestothedefault locationor(ifmissingadiskorcontroller)toanewlocation. 7. SubmittheRMANjobtorestoreandrecoverthemissingfiles. 8. Openthedatabase.Usersarenotrequiredtoreenterdatabecause therecoverywastothetimeofthelastcommit.
OracleDatabase10g:Administration WorkshopI20486
OracleDatabase10g:Administration WorkshopI20487
OracleDatabase10g:Administration WorkshopI20488
Practice20:DatabaseRecovery Background:ManyfailuresoftheOracledatabasecanbetracedtosomesortofmedia failuresuchasdiskorcontrollerfailure.Recoveryourdatabasefromavarietyof simulatedmediafailures failures. Tasks: Recoverfromlossofacontrolfile. Recoverfromlossofaredologmember. Recoverfromlossofanonsystemcriticaldatafile. Recoverfromlossofasystemcriticaldatafile. 1.Recoverfromlossofacontrolfile.. a) )A AsuserSYSTEM runthe h SQLscript i $HOME/labs/lab20_01_a.sql. SQL>@$HOME/labs/lab20_01_a.sql b)NowruntheSQLscript$HOME/labs/lab20_01_b.sql.This scriptdeletesoneofyourcontrolfiles. c)TheHelpdeskbeginsreceivingcallssayingthatthedatabaseappears tobedown.Troubleshootandrecoverasnecessary. y d)Whydidyouhavetousetwocommandstomovetheinstancestate fromNOMOUNT toOPEN? e)Whydidyouuseoperatingsystemcommandstorestorethecontrolfile insteadofusingOracleRecoveryManager? f)Whatisanotherwayyoucouldhavesolvedthisproblem? 2.Recoverfromlossofaredologmember. a)RuntheSQLscript$HOME/labs/lab20_02.sql $HOME/l b /l b20 02 l.Thisscript deletesoneofyourredologfiles. SQL>@$HOME/labs/lab20_02.sql b)DuringaroutinecheckofthealertlogforORA errors,younoticethe followingmessage: ORA00313:openfailedformembersofloggroup1ofthread1 g1thread1:'/oracle/oradata/orcl/redo01.log' g ORA00312:onlinelog ORA27037:unabletoobtainfilestatusLinuxError:2:Nosuchfile ordirectory c)Troubleshootandrecoverasnecessary. d)Whenclearingalogfile,whatdetermineswhetheracompletebackup isrequiredimmediatelyfollowingtheclearcommand? e)WhydoesntEnterpriseManagerproduceacriticalalertforamissing logfile? 3.Recoverfromlossofanonsystemorundodatafile. a)RuntheSQLscript$HOME/labs/lab20_03.sql.Thisscript deletesoneofyournonsystemorundodatafiles. SQL>@$HOME/labs/lab20_03.sql
OracleDatabase10g:Administration WorkshopI20489
Practice20:DatabaseRecovery(continued) b)TheHelpdeskhasreceivedacallfromausercomplainingthattheyare unabletoaccessthecountries tableintheHR applicationschema. Checkthetabletoseeifthereisaproblem. problem c)Troubleshootandrecoverasnecessary. 4.Recoverfromlossofasystem/undodatafile. a)Whyisrecoveryfromthelossofasystemdatafileoradatafile belongingtoanundotablespacedifferentfromrecoveringanonsystemor undodatafile? b)RuntheSQLscript$HOME/labs/lab20_04.sql.Thisscript deletesoneofyoursystemorundodatafiles. SQL>@$HOME/labs/lab20_04.sql c)TheHelpdeskbeginsreceivingcallssayingthatthedatabaseappears tobedown.Troubleshootandrecoverasnecessary.
OracleDatabase10g:Administration WorkshopI20490