Sumário Itens Encontrados: 273Chapter 1: Do Not UseRow-by-Row ProcessingNested Row-by-Row ProcessingLookup QueriesExcessive Access to DUALArithmetics with DateAccess to Sequences.Populating Master-Detail RowsExcessive Function CallsUnnecessary Function ExecutionCostly Function CallsDatabase Link CallsExcessive Use of TriggersExcessive CommitsExcessive ParsingChapter 2: Dynamic SQL: Handling the UnknownThe HeroNative Dynamic SQLDynamic CursorsDBMS_SQLSample of Dynamic ThinkingSecurity IssuesPerformance and Resource UtilizationAnti-PatternsComparing Implementations of Dynamic SQLObject DependenciesNegative EffectsPositive EffectsChapter 3: PL/SQL and Parallel ProcessingWhy Parallel Processing?Laws Affecting Parallel ProcessingThe Rise of Big DataParallel vs. Distributed ProcessingParallel Hardware ArchitecturesIdentify Your GoalsSpeedupScaling UpDegree of ParallelismCandidate Workloads for Parallel ProcessingParallelism and OLTPParallelism and Non-OLTP WorkloadsThe MapReduce Programming ModelBefore Looking to PL/SQLProcesses Available for Parallel ActivitiesUsing Parallel Execution Servers for MapReducePipelined Table FunctionsGuidanceChapter 4: Warnings and Conditional CompilationPL/SQL WarningsBasicsUsing WarningsPromoting Warnings to ErrorsIgnoring WarningsCompilation and WarningsFinal Words on WarningsConditional CompilationWhat Part of the Code is Running?Benefits of Preprocessing CodeInvalidationsControlling CompilationInquiry VariablesFinal Words on Conditional CompilationChapter 5: PL/SQL Unit TestingWhy Test Your Code?What Is Unit Testing?Debugging or Testing?When Should You Build Tests?Tools for Building Unit TestsutPLSQL: Working with Command Line CodeQuest Code Tester for OracleOracle SQL DeveloperPreparing and Maintaining the Unit Test EnvironmentCreating the Unit Test RepositoryMaintaining the Unit Test RepositoryImporting TestsBuilding Unit TestsUsing the Unit Test WizardCreating the First ImplementationAdding Startup and Teardown Processes.Collecting Code Coverage StatisticsSpecifying ParametersAdding Process ValidationSaving TestsDebugging and Running TestsBroadening the Scope of the TestsCreating Lookup ValuesSeeding Test ImplementationsCreating a Dynamic QuerySupporting Unit Test FeaturesRunning ReportsCreating a Library of ComponentsExporting,Importing,and Synchronizing TestsBuilding SuitesRunning Tests from the Command LineChapter 6: Bulk SQL OperationsThe Hardware StoreSetting for the Examples in this ChapterBulk Operations in PL/SQLGetting Started with BULK FetchThree Collection-Style DatatypesWhy should I bother?Monitoring Bulk Collect OverheadsRefactoring Code to Use Bulk CollectBulk BindingGetting Started with Bulk BindMeasuring Bulk Binding PerformanceMonitoring Memory UsageImprovements in 11gError Handling with Bulk BindSAVE EXCEPTIONS with BatchesLOG ERRORS ClauseRobust Bulk BindA Justification for Massive CollectionsThe Real Benefit: Client Bulk ProcessingChapter 7: Know Your CodeWhat This Chapter Will (and Will Not) CoverAutomated Code AnalysisStatic AnalysisDynamic AnalysisWhen to Analyze?Performing Static AnalysisThe Data DictionaryPL/SCOPEPerforming Dynamic AnalysisDBMS_PROFILER and DBMS_TRACEDBMS_HPROFChapter 8: Contract-Oriented ProgrammingDesign by ContractSoftware ContractsBasic Contract ElementsAssertionsReferencesImplementing PL/SQL ContractsBasic ASSERT ProcedureStandard Package-Local ASSERTEnforcing Contracts Using ASSERTAn Additional ImprovementContract-Oriented Function PrototypeExample: Testing Odd and Even IntegersUseful Contract PatternsNot-NULL IN / Not-NULL OUTFUNCTION RETURN Not-NULLFUNCTION RETURN BOOLEAN Not-NULLCheck Functions: RETURN TRUE OR ASSERTFAILPrinciples For Bug-Free CodeAssert Preconditions RigorouslyModularize RuthlesslyAdopt Function-Based InterfacesCrash on ASSERTFAILRegression Test Your PostconditionsAvoid Correctness-Performance TradeoffsOracle 11g Optimized CompilationChapter 9: PL/SQL from SQLThe Cost of Using PL/SQL Functions in SQLContext-SwitchingExecutionsSuboptimal Data AccessOptimizer DifficultiesThe Read-Consistency TrapOther IssuesReducing the Cost of PL/SQL FunctionsA Sense of PerspectiveUsing SQL AlternativesReducing ExecutionsAssisting the CBOTuning PL/SQLChapter 10: Choosing the Right CursorExplicit CursorsThe Anatomy of an Explicit Cursor.Explicit Cursors and Bulk ProcessingREF Cursors in BriefImplicit CursorsThe Anatomy of an Implicit CursorThe Implicit Cursor and the Extra Fetch TheoryStatic REF CursorsCursor Variable Restrictions Laundry List.Your Client and REF CursorsA Few Words about ParsingDynamic REF CursorsExample and Best UseThe Threat of SQL InjectionDescribing REF Cursor ColumnsChapter 11: PL/SQL Programming in the LargeThe Database as PL/SQL-Based Application ServerCase Study: The Avaloq Banking SystemStrengths of Business Logic in the Database with PL/SQL.Limits of the Database as PL/SQL-Based Application ServerSoft FactorsRequirements of Programming in the LargeUniformity through ConventionsAbbreviationsPre- and Suffixes for PL/SQL IdentifiersModularization of Code and DataPackages and Associated Tables as ModulesModules Containing Multiple Packages or SubmodulesSchemas as ModulesModularization within SchemasModularization with Schemas vs. within SchemasObject-Oriented Programming with PL/SQLObject-Oriented Programming with User-Defined TypesObject-Oriented Programming with PL/SQL RecordsAssessmentMemory ManagementMeasuring Memory UsageCollectionsChapter 12: Evolutionary Data ModelingLessons from Two Decades of System DevelopmentThe Database and Agile DevelopmentEvolutionary Data ModelingRefactoring the DatabaseCreating an Access Layer via PL/SQLThe Agile ManifestoUsing PL/SQL with Evolutionary Data ModelingDefine the InterfaceThink ExtensibleTest Driven DevelopmentUse Schemas and Users WiselyChapter 13: Profiling for PerformanceWhat Is Performance?Functional RequirementsResponse TimeThroughputResource UtilizationPerformance Is a FeatureWhat Is Profiling?Sequence DiagramsThe Magic of ProfilesBenefits of ProfilingInstrumentationWhy is This Program Slow?Measurement IntrusionIdentificationBuilt-in ProfilersExtended SQL Trace Data (Event 10046)Instrumentation Library for Oracle (ILO)Problem DiagnosisMethod RILO ExampleProfiling ExampleChapter 14: Coding Conventions and Error HandlingWhy coding conventions?FormattingCaseCommentsIndentation.Dynamic CodePackagesStored ProceduresNamingParametersCallsLocal VariablesConstantsTypesGlobal VariablesLocal Procedures and FunctionsProcedure MetadataFunctionsError HandlingError TrappingError ReportingError RecoveryTest First. Display Second.Chapter 15: Dependencies and InvalidationsDependency ChainsShortening Dependency ChainsDatatype ReferenceView for Table AlterationsAdding Components into PackagesSynonyms in Dependency ChainsResource LockingForcing Dependency in TriggersCreating Triggers Disabled Initially