Oracle Advanced PL/SQL Developer Professional Guide


Oracle Advanced PL/SQL Developer Professional Guide
eBook: $35.99
Formats: PDF, PacktLib, ePub and Mobi formats
$30.60
save 15%!
Print + free eBook + free PacktLib access to the book: $95.98    Print cover: $59.99
$90.59
save 6%!
Free Shipping!
UK, US, Europe and selected countries in Asia.
Also available on:
Overview
Table of Contents
Author
Reviews
Support
Sample Chapters
  • Blitz the 1Z0-146 exam
  • Master the advanced features of PL/SQL to design and optimize code using real-time demonstrations
  • Efficiently design PL/SQL code with cursor design and subtypes

Book Details

Language : English
Paperback : 440 pages [ 235mm x 191mm ]
Release Date : May 2012
ISBN : 1849687226
ISBN 13 : 9781849687225
Author(s) : Saurabh K. Gupta
Topics and Technologies : All Books, Enterprise Products and Platforms, Enterprise, Oracle

Table of Contents

Preface
Chapter 1: Overview of PL/SQL Programming Concepts
Chapter 2: Designing PL/SQL Code
Chapter 3: Using Collections
Chapter 4: Using Advanced Interface Methods
Chapter 5: Implementing VPD with Fine Grained Access Control
Chapter 6: Working with Large Objects
Chapter 7: Using SecureFile LOBs
Chapter 8: Compiling and Tuning to Improve Performance
Chapter 9: Caching to Improve Performance
Chapter 10: Analyzing PL/SQL Code
Chapter 11: Profiling and Tracing PL/SQL Code
Chapter 12: Safeguarding PL/SQL Code against SQL Injection Attacks
Appendix: Answers to Practice Questions
Index
  • Chapter 1: Overview of PL/SQL Programming Concepts
    • PL/SQL—the procedural aspect
      • My first PL/SQL program
    • PL/SQL development environments
      • SQL Developer
        • SQL Developer—the history
        • Creating a connection
        • SQL Worksheet
        • Executing a SQL statement
        • Calling a SQL script from SQL Developer
        • Creating and executing an anonymous PL/SQL block
        • Debugging the PL/SQL code
        • Editing and saving the scripts
      • SQL*Plus
        • Executing a SQL statement in SQL*Plus
        • Executing an anonymous PL/SQL block
    • Procedures
      • Executing a procedure
    • Functions
      • Function—execution methods
      • Restrictions on calling functions from SQL expressions
    • PL/SQL packages
    • Cursors—an overview
      • Cursor execution cycle
      • Cursor attributes
      • Cursor FOR loop
    • Exception handling in PL/SQL
      • System-defined exceptions
      • User-defined exceptions
        • The RAISE_APPLICATION_ERROR procedure
      • Exception propagation
    • Managing database dependencies
      • Displaying the direct and indirect dependencies
      • Dependency metadata
      • Dependency issues and enhancements
    • Reviewing Oracle-supplied packages
    • Summary
    • Practice exercise
    • Chapter 2: Designing PL/SQL Code
      • Understanding cursor structures
        • Cursor execution cycle
        • Cursor design considerations
        • Cursor design—guidelines
        • Cursor attributes
        • Implicit cursors
        • Explicit cursors
      • Cursor variables
        • Ref cursor types—strong and weak
          • SYS_REFCURSOR
        • Processing a cursor variable
        • Cursor variables as arguments
        • Cursor variables—restrictions
      • Subtypes
        • Subtype classification
          • Oracle's predefined subtypes
          • User-defined subtypes
        • Type compatibility with subtypes
      • Summary
      • Practice exercise
      • Chapter 3: Using Collections
        • Collections—an overview
          • Categorization
          • Selecting an appropriate collection type
        • Associative arrays
        • Nested tables
          • Nested table collection type as the database object
            • DML operations on nested table columns
            • A nested table collection type in PL/SQL
          • Additional features of a nested table
        • Varray
          • Varray in PL/SQL
          • Varray as a database collection type
            • DML operations on varray type columns
        • Collections—a comparative study
          • Common characteristics of collection types
          • Nested table versus associative arrays
          • Nested table versus varrays
        • PL/SQL collection methods
          • EXISTS
          • COUNT
          • LIMIT
          • FIRST and LAST
          • PRIOR and NEXT
          • EXTEND
          • TRIM
          • DELETE
        • Manipulating collection elements
        • Collection initialization
        • Summary
        • Practice exercise
        • Chapter 4: Using Advanced Interface Methods
          • Understanding external routines
            • Architecture of external routines
            • Oracle Net Configuration
              • TNSNAMES.ora
              • LISTENER.ora
              • Oracle Net Configuration verification
            • Benefits of external procedures
          • Executing external C programs from PL/SQL
            • Executing C program through external procedure—development steps
          • Executing Java programs from PL/SQL
            • Calling a Java class method from PL/SQL
            • Uploading a Java class into the database—development steps
            • The loadjava utility—an illustration
            • Creating packages for Java class methods
          • Summary
          • Practice exercise
          • Chapter 5: Implementing VPD with Fine Grained Access Control
            • Fine Grained Access Control
              • Overview
              • Virtual Private Database—the alias
              • How FGAC or VPD works?
                • Salient features of VPD
            • VPD implementation—outline and components
              • Application context
              • Policy function definition and implementation of row-level security
              • Associating a policy using the DBMS_RLS package
            • VPD implementation—demonstrations
              • Assignment 1—implementing VPD using simple security policy
              • Assignment 2—implementing VPD using an application context
            • VPD policy metadata
            • Policy utilities—refresh and drop
            • Summary
            • Practice exercise
            • Chapter 6: Working with Large Objects
              • Introduction to the LOB data types
                • Internal LOB
                • External LOB
              • Understanding the LOB data types
                • LOB value and LOB locators
                • BLOB or CLOB!
                • BFILE
                • Temporary LOBs
              • Creating LOB data types
                • Directories
                • Creating LOB data type columns in a table
              • Managing LOB data types
                • Managing internal LOBs
                • Securing and managing BFILEs
                • The DBMS_LOB package—overview
                  • Security model
                  • DBMS_LOB constants
                  • DBMS_LOB data types
                  • DBMS_LOB subprograms
                  • Rules and regulations
              • Working with the CLOB, BLOB, and BFILE data types
                • Initializing LOB data type columns
                • Inserting data into a LOB column
                • Populating a LOB data type using an external file
                • Selecting LOB data
                • Modifying the LOB data
                • Delete LOB data
                • Miscellaneous LOB notes
                  • LOB column states
                  • Locking a row containing LOB
                  • Opening and closing LOBs
                  • Accessing LOBs
                  • LOB restrictions
              • Migrating from LONG to LOB
              • Using temporary LOBs
                • Temporary LOB operations
                • Managing temporary LOBs
                • Validating, creating, and freeing a temporary LOB
              • Summary
              • Practice exercise
              • Chapter 7: Using SecureFile LOBs
                • Introduction to SecureFiles
                  • SecureFile LOB—an overview
                    • Architectural enhancements in SecureFiles
                  • SecureFile LOB features
                • Working with SecureFiles
                  • SecureFile metadata
                  • Enabling advanced features in SecureFiles
                    • Deduplication
                    • Compression
                    • Encryption
                • Migration from BasicFiles to SecureFiles
                  • Online Redefinition method
                • Summary
                • Practice exercise
                • Chapter 8: Compiling and Tuning to Improve Performance
                  • Native and interpreted compilation techniques
                    • Real native compilation
                    • Selecting the appropriate compilation mode
                      • When to choose interpreted compilation mode?
                      • When to choose native compilation mode?
                    • Setting the compilation mode
                    • Querying the compilation settings
                    • Compiling a program unit for a native or interpreted compilation
                    • Compiling the database for PL/SQL native compilation (NCOMP)
                  • Tuning PL/SQL code
                    • Comparing SQL and PL/SQL
                    • Avoiding implicit data type conversion
                    • Understanding the NOT NULL constraint
                    • Using the PLS_INTEGER data type for arithmetic operations
                    • Using a SIMPLE_INTEGER data type
                    • Modularizing the PL/SQL code
                    • Using bulk binding
                      • Using SAVE_EXCEPTIONS
                    • Rephrasing the conditional control statements
                      • Conditions with an OR logical operator
                      • Conditions with an AND logical operator
                  • Enabling intra unit inlining
                    • PLSQL_OPTIMIZE_LEVEL—the Oracle initialization parameter
                      • Case 1—PLSQL_OPTIMIZE_LEVEL = 0
                      • Case 2—PLSQL_OPTIMIZE_LEVEL = 1
                      • Case 3—PLSQL_OPTIMIZE_LEVEL = 2
                      • Case 4—PLSQL_OPTIMIZE_LEVEL = 3
                  • PRAGMA INLINE
                  • Summary
                  • Practice exercise
                  • Chapter 9: Caching to Improve Performance
                    • Introduction to result cache
                      • Server-side result cache
                        • SQL query result cache
                        • PL/SQL function result cache
                      • OCI client results cache
                    • Configuring the database for the server result cache
                      • The DBMS_RESULT_CACHE package
                    • Implementing the result cache in SQL
                      • Manual result cache
                      • Automatic result cache
                      • Result cache metadata
                        • Query result cache dependencies
                        • Cache memory statistics
                      • Invalidation of SQL result cache
                      • Displaying the result cache memory report
                      • Read consistency of the SQL result cache
                      • Limitation of SQL result cache
                    • Implementing result cache in PL/SQL
                      • The RESULT_CACHE clause
                      • Cross-session availability of cached results
                      • Invalidation of PL/SQL result cache
                      • Limitations of PL/SQL function result cache
                        • Argument and return type restrictions
                        • Function structural restrictions
                    • Summary
                    • Practice exercise
                    • Chapter 10: Analyzing PL/SQL Code
                      • Track coding information
                        • [DBA | ALL | USER]_ARGUMENTS
                        • [DBA | ALL | USER]_OBJECTS
                        • [DBA | ALL | USER]_SOURCE
                        • [DBA | ALL | USER]_PROCEDURES
                        • [DBA | ALL | USER]_DEPENDENCIES
                      • Using SQL Developer to find coding information
                        • The DBMS_DESCRIBE package
                        • DBMS_UTILITY.FORMAT_CALL_STACK
                        • Tracking propagating exceptions in PL/SQL code
                      • Determining identifier types and usages
                        • The PL/Scope tool
                          • The PL/Scope identifier collection
                          • The PL/Scope report
                          • Illustration
                          • Applications of the PL/Scope report
                      • The DBMS_METADATA package
                        • DBMS_METADATA data types and subprograms
                        • Parameter requirements
                        • The DBMS_METADATA transformation parameters and filters
                        • Working with DBMS_METADATA—illustrations
                          • Case 1—retrieve the metadata of a single object
                          • Case 2—retrieve the object dependencies on the F_GET_LOC function
                          • Case 3—retrieve system grants on the ORADEV schema
                          • Case 4—retrieve objects of function type in the ORADEV schema
                      • Summary
                      • Practice exercise
                      • Chapter 11: Profiling and Tracing PL/SQL Code
                        • Tracing the PL/SQL programs
                          • The DBMS_TRACE package
                            • Installing DBMS_TRACE
                            • DBMS_TRACE subprograms
                          • The PLSQL_DEBUG parameter and the DEBUG option
                          • Viewing the PL/SQL trace information
                          • Demonstrating the PL/SQL tracing
                        • Profiling the PL/SQL programs
                          • Oracle hierarchical profiler—the DBMS_HPROF package
                            • View profiler information
                            • Demonstrating the profiling of a PL/SQL program
                          • The plshprof utility
                            • Sample reports
                        • Summary
                        • Practice exercise
                        • Chapter 12: Safeguarding PL/SQL Code against SQL Injection Attacks
                          • SQL injection—an introduction
                            • SQL injection—an overview
                            • Types of SQL injection attacks
                            • Preventing SQL injection attacks
                          • Immunizing SQL injection attacks
                            • Reducing the attack's surface
                              • Controlling user privileges
                              • Invoker's and definer's rights
                            • Avoiding dynamic SQL
                            • Bind arguments
                            • Sanitizing inputs using DBMS_ASSERT
                              • The DBMS_ASSERT package
                          • Testing the code for SQL injection flaws
                            • Test strategy
                            • Reviewing the code
                            • Static code analysis
                            • Fuzz tools
                            • Generating test cases
                          • Summary
                          • Practice exercise
                          • Appendix: Answers to Practice Questions
                            • Chapter 1, Overview of PL/SQL Programming Concepts
                            • Chapter 2, Designing PL/SQL Code
                            • Chapter 3, Using Collections
                            • Chapter 4, Using Advanced Interface Methods
                            • Chapter 5, Implementing VPD with Fine Grained Access Control
                            • Chapter 6, Working with Large Objects
                            • Chapter 7, Using SecureFile LOBs
                            • Chapter 8, Compiling and Tuning to Improve Performance
                            • Chapter 9, Caching to Improve Performance
                            • Chapter 10, Analyzing PL/SQL Code
                            • Chapter 11, Profiling and Tracing PL/SQL Code
                            • Chapter 12, Safeguarding PL/SQL Code against SQL Injection Attacks

                            Saurabh K. Gupta

                            Since the time Saurabh Gupta was introduced to Oracle database by chance and not by choice, he has been synchronizing his on job and off job interests with Oracle database programming. As an Oracle 11g Certified Advanced PL/SQL Professional, he soon moved from programming to database designing, development, and administration. During the phase when he specialized in database modelling, development and tuning, he was an active Oracle blogger and OTN forum member. To date, he has authored more than 70 online articles and papers. His works can be noted at RMOUG SQL> Update journal, PSOUG (http://www.psoug.org), DBANOTES (http://www.dbanotes.com), EXFORSYS (http://www.exforsys.com), and CLUB-ORACLE (http://www.club-oracle.com). He shares his technical encounters in Oracle technologies on his own blogging venture http://sbhoracle.wordpress.com/. He is an AIOUG (All India Oracle Users Group) member and loves to participate in technical meets and conferences. Besides digging into Oracle, sketching and snooker are other past times for him. One can reach him through his blog SbhOracle for any comments, suggestions or feedback regarding this book.

                            Code Downloads

                            Download the code and support files for this book.


                            Submit Errata

                            Please let us know if you have found any errors not listed on this list by completing our errata submission form. Our editors will check them and add them to this list. Thank you.


                            Errata

                            - 6 submitted: last submission 14 Feb 2014

                            Errata type: Code | Page number: 110 | Errata date: 12 July 2012

                            The output of the PL/SQL block given under EXTEND method is given as

                            --------------------------------------------- L_ARRAY(4) element of the array is = L_ARRAY(6) element of the array is = L_ARRAY(8) element of the array is = 10 ---------------------------------------------

                            But it should be:

                            --------------------------------------------- 4 element of the array is = 6 element of the array is = 8 element of the array is = 10 ---------------------------------------------

                             

                             

                            Errata type:Technical | Page number: 113 | Errata date: 23 July 2012

                            Question number 8, option b. "DELETE can be used with varrays"

                            Should be:

                            DELETE(n) can be used with varrays

                             

                             

                            Errata type: Technical | Page number: 163 | Errata date: 23 July 2012

                            The data dictionaries available for this information is USER_DEPENDENCIES, ALL_DEPENDENCIES, and DBA_DEPENDENCIES"

                            Should be:

                            The data dictionaries available for this information is USER_POLICIES, ALL_POLICIES, and DBA_POLICIES.

                             

                             

                            Errata type: Technical | Page number: 275 | Errata date: 9 Jan 2013

                            For Chapter 10 practice answers, answer of question no. 7 should be "a, c and d". 
                            Option "b" is efficient only for views.

                            Errata type: Technical | Page number: 362 | Errata date: 21 Feb 2013

                            Chapter #11 practice question No. 5 - if the answers provided are correct, the question should be: "Identify the incorrect trace level combination from the following options" - (not "correct", but "incorrect")
                            Errata type: Technical | Page number: 40 | Errata date: 24 Oct 2013
                            Result in book:
                            "No Employee exists with the id 837"
                            Should be:
                            "No Employee exists with the id 8376"
                            

                            Sample chapters

                            You can view our sample chapters and prefaces of this title on PacktLib or download sample chapters in PDF format.

                            Frequently bought together

                            Oracle Advanced PL/SQL Developer Professional Guide +    Oracle Siebel CRM 8 Installation and Management =
                            50% Off
                            the second eBook
                            Price for both: $53.70

                            Buy both these recommended eBooks together and get 50% off the cheapest eBook.

                            What you will learn from this book

                            • Get to grips with using Advanced Interface Methods
                            • Learn to implement VPD with Fine Grained Access Control
                            • Make use of Collections and learn data caching techniques in PL/SQL programs
                            • Protect PL/SQL code from injection attacks
                            • Learn to use Result caching to tune PL/SQL code
                            • Demonstrate tracing and profiling features in PL/SQL
                            • Get started with SecureFiles for advanced storage options

                            In Detail

                            PL/SQL (Procedural Language/Structured Query Language) is Oracle Corporation's procedural extension language for SQL and the Oracle relational database. Server-side PL/SQL is stored and compiled in the Oracle Database and runs within the Oracle executable. With this guide Oracle developers can work towards accomplishing Oracle 11g Advanced PL/SQL Professional certification, which is the second milestone for developers working at the Associate level.

                            The Oracle Advanced PL/SQL Developer Professional Guide helps you master advanced PL/SQL concepts. Besides the clear and precise explanation on advanced topics, it also contains example code and demonstrations, which gives a sense of application and usage to readers.

                            The book gives a deep insight that will help transform readers from mid-level programmers to professional database developers. It aims to cover the advanced features of PL/SQL for designing and optimizing PL/SQL code.

                            This book starts with an overview of PL/SQL as the programming database language and outlines the benefits and characteristics of the language. The book then covers the advanced features that include PL/SQL code writing using collections, tuning recommendations using result caching, implementing VPD to enforce row level security, and much more. Apart from programming, the book also dives deep into the usage of the development tool SQL Developer, employing best practices in database environments and safeguarding the vulnerable areas in PL/SQL code to avoid code injection.

                            Approach

                            This book is packed with real world examples that cover all the advanced features of PL/SQL. In turn, each major certification topic is covered in a separate chapter that makes understanding concepts easier. At the end of each chapter, you will find plenty of practice questions to strengthen and test your learning.

                            Who this book is for

                            If you are a PL/SQL developer looking for deeper insight and a move from mid-level programmer to professional database developer, then this is the best guide for you.

                            This book is also an ideal guide for all the Associate level PL/SQL programmers who are preparing for the Professional 1Z0-146 certification.

                            This book assumes you have prior knowledge of PL/SQL programming.

                            Code Download and Errata
                            Packt Anytime, Anywhere
                            Register Books
                            Print Upgrades
                            eBook Downloads
                            Video Support
                            Contact Us
                            Awards Voting Nominations Previous Winners
                            Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
                            Resources
                            Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software