Oracle 1Z0-183 study plan
Oracle 1Z0-183 · Give each week a clear focus.
8 weeks · About 7 hours per week
Declaring PL/SQL Variables and Writing Executable Statements & Handling Exceptions
Declare and initialize variables using scalar types, %TYPE, and %ROWTYPE anchors, and assign values inside executable sections
Write nested and labeled blocks and apply variable scoping and visibility rules correctly
Code handlers for predefined, non-predefined (PRAGMA EXCEPTION_INIT), and user-defined exceptions, including RAISE and RAISE_APPLICATION_ERROR
Trace exception propagation across nested blocks and decide where to handle versus re-raise
Use SQLCODE, SQLERRM, and DBMS_UTILITY.FORMAT_ERROR_STACK inside handlers
Your checkpoint
A single .sql script containing 10 hand-written anonymous blocks (5 on declaration/scoping, 5 on exception scenarios) that compiles with zero errors in SQL*Plus, each with a comment block stating the expected output and the actual observed output
Creating Stored Procedures, Functions, and Packages
Create stored procedures and functions with IN, OUT, and IN OUT parameters and invoke them from anonymous blocks
Choose between a procedure and a function for a given requirement and justify parameter modes and default values
Build a package with a specification and body that separates public and private program units
Overload subprograms inside a package and state the rules the compiler uses to resolve an overloaded call
Apply AUTHID DEFINER versus AUTHID CURRENT_USER and predict the effect on name resolution
Your checkpoint
A complete package (spec plus body) exposing at least two procedures, one function, and one overloaded subprogram, shipped with a test script that calls every unit, prints results, and passes pass/fail assertions
Creating Database Triggers & Managing PL/SQL Code, Compiler Settings, and Dependencies
Create BEFORE and AFTER row-level and statement-level DML triggers with correct timing, granularity, and WHEN conditions
Write an INSTEAD OF trigger on a view and explain the mutating-table restriction and at least one workaround
Query USER_OBJECTS and USER_DEPENDENCIES to map dependency chains and identify invalid objects
Recompile invalid program units and describe when the database invalidates dependent objects automatically
Enable and interpret PL/SQL compiler warnings via PLSQL_WARNINGS and the DBMS_WARNING interface, and wrap source with the PL/SQL wrapper
Your checkpoint
A trigger suite of three triggers (row-level audit, statement-level, INSTEAD OF on a view) plus a dependency-report script whose captured output shows object status before and after a forced recompile of a dependent unit
Using Explicit Cursors & Working with Composite Data Types
Declare, open, fetch from, and close explicit cursors and test %FOUND, %NOTFOUND, %ROWCOUNT, and %ISOPEN
Convert explicit cursor logic into cursor FOR loops and write parameterized cursors
Lock rows with FOR UPDATE and apply WHERE CURRENT OF to update the fetched row
Declare and populate associative arrays, nested tables, and VARRAYs, and manipulate them with collection methods such as COUNT, EXISTS, FIRST, NEXT, and TRIM
Combine records and %ROWTYPE with collections to hold a fetched result set in memory
Your checkpoint
A script that processes a table with a parameterized explicit cursor using FOR UPDATE, bulk-loads the rows into a collection, iterates the collection to print a formatted report, and is saved together with its captured output
Milestones
Week 2: Package and its test script execute end to end with no compilation errors, and every public subprogram has been invoked at least once with verified output
Week 4: Score at least 70% on a 40-question timed quiz covering domains 1, 4, 5, 6, 7, and 9, and record every missed item on a personal weak-topic list
Week 6: Complete a 60-question mixed practice set across all ten domains, log each miss with the domain number and the root cause, and confirm the two weakest domains
Week 8: Score at least 85% on a full-length timed simulation under exam conditions, with no domain below 70%