This presentation explains all of the new features that are relevant for developers in Oracle 12c. It's been out for a couple of years, but many companies haven't updated to 12c. So, if you're looking to update soon, or are just interested in what the new features are, look at this presentation.
The full post is available at http://www.completeitprofessional.com/oracle-12c-new-features-for-developers
1. Oracle 12c New Features
for Developers
By Complete IT Professional
www.completeitprofessional.com
2. Oracle 12c
• Released in 2013
• Contains a lot of new features
• Some are useful for DBAs, some are useful for developers, some for both
• As a developer, what do you need to know?
• I wrote an entire post on it:
http://www.completeitprofessional.com/oracle-12c-new-features-for-developers
• These slides explain all of those features
3. Increased column size limits
• VARCHAR2, NVARCHAR2, and RAW are larger than previous
Oracle versions
Data Type Oracle 11g
Limit
Oracle 11g
PL/SQL Limit
Limit in
Oracle 12c
VARCHAR2 2K 4K 32K
NVARCHAR2 2K 4K 32K
RAW 2K 4K 32K
4. Increased column size limits
• How can you use the new sizes?
• Change the setting called MAX_STRING_SIZE within the init.ora
file
• STANDARD – old sizes
• EXTENDED – new sizes
5. APPROX_COUNT_DISTINCT
• New function – APPROX_COUNT_DISTINCT
• Gives you an approximate count of records
• Faster than COUNT
• Not 100% accurate but pretty close
6. Row Limiting with Top N
• Getting the top N rows can be hard in Oracle
• In Oracle 12c, you can use new syntax
• FETCH FIRST 10 ROWS ONLY – shows only the first 10 rows
7. Row Limiting with Top N
SELECT first_name, last_name, date_of_birth
FROM student
ORDER BY date_of_birth
FETCH FIRST 10 ROWS ONLY;
9. Pattern Matching Syntax
SELECT columns
FROM table
MATCH_RECOGNIZE (
PARTITION BY ...
ORDER BY ...
MEASURES ...
PATTERN...
DEFINE...
)
ORDER BY col1...
10. JSON in Database
• Oracle 12c now support JSON in database columns
• You can query directly inside the column data
12. Lateral Clause for Inline Views
• Normally you can’t refer to columns outside an inline view
from within the inline view
• With a LATERAL clause, you can
13. Lateral Clause Example
SELECT first_name, last_name, school_name
FROM student s,
LATERAL (SELECT school_name
FROM school sc
WHERE sc.school_id = s.school_id)
14. CROSS APPLY Clause
• Similar to Lateral
• Variant of the CROSS JOIN
• Right side of the keyword can reference the column on the left
15. CROSS APPLY Example
SELECT first_name, last_name, school_id, school_name
FROM student s,
CROSS APPLY (SELECT school_name
FROM school sc
WHERE sc.school_id = s.school_id
AND sc.school_state = ‘California’)
17. OUTER APPLY Example
SELECT first_name, last_name, school_id, school_name
FROM student s,
OUTER APPLY (SELECT school_name
FROM school sc
WHERE sc.school_id = s.school_id
AND sc.school_state = ‘California’)
18. Partial Join Evaluation
• New optimisation type
• Part of the optimisation process
• You might see it in the Explain Plan
• Partial Join Evaluation
• Also called PJE
19. Cascading Truncate
• Have you tried to TRUNCATE a table that had other records
referring to it, and got an error about foreign keys?
• With Oracle 12c, you can run a TRUNCATE CASCADE
• This will skip this error and delete the rows that refer to it
• Only works if the foreign key is defined as ON DELETE
CASCASE
21. Pluggable Databases
• One of the main features in Oracle 12c
• A “root” database is created
• “Seed” database is a template for creating other databases
• “Pluggable databases” are where the data is stored
• All inside the root
22. Why pluggable databases?
• Easier maintenance
• Easier implementation of new databases – just copy the seed
• Easier to move to the cloud
23. Invisible Columns
• Columns that do not appear in the table definition or SELECT *
statements
• Use the INVISIBLE keyword when defining a column
24. Invisible Indexes
• Allows more than one index on a column at one time
• Create index and add the INVISIBLE keyword
25. Identity Columns
• Set a column to automatically generate a value
• Similar to AUTO_INCREMENT in other databases
• Add GENERATED AS IDENTITY to column definition when
creating a table
26. Default Values
• Simplify data entry
• Use sequences as the default values
• Or use default values only when a NULL is specified
27. Session Sequences
• Sequences currently keep their values for the database for all
sessions
• Session sequences are new
• They let you retain the value only for the session
• Not very useful for primary keys, but there are other uses
28. Sequence KEEP and NOKEEP
• KEEP and NOKEEP are keywords for creating sequences
• KEEP retains the NEXTVALUE value for replays during
Application Continuity
• NOKEEP will not retain the NEXTVALUE for these replays
• NOKEEP is the default
29. Data Redaction
• You can hide certain fields in certain ways
• Replace characters with spaces or numbers
• Or, change part of the information
• Good security feature
30. Grant Roles to PL/SQL Programs Only
• Previously, you had to grant user access to the PL/SQL
program and the table
• Now, just grant user access to the PL/SQL program
• Program will still access the table
• Makes it more secure
32. PL/SQL ACCESSIBLE BY Clause
• Allows you to specify which packages can access other
packages
• Helps with security
• Simplifies package definition if you want to implement this
• Add the words ACCESSIBLE BY to the package when defining
33. PL/SQL Table Operator
• Before 12c, you could only use the TABLE operator in some
situations
• Now, you can use them with locally defined types
34. WITH Clause and PL/SQL Functions
• Now you can define PL/SQL functions and procedures inside a
WITH clause
• Likely improves run time
• Object is not created and stored in the database
35. Online DDL Statements
• DDL normally locks tables
• Some statements can now be run in “online” mode, which
does not impact any DML that is running
• Statements relate to indexes, constraints, and columns
36. DDL Logging
• You can enable DDL logging
• Many DDL statements are captured
• CREATE/ALTER/DROP/TRUNCATE TABLE
• CREATE/ALTER/DROP
PACKAGE/FUNCTION/VIEW/SYNONYM/SEQUENCE
• DROP USER
37. Bequeath Option
• Allows you to specify which user’s privileges will be used when
running a statement
• Specify either invoker’s or definer’s rights
• Invoker’s rights – the person running the statement
• Definer’s rights – the person who created the object
38. Period Definition
• Allows you to easily specify which records are valid at a
particular date
• Use the PERIOD clause when creating a table
• You can then use the PERIOD clause in SELECT queries
39. Conclusion
• Many new features in Oracle 12c
• These are all of the features I think are helpful for new developers
• Find out more here:
http://www.completeitprofessional.com/oracle-12c-new-features-for-developers