610 likes | 1.08k Views
This presentation contains a list of many new features available to SQL developers in the latest major release of Oracle's database, Oracle 12c.
E N D
Oracle 12c New Features for Developers By Database star www.databasestar.com
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
Increased column size limits • VARCHAR2, NVARCHAR2, and RAW are larger than previous Oracle versions
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
APPROX_COUNT_DISTINCT • New function – APPROX_COUNT_DISTINCT • Gives you an approximate count of records • Faster than COUNT • Not 100% accurate but pretty close
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
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;
Pattern Matching • Pattern matching is easier in Oracle 12c • Uses the MATCH_RECOGNIZE keyword
Pattern Matching Syntax SELECT columns FROM table MATCH_RECOGNIZE ( PARTITION BY ... ORDER BY ... MEASURES ... PATTERN... DEFINE... ) ORDER BY col1...
JSON in Database • Oracle 12c now support JSON in database columns • You can query directly inside the column data
JSON Example SELECT b.document.businessName, b.document.address.streetNumber, b.document.address.streetName FROM businesses b { “businessName”:”Cars Galore”, “address”:{ “streetNumber”:”14”, “streetName”:”Main Street”, “city”:”Denver”, “state”:”Colorado”, “country”:”USA”}, “businessIndustry”:”Automotive” }
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
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)
CROSS APPLY Clause • Similar to Lateral • Variant of the CROSS JOIN • Right side of the keyword can reference the column on the left
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’)
OUTER APPLY Clause • Similar to CROSS APPLY • More like a LEFT OUTER JOIN
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’)
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
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
Cascading Truncate Example TRUNCATE TABLE parent_table_name CASCADE;
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
Why pluggable databases? • Easier maintenance • Easier implementation of new databases – just copy the seed • Easier to move to the cloud
Invisible Columns • Columns that do not appear in the table definition or SELECT * statements • Use the INVISIBLE keyword when defining a column
Invisible Indexes • Allows more than one index on a column at one time • Create index and add the INVISIBLE keyword
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
Default Values • Simplify data entry • Use sequences as the default values • Or use default values only when a NULL is specified
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
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
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
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
UTL_CALL_STACK Package • Improvements to the call stack • Use the UTL_CALL_STACK package to get information about your call stack
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
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
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
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
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
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
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
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.databasestar.com/oracle-12c-new-features-for-developers