Some things to be aware of (no particular order):
- SID will no longer be usable for DB connections; SERVICE NAME must be used, including all tnanames entries.
- Database links are claimed to be faster, however testing has shown this to not be the case.
- Cost Based Optimizer (CBO) is paramount in 12c and must have good statistics.
- Statistics has improved in 12c; the CBO is getting smarter.
- Should use “auto_sample_size” & should never use “estimate 100%” when gathering statistics to prevent skewing by outliers.
- Don’t use “1=2” when using CTAS as it will leave you ‘0’ for your stats, which is not the same thing for the CBO as null.
- Note that for bulk load/direct-path inserts and CTAS’s & stats are gathered automatically (similar to an index create in 11g) during the data load, thereby avoiding additional scan operations.
- “Hash Joins” are parallel; they have a slow start and then are very fast. (Good for large row sets.) “Nested Loops” are serial; (Good for small row sets).
- New join (cross_outer_apply_clause); Allowing for a variation of the ANSI cross join or left outer join.
- New join syntax for Lateral clause for inline views which allows for columns within the inline view to be accessed.
- 12c adds an “Identity Column”, (declare a column as IDENTITY).
- 12c adds extended data types: Strings of up to 32k (varchar2, nvarchar2, raw). Meaning the same size limits on those datatypes for both SQL & PLSQL.
- Invisible (hidden) columns, (alter table …modify). [“set column invisible on” to display them in a “DESC”].
- New “Pagination” row limiting for top N numbers or percentage of rows to be returned with 12c. Implementation is down via an analytic function and now is ANSI compliant syntax.
- Sequences can now be created at a session level. Also KEEP and NOKEEP feature added for NEXTVAL. Can also be used as table column default value.
- Auditing without the pervious performance impact.
- Bloom filters perform better in 12c.
- New in-memory aggregation hint: “vector_transform”. Conceptually similar to star transformations.
- In-memory index pruning hints: “inmemory” and “inmemory_pruning”.
- RMAN single table recovery automated from backups. (Must have the necessary space to accomplish. Consider smaller tablespaces to accommodate.)
- DataPump new feature allows you to disable REDO generation (Force_Logging will take precedence in used.)
- SQLLoader supports identity columns, Posix wildcards for data file names and new line characters in CSV files.
- New SQL syntax for pattern matching across multiply rows.
- Some new hints:
- GATHER_OPTIMIZER_STATISTICS/NO_GATHER_OPTIMIZER_STATISTICS (to enable or disable statistics gathering during bulk loads).
- PQ_CONCURRENT_UNIONALL/NO_PQ_CONCURRENT_UNIONALL (to enable or disable concurrent procession of union or union all).
- PQ_FILTER (tells the optimizer how to process rows when filtering correlated subqueries).
- PQ_SKEW/NO_PQ_SKEW (tells the optimizer if the distribution of values for the join keys for a parallel join are skewed or not).
- USE_CUBE/NO_USE_CUBE (specifies whether to use or exclude cub joins).
- PL/SQL Functions are now allowed in WITH clause.
- STREAMS has been depreciated and will no longer be available in future releases.
- Oracle Label Security has been depreciated.
- IGNORECASE & SEC_CASE_SENSITIVE_LOGIN has been depreciated; now passwords are always case sensitive.
- REMOTE_OS_AUTHENT depreciated. No OS authenticated logins allowed.