SlideShare a Scribd company logo
Oracle Database 12c
New Features for Developers and
DBAs
Presented by: Alex Zaballa, Oracle DBA
Alex Zaballa
http://alexzaballa.blogspot.com/
@alexzaballa
205 Certifications
and counting…
Worked for 7 years in Brazil as an Oracle Developer.
2000 - 2007
Worked for 8 years in Angola as an Oracle DBA
for the Ministry of Finance.
2007 - 2015
Oracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c
New Features for Developers and DBAs
Oracle Official Documentation
12.1.0.2
• http://docs.oracle.com/database/121/NEWFT/ch
apter12102.htm
Oracle Learning Library (OLL)
• https://apexapps.oracle.com/pls/apex/f?p=44785
:1:0
Articles about 12c
• https://oracle-base.com/articles/12c/articles-
12c
“With more than 500 new features, Oracle
Database 12c is designed to give Oracle
customers exactly what they’ve told us they
need for cloud computing, big data, security,
and availability.”
Oracle Announces Beta Availability of Oracle Database 12c Release 2 - Oct 26,
2015
• PLUGGABLE DATABASES
From 252 to 4096
• HOT CLONING
Don’t need to put the source in read-only for cloning
• SHARDING
It’s like partitioning in a shared nothing database
The data is split into multiple databases
• In-Memory
In-Memory column Store on Active Data Guard
Heat Map
• APPLICATION CONTAINER
Pluggable Databases will share application objects
• More isolation, resource manager will limit the memory in addition to CPU and I/O.
• AWR will work on Active Data Guard Database: you can tune your reporting database
Availability of Oracle Database 12.2
Source: https://blogs.oracle.com/UPGRADE/entry/oracle_database_12_2_just
Oracle Database Release Status
MOS Note:742060.1
Upgrade to 12.1.0.2 or wait for
12.2 ?
CDB ou NON-CDB?
JSON
OTN Article by Alex Zaballa
http://www.oracle.com/technetwork/pt/articles
/sql/json-oracle-database-12c-2378776-
ptb.html
JSON
• Oracle Database 12.1.0.2 has now native
support for JSON.
• “JSON (JavaScript Object Notation) is a
lightweight data-interchange format. It is easy
for humans to read and write. It is easy for
machines to parse and generate.”
Source: http://json.org/
JSON
JSON
DEMO
Data Redaction
OTN Article in English by Alex Zaballa
http://www.oracle.com/technetwork/articles/d
atabase/data-redaction-odb12c-2331480.html
Data Redaction
• One of the new features introduced in Oracle
Database 12c
• Part of the Advanced Security option
• Enables the protection of data shown to the
user in real time, without requiring changes to
the application
Data Redaction
Data Redaction
DEMO
SQL Query Row Limits and Offsets
SQL Query Row Limits and Offsets
create table tabela_teste (id number, name varchar2(20), salary number);
insert into tabela_teste values (1,'Alex' ,100);
insert into tabela_teste values (2,'Joao' ,200);
insert into tabela_teste values (3,'Maria' ,300);
insert into tabela_teste values (4,'Pedro',400);
insert into tabela_teste values (5,'Paulo',500);
insert into tabela_teste values (6,'Fernando',600);
insert into tabela_teste values (7,'Rafael',700);
insert into tabela_teste values (8,'Samuel',700);
insert into tabela_teste values (9,'Daniel',800);
insert into tabela_teste values (10,'Luciano',1000);
SQL Query Row Limits and Offsets
Top-N Queries – Pré 12c
select * from ( select id, name, salary
from tabela_teste
order by salary desc)
where rownum <= 5;
SQL Query Row Limits and Offsets
select id, name, salary
from tabela_teste
order by salary desc
FETCH FIRST 5 ROWS ONLY;
SQL Query Row Limits and Offsets
select id, name, salary
from tabela_teste
order by salary
FETCH FIRST 30 PERCENT ROWS ONLY;
SQL Query Row Limits and Offsets
select id, name, salary
from tabela_teste
order by salary desc
OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY;
DEMO
Invisible Columns
CREATE TABLE tabela_teste
(
coluna1 NUMBER,
coluna2 NUMBER,
coluna3 NUMBER INVISIBLE,
coluna4 NUMBER
);
SQL> desc tabela_teste
Name
-----------------------------------------
COLUNA1 NUMBER
COLUNA2 NUMBER
COLUNA4 NUMBER
Invisible Columns
INSERT INTO tabela_teste
(coluna1,coluna2,coluna3,coluna4) VALUES
(1,2,3,4);
INSERT INTO tabela_teste VALUES (1,2,4);
Invisible Columns
SET COLINVISIBLE ON
SQL> desc tabela_teste
Name
-----------------------------------------
COLUNA1 NUMBER
COLUNA2 NUMBER
COLUNA4 NUMBER
COLUNA3 (INVISIBLE) NUMBER
Invisible Columns
ALTER TABLE tabela_teste MODIFY coluna3 VISIBLE;
DEMO
SQL Text Expansion
SQL> variable retorno clob
SQL> begin
dbms_utility.expand_sql_text( input_sql_text
=> 'select * from emp', output_sql_text=>
:retorno );
end;
SQL Text Expansion
• Views
• VPDs
DEMO
PL/SQL From SQL
with
function Is_Number
(x in varchar2) return varchar2 is
Plsql_Num_Error exception;
pragma exception_init(Plsql_Num_Error, -06502);
begin
if (To_Number(x) is NOT null) then
return 'Y';
else
return '';
end if;
exception
when Plsql_Num_Error then
return 'N';
end Is_Number;
select rownum, x, is_number(x) is_num from t;
DEMO
Session Level Sequences
Session level sequences are used to produce
unique values in a session. Once the session
ends, the sequence is reset.
Generating Primary Keys for a Global Temporary
Table would be a field where those kinds of
sequences could be used.
Session Level Sequences
CREATE SEQUENCE sequence_teste
START WITH 1
INCREMENT BY 1
SESSION
/
Session Level Sequences
ALTER SEQUENCE sequence_teste
SESSION;
ALTER SEQUENCE sequence_teste
GLOBAL;
DEMO
Extended Data Types
SQL> create table tabela_teste(campo01
varchar2(4001));
*
ERROR at line 1:
ORA-00910: specified length too long for its
datatype
Extended Data Types
- VARCHAR2 : 32767 bytes
- NVARCHAR2 : 32767 bytes
- RAW : 32767 bytes
Extended Data Types
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
ALTER SYSTEM SET max_string_size=extended;
@?/rdbms/admin/utl32k.sql
SHUTDOWN IMMEDIATE;
STARTUP;
**Once you switch to extended data types you can't switch back
DEMO
Multiple Indexes on the same set of
Columns
Pre 12c:
ORA-01408: such column list already indexed
error.
Multiple Indexes on the same set of
Columns
Is the ability to create more than one index on
the same set of columns in 12c.
**Only one of these indexes can be visible at a
time
Multiple Indexes on the same set of
Columns
Why would you want to do that?
• Unique versus nonunique
• B-tree versus bitmap
• Different partitioning strategies
DEMO
READ Object Privilege and READ ANY
TABLE System Privilege
What is the difference to SELECT and SELECT
ANY TABLE?
READ Object Privilege and READ ANY
TABLE System Privilege
SELECT and SELECT ANY TABLE provides the
ability to lock rows:
LOCK TABLE table_name IN EXCLUSIVE MODE;
SELECT ... FROM table_name FOR UPDATE;
READ Object Privilege and READ ANY
TABLE System Privilege
SQL> grant select on scott.emp to teste;
Grant succeeded.
SQL> lock table scott.emp in exclusive mode;
Table(s) Locked.
READ Object Privilege and READ ANY
TABLE System Privilege
SQL> grant read on scott.emp to teste;
Grant succeeded.
SQL> lock table scott.emp in exclusive mode;
lock table scott.emp in exclusive mode
*
ERROR at line 1:
ORA-01031: insufficient privileges
DEMO
Session private statistics for Global
Temporary Tables
Pre 12c, statistics gathered for global temporary
tables (GTTs) were common to all sessions.
Session private statistics for Global
Temporary Tables
BEGIN
DBMS_STATS.set_global_prefs (
pname => 'GLOBAL_TEMP_TABLE_STATS',
pvalue => 'SHARED');
END;
/
BEGIN
DBMS_STATS.set_global_prefs (
pname => 'GLOBAL_TEMP_TABLE_STATS',
pvalue => 'SESSION');
END;
/
Session private statistics for Global
Temporary Tables
BEGIN
dbms_stats.set_table_prefs('SCOTT','GTT_TESTE','G
LOBAL_TEMP_TABLE_STATS','SHARED');
END;
BEGIN
dbms_stats.set_table_prefs('SCOTT','GTT_TESTE','G
LOBAL_TEMP_TABLE_STATS','SESSION');
END;
DEMO
Temporary Undo
Global Temporary Tables (GTT) hold the data in a
temporary tablespace. The data in GTTs are either
deleted after commit or kept until the session is
connected depending of the definition of the
GTT.(ON COMMIT PRESERVE OR DELETE ROWS ).
DMLs in a Global Temporary Tables do not generate
REDO, but generate UNDO and this will result in
REDO generating.
Temporary Undo
alter session set temp_undo_enabled=true;
**you can change for the session or for the database.
DEMO
Statistics During Loads
The ability to gather statistics automatically
during bulk loads:
- CREATE TABLE AS SELECT
- INSERT INTO ... SELECT into an empty table
using a direct path insert
DEMO
Partial Indexes for Partitioned Table
• You can create local and global indexes on a
subset of the partitions of a table, enabling
more flexibility in index creation.
• This feature is not supported for unique
indexes, or for indexes used for enforcing
unique constraints.
Partial Indexes for Partitioned Table
DEMO
SQL*Loader Express
• You don't need to to write and test a
SQL*Loader control file.
• The benefit main is the savings for time and
effort.
SQL*Loader Express
[oracle@oracle01 tmp]$ cat EMPRESA.dat
1,Empresa 1
2,Empresa 2
3,Empresa 3
4,Empresa 4
5,Empresa 5
6,Empresa 6
7,Empresa 7
8,Empresa 8
9,Empresa 9
SQL*Loader Express
[oracle@oracle01 tmp]$ sqlldr teste/teste TABLE=EMPRESA
SQL*Loader: Release 12.1.0.1.0 - Production on Sat Jan 11 12:16:28 2014
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
Express Mode Load, Table: EMPRESA
Path used: External Table, DEGREE_OF_PARALLELISM=AUTO
Table EMPRESA:
9 Rows successfully loaded.
Check the log files:
EMPRESA.log
EMPRESA_%p.log_xt
for more information about the load.
DEMO
Truncate Cascade
SQL> truncate table scott.dept;
truncate table scott.dept
*
ERROR at line 1:
ORA-02266: unique/primary keys in table
referenced by enabled foreign keys
Truncate Cascade
SQL> truncate table scott.dept cascade;
Table truncated.
The constraint should be ON DELETE CASCADE.
DEMO
Limit the PGA
SQL> show parameter pga
NAME TYPE VALUE
-------------------------- ------------- ----------------------
pga_aggregate_limit big integer 2G
Limit the PGA
PGA_AGGREGATE_LIMIT is set to the greater of:
- 2 GB (default value)
- 200% of PGA_AGGREGATE_TARGET
- 3 MB times the PROCESSES parameter
Full Database Caching
Can be used to cache the entire database in
memory. It should be used when the buffer
cache size of the database instance is greater
than the whole database size.
RMAN Table Recovery in 12c
RMAN enables you to recover one or more
tables or table partitions to a specified point in
time.
RMAN Table Recovery in 12c
RMAN> RECOVER TABLE HR.REGIONS
UNTIL TIME "TO_DATE('01/10/2013
09:33:39','DD/MM/RRRR HH24:MI:SS')"
AUXILIARY DESTINATION '/tmp/backups'
In-Database Archiving
SQL> create table tabela_teste(coluna1 number)
row archival;
insert into tabela_teste values(1);
insert into tabela_teste values(2);
insert into tabela_teste values(3);
In-Database Archiving
In-Database Archiving
update tabela_teste
set ora_archive_state=DBMS_ILM.ARCHIVESTATENAME(1)
where coluna1=3;
In-Database Archiving
alter session set row archival visibility=all;
Heat Map, Automatic Data
Optimization and ILM
OTN Article in Portuguese by Daniel Da Meda and Alex Zaballa
http://www.oracle.com/technetwork/pt/articles
/database-performance/ilm-e-automatic-data-
optimization-2601873-ptb.html
Heat Map, Automatic Data
Optimization and ILM
• Heat Map: Oracle Database 12c feature that stores system-
generated data usage statistics at the block and segment
levels. Automatically tracks modification and query
timestamps at the row and segment levels.
• Automatic Data Optimization (ADO): automatically moves
and compresses data according to user-defined policies
based on the information collected by Heat Map
• ILM: Heat Map and Automatic Data Optimization make
Oracle Database 12c ideal for implementing ILM
Heat Map, Automatic Data
Optimization and ILM
Enabling Heat Map
SQL> alter system set heat_map = on;
Heat Map, Automatic Data
Optimization and ILM
Heat Map statistics can be viewed graphically
through EM Cloud Control:
Heat Map, Automatic Data
Optimization and ILM
Creating ADO policies
Compress the tablespace USER_DATA and all its residing
segments at OLTP level after 30 days of low access:
ALTER TABLESPACE USER_DATA ILM ADD POLICY
ROW STORE COMPRESS ADVANCED
SEGMENT AFTER 30 DAYS OF LOW ACCESS;
Heat Map, Automatic Data
Optimization and ILM
Creating ADO policies
Compress the table ORDER_ITEMS including any
SecureFile LOBs at OLTP level after 90 days of no
modification:
ALTER TABLE ORDER_ITEMS ILM ADD POLICY
ROW STORE COMPRESS ADVANCED
GROUP AFTER 90 DAYS OF NO MODIFICATION;
DDL LOGGING
DDL LOGGING
/u01/app/oracle/diag/rdbms/orcl/orcl/log/ddl/log.xml
Direct SQL statement execution in
RMAN
Pre - 12c:
RMAN> SQL ‘SELECT sysdate FROM dual’;
12c:
RMAN> SELECT sysdate FROM dual;
Identity Columns
CREATE TABLE tabela_teste (
id NUMBER GENERATED ALWAYS AS IDENTITY,
coluna1 VARCHAR2(30)
);
Identity Columns
CREATE TABLE tabela_teste (
id NUMBER GENERATED BY DEFAULT AS IDENTITY,
coluna1 VARCHAR2(30)
);
Identity Columns
CREATE TABLE tabela_teste (
id NUMBER GENERATED BY DEFAULT ON NULL AS
IDENTITY,
coluna1 VARCHAR2(30)
);
Multitenant
Source: Oracle Documentation
Source: Oracle Documentation
Multitenant
Source: https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle
Multitenant
Source: https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle
Multitenant
Source: https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle
In-Memory
Source: Oracle Documentation
In-Memory
SIMD Vector Processing
Source: http://www.oracle.com/technetwork/database/in-memory/overview/twp-
oracle-database-in-memory-2245633.html
In-Memory
In-Memory Area – a static pool in SGA
In-Memory
Source: OracleBase.com
In-Memory
Alter table hr.EMPLOYEES inmemory;
ALTER TABLE sales MODIFY PARTITION SALES_Q1_1998
NO INMEMORY;
ALTER TABLE sales INMEMORY NO INMEMORY(prod_id);
CREATE TABLESPACE tbs_test
DATAFILE '+DG01 SIZE 100M
DEFAULT INMEMORY;
In-Memory
Source: http://www.oracle.com/technetwork/database/in-memory/overview/twp-
oracle-database-in-memory-2245633.html
SQLcl
Oracle Database 12c - New Features for Developers and DBAs
Thank You

More Related Content

PPT
Oracle SQL Tuning
PPTX
DBA Commands and Concepts That Every Developer Should Know
PPTX
Oracle Database 12c Release 2 - New Features On Oracle Database Exadata Expre...
PPTX
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
PPTX
OTN TOUR 2016 - DBA Commands and Concepts That Every Developer Should Know
PPTX
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
PDF
Oracle SQL Tuning
PPTX
Oracle Database 12c - New Features for Developers and DBAs
Oracle SQL Tuning
DBA Commands and Concepts That Every Developer Should Know
Oracle Database 12c Release 2 - New Features On Oracle Database Exadata Expre...
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
OTN TOUR 2016 - DBA Commands and Concepts That Every Developer Should Know
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
Oracle SQL Tuning
Oracle Database 12c - New Features for Developers and DBAs

What's hot (18)

PDF
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
PPTX
Oracle Data Redaction - EOUC
PPTX
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015
PPTX
Oracle Database 12.1.0.2 New Features
PPTX
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
PPTX
Flex Cluster e Flex ASM - GUOB Tech Day - OTN TOUR LA Brazil 2014
PPTX
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
PDF
Oracle 12c New Features for Developers
PDF
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
DOCX
Oracle Database 12c "New features"
PPTX
Oracle Data Redaction
PPT
Top 10 Oracle SQL tuning tips
PDF
Oracle 21c: New Features and Enhancements of Data Pump & TTS
PPTX
DBA Commands and Concepts That Every Developer Should Know
PPTX
Oracle Database 12c - Data Redaction
PPTX
Best New Features of Oracle Database 12c
PPT
Using AWR for SQL Analysis
PPTX
DBA Commands and Concepts That Every Developer Should Know - Part 2
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
Oracle Data Redaction - EOUC
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015
Oracle Database 12.1.0.2 New Features
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
Flex Cluster e Flex ASM - GUOB Tech Day - OTN TOUR LA Brazil 2014
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle 12c New Features for Developers
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
Oracle Database 12c "New features"
Oracle Data Redaction
Top 10 Oracle SQL tuning tips
Oracle 21c: New Features and Enhancements of Data Pump & TTS
DBA Commands and Concepts That Every Developer Should Know
Oracle Database 12c - Data Redaction
Best New Features of Oracle Database 12c
Using AWR for SQL Analysis
DBA Commands and Concepts That Every Developer Should Know - Part 2
Ad

Similar to Oracle Database 12c - New Features for Developers and DBAs (20)

PPTX
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
PPTX
DBA Commands and Concepts That Every Developer Should Know - Part 2
PPTX
Oracle 10g
POTX
Oracle vs. SQL Server- War of the Indices
PPTX
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
PPT
Introduction to Threading in .Net
PPTX
TSQL in SQL Server 2012
PDF
Erik_van_Roon.pdf
PPTX
Useful PL/SQL Supplied Packages
PDF
Bypass dbms assert
PPT
Tony Jambu (obscure) tools of the trade for tuning oracle sq ls
PDF
Exploring plsql new features best practices september 2013
PPTX
OTN TOUR 2016 - DBA Commands and Concepts That Every Developer Should Know
PPT
PPT
Beg sql
ODP
Performance tuning
PPTX
War of the Indices- SQL Server and Oracle
PDF
Oracle goldengate 11g schema replication from standby database
PPT
07 Using Oracle-Supported Package in Application Development
PPTX
SQL_SERVER_BASIC_1_Training.pptx
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
DBA Commands and Concepts That Every Developer Should Know - Part 2
Oracle 10g
Oracle vs. SQL Server- War of the Indices
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
Introduction to Threading in .Net
TSQL in SQL Server 2012
Erik_van_Roon.pdf
Useful PL/SQL Supplied Packages
Bypass dbms assert
Tony Jambu (obscure) tools of the trade for tuning oracle sq ls
Exploring plsql new features best practices september 2013
OTN TOUR 2016 - DBA Commands and Concepts That Every Developer Should Know
Beg sql
Performance tuning
War of the Indices- SQL Server and Oracle
Oracle goldengate 11g schema replication from standby database
07 Using Oracle-Supported Package in Application Development
SQL_SERVER_BASIC_1_Training.pptx
Ad

More from Alex Zaballa (15)

PDF
Migrating Oracle Databases from AWS to OCI
PPTX
Exploring All options to move your Oracle Databases to the Oracle Cloud
PPTX
Moving Your Oracle Databases To The Oracle Cloud
PPTX
SQL TUNING 101
PPTX
SQL TUNING 101
PPTX
DBA Commands and Concepts That Every Developer Should Know
PPTX
LET’S GET STARTED WITH ORACLE DATABASE CLOUD
PPTX
Moving your Oracle Databases to the Oracle Cloud
PPTX
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
PDF
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
PDF
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
PPTX
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
PPTX
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores - GUO...
PPTX
Oracle Data redaction - GUOB - OTN TOUR LA - 2015
PPTX
Data Redaction - OTN TOUR LA 2015
Migrating Oracle Databases from AWS to OCI
Exploring All options to move your Oracle Databases to the Oracle Cloud
Moving Your Oracle Databases To The Oracle Cloud
SQL TUNING 101
SQL TUNING 101
DBA Commands and Concepts That Every Developer Should Know
LET’S GET STARTED WITH ORACLE DATABASE CLOUD
Moving your Oracle Databases to the Oracle Cloud
Os melhores recursos novos do Oracle Database 12c para desenvolvedores e DBAs...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores - GUO...
Oracle Data redaction - GUOB - OTN TOUR LA - 2015
Data Redaction - OTN TOUR LA 2015

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
KodekX | Application Modernization Development
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
A Presentation on Artificial Intelligence
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Machine learning based COVID-19 study performance prediction
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Understanding_Digital_Forensics_Presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
KodekX | Application Modernization Development
Approach and Philosophy of On baking technology
NewMind AI Monthly Chronicles - July 2025
Review of recent advances in non-invasive hemoglobin estimation
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
A Presentation on Artificial Intelligence
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Machine learning based COVID-19 study performance prediction
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Per capita expenditure prediction using model stacking based on satellite ima...
Mobile App Security Testing_ A Comprehensive Guide.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
20250228 LYD VKU AI Blended-Learning.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The AUB Centre for AI in Media Proposal.docx
Advanced methodologies resolving dimensionality complications for autism neur...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx

Oracle Database 12c - New Features for Developers and DBAs

  • 1. Oracle Database 12c New Features for Developers and DBAs Presented by: Alex Zaballa, Oracle DBA
  • 3. Worked for 7 years in Brazil as an Oracle Developer. 2000 - 2007 Worked for 8 years in Angola as an Oracle DBA for the Ministry of Finance. 2007 - 2015
  • 6. Oracle Database 12c New Features for Developers and DBAs
  • 7. Oracle Official Documentation 12.1.0.2 • http://docs.oracle.com/database/121/NEWFT/ch apter12102.htm Oracle Learning Library (OLL) • https://apexapps.oracle.com/pls/apex/f?p=44785 :1:0
  • 8. Articles about 12c • https://oracle-base.com/articles/12c/articles- 12c
  • 9. “With more than 500 new features, Oracle Database 12c is designed to give Oracle customers exactly what they’ve told us they need for cloud computing, big data, security, and availability.”
  • 10. Oracle Announces Beta Availability of Oracle Database 12c Release 2 - Oct 26, 2015 • PLUGGABLE DATABASES From 252 to 4096 • HOT CLONING Don’t need to put the source in read-only for cloning • SHARDING It’s like partitioning in a shared nothing database The data is split into multiple databases • In-Memory In-Memory column Store on Active Data Guard Heat Map • APPLICATION CONTAINER Pluggable Databases will share application objects • More isolation, resource manager will limit the memory in addition to CPU and I/O. • AWR will work on Active Data Guard Database: you can tune your reporting database
  • 11. Availability of Oracle Database 12.2 Source: https://blogs.oracle.com/UPGRADE/entry/oracle_database_12_2_just
  • 12. Oracle Database Release Status MOS Note:742060.1
  • 13. Upgrade to 12.1.0.2 or wait for 12.2 ? CDB ou NON-CDB?
  • 14. JSON OTN Article by Alex Zaballa http://www.oracle.com/technetwork/pt/articles /sql/json-oracle-database-12c-2378776- ptb.html
  • 15. JSON • Oracle Database 12.1.0.2 has now native support for JSON. • “JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.” Source: http://json.org/
  • 16. JSON
  • 17. JSON
  • 18. DEMO
  • 19. Data Redaction OTN Article in English by Alex Zaballa http://www.oracle.com/technetwork/articles/d atabase/data-redaction-odb12c-2331480.html
  • 20. Data Redaction • One of the new features introduced in Oracle Database 12c • Part of the Advanced Security option • Enables the protection of data shown to the user in real time, without requiring changes to the application
  • 23. DEMO
  • 24. SQL Query Row Limits and Offsets
  • 25. SQL Query Row Limits and Offsets create table tabela_teste (id number, name varchar2(20), salary number); insert into tabela_teste values (1,'Alex' ,100); insert into tabela_teste values (2,'Joao' ,200); insert into tabela_teste values (3,'Maria' ,300); insert into tabela_teste values (4,'Pedro',400); insert into tabela_teste values (5,'Paulo',500); insert into tabela_teste values (6,'Fernando',600); insert into tabela_teste values (7,'Rafael',700); insert into tabela_teste values (8,'Samuel',700); insert into tabela_teste values (9,'Daniel',800); insert into tabela_teste values (10,'Luciano',1000);
  • 26. SQL Query Row Limits and Offsets Top-N Queries – Pré 12c select * from ( select id, name, salary from tabela_teste order by salary desc) where rownum <= 5;
  • 27. SQL Query Row Limits and Offsets select id, name, salary from tabela_teste order by salary desc FETCH FIRST 5 ROWS ONLY;
  • 28. SQL Query Row Limits and Offsets select id, name, salary from tabela_teste order by salary FETCH FIRST 30 PERCENT ROWS ONLY;
  • 29. SQL Query Row Limits and Offsets select id, name, salary from tabela_teste order by salary desc OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY;
  • 30. DEMO
  • 31. Invisible Columns CREATE TABLE tabela_teste ( coluna1 NUMBER, coluna2 NUMBER, coluna3 NUMBER INVISIBLE, coluna4 NUMBER ); SQL> desc tabela_teste Name ----------------------------------------- COLUNA1 NUMBER COLUNA2 NUMBER COLUNA4 NUMBER
  • 32. Invisible Columns INSERT INTO tabela_teste (coluna1,coluna2,coluna3,coluna4) VALUES (1,2,3,4); INSERT INTO tabela_teste VALUES (1,2,4);
  • 33. Invisible Columns SET COLINVISIBLE ON SQL> desc tabela_teste Name ----------------------------------------- COLUNA1 NUMBER COLUNA2 NUMBER COLUNA4 NUMBER COLUNA3 (INVISIBLE) NUMBER
  • 34. Invisible Columns ALTER TABLE tabela_teste MODIFY coluna3 VISIBLE;
  • 35. DEMO
  • 36. SQL Text Expansion SQL> variable retorno clob SQL> begin dbms_utility.expand_sql_text( input_sql_text => 'select * from emp', output_sql_text=> :retorno ); end;
  • 37. SQL Text Expansion • Views • VPDs
  • 38. DEMO
  • 39. PL/SQL From SQL with function Is_Number (x in varchar2) return varchar2 is Plsql_Num_Error exception; pragma exception_init(Plsql_Num_Error, -06502); begin if (To_Number(x) is NOT null) then return 'Y'; else return ''; end if; exception when Plsql_Num_Error then return 'N'; end Is_Number; select rownum, x, is_number(x) is_num from t;
  • 40. DEMO
  • 41. Session Level Sequences Session level sequences are used to produce unique values in a session. Once the session ends, the sequence is reset. Generating Primary Keys for a Global Temporary Table would be a field where those kinds of sequences could be used.
  • 42. Session Level Sequences CREATE SEQUENCE sequence_teste START WITH 1 INCREMENT BY 1 SESSION /
  • 43. Session Level Sequences ALTER SEQUENCE sequence_teste SESSION; ALTER SEQUENCE sequence_teste GLOBAL;
  • 44. DEMO
  • 45. Extended Data Types SQL> create table tabela_teste(campo01 varchar2(4001)); * ERROR at line 1: ORA-00910: specified length too long for its datatype
  • 46. Extended Data Types - VARCHAR2 : 32767 bytes - NVARCHAR2 : 32767 bytes - RAW : 32767 bytes
  • 47. Extended Data Types SHUTDOWN IMMEDIATE; STARTUP UPGRADE; ALTER SYSTEM SET max_string_size=extended; @?/rdbms/admin/utl32k.sql SHUTDOWN IMMEDIATE; STARTUP; **Once you switch to extended data types you can't switch back
  • 48. DEMO
  • 49. Multiple Indexes on the same set of Columns Pre 12c: ORA-01408: such column list already indexed error.
  • 50. Multiple Indexes on the same set of Columns Is the ability to create more than one index on the same set of columns in 12c. **Only one of these indexes can be visible at a time
  • 51. Multiple Indexes on the same set of Columns Why would you want to do that? • Unique versus nonunique • B-tree versus bitmap • Different partitioning strategies
  • 52. DEMO
  • 53. READ Object Privilege and READ ANY TABLE System Privilege What is the difference to SELECT and SELECT ANY TABLE?
  • 54. READ Object Privilege and READ ANY TABLE System Privilege SELECT and SELECT ANY TABLE provides the ability to lock rows: LOCK TABLE table_name IN EXCLUSIVE MODE; SELECT ... FROM table_name FOR UPDATE;
  • 55. READ Object Privilege and READ ANY TABLE System Privilege SQL> grant select on scott.emp to teste; Grant succeeded. SQL> lock table scott.emp in exclusive mode; Table(s) Locked.
  • 56. READ Object Privilege and READ ANY TABLE System Privilege SQL> grant read on scott.emp to teste; Grant succeeded. SQL> lock table scott.emp in exclusive mode; lock table scott.emp in exclusive mode * ERROR at line 1: ORA-01031: insufficient privileges
  • 57. DEMO
  • 58. Session private statistics for Global Temporary Tables Pre 12c, statistics gathered for global temporary tables (GTTs) were common to all sessions.
  • 59. Session private statistics for Global Temporary Tables BEGIN DBMS_STATS.set_global_prefs ( pname => 'GLOBAL_TEMP_TABLE_STATS', pvalue => 'SHARED'); END; / BEGIN DBMS_STATS.set_global_prefs ( pname => 'GLOBAL_TEMP_TABLE_STATS', pvalue => 'SESSION'); END; /
  • 60. Session private statistics for Global Temporary Tables BEGIN dbms_stats.set_table_prefs('SCOTT','GTT_TESTE','G LOBAL_TEMP_TABLE_STATS','SHARED'); END; BEGIN dbms_stats.set_table_prefs('SCOTT','GTT_TESTE','G LOBAL_TEMP_TABLE_STATS','SESSION'); END;
  • 61. DEMO
  • 62. Temporary Undo Global Temporary Tables (GTT) hold the data in a temporary tablespace. The data in GTTs are either deleted after commit or kept until the session is connected depending of the definition of the GTT.(ON COMMIT PRESERVE OR DELETE ROWS ). DMLs in a Global Temporary Tables do not generate REDO, but generate UNDO and this will result in REDO generating.
  • 63. Temporary Undo alter session set temp_undo_enabled=true; **you can change for the session or for the database.
  • 64. DEMO
  • 65. Statistics During Loads The ability to gather statistics automatically during bulk loads: - CREATE TABLE AS SELECT - INSERT INTO ... SELECT into an empty table using a direct path insert
  • 66. DEMO
  • 67. Partial Indexes for Partitioned Table • You can create local and global indexes on a subset of the partitions of a table, enabling more flexibility in index creation. • This feature is not supported for unique indexes, or for indexes used for enforcing unique constraints.
  • 68. Partial Indexes for Partitioned Table
  • 69. DEMO
  • 70. SQL*Loader Express • You don't need to to write and test a SQL*Loader control file. • The benefit main is the savings for time and effort.
  • 71. SQL*Loader Express [oracle@oracle01 tmp]$ cat EMPRESA.dat 1,Empresa 1 2,Empresa 2 3,Empresa 3 4,Empresa 4 5,Empresa 5 6,Empresa 6 7,Empresa 7 8,Empresa 8 9,Empresa 9
  • 72. SQL*Loader Express [oracle@oracle01 tmp]$ sqlldr teste/teste TABLE=EMPRESA SQL*Loader: Release 12.1.0.1.0 - Production on Sat Jan 11 12:16:28 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. Express Mode Load, Table: EMPRESA Path used: External Table, DEGREE_OF_PARALLELISM=AUTO Table EMPRESA: 9 Rows successfully loaded. Check the log files: EMPRESA.log EMPRESA_%p.log_xt for more information about the load.
  • 73. DEMO
  • 74. Truncate Cascade SQL> truncate table scott.dept; truncate table scott.dept * ERROR at line 1: ORA-02266: unique/primary keys in table referenced by enabled foreign keys
  • 75. Truncate Cascade SQL> truncate table scott.dept cascade; Table truncated. The constraint should be ON DELETE CASCADE.
  • 76. DEMO
  • 77. Limit the PGA SQL> show parameter pga NAME TYPE VALUE -------------------------- ------------- ---------------------- pga_aggregate_limit big integer 2G
  • 78. Limit the PGA PGA_AGGREGATE_LIMIT is set to the greater of: - 2 GB (default value) - 200% of PGA_AGGREGATE_TARGET - 3 MB times the PROCESSES parameter
  • 79. Full Database Caching Can be used to cache the entire database in memory. It should be used when the buffer cache size of the database instance is greater than the whole database size.
  • 80. RMAN Table Recovery in 12c RMAN enables you to recover one or more tables or table partitions to a specified point in time.
  • 81. RMAN Table Recovery in 12c RMAN> RECOVER TABLE HR.REGIONS UNTIL TIME "TO_DATE('01/10/2013 09:33:39','DD/MM/RRRR HH24:MI:SS')" AUXILIARY DESTINATION '/tmp/backups'
  • 82. In-Database Archiving SQL> create table tabela_teste(coluna1 number) row archival; insert into tabela_teste values(1); insert into tabela_teste values(2); insert into tabela_teste values(3);
  • 84. In-Database Archiving update tabela_teste set ora_archive_state=DBMS_ILM.ARCHIVESTATENAME(1) where coluna1=3;
  • 85. In-Database Archiving alter session set row archival visibility=all;
  • 86. Heat Map, Automatic Data Optimization and ILM OTN Article in Portuguese by Daniel Da Meda and Alex Zaballa http://www.oracle.com/technetwork/pt/articles /database-performance/ilm-e-automatic-data- optimization-2601873-ptb.html
  • 87. Heat Map, Automatic Data Optimization and ILM • Heat Map: Oracle Database 12c feature that stores system- generated data usage statistics at the block and segment levels. Automatically tracks modification and query timestamps at the row and segment levels. • Automatic Data Optimization (ADO): automatically moves and compresses data according to user-defined policies based on the information collected by Heat Map • ILM: Heat Map and Automatic Data Optimization make Oracle Database 12c ideal for implementing ILM
  • 88. Heat Map, Automatic Data Optimization and ILM Enabling Heat Map SQL> alter system set heat_map = on;
  • 89. Heat Map, Automatic Data Optimization and ILM Heat Map statistics can be viewed graphically through EM Cloud Control:
  • 90. Heat Map, Automatic Data Optimization and ILM Creating ADO policies Compress the tablespace USER_DATA and all its residing segments at OLTP level after 30 days of low access: ALTER TABLESPACE USER_DATA ILM ADD POLICY ROW STORE COMPRESS ADVANCED SEGMENT AFTER 30 DAYS OF LOW ACCESS;
  • 91. Heat Map, Automatic Data Optimization and ILM Creating ADO policies Compress the table ORDER_ITEMS including any SecureFile LOBs at OLTP level after 90 days of no modification: ALTER TABLE ORDER_ITEMS ILM ADD POLICY ROW STORE COMPRESS ADVANCED GROUP AFTER 90 DAYS OF NO MODIFICATION;
  • 94. Direct SQL statement execution in RMAN Pre - 12c: RMAN> SQL ‘SELECT sysdate FROM dual’; 12c: RMAN> SELECT sysdate FROM dual;
  • 95. Identity Columns CREATE TABLE tabela_teste ( id NUMBER GENERATED ALWAYS AS IDENTITY, coluna1 VARCHAR2(30) );
  • 96. Identity Columns CREATE TABLE tabela_teste ( id NUMBER GENERATED BY DEFAULT AS IDENTITY, coluna1 VARCHAR2(30) );
  • 97. Identity Columns CREATE TABLE tabela_teste ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, coluna1 VARCHAR2(30) );
  • 104. In-Memory SIMD Vector Processing Source: http://www.oracle.com/technetwork/database/in-memory/overview/twp- oracle-database-in-memory-2245633.html
  • 105. In-Memory In-Memory Area – a static pool in SGA
  • 107. In-Memory Alter table hr.EMPLOYEES inmemory; ALTER TABLE sales MODIFY PARTITION SALES_Q1_1998 NO INMEMORY; ALTER TABLE sales INMEMORY NO INMEMORY(prod_id); CREATE TABLESPACE tbs_test DATAFILE '+DG01 SIZE 100M DEFAULT INMEMORY;
  • 109. SQLcl

Editor's Notes

  • #2: 96 slides Questions at the END please!!!