Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 131
The following is intended to outline our general product direction.
It is intended for information purposes only, and may not be
incorporated into any contract. It is not a commitment to deliver
any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and
timing of any features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 132
More than 12 More things
about Oracle Database 12c
Thomas Kyte
http://asktom.oracle.com
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 134
#1 Data Redaction
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 135
Oracle Data Redaction
 On-the-fly redaction based upon user name, IP
address, application context, and other factors
 Transparent, consistent enforcement in the database
 Minimal impact on production work loads
Redacting Sensitive Data for Applications
Credit Card #
4451-2172-9841-4368
5106-6342-4881-5211
4891-3311-0090-5055
Policy
Call Centers
Decision Support Systems
Systems with PII, PHI, PCI data
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 136
#2 Temporal
Validity
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 137
Temporal Validity
ops$tkyte%ORA12CR1> create table addresses
2 ( empno number,
3 addr_data varchar2(30),
4 start_date date,
5 end_date date,
6 period for valid(start_date,end_date)
7 )
8 /
Table created.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 138
Temporal Validity
ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date )
2 values ( 1234, '123 Main Street', trunc(sysdate-5), trunc(sysdate-2) );
1 row created.
ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date )
2 values ( 1234, '456 Fleet Street', trunc(sysdate-1), trunc(sysdate+1) );
1 row created.
ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date )
2 values ( 1234, '789 1st Ave', trunc(sysdate+2), null );
1 row created.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 139
Temporal Validity
ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate-3;
EMPNO ADDR_DATA START_DAT END_DATE
---------- ------------------------------ --------- ---------
1234 123 Main Street 12-MAY-13 15-MAY-13
ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate;
EMPNO ADDR_DATA START_DAT END_DATE
---------- ------------------------------ --------- ---------
1234 456 Fleet Street 16-MAY-13 18-MAY-13
ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate+3;
EMPNO ADDR_DATA START_DAT END_DATE
---------- ------------------------------ --------- ---------
1234 789 1st Ave 19-MAY-13
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1310
#3 SQL Text
Expansion
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1311
SQL Text Expansion
ops$tkyte%ORA12CR1> variable x clob
ops$tkyte%ORA12CR1> begin
2 dbms_utility.expand_sql_text
3 ( input_sql_text => 'select * from all_users',
4 output_sql_text => :x );
5 end;
6 /
PL/SQL procedure successfully completed.
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1312
SQL Text Expansion
ops$tkyte%ORA12CR1> print x
X
--------------------------------------------------------------------------------
SELECT "A1"."USERNAME" "USERNAME","A1"."USER_ID" "USER_ID","A1"."CREATED" "CREAT
ED","A1"."COMMON" "COMMON" FROM (SELECT "A4"."NAME" "USERNAME","A4"."USER#" "US
ER_ID","A4"."CTIME" "CREATED",DECODE(BITAND("A4"."SPARE1",128),128,'YES','NO') "
COMMON" FROM "SYS"."USER$" "A4","SYS"."TS$" "A3","SYS"."TS$" "A2" WHERE "A4"."DA
TATS#"="A3"."TS#" AND "A4"."TEMPTS#"="A2"."TS#" AND "A4"."TYPE#"=1) "A1"
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1313
#4 Increased Size
Limit for
VARCHAR2,
NVARCHAR2, and
RAW Data Types
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1314
32k Strings
 Varchar2, NVarchar2 and Raw datatypes may be upto 32k in size, like
in PL/SQL
 Compatible = 12.0.0.0 or higher
 Max_String_Size init.ora set to EXTENDED (default is not this)
 Not supported in clustered and index organized tables
 Will be stored out of line (LOB) but work just like long strings to your
program
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1315
#5 Easy Top-N and
pagination queries
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1316
Row Limiting Clause
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1317
Row Limiting Clause
c##tkyte%CDB1> create table t
2 as
3 select * from stage;
Table created.
c##tkyte%CDB1> create index t_idx on t(owner,object_name);
Index created.
c##tkyte%CDB1> set autotrace on explain
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1318
Row Limiting Clause
c##tkyte%CDB1> select /*+ first_rows(5) */ owner, object_name, object_id
2 from t
3 order by owner, object_name
4 FETCH FIRST 5 ROWS ONLY;
…
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 1450 | 7 (0)| 00:00:01 |
|* 1 | VIEW | | 5 | 1450 | 7 (0)| 00:00:01 |
|* 2 | WINDOW NOSORT STOPKEY | | 5 | 180 | 7 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| T | 87310 | 3069K| 7 (0)| 00:00:01 |
| 4 | INDEX FULL SCAN | T_IDX | 5 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=5)
2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=5)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1319
Row Limiting Clause
c##tkyte%CDB1> select /*+ first_rows(5) */ owner, object_name, object_id
2 from t
3 order by owner, object_name
4 OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
…
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 1450 | 7 (0)| 00:00:01 |
|* 1 | VIEW | | 5 | 1450 | 7 (0)| 00:00:01 |
|* 2 | WINDOW NOSORT STOPKEY | | 5 | 180 | 7 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| T | 87310 | 3069K| 7 (0)| 00:00:01 |
| 4 | INDEX FULL SCAN | T_IDX | 5 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=CASE WHEN (5>=0)
THEN 5 ELSE 0 END +5 AND "from$_subquery$_003"."rowlimit_$$_rownumber">5)
2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=CASE WHEN
(5>=0) THEN 5 ELSE 0 END +5)
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1320
Row Limiting Clause
c##tkyte%CDB1> select owner, object_name, object_id
2 from t
3 order by owner, object_name
4 FETCH NEXT 0.01 PERCENT ROWS ONLY;
…
9 rows selected.
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 87310 | 25M| | 1230 (1)| 00:00:01 |
|* 1 | VIEW | | 87310 | 25M| | 1230 (1)| 00:00:01 |
| 2 | WINDOW SORT | | 87310 | 3069K| 4120K| 1230 (1)| 00:00:01 |
| 3 | TABLE ACCESS FULL| T | 87310 | 3069K| | 401 (1)| 00:00:01 |
------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=CEIL("from$_sub
query$_003"."rowlimit_$$_total"*0.01/100))
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1321
#6 Temporary
UNDO
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1322
Temporary UNDO
 UNDO for temporary tables can now be managed in TEMP
 Reduce the amount of UNDO in the UNDO tablespace
– Better for retention periods for “real” data
 Reduce the size of the redo generated
 Allows for DML on temporary tables in Active Data Guard
 ALTER SYSTEM/SESSION SET TEMP_UNDO_ENABLED=true|false
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1323
#7 Online
Operations
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1324
More Online Operations
 DROP INDEX ONLINE
 DROP CONSTRAINT ONLINE
 SET UNUSED COLUMN ONLINE
 ALTER INDEX UNUSABLE ONLINE
 ALTER INDEX [VISIBLE | INVISIBLE]
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1325
#8 Data
Optimization
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1326
ILM: Hot/Cold Data Classification
Enhanced Insight into Data Usage: “heat map”
Recently inserted,
actively updated Infrequently updated,
Frequently Queried
Retained for long term analytics and
compliance with corporate policies
and regulations
ACTIVE
FREQUENT
ACCESS
DORMANT
• Block and Segment level
statistics on last Read and last
Update
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1327
ILM: Automatic Compression & Tiering
Usage based and custom compression and tiering
ALTER TABLE orders
ILM ADD CompressionPolicy
COMPRESS Partitions for Query
AFTER 90 days from creation;
ALTER TABLE sales
ILM ADD MovePolicy
TIER Partitions TO ‘Archive_TBS’
ON OrdersClosedPolicy;
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1328
#9 Implicit Result
Sets
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1329
Implicit Result Sets
 Cursor variables have been around since 7.2
 Used to return result sets explicitly
 Some other databases return them implicitly
 Causes migration headaches
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1330
Implicit Result Sets
 Two new API calls:
– PROCEDURE RETURN_RESULT
(rc IN OUT SYS_REFCURSOR, to_client IN BOOLEAN DEFAULT TRUE);
– PROCEDURE RETURN_RESULT
(rc IN OUT INTEGER, to_client IN BOOLEAN DEFAULT TRUE);
– TO_CLIENT => true, return to client layer
– TO_CLIENT=> false, return to invoker, immediate caller
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1331
Implicit Result Sets
ops$tkyte%ORA12CR1> declare
2 c sys_refcursor;
3 begin
4 open c for
5 select *
6 from dept;
7
8 dbms_sql.return_result(c);
9 end;
10 /
PL/SQL procedure successfully completed.
ResultSet #1
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1332
Implicit Result Sets
 Two new API calls:
– PROCEDURE GET_NEXT_RESULT
(c IN INTEGER, rc OUT SYS_REFCURSOR);
– PROCEDURE GET_NEXT_RESULT
(c IN INTEGER, rc OUT INTEGER);
– For PL/SQL processing
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1333
Implicit Result Sets
Connection conn = DriverManager.getConnection(jdbcURL, user, password);
try
{
Statement stmt = conn.createStatement ();
stmt.executeQuery ( “begin foo; end;” );
while (stmt.getMoreResults())
{
ResultSet rs = stmt.getResultSet();
System.out.println("ResultSet");
while (rs.next())
{
/* get results */
}
}
}
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1334
#10 Pluggable
Databases
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1335
Oracle Database Architecture
Requires memory, processes and database files
ERP
Database
Files
Background
Processes
Memory
Utilized
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1336
Oracle Database Architecture
Separate memory and processes required for each database
ERP
Database
Files
Memory
Utilized
Background
Processes
CRM
Database
Files
Background
Processes
Memory
Utilized
DW
Database
Files
Background
Processes
Memory
Utilized
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1337
New Pluggable Database Architecture
ERP
Database
Files
Memory
Utilized
Background
Processes
CRM
Database
Files
Memory
Utilized
Background
Processes
DW
Database
Files
Memory
Utilized
Background
Processes
Memory and processes required at container level only
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1338
New Pluggable Database Architecture
Memory and processes required at container level only
ERP CRM DW
Background
Processes
Memory
Utilized
Container Database
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1339
#11 Database In-
Memory
40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
40
Flip Flops
Core
ICs on board
DIMMS
SIMMs
SSD
Flash
Small Drives
Floppy
Big Drives
1993 ~$25/mb; $26,214,400/tb
2014 ~$0.007/mb; $7,645/tb
41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
Until Now You Choose One Format and Suffer Tradeoffs
Optimizing Transaction and Query Performance
Row Format Databases versus Column Format Databases
Row
 Transactions run faster on row format
– Fast for processing few rows, many columns
– Example: Insert or query a sales order
Column
 Analytics run faster on column format
– Fast for processing few columns, many rows
– Example: Report on sales totals by state
ORDER
SALES
SALES
S
T
A
T
E
41
42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
OLTP is Slowed Down by Analytic Indexes
Table
1 to 3
OLTP
Indexes
5 to 15
Analytics
Indexes
 Most Indexes in mixed-use
OLTP (e.g. ERP) databases
are only used for analytics
 Indexes work well for known
access patterns both
in-memory and on-disk
 But every change to the
table requires changing all
analytic indexes – Slow!
42
43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
Column Store Replaces Analytic Indexes
Table
1 to 3
OLTP
Indexes
 In-Memory Column Store
replaces analytic indexes for
tables that fit in memory
 Removes analytic index
overhead on changes
 Both predefined and ad-hoc
analytic queries run fast
 Less tuning & admin needed
 OLTP & batch often run 2x or
more faster
In-Memory
Column Store
43
44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
Oracle In-Memory is Trivial to Deploy
1. Configure Memory Capacity
 inmemory_size = XXXX GB
2. Configure tables or partitions to be in memory
 alter table | partition … inmemory;
3. Later Drop analytic indexes to speed up OLTP
44
45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved.
Oracle In-Memory is Transparent to Applications
Existing Applications Just Run Faster
Full Functionality - No restrictions on SQL
Trivial to Implement - No migration of data or change of product
Fully Compatible - All existing applications run unchanged
DB as a Service Ready - Oracle Multitenant in-memory
Uniquely Achieves All In-Memory Benefits With No Application Changes
And All Other
Apps that Support
Oracle Database
45
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template46
#12 A few more
12.1.0.2 bits and
pieces
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template47
Advanced Index Compression
 Compresses indexes to reduce their overall storage requirement
– Less space required on disk
– Better use of the database cache
 Indexes are compressed by between 1 – 3 times
 Little or no discernable overhead
 Compression Advisor extended to describe the possible benefits of this
feature
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template48
Attribute Clustering
Ordering of data so that rows are stored near one another based on column
values
 Improved query performance and concurrency
– Reduced physical data access trough smart IO
– Significant IO reduction for highly selective operations
 Optimized space utilization
– Less need for indexes
– Improved compression ratios through data clustering
 Full application transparency
– Any application will benefit
Benefits :
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template49
Zone Maps
Persisted storage index
 Stores minimum and maximum of specified columns
 Analogous to a coarse index structure
– Much more compact than an index
– Zone maps filter out what you don’t need, indexes find what you do need
 Significant performance benefits with complete application transparency
– IO reduction for table scans with predicates on the table itself or even a
joined table using join zone maps (a.k.a. “hierarchical zone map”)
 Benefits are most significant with ordered data
– Used in combination with attribute clustering or data that is naturally ordered
X
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template50
Approximate Count Distinct
 Not every query requires a completely accurate result
– “How many distinct individuals visited our website last week?”
 New SQL function for approximate results for COUNT DISTINCT aggregates
– APPROX_COUNT_DISTINCT()
 Approximate results can be significantly faster and use less resources than
exact calculations
– 5x to 50x ++ times faster (depending upon number of distinct values and complexity
of SQL)
– Accuracy > 97% (with 95% confidence)
1,2,3...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template51
Graphic Section Divider
Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Confidential – Oracle Highly Restricted
The preceding is intended to outline our general product
direction. It is intended for information purposes only, and may
not be incorporated into any contract. It is not a commitment to
deliver any material, code, or functionality, and should not be
relied upon in making purchasing decisions. The development,
release, and timing of any features or functionality described for
Oracle’s products remains at the sole discretion of Oracle.

More than 12 More things about Oracle Database 12c

  • 1.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 131 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
  • 2.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 132
  • 3.
    More than 12More things about Oracle Database 12c Thomas Kyte http://asktom.oracle.com
  • 4.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 134 #1 Data Redaction
  • 5.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 135 Oracle Data Redaction  On-the-fly redaction based upon user name, IP address, application context, and other factors  Transparent, consistent enforcement in the database  Minimal impact on production work loads Redacting Sensitive Data for Applications Credit Card # 4451-2172-9841-4368 5106-6342-4881-5211 4891-3311-0090-5055 Policy Call Centers Decision Support Systems Systems with PII, PHI, PCI data
  • 6.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 136 #2 Temporal Validity
  • 7.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 137 Temporal Validity ops$tkyte%ORA12CR1> create table addresses 2 ( empno number, 3 addr_data varchar2(30), 4 start_date date, 5 end_date date, 6 period for valid(start_date,end_date) 7 ) 8 / Table created.
  • 8.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 138 Temporal Validity ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date ) 2 values ( 1234, '123 Main Street', trunc(sysdate-5), trunc(sysdate-2) ); 1 row created. ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date ) 2 values ( 1234, '456 Fleet Street', trunc(sysdate-1), trunc(sysdate+1) ); 1 row created. ops$tkyte%ORA12CR1> insert into addresses (empno, addr_data, start_date, end_date ) 2 values ( 1234, '789 1st Ave', trunc(sysdate+2), null ); 1 row created.
  • 9.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 139 Temporal Validity ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate-3; EMPNO ADDR_DATA START_DAT END_DATE ---------- ------------------------------ --------- --------- 1234 123 Main Street 12-MAY-13 15-MAY-13 ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate; EMPNO ADDR_DATA START_DAT END_DATE ---------- ------------------------------ --------- --------- 1234 456 Fleet Street 16-MAY-13 18-MAY-13 ops$tkyte%ORA12CR1> select * from addresses as of period for valid sysdate+3; EMPNO ADDR_DATA START_DAT END_DATE ---------- ------------------------------ --------- --------- 1234 789 1st Ave 19-MAY-13
  • 10.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1310 #3 SQL Text Expansion
  • 11.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1311 SQL Text Expansion ops$tkyte%ORA12CR1> variable x clob ops$tkyte%ORA12CR1> begin 2 dbms_utility.expand_sql_text 3 ( input_sql_text => 'select * from all_users', 4 output_sql_text => :x ); 5 end; 6 / PL/SQL procedure successfully completed.
  • 12.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1312 SQL Text Expansion ops$tkyte%ORA12CR1> print x X -------------------------------------------------------------------------------- SELECT "A1"."USERNAME" "USERNAME","A1"."USER_ID" "USER_ID","A1"."CREATED" "CREAT ED","A1"."COMMON" "COMMON" FROM (SELECT "A4"."NAME" "USERNAME","A4"."USER#" "US ER_ID","A4"."CTIME" "CREATED",DECODE(BITAND("A4"."SPARE1",128),128,'YES','NO') " COMMON" FROM "SYS"."USER$" "A4","SYS"."TS$" "A3","SYS"."TS$" "A2" WHERE "A4"."DA TATS#"="A3"."TS#" AND "A4"."TEMPTS#"="A2"."TS#" AND "A4"."TYPE#"=1) "A1"
  • 13.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1313 #4 Increased Size Limit for VARCHAR2, NVARCHAR2, and RAW Data Types
  • 14.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1314 32k Strings  Varchar2, NVarchar2 and Raw datatypes may be upto 32k in size, like in PL/SQL  Compatible = 12.0.0.0 or higher  Max_String_Size init.ora set to EXTENDED (default is not this)  Not supported in clustered and index organized tables  Will be stored out of line (LOB) but work just like long strings to your program
  • 15.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1315 #5 Easy Top-N and pagination queries
  • 16.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1316 Row Limiting Clause
  • 17.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1317 Row Limiting Clause c##tkyte%CDB1> create table t 2 as 3 select * from stage; Table created. c##tkyte%CDB1> create index t_idx on t(owner,object_name); Index created. c##tkyte%CDB1> set autotrace on explain
  • 18.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1318 Row Limiting Clause c##tkyte%CDB1> select /*+ first_rows(5) */ owner, object_name, object_id 2 from t 3 order by owner, object_name 4 FETCH FIRST 5 ROWS ONLY; … --------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 5 | 1450 | 7 (0)| 00:00:01 | |* 1 | VIEW | | 5 | 1450 | 7 (0)| 00:00:01 | |* 2 | WINDOW NOSORT STOPKEY | | 5 | 180 | 7 (0)| 00:00:01 | | 3 | TABLE ACCESS BY INDEX ROWID| T | 87310 | 3069K| 7 (0)| 00:00:01 | | 4 | INDEX FULL SCAN | T_IDX | 5 | | 3 (0)| 00:00:01 | --------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=5) 2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=5)
  • 19.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1319 Row Limiting Clause c##tkyte%CDB1> select /*+ first_rows(5) */ owner, object_name, object_id 2 from t 3 order by owner, object_name 4 OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY; … --------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 5 | 1450 | 7 (0)| 00:00:01 | |* 1 | VIEW | | 5 | 1450 | 7 (0)| 00:00:01 | |* 2 | WINDOW NOSORT STOPKEY | | 5 | 180 | 7 (0)| 00:00:01 | | 3 | TABLE ACCESS BY INDEX ROWID| T | 87310 | 3069K| 7 (0)| 00:00:01 | | 4 | INDEX FULL SCAN | T_IDX | 5 | | 3 (0)| 00:00:01 | --------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=CASE WHEN (5>=0) THEN 5 ELSE 0 END +5 AND "from$_subquery$_003"."rowlimit_$$_rownumber">5) 2 - filter(ROW_NUMBER() OVER ( ORDER BY "OWNER","OBJECT_NAME")<=CASE WHEN (5>=0) THEN 5 ELSE 0 END +5)
  • 20.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1320 Row Limiting Clause c##tkyte%CDB1> select owner, object_name, object_id 2 from t 3 order by owner, object_name 4 FETCH NEXT 0.01 PERCENT ROWS ONLY; … 9 rows selected. ------------------------------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | ------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 87310 | 25M| | 1230 (1)| 00:00:01 | |* 1 | VIEW | | 87310 | 25M| | 1230 (1)| 00:00:01 | | 2 | WINDOW SORT | | 87310 | 3069K| 4120K| 1230 (1)| 00:00:01 | | 3 | TABLE ACCESS FULL| T | 87310 | 3069K| | 401 (1)| 00:00:01 | ------------------------------------------------------------------------------------ Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("from$_subquery$_003"."rowlimit_$$_rownumber"<=CEIL("from$_sub query$_003"."rowlimit_$$_total"*0.01/100))
  • 21.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1321 #6 Temporary UNDO
  • 22.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1322 Temporary UNDO  UNDO for temporary tables can now be managed in TEMP  Reduce the amount of UNDO in the UNDO tablespace – Better for retention periods for “real” data  Reduce the size of the redo generated  Allows for DML on temporary tables in Active Data Guard  ALTER SYSTEM/SESSION SET TEMP_UNDO_ENABLED=true|false
  • 23.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1323 #7 Online Operations
  • 24.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1324 More Online Operations  DROP INDEX ONLINE  DROP CONSTRAINT ONLINE  SET UNUSED COLUMN ONLINE  ALTER INDEX UNUSABLE ONLINE  ALTER INDEX [VISIBLE | INVISIBLE]
  • 25.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1325 #8 Data Optimization
  • 26.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1326 ILM: Hot/Cold Data Classification Enhanced Insight into Data Usage: “heat map” Recently inserted, actively updated Infrequently updated, Frequently Queried Retained for long term analytics and compliance with corporate policies and regulations ACTIVE FREQUENT ACCESS DORMANT • Block and Segment level statistics on last Read and last Update
  • 27.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1327 ILM: Automatic Compression & Tiering Usage based and custom compression and tiering ALTER TABLE orders ILM ADD CompressionPolicy COMPRESS Partitions for Query AFTER 90 days from creation; ALTER TABLE sales ILM ADD MovePolicy TIER Partitions TO ‘Archive_TBS’ ON OrdersClosedPolicy;
  • 28.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1328 #9 Implicit Result Sets
  • 29.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1329 Implicit Result Sets  Cursor variables have been around since 7.2  Used to return result sets explicitly  Some other databases return them implicitly  Causes migration headaches
  • 30.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1330 Implicit Result Sets  Two new API calls: – PROCEDURE RETURN_RESULT (rc IN OUT SYS_REFCURSOR, to_client IN BOOLEAN DEFAULT TRUE); – PROCEDURE RETURN_RESULT (rc IN OUT INTEGER, to_client IN BOOLEAN DEFAULT TRUE); – TO_CLIENT => true, return to client layer – TO_CLIENT=> false, return to invoker, immediate caller
  • 31.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1331 Implicit Result Sets ops$tkyte%ORA12CR1> declare 2 c sys_refcursor; 3 begin 4 open c for 5 select * 6 from dept; 7 8 dbms_sql.return_result(c); 9 end; 10 / PL/SQL procedure successfully completed. ResultSet #1 DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
  • 32.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1332 Implicit Result Sets  Two new API calls: – PROCEDURE GET_NEXT_RESULT (c IN INTEGER, rc OUT SYS_REFCURSOR); – PROCEDURE GET_NEXT_RESULT (c IN INTEGER, rc OUT INTEGER); – For PL/SQL processing
  • 33.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1333 Implicit Result Sets Connection conn = DriverManager.getConnection(jdbcURL, user, password); try { Statement stmt = conn.createStatement (); stmt.executeQuery ( “begin foo; end;” ); while (stmt.getMoreResults()) { ResultSet rs = stmt.getResultSet(); System.out.println("ResultSet"); while (rs.next()) { /* get results */ } } }
  • 34.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1334 #10 Pluggable Databases
  • 35.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1335 Oracle Database Architecture Requires memory, processes and database files ERP Database Files Background Processes Memory Utilized
  • 36.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1336 Oracle Database Architecture Separate memory and processes required for each database ERP Database Files Memory Utilized Background Processes CRM Database Files Background Processes Memory Utilized DW Database Files Background Processes Memory Utilized
  • 37.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1337 New Pluggable Database Architecture ERP Database Files Memory Utilized Background Processes CRM Database Files Memory Utilized Background Processes DW Database Files Memory Utilized Background Processes Memory and processes required at container level only
  • 38.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1338 New Pluggable Database Architecture Memory and processes required at container level only ERP CRM DW Background Processes Memory Utilized Container Database
  • 39.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 1339 #11 Database In- Memory
  • 40.
    40 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. 40 Flip Flops Core ICs on board DIMMS SIMMs SSD Flash Small Drives Floppy Big Drives 1993 ~$25/mb; $26,214,400/tb 2014 ~$0.007/mb; $7,645/tb
  • 41.
    41 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. Until Now You Choose One Format and Suffer Tradeoffs Optimizing Transaction and Query Performance Row Format Databases versus Column Format Databases Row  Transactions run faster on row format – Fast for processing few rows, many columns – Example: Insert or query a sales order Column  Analytics run faster on column format – Fast for processing few columns, many rows – Example: Report on sales totals by state ORDER SALES SALES S T A T E 41
  • 42.
    42 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. OLTP is Slowed Down by Analytic Indexes Table 1 to 3 OLTP Indexes 5 to 15 Analytics Indexes  Most Indexes in mixed-use OLTP (e.g. ERP) databases are only used for analytics  Indexes work well for known access patterns both in-memory and on-disk  But every change to the table requires changing all analytic indexes – Slow! 42
  • 43.
    43 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. Column Store Replaces Analytic Indexes Table 1 to 3 OLTP Indexes  In-Memory Column Store replaces analytic indexes for tables that fit in memory  Removes analytic index overhead on changes  Both predefined and ad-hoc analytic queries run fast  Less tuning & admin needed  OLTP & batch often run 2x or more faster In-Memory Column Store 43
  • 44.
    44 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. Oracle In-Memory is Trivial to Deploy 1. Configure Memory Capacity  inmemory_size = XXXX GB 2. Configure tables or partitions to be in memory  alter table | partition … inmemory; 3. Later Drop analytic indexes to speed up OLTP 44
  • 45.
    45 Copyright ©2013, Oracle and/or its affiliates. All rights reserved. Confidential – Oracle InternalCopyright © 2013, Oracle and/or its affiliates. All rights reserved. Oracle In-Memory is Transparent to Applications Existing Applications Just Run Faster Full Functionality - No restrictions on SQL Trivial to Implement - No migration of data or change of product Fully Compatible - All existing applications run unchanged DB as a Service Ready - Oracle Multitenant in-memory Uniquely Achieves All In-Memory Benefits With No Application Changes And All Other Apps that Support Oracle Database 45
  • 46.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template46 #12 A few more 12.1.0.2 bits and pieces
  • 47.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template47 Advanced Index Compression  Compresses indexes to reduce their overall storage requirement – Less space required on disk – Better use of the database cache  Indexes are compressed by between 1 – 3 times  Little or no discernable overhead  Compression Advisor extended to describe the possible benefits of this feature
  • 48.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template48 Attribute Clustering Ordering of data so that rows are stored near one another based on column values  Improved query performance and concurrency – Reduced physical data access trough smart IO – Significant IO reduction for highly selective operations  Optimized space utilization – Less need for indexes – Improved compression ratios through data clustering  Full application transparency – Any application will benefit Benefits :
  • 49.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template49 Zone Maps Persisted storage index  Stores minimum and maximum of specified columns  Analogous to a coarse index structure – Much more compact than an index – Zone maps filter out what you don’t need, indexes find what you do need  Significant performance benefits with complete application transparency – IO reduction for table scans with predicates on the table itself or even a joined table using join zone maps (a.k.a. “hierarchical zone map”)  Benefits are most significant with ordered data – Used in combination with attribute clustering or data that is naturally ordered X
  • 50.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template50 Approximate Count Distinct  Not every query requires a completely accurate result – “How many distinct individuals visited our website last week?”  New SQL function for approximate results for COUNT DISTINCT aggregates – APPROX_COUNT_DISTINCT()  Approximate results can be significantly faster and use less resources than exact calculations – 5x to 50x ++ times faster (depending upon number of distinct values and complexity of SQL) – Accuracy > 97% (with 95% confidence) 1,2,3...
  • 51.
    Copyright © 2013,Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 of the corporate presentation template51 Graphic Section Divider
  • 52.
    Copyright © 2012,Oracle and/or its affiliates. All rights reserved. Confidential – Oracle Highly Restricted The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.