Oracle Exadata
Alexandru Tică
DBA Lounge, Iași, April 2016
What is Exadata?
“A wonderful blend of
hardware and software”.
Jonathan Lewis
How does it look like? (part 1)
How does it look like? (part 2)
Source: http://oraclefromguatemala.blogspot.ro/2013/04/los­sabores­y­colores­de­oracle­exadata.html
S
S S
S
DB DB DB
DB
X2­8 Full 
Rack
How does it look like? (part 3)
The Exadata rack, available at SCC.
Oracle 11.2
3 cell/storage servers
2 DB servers
Eth + IB switches 
+ KVM
Just a quarter RAC!
Exadata timeline (1)
2008
V1
Exa what? WTF is this?
Exadata timeline (2)
2008
V1
2009
V2
OLTP and DW?
Interesting!
2008
V1
2009
V2
2010
X2
Exadata timeline (3)
Bravo!
2008
V1
2009
V2
2010
X2
2012
X3
Exadata timeline (4)
2013
X4
2008
V1
2009
V2
2010
X2
2012
X3
Exadata timeline (5)
Consolidation, DbaaS, cloud…
What’s the difference?
2013
X4
2015
X5
2008
V1
2009
V2
2010
X2
2012
X3
Exadata timeline (6)
Wasn’t supposed
to be good at
everything?
Money, money, money...
Source: 
http://www.oracle.com/us/products/database/exadata­vs­
ibm­1870172.pdf
Source: http://dbareactions.com/post/51674494263/when­we­
went­shopping­for­oracle­licensing
Spot the differences
VS
What’s Wrong on Non-Exadata?
HDD
SAN
NAS
ORACLE Instance IO Sub­system
IO traffic
Optimization?
1. Bigger pipe
2. Less IO traffic
Exadata Architecture – The Big Picture
Cell Server 1 Cell Server 2 Cell Server 3
DB Server1 DB Server2
iDB / RDS
Oracle Linux
Oracle 11.2
ASM
Oracle Linux
cellsrv
DB side
Storage side
Exadata Magic
Smart Scan HCC
Smart Flash Cache
IO Resource Manger
DEMO 1 - Magic Switch: ON/OFF
640mil rows
Magic OFF
Magic ON
select count(*) from vanzari
where valoare < 100;
cell_offload_processing
~10x
faster
Smart Scan Magic
DB Node
Cell Node 1 Cell Node 2 Cell Node 3
select sum(valoare)
from vanzari where
tara = ‘RO’;
ASM
IDB protocol
Get blocks from
VANZARI
Info about the
query.
Direct path read?
Column projection
Predicate filtering
Storage indexes
Filtereddata
Column Projection
● Instead of returning whole Oracle blocks, the storage layer
will pump in just the needed column values.
● The IO traffic is reduced.
● For JOINs, besides columns from the SELECT list, the ones
from the join are also transferred.
YES, “SELECT *” when just some columns are 
needed isn’t a good idea on Exadata too! 
DEMO: Column projection
Predicate Filtering
● Instead of pushing full Oracle blocks from the storage to the
Oracle instance, only those records matching the predicate
will be pumped in to the wire.
● The IO traffic is reduced (the filtering is done on the storage
side)
● Does work for joins too using bloom filters, but on the storge
servers.
Storage Indexes Explained
VANZARI
table
1MB 1MB
1MB1MB1MB1MB1MB1MB 1MB
1MB1MB1MB1MB1MB
1MB 1MB 1MB1MB1MB1MB1MB
min max min max
Storage 1
Storage 2
Storage 3
select count(*)
from vanzari where
vanzari <= 1000;
Perfect for:
=, <, >, BETWEEN,
<=, >=, IN,
IS NULL, IS NOT NULL
DEMO: Storage Indexes
Do You Want to Drop all DB Indexes?
Think twice!
● There are many scenarios where SI can’t be used (e.g.
get the MIN or MAX for a column)
● SI is a transient in-memory structure. Restart a storage
server and you lost all storage indexes on that server
● The decision to create a SI is fully automated and it
depends on the workload.
● A SI can’t be used to enforce a PK constraint
● SI are limited to only 8 columns/table
● No integration between SI and CBO
● There’s no such thing as functional SI.
● A SI can’t be used for FK columns to avoid locking
issues
Smart Flash Scan
4 cards x 4 disks x
24GB = 384GB on
every storage cell
Controlling the SFC
CELL_FLASH_CACHE
NONE
DEFAULT
KEEP
on segment level
DB Developer
Friendly Side
DBA 
Admin
Ugly Side
cellcli
on storage level
CREATE 
FLASHCACHE
ALTER CELL 
DROP 
FLASHCACHE
DEMO: Smart Flash Cache
HCC: Hybrid Columnar Compression
Compression
Type
Description Expected
Ratio
QUERY LOW LZA compression algorithm. Low CPU
and low compression.
4x
QUERY HIGH ZLIB (gzip) compression. 6x
ARCHIVE LOW ZLIB (gzip) but with a higher
compression level.
7x
ARCHIVE HIGH BZIP2 compression. CPU intensive,
high compression rate.
12x
HCC Pitfalls
● Only tables can be compressed. Indexes are not included.
● Exadata inter-operability only. Pay attention when restoring
HCC data on a non-exadata machine..
● Not good for OLTP.
● May consume a lot of CPU (for compression, but for de-
compression too).
● It’s not a true columnar model, so wasn’t really designed
having the performance idea in mind
HCC Demo
IO Resource Manager
● Tight integration with Database Resource Manager
● Provides IO prioritization
● Can be enforced across different databases hosted on the
same Exadata machine
● A very important component for consolidated/shared
architectures
● In old versions of Exadata, only physical disks were
managed by IORM. Flash disks were not handled by IORM.
However, this is not true starting with 11.2.3.3.0.
● Workload optimization: low_latency, high_throughput,
balanced, auto
IORM Architecture
IORM Demo
● Smart file creation
● Improved RMAN Incremental Backups
● Improved RMAN restores
● Flash cache compression (from 11.2.3.3.0)
● Automatic HDD scrubbing and repair
Other Exadata Goodies
Things I don’t Like
● The Exadata official documentation was not public
accessible. It’s fixed now via a patch: Patch 10386736:
Storage Application for the Grid Environment 11.2.3.2.0 for
Linux x86-64 - DOCUMENTATION FOR EXADATA 11.2
● It’s a closed engineered product. However, according to Kevin
Closson, Exadata was originally intended to be an open
hardware stack.
● The lack of good integration of CBO with Exadata storage
(Bug 10248538: OPTIMIZER COST MODEL NOT EXADATA-
AWARE)
● Big room for performance instability (storage indexes, flash
cache, direct path read etc.)
● The huge price
Q & A

Exadata