Oracle12c: Ein Überblick

Werbung
Oracle Database 12c
Ein Überblick
5 Gründe für Oracle12c
 Einfacher, effizienter und ressourcenschonender Betrieb
großer Oracle DB Umgebungen
 Daten auf den "richtigen Platz" – Zugriffe optimieren
und Kosten sparen
 Aufgaben mit weniger Code erledigen – noch mehr
Entwicklerproduktivität
 Sicherheit auf allen Ebenen: Einheitliche Zugriffsregeln – einheitliches
Auditing
 Ständige Verfügbarkeit des Datenbankservice – völlig transparent für
die Anwendungen
Oracle12c: Ein Überblick
Oracle Multitenant
Hochverfügbarkeit
Coole Features für Entwickler
Sicherheit auf allen Ebenen
Information Lifecyle Management
Werkzeuge für Oracle12c
Oracle Database 12c in Zahlen
 5 Jahre Entwicklung
 500 neue Features
 2.500 Personen-Jahre
 3.000 Systeme für die Tests
 1 Million Feature-Tests täglich
 1,2 Millionen Stunden Stresstests
Lifetime Support Policy
Sustaining Support
Extended Support
Premier Support
heute
JUL-2018
AUG-2012
JUL-2010
R2
JAN-2018
JAN-2015
R2
JUL-2021
AUG-2015
JUL-2013
2019
2018
2017
2016
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf
Die neue Multitenant Architektur
Hauptspeicher und Prozesse nur noch auf Ebene des “Multitenant-Containers”
Die neue Multitenant Architektur
Hauptspeicher und Prozesse nur noch auf Ebene des “Multitenant-Containers”
Multitenant Architektur
 Unterstützt derzeit bis zu 252 PDBs
 Eine PDB verhält sich wie eine "non-CDB"
Database
Link
 PDBs "teilen sich" SGA und
Hintergrundprozesse
 Kein Unterschied für die Anwendung
 DB Sessions "sehen" nur die PDB, an der
sie angemeldet sind
Anwendungsfälle
 Test und Entwicklung:
Schnelle, flexible Kopien/Snapshots mit
Pluggable Databases
 Konsolidierung:
"Teilen" des Overheads für Hauptspeicher
und Systemprozesse
 Einfaches Upgrade und Patching:
Patch / Upgrade der CDB – wirkt für alle
PDBs
 Mandantenfähige Systeme:
Isolation mit PDBs – Ideal für SaaS
Einige interessante RMAN Features …
 Einfacher Befehl um einzelne Tabellen
aus dem Backup wiederherzustellen
1 0 1
0 1 0 1 0
1 1 1 0 1 0 0 1
1 0 1 1 0 1 1 1 1 0
0 0 1 0 1 00 0 0
1 0 0 1 1 0 1
1 0 1 0
0 1
Source Database (AIX)
RMAN
Backups
– Eliminiert komplexes und
zeitaufwendiges TSPITR mit Export
RMAN> RECOVER TABLE …
Destination Database (Solaris)
 Cross-Platform Backup & Restore
– Einfach und schnell, kein Skripting
1 1 1 01
1 0 1 1 0 1 1 1 1 0 1
0 0 1 0 1 00 0 0 1
1 00 1
10 1 1 1
1 0 1 1 1 1 0 1 1 0 1
1 0 0 00 1 0 1 0 0
1 00 1
Backup
to Disk/Tape
– Ideal für Migrationen
Restore Backup
Active Data Guard Far Sync
Redolog-"Repeater" für Data Guard
 Optimierter Transport der Redo-Daten über große Entfernungen
– Minimale Oracle-Instance
Standby Control File, Standby Redo Logs, Archived Redo Logs, keine Datendateien
– Redo wird synchron von der Primärdatenbank empfangen …
– … und asynchron an die Standby Datenbank weitergeleitet
 Verbessertes Failover:
– Standby erhält "letzte Änderungen" automatisch von Far Sync Instanz
– Zweite "Far Sync Instance" zur Unterstützung der Gegenrichtung
 Standby Datenbanken müssen Active Data Guard Standbys sein
Active Data Guard Far Sync
Systematische Darstellung
Standby
Primary
SYNC
ASYNC
Far Sync
Instance
Datenbank-Failover für die Middleware
Situation bis Oracle11g
 Fokus liegt auf der Datenbank-Session
 TAF fokussiert auf Client-Server
End User
Application Servers
 FCF/Fan fokussiert auf Connection Pool
 Aber kein Handling des Session State
 Nicht committetes DML
 PL/SQL Package state
 Session Contexts
 Und mehr ...
Database Servers
 Der Entwickler muss etwas tun ...
Datenbank-Failover für die Middleware
Transaction Guard und Application Continuity
 Transaction Guard
– Protokoll und Programmier-API für Entwickler
– Entwickler kann feststellen, welche Statements durchliefen und welche nicht
– Entwickler kann gezielt nur die "nicht gelaufenen" Kommandos wiederholen
 Application Continuity
– Selbstständiges Wiederholen nicht gelaufener Kommandos
– Ziel: Möglichst transparentes Failover für den Entwickler
Daten unkenntlich machen
Oracle Advanced Security (ASO)
 Neu in ASO: Data Redaction
 Jede Ausgabe
wird in Echtzeit maskiert
 Gängige Policies im
Kreditkarten
4451-2172-9841-4368
5106-8395-2095-5938
7830-0032-0294-1827
Redaction Policy
Lieferumfang enthalten
 Transparent für Anwendungen
xxxx-xxxx-xxxx-4368
4451-2172-9841-4368
Call Center Mitarbeiter
Rechnungsabteilung
Privilege Analysis
1. Verwendete Privilegien und
Database
Vault mit
Rollen erfassen
DBMS_PRIVILEGE_CAPTURE
Create…
Drop…
Modify…
DBA role
APPADMIN role
2. Berichte über die verwendeten
oder nicht verwendeten
Privilegien und Rollen erzeugen
3. Im laufenden Betrieb Least
Privilege, durch Entzug nicht
benötigter Privilegien und Rollen,
umsetzen
Privilege Analysis
Das neue Auditing: Unified Auditing
 Bisher:
Dateien auf Betriebssystem, in verschiedenen Formaten
und in der DB (AUD$, SYS.FGA_LOG$, DVSYS.AUDIT_TRAIL$)
 Jetzt:
Unified Audit Trail
– Policies steuern das Auditing, nicht Initialisierungsparameter
– AUDSYS ist Eigentümer des Audit Trail
– Nur eine Tabelle im Tablespace SYSAUX
– Unterstützt RMAN, Data Pump und Direct Path Loader
Information Lifecycle Management in Oracle12c
 Direkte Integration in den Datenbankkern
– Heat Map: automatisches Monitoring und Klassifikation (Hot/Cold Data)
– Automatic Data Optimization/Placement
– Policies werden automatisiert in der Datenbank ausgeführt
 Zusätzlich Erweiterungen in Bereichen wie ...
– Kompression
– Partitionierung
Heat Map Tracking
Active
Frequent
Access
Occasional
Access
Dormant
HOT
 Einfaches Setup : ein Parameter
Actively
updated
 Monitoring: Views, Packages, Enterprise Manager
Infrequently
updated,
Frequently
Queried
Infrequent
access for
query and
updates
Long term
analytics &
compliance
COLD
 2 Ebenen: Segment und Block
– Welche Tabellen und Partitionen werden verwendet?
– Welche Blöcke wurden zuletzt verändert?
 Umfassend
– Trackt Reads und Writes, Lookups, Scans
– Aktuell und in Historie
 Performant
Heat Map für Tabellen und Partitionen
OR
RS
DE
 Welche Tabellen und Partitionen werden wie
verwendet?
 Ein Ausschnitt ...
OWNER
---------SH
SCOTT
SCOTT
SCOTT
SCOTT
SCOTT
SCOTT
OBJECT_NAME
----------------------CUSTOMERS_PK
DEPT
EMP
EMP
EMP
PK_EMP
PK_EMP
TRACK_TIME
---------------25.06.2013 22:48
25.06.2013 12:48
26.06.2013 12:30
25.06.2013 12:48
24.06.2013 11:47
26.06.2013 22:30
25.06.2013 22:48
WRI
--NO
NO
YES
NO
NO
NO
NO
FUL
--NO
YES
YES
YES
YES
NO
NO
LOO
-YES
NO
NO
NO
NO
YES
YES
Automatische Daten Optimierung
OLTP
Reporting
Compliance & Reporting
10x komprimiert
15x komprimiert
Im Quartal
Advanced Row
Compression
für OLTP
Im Jahr
Columnar Query
Compression für
schnelle Analysen
Jahre zuvor
Columnar Archive
Compression
für max. Kompression
Automatisch
und Online
Komprimierung/
Verlagerung
Storage Tiering
Automatische Daten Optimierung
D
OR
S
ER
ALTER TABLE EMPLOYEE
ILM ADD POLICY
TIER TO <LOW_COST_TABLESPACE>
1.
Tabellen wachsen 
Daten werden komprimiert
2.
Tablespace mit Partitionen
erreicht Grenze
3.
Partitionen werden in
einen anderen Tablespace
verlagert
Heat Map im Oracle Enterprise Manager
Cloud Control 12c und die Datenbank 12c
 Cloud Control 12c unterstützt Oracle Database 12c
 Voraussetzung
– Cloud Control 12c Release 2 (12.1.0.2) mit aktuellem Plugin
– Verfügbar seit Februar 2013
 In Kürze komplette
Feature-Unterstützung
EM Database Express
 Neues Werkzeug mit Oracle Database 12c
 Automatische Installation
 Monitoring und Management einer einzelnen Oracle Datenbank 12c
 Nicht für die komplette Administration (aktueller Stand)
– Einfache Konfigurationen
– Kein Backup/Recovery, Resource Management etc.
– Sehr gut geeignet für Performance Monitoring (Performance Hub)
Oracle12c Database Express
Oracle12c für Entwickler
Die Datenbank einfach, schnell und effizient nutzen ...
SQL Pattern Matching
PL/SQL in "WITH" Klausel
Identity Columns
32k Varchar
Rollen für PL/SQL
Invisible Columns
Oracle TEXT, XML und Spatial
Nicht zu vergessen: SQL Developer
 Unterstützt Oracle Database 12c
 Seit Release 3.0 DBA Unterstützung
– Oracle Multitenant
– Data Redaction
– Resource Manager
– Data Pump
– SQL Tuning Advisor
:
Identity Columns
Tabellen erstellen - viel weniger Code
Bisher
create table tab_kunden (
id
number(10) primary key
name varchar2(200)
:
);
create sequence seq_kunden
start with 1 increment by 1;
create or replace trigger tr_pk_kunden
before insert on tab_kunden
for each row
begin
:new.id := seq_kunden.nextval;
end;
Oracle12c
create table kunden_tab(
id
number(10) primary key
generated always as identity
start with 1 increment by 1,
name varchar2(200)
:
);
SQL "Row Limit" Klausel
Zwei Beispiele ...
 Sortiere nach "SAL" aufsteigend und gib die ersten 5 Zeilen zurück
SELECT empno, ename, sal FROM (
emp
ORDER
SELECT
BY empno,
sal ASCename, sal FROM emp ORDER BY sal DESC
FETCH FIRST 5 ROWS ONLY;
)
WHERE rownum <= 5;
 Sortiere nach "SAL" absteigend, überspringe 3 Zeilen und gib dann
die nächsten drei Zeilen zurück
SELECT empno, ename, sal FROM (
emp
ORDER
SELECT
BY rownum
sal DESC
zeile, empno, ename, sal FROM (
OFFSET
SELECT
3 ROWS
empno,
FETCHename,
FIRST 3
sal
ROWS
FROM
ONLY;
emp ORDER BY sal DESC
)
) WHERE zeile BETWEEN 4 AND 6;
VARCHAR-Spalten nun bis 32K
 Grenze damit analog zu PL/SQL
 Verwendung aller SQL-Funktionen möglich
 Einmaliger Setup der Datenbank erforderlich (mit dem DBA)
create table TAB_KUNDEN (
id
number generated as identity,
first_name
varchar2(30),
last_name
varchar2(30),
first_order date,
kommentare
varchar2(32767)
);
PL/SQL WITH Klausel
PL/SQL Funktionen – lokal für eine SQL-Abfrage
 Die Funktion existiert nur für diese SQL-Abfrage
 Keine Persistenz im Data Dictionary
WITH
FUNCTION get_domain(url VARCHAR2) RETURN VARCHAR2 IS
pos BINARY_INTEGER;
len BINARY_INTEGER;
BEGIN
pos := INSTR(url, 'www.');
len := INSTR(SUBSTR(url, pos + 4), '.') - 1;
RETURN SUBSTR(url, pos + 4, len);
END;
SELECT
DISTINCT get_domain(catalog_url)
FROM
orders;
Zugriff auf PL/SQL Objekte in Oracle12c
 Einem PL/SQL-Objekt können nun Rollen zugewiesen werden
– Erlaubt wesentlich bessere Rechte / Rollenkonzepte
grant {role} to function meine_funktion;
 ACCESSIBLE BY-Klausel verhindert direkten Aufruf eines Objektes
– Verhindern des direkten Aufrufs von "Helper Packages"
create or replace package pkg_helper
accessible by {other plsql object} is
:
end pkg_helper;
Unsichtbare Spalten ...
... sind unsichtbar, oder ...?
SQL> alter table EMP modify (COMM invisible, HIREDATE invisible);
SQL> desc EMP
Name
Null?
Typ
SQL> select ename, hiredate, sal, comm from emp;
----------------------------- -------- -------------------EMPNO
NOT NULL NUMBER(4)
ENAME
HIREDATE
SAL
COMM
ENAME
VARCHAR2(10)
-------------------- ------------------- ---------- ---------JOB
VARCHAR2(9)
SMITH
17.12.1980 00:00:00
800
MGR
NUMBER(4)
ALLEN
20.02.1981 00:00:00
1600
300
SAL
NUMBER(7,2)
WARD
22.02.1981 00:00:00
1250
500
DEPTNO
NUMBER(2)
JONES
02.04.1981 00:00:00
2975
SQL> select * from emp;
EMPNO
---------7369
7499
7521
7566
ENAME
-------------------SMITH
ALLEN
WARD
JONES
JOB
MGR
SAL
DEPTNO
--------- ---------- ---------- ---------CLERK
7902
800
20
SALESMAN
7698
1600
30
SALESMAN
7698
1250
30
MANAGER
7839
2975
20
Valid Time Temporal
Management der "Gültigkeit" einer Tabellenzeile – in der Datenbank
 Zusätzliche Spalten für "Gültig Von" und "Gültig Bis"
 Abfrage "zu einem Zeitpunkt" gültiger Rows – mit SQL
Bei Änderungen
werden Spalten
"Gültig Von" und "Gültig Bis"
geschrieben
Abfragen erfassen nur
"gültige" Zeilen
SQL Pattern Matching
Muster finden: über Tabellenzeilen hinweg!
 Finde "Double Bottoms" im Kursverlauf einer Aktie
 Wann beginnt das Muster?
 Wann endet das Muster?
Aktienkurs
 Welcher Aktienkurs?
 Muster innerhalb einer
Woche?
1
9
13
19
Tage
FIRST_X
SQL Pattern Matching
Muster finden: über Tabellenzeilen hinweg!
LAST_Z
1
9
13
19
 Finde "Double Bottoms" im Kursverlauf einer Aktie
X
 Wann beginnt das Muster?
Y
W
Z
Aktienkurs
 Wann endet das Muster?
 Welcher Aktienkurs?
SELECT first_x, last_z
 Muster innerhalb
einer
FROM ticker
MATCH_RECOGNIZE (
Woche?
PARTITION BY name ORDER BY time
MEASURES FIRST(x.time) AS first_x
LAST(z.time) AS last_z
ONE ROW PER MATCH
PATTERN (X+ Y+ W+ Z+)
DEFINE X AS (price < PREV(price))
Y AS (price > PREV(price))
W AS (price < PREV(price))
Z AS (price > PREV(price))
Tage
if (lineNext == null) {
next = "";
} else {
next = lineNext.getQuantity();
}
SQL Pattern Matching
if (!q.isEmpty() && (prev.isEmpty() || (eq(q, prev) && gt(q, next)))) {
state = "S";
return state;
}
Muster finden: über Tabellenzeilen hinweg!
if (gt(q, prev) && gt(q, next)) {
state = "T";
return state;
}
if (lt(q, prev) && lt(q, next)) {
state = "B";
return state;
}
if (!q.isEmpty() && (next.isEmpty() || (gt(q, prev) && eq(q, next)))) {
state = "E";
return state;
}
if (q.isEmpty() || eq(q, prev)) {
state = "F";
return state;
}
return state;
}
private boolean eq(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return a.equals(b);
}
private boolean gt(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return Double.parseDouble(a) > Double.parseDouble(b);
}
private boolean lt(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return Double.parseDouble(a) < Double.parseDouble(b);
}
SELECT first_x, last_z
FROM ticker MATCH_RECOGNIZE (
PARTITION BY name ORDER BY time
MEASURES FIRST(x.time) AS first_x,
LAST(z.time) AS last_z
ONE ROW PER MATCH
PATTERN (X+ Y+ W+ Z+)
DEFINE X AS (price < PREV(price)),
Y AS (price > PREV(price)),
W AS (price < PREV(price)),
Z AS (price > PREV(price) AND
z.time - FIRST(x.time) <= 7 ))
public String getState() {
return this.state;
}
}
BagFactory bagFactory = BagFactory.getInstance();
250+ Codezeilen Java
@Override
public Tuple exec(Tuple input) throws IOException {
long c = 0;
String line = "";
String pbkey = "";
V0Line nextLine;
V0Line thisLine;
V0Line processLine;
V0Line evalLine = null;
V0Line prevLine;
boolean noMoreValues = false;
String matchList = "";
ArrayList<V0Line> lineFifo = new ArrayList<V0Line>();
boolean finished = false;
12 Zeilen SQL
Der Datenbank sagen, was zu tun ist – nicht, wie es zu tun ist.
DataBag output = bagFactory.newDefaultBag();
if (input == null) {
return null;
}
if (input.size() == 0) {
return null;
Auf den Ort kommt es an: Oracle Spatial
 Spatial Performance-Boost
alter system set SPATIAL_VECTOR_ACCELERATION = true
 Neue Funktionen und Möglichkeiten
Unterstützung für neue Geometrietypen: NURBS,
Raster Algebra, Neue Routing Engine
 Neuerungen in Oracle Maps: HTML5 Maps
Dokumente und XML: Unstrukturierte Daten
 XML DB ist nun integraler Bestandteil der Datenbank
 Unterstützung der jüngsten Standards
XQuery-Update, XQuery-Fulltext
 Performance-Optimierungen
XDB Performance, Oracle TEXT Near Real Time Indexing
 Oracle TEXT im Detail
Automatische Spracherkennung, Reguläre Ausdrücke für
Stopwörter, Pattern Stopclass, NEAR und "Mild Not" Operator
und mehr ...
Oracle12c und Java
 Java in der Datenbank …
– Java6 oder Java7 (JVM wird "pluggable")
– Java Logging und JNDI Support
 JDBC und Oracle12c
– JDBC & UCP Support für JavaSE 7 und JDBC 4.1
– Nutzung von Oracle Multitenant via Service Names
– PL/SQL Typen ("boolean") können nun von Java aus angesprochen werden
Informationen in deutscher Sprache
 Communities
– APEX Community
– DBA Community
– Linux und Virtualisierung
– Exadata Community
 Veranstaltungen
– http://tinyurl.com/odd12c
Graphic Section Divider
Herunterladen