Was gibt es neues in der Oracle 20c Datenbank?
Gleich vorweg: Oracle hat ernst gemacht, ab Oracle 20c gibt es nur noch die Multitenant Architektur. NON-CDB Datenbanken sind nicht mehr unterstützt.
Mit Stand von heute - 21. Feb 2020 - gibt es noch kein Release Datum für die Oracle 20c Datenbank - zumindest nicht laut Release Schedule of Current Database Releases (Doc ID 742060.1. Da Oracle aber vor einigen Tagen die Datenbank Dokumentation für Oracle 20c Online gestellt hat, nutzen wir die Gelegenheit für einen kleinen Ausblick!
Lizensierungsänderungen
Die erste Frage ist natürlich, welche Überraschungen hat Oracle im Bereich Lizenzierung für uns? Zu unserer Überraschung sind die Änderungen positiv! Schon ab Oracle 19c darf man maximal 3 PDBs in einer Multitanent Datenbank nutzen, das ist natürlich auch mit Oracle 20c noch so. Neu hingegen ist, dass ab Oracle 20c die Oracle Spatial and Graph Funktionalität keine Option mehr ist, sondern für alle Editionen (auch SE2) GRATIS wird! Vielleicht als kleine Entschädigung für das Streichen der Oracle RAC Funktionalität bei der SE2 mit Oracle 19c?
Weitere Details finden Sie im Oracle 20c Licensing Guide.
Neue Funktionalitäten
Wir haben uns das Oracle 20c New Features Guide durchgesehen und hier die wichtigsten Neuerungen kurz zusammen gefasst.
Big Data und Data Warehouse
In-Memory Deep Vectorization: Dadurch können HASH JOINS bei In-Memory Queries schneller werden.
Spatial and Graph
-
Spatial Studio: Ist eine Self-Service Web Applikation, um einfache interaktive Karten zu erstellen und abzufragen. Man braucht somit nicht mehr JavaScript oder SQL zu entwickeln um Spatial in der Datenbank zu nutzen.
-
Spatial Support für In-Memory Option: Man kann jetzt SDO_FILTER Operationen auf In-Memory Spatial Tables durchführen. Dadurch braucht man keine SPATIAL Indexes mehr, wenn die Spatial Tabellen mit In-Memory genutzt werden.
-
Spatial Abfragen auf Oracle Object Storage: Man kann jetzt Spatial Abfragen (auch mit GeoJSON und Shapefile) auf Oracle Cloud Infrastructure Object Storage Service durchführen.
-
Spatial Network Data Model Contraction Hierarchy: Das sind vorberechnete Contraction Hierachien (In-Memory), die Zugriffspfade für Oracle Spatial und Graph Network Data Model um den Faktor 10-100 beschleunigen zu können.
-
Property Graph - Graph Server und Client Kit: Property Graph In-Memory Analytics Server (PGX) und Client Tools sind nicht mehr Teil der Datenbank Installation, sondern in einem eigenen "Graph Server an Client Kit" enthalten.
-
Property Graph - Visualization: Ein Set an Virtualisierungfunktionen vereinfacht dem Umgang mit Graph, Layouts und Relationen in den Daten.
-
Property Graph - User-defined Graph Algorithms: Ermöglicht das Entwickeln von eigenen Graph Algoritmen mit Java als Erweiterung der vielen vorhandenen Algorithmen.
-
Property Graph - Optimized Graph Representation for Faster Performance: Der In-Memory Analytics Server (PGX) nutzt eine optimierte Struktur um Property Graphs abzuspeichern, die deutlich weniger Memory benötigen.
-
RDF Graph - Native Unicode Storage and Processing: Unterstützen jetzt auch UNICODE Format.
Oracle Text
-
Es gibt jetzt einen neuen Data Store Type NETWORK_DATASTORE, der den deprecated URL_DATASTORE Datentype ersetzt. Dadurch sind jetzt auch ACLs möglich.
-
Ebenfalls ersetzt wurde der deprecated FILE_DATASTORE durch den DIRECTORY_DATASTORE.
-
Es gibt Unterstützung für JSON Search Indexes mit facet navigation in JSON Result Sets.
-
Automatic Synchronization ist jetzt der Default für neue Oracle Text Indexes. Die Synchronisation läuft alle 5 Sekunden.
-
Es gibt einen neuen Oracle Text Index Type: "Search Index", der den bisherigen CONTEXT Index um Support für Sharding und verschiedene Partitionierungsmöglichkeiten erweitert.
-
Bei Named Entity Recognition wurden einige Restriktionen beseitig, und die Definitionen können jetzt auch verschachtelt ("nested") sein.
Security Grundlagen
-
Mit Oracle 20c sind alle Passwörter case-sensitiv - ohne Ausnahme. Damit werden einige alte Programme ein Problem bekommen.
-
Unterstützung von mehreren SSL Zertifikaten für Clients - damit können Clients mit verschiedenen Zertifikaten gleichzeitig auf verschiedene Datenbanken zugreifen (zb: für Connection Pools,...)
-
Man kann sowohl die Wallet Location als auch den Pfad für das DSI.ORA FILE pro PDB mittels Datenbank Properties festlegen. Damit können verschiedene PDBs auf verschiedene OIDs bzw. Active Directories zugreifen.
-
Es gibt zusätzliche mitgelieferte Unified Audit Policies wie ORA_STIG_RECOMMENDATIONS, ORA_ALLL_TOPLEVEL_ACTIONS, ORA_LOGON_LOGOFF.
-
Die Unterstützung für Unix SYSLOG (gab es in der 11.2) kommt zurück - allerdings nur für Unified Auditing auf Unix (nicht Windows).
-
Bisher wurden Unified Audit Policies auf Basis des Login Users ausgeführt. Ab Oracle 20c wird jedoch der CURRENT USER dafür heran gezogen. Somit ändert sich etwas für Stored PLSQL (Functions, Procedures, Triggers) und Views, die mit DEFINERS RIGHTS angelegt sind.
-
Änderungen an Unified Audit Policies wirken jetzt sofort, in früheren Oracle Versionen wurden diese nur für neue Sessions genutzt.
-
Ab sofort gibt es auch Audit Policied für HTTP, HTTPS und FTP - für WebDAV, Oracle XML DB,...
-
Blockchain Tables sind Tabellen, in die man nur einfügen kan. DELETE ist entweder komplett verboten oder zeitlich limitiert. Die Datensätze sind mit Hilfe spezieller Sequences und Chaining Berechnungen "tamper-resistant" (veränderungssicher).
Advanced Security Option
-
Man kann einen Parameter TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM setzen, der den Default für alle CREATE TABLESPACE Operationen bildet.
-
Oracle hat die Performance beim Zugriff auf große Wallets (mit TDE Keys) sowie Oracle Key Vault verbessert.
-
Bei laufender Datenbank Instanz kann jetzt ohne Unterbrechung auf ein anderes Wallet (PKCS#11 Library) umgeschaltet werden.
Oracle Database Vault
-
Ab Oracle 20c kann der DV_OWNER der CDB verhindern, dass in PDBs jemand Database Vault auf Common Objekte definiert (was zu Problemen beim Patching und Upgrade führt)
Oracle Active Data Guard
-
Inkonsistenzen bezüglich des File Status zwischen PDBs auf der Primary und Standby Seite werden jetzt automatisch bereinigt.
-
Es gib neue LogMiner Views, um Rolling Upgrades (DBMS_ROLLING) besser zu unterstützen.
-
Der Result Cache funktioniert jetzt auch auf der Standby Datenbank (- erfordert Active Data Guard Lizenz).
-
FAR SYNC Instanzen lassen sich jetzt mit einem einzigen Befehl anlegen.
Advanced Queuing
-
Unterstützt jetzt auch JSON Daten Typen.
Transparent Application Continuity
-
Unterstützung für Planned Failover (z.B.: Data Guard Switchover auf das zweite Rechenzentrum), um die Last für Application Continuity zu reduzieren.
Automatic Operations
-
SecureFile Defragmentation erfolgt jetzt automatisch durch einen Hintergrund Prozess, dadurch spart man Platz in LOB Segmenten.
-
Automatic Index Optimization kann jetzt mit ADO Policies verknüpft werden, damit Index Storage Tiering erfolgen kann.
-
Automatic Zone Maps erlaubt "Pruning von Blocks und Partitions" auf Grund von WHERE Bedingungen (Sprich der Storage Cell Index rutsch jetzt in die Datenbank!)
ASM
-
Double Parity Protection für Disk Groups. Damit kann man bei "Write Once" Files - beispielsweise Backups bzw. Archivelog Files - einen zusätzlichen Schutz gegen Hardware Fehler einrichten, ohne gleich HIGH REDUNDANCE zu nutzen. Das reduziert den Storage Bedarf.
-
Clonen einer PDB in eine andere CDB (war bisher im ASM nicht möglich, lediglich ein Clonen in der gleichen CDB war erlaubt).
-
ASMCA kann nun Flex ASM auf NAS anlegen.
-
ACFS kann jetzt auch kleiner werden, wenn man Daten löscht.
-
ACFS unterstützt jetzt gleichzeitig gemischte Sector Sizes von 512 Byte und 4096 Byte.
ClusterWare
-
PDBs werden jetzt zu einer Cluster Resource...
-
Es gibt jetzt ein REST API für die Cluster Ware.
Oracle RAC
-
Cache Fusion Hardening. Der LMS ist jetzt toleranter gegenüber Unstimmigkeiten zwischen Instanzen, die früher eine Instanz termineren haben lassen.
-
Die Grid Infrastructure Management Repository (GIMR) Datenbank kann jetzt in einem eigenen Oracle Home (statt dem GRID HOME) installiert werden.
-
Remote GIMR Support für Standalone Clusters - man kann eine GIMR eines anderen Clusters mit nutzen.
Oracle Sharding
-
Rerouting von Queries auf andere Shards, sofern die Daten auch in anderen Shards vorhanden sind und die initial ausgewählte Shard nicht verfügbar ist.
-
Sharding Advisor Schema Analysis Tool: Kann Empfehlungen für die Optimierung der Sharding Konfiguration ausgeben.
-
Erzeugen einer Sharding Datenbank aus mehrere bestehenden Oracle Datenbanken.
Oracle In-Memory
-
Automatisches In-Memory Management - Oracle überlegt selbst, welche Tabellen am besten im verfügbaren Memory der In-Memory Option liegen sollten (INMEMORY_AUTOMATIC_LEVEL=HIGH).
-
Support für Hybrid In-Memory Scans. Wenn Spalten nicht In-Memory sind (zb: LOBs) können Queries trotzdem In-Memory nutzen und die fehlenden Spalten werden aus der Tabelle geholt.
-
Unterstützung für In-Memory External Tables wurde verbessert.
-
Support für Oracle Text, um In-Memory zu nutzen.
PDB Point-in-Time Recovery or Flashback
-
PDBs können sowohl mit Flashback als auch PITR recovered werden - unabhängig vom Rest.
Autonomous Health Framework
-
ORAchk und EXAchk Support sowohl für Auto-Analysis als auch Unterstützung für REST API
-
Verbesserungen und Erweiterungen beim beim TFA
Oracle Multitenant
-
"Oracle Database Nest" ist eine Infrastuktur, um einzelne PDBs (und deren Resourcen auch im Filesystem) stärker zu isolieren. Dazu werden Linux Container genutzt. Die CDB liegt in einem sogenannten "Parent Nest" und die PDBs in individuellen "Child Nests".
-
MAX_IDLE_BLOCKER_TIME Parameter - wie lange darf eine Idle Session andere Sessions blockieren (ROW Locks,...).
SQL und Statistik Funktionen
-
Es gibt jetzt BIT_AND_AGG, BIT_OR_AGG, BIT_XOR_ADD Funktionen für SQL.
-
Mit der SQL Funktion CHECKSUM kann man eine Checksumme über Eingabeparameter rechnen.
-
Neue statistische Funktionen: KURTOSIS_POP, KURTOSIS_SAMP, SKEWNESS_POP, SKEWNESS_SAMP.
-
Analytische Windows Function unterstützen jetzt ein EXCLUDE.
APEX
Hier gibt es auch einige neue Features, nicht Teil dieser Aufzählung.
Oracle Machine Learning
-
Unterstützt jetzt neue Algorithmen wie XGBoost, MSETG_SPRT.
-
Adam Optimization Solver für Neuronale Netzwerke steht zur Verfügung.
NLS
-
Unicode 12.1 Support
-
Neue Sorts: XGERMAN_S und XGERMAN_DIN_S, die das grosse scharfe S richtig sortieren.
JSON
-
Neue SQL Funktion JSON_TRANSFORM, um Teile von JSON Dokumenten zu modifizieren.
-
SQL/JSON Syntax Verbesserungen wie JSON_SCALAR,...
-
JSON ist ein neuer Datentyp für SQL und PL/SQL! Damit kann man jetzt mit SQL und PLSQL direkt auf JSON Daten zugreifen.
OCI
PLSQL
-
Neues Pragma SUPRESSES_WARNING_6009 verhindert PLW-06009 Fehler, sofern diese im OTHERS Exception Handler kein RAISE oder RAISE_APPLICATION_ERROR ergeben.
-
BOOLEAN und PLS_INTEGER Unterstützung für non-persistable Object Types.
-
SQL_MACRO markiert eine PLSQL Funktion als ein SQL Makro. TABLE Makros kann man anstatt Tabellen in der FROM Clause angeben, SCALAR Makros können in der WHERE Clause genutzt werden.
Datenbank Parameter (INIT.ORA, SPFILE)
Data Pump
-
Kann jetzt EXCLUDE und INCLUDE Parameter in einem Aufruf für den gleichen Typ.
-
Unterstützt jetzt RESUME für Transportable Tablespace Jobs.
-
Transportable Tablespace Metadata Export/Import kann jetzt parallelisiert werden.
-
IMPDP unterstützt bei TRANSFORM eine INDEX_COMPRESSION_CLAUSE, womit Indexes während des Imports komprimiert werden können.
-
EXPDP kann in der Oracle Cloud jetzt Dumpfiles in den Cloud Object Store stellen und auch Checksummen für die Files errechnen.
-
SQLLDR unterstützt jetzt native JSON Objekte.
-
SQLLDR unterstützt jetzt das Lesen von Files im Oracle Object Store.
Das war ein grober Überblick über die Neuheiten in Oracle 20c. Leider sind nicht viele Funktionalitäten enthalten, die für die Mehrheit der Nutzer interessant sind.