Dans la documentation de la version 18c d’Oracle, j’ai trouvé un diagramme interactif intéressant qui présente l’architecture de la base de données (applicable en très grande partie aussi aux versions précédentes) : Oracle Database 18c Technical Architecture.
18c
Oracle Database 18c

Annoncée lors du dernier Oracle Open World en octobre 2017, la version Oracle Database 18c est disponible depuis la fin de la semaine dernière dans Oracle Cloud et dans les Engineered Systems Oracle (les serveurs commercialisés par Oracle). Pour la version on-premise, installable sur vos propres serveurs, il faudra attendre un peu (2ème semestre 2018).
Oracle Database 18c est la première version de la base de données qui utilise une numérotation de version annuelle. Malgré le grand saut dans la numérotation des versions, cette nouvelle version n’est pas une version majeure mais l’équivalent d’une version 12.2.0.2. Elle apporte néanmoins un certain nombre de nouveautés que vous pouvez découvrir dans la documentation :
Pour les impatients, il est possible de commencer à jouer avec Oracle Database 18c grâce à Oracle Live SQL, un environnement Web gratuit qui permet de tester du code SQL et PL/SQL :

En parcourant rapidement la documentation, j’ai vu quelques nouveautés intéressantes dans les fonctionnalités relatives au développement :
- Table temporaire privée
- Table temporaire stockée en mémoire visible uniquement par la session qui l’a créée
- Possibilité de réinitialiser une séquence à une valeur donnée (annoncé dans la documentation mais visiblement pas implémenté)
- Fonction table polymorphique
- Fonction table dont la structure de retour (liste des colonnes, type de données des colonnes) peut changer en fonction de l’appel
- Expressions qualifiées dans l’affectation de valeurs à un enregistrement PL/SQL (
RECORD) ou l’initialisation d’une collection.
Exemple :
declare type type_table_chiffres is table of varchar2(10) index by pls_integer; t_impair type_table_chiffres; begin -- Nouvelle notation pour initialiser la collection. t_impair := type_table_chiffres(1 => 'Un', 3 => 'Trois', 5 => 'Cinq'); end; /